static inline int do_load_bloom_binary(struct linux_binprm *bprm, struct pt_regs *regs) { int retval; if ( /* the format is not one of ours */ ) return -ENOEXEC; /* release the inode, it will be opened as argument */ iput(bprm->inode); bprm->dont_iput=1; /* replace argv[0] with the full pathname */ remove_arg_zero(bprm); bprm->p = copy_strings(1, &bprm->filename, bprm->page, bprm->p, 2); bprm->argc++; /* and push the viewer's basename to the top of the command line */ bprm->p = copy_strings(1, &viewer_name, bprm->page, bprm->p, 2); bprm->argc++; /* very unlikely it's more than 32 pages... */ if (!bprm->p) return -E2BIG; /* ok, now open the interpreter, and reenter the loop */ retval = open_namei(viewer, 0, 0, &bprm->inode, NULL); if (retval) return retval; bprm->dont_iput=0; retval=prepare_binprm(bprm); if(retval<0) return retval; return search_binary_handler(bprm,regs); }