taglinefilesource code
bprm25fs/binfmt_elf.cint load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs)
bprm46fs/binfmt_elf.celf_ex = *((struct elfhdr *) bprm->buf);    /* exec-header */
bprm56fs/binfmt_elf.c(!bprm->inode->i_op || !bprm->inode->i_op->default_file_ops ||
bprm57fs/binfmt_elf.c!bprm->inode->i_op->default_file_ops->mmap)){
bprm68fs/binfmt_elf.cretval = read_exec(bprm->inode, elf_ex.e_phoff, (char *) elf_phdata,
bprm81fs/binfmt_elf.celf_exec_fileno = open_inode(bprm->inode, O_RDONLY);
bprm107fs/binfmt_elf.cretval = read_exec(bprm->inode,elf_ppnt->p_offset,elf_interpreter,
bprm113fs/binfmt_elf.cretval = read_exec(interpreter_inode,0,bprm->buf,128);
bprm116fs/binfmt_elf.cex = *((struct exec *) bprm->buf);    /* exec-header */
bprm145fs/binfmt_elf.cif (!bprm->sh_bang) {
bprm152fs/binfmt_elf.cbprm->p = copy_strings(1,&passed_p,bprm->page,bprm->p,2);
bprm153fs/binfmt_elf.cbprm->argc++;
bprm155fs/binfmt_elf.cif (!bprm->p) {
bprm165fs/binfmt_elf.cflush_old_exec(bprm);
bprm176fs/binfmt_elf.cbprm->p += change_ldt(0, bprm->page);
bprm177fs/binfmt_elf.ccurrent->start_stack = bprm->p;
bprm267fs/binfmt_elf.ccurrent->executable = bprm->inode;
bprm268fs/binfmt_elf.cbprm->inode->i_count++;
bprm272fs/binfmt_elf.cbprm->p -= MAX_ARG_PAGES*PAGE_SIZE;
bprm273fs/binfmt_elf.cbprm->p = (unsigned long) create_tables((char *)bprm->p,bprm->argc,bprm->envc);
bprm278fs/binfmt_elf.ccurrent->start_stack = bprm->p;
bprm279fs/binfmt_elf.ccurrent->suid = current->euid = bprm->e_uid;
bprm280fs/binfmt_elf.ccurrent->sgid = current->egid = bprm->e_gid;
bprm284fs/binfmt_elf.cregs->esp = bprm->p;      /* stack pointer */
bprm436fs/exec.cvoid flush_old_exec(struct linux_binprm * bprm)
bprm444fs/exec.cname = bprm->filename;
bprm484fs/exec.cif (bprm->e_uid != current->euid || bprm->e_gid != current->egid || 
bprm485fs/exec.c!permission(bprm->inode,MAY_READ))
bprm510fs/exec.cstruct linux_binprm bprm;
bprm519fs/exec.cbprm.p = PAGE_SIZE*MAX_ARG_PAGES-4;
bprm521fs/exec.cbprm.page[i] = 0;
bprm522fs/exec.cretval = open_namei(filename, 0, 0, &bprm.inode, NULL);
bprm525fs/exec.cbprm.filename = filename;
bprm526fs/exec.cbprm.argc = count(argv);
bprm527fs/exec.cbprm.envc = count(envp);
bprm530fs/exec.cif (!S_ISREG(bprm.inode->i_mode)) {  /* must be regular file */
bprm534fs/exec.cif (IS_NOEXEC(bprm.inode)) {    /* FS mustn't be mounted noexec */
bprm538fs/exec.cif (!bprm.inode->i_sb) {
bprm542fs/exec.ci = bprm.inode->i_mode;
bprm543fs/exec.cif (IS_NOSUID(bprm.inode) && (((i & S_ISUID) && bprm.inode->i_uid != current->
bprm544fs/exec.ceuid) || ((i & S_ISGID) && !in_group_p(bprm.inode->i_gid))) &&
bprm551fs/exec.cbprm.e_uid = current->euid;
bprm552fs/exec.cbprm.e_gid = current->egid;
bprm554fs/exec.cbprm.e_uid = (i & S_ISUID) ? bprm.inode->i_uid : current->euid;
bprm555fs/exec.cbprm.e_gid = (i & S_ISGID) ? bprm.inode->i_gid : current->egid;
bprm557fs/exec.cif (current->euid == bprm.inode->i_uid)
bprm559fs/exec.celse if (in_group_p(bprm.inode->i_gid))
bprm562fs/exec.c!((bprm.inode->i_mode & 0111) && suser())) {
bprm566fs/exec.cmemset(bprm.buf,0,sizeof(bprm.buf));
bprm569fs/exec.cretval = read_exec(bprm.inode,0,bprm.buf,128);
bprm573fs/exec.cif ((bprm.buf[0] == '#') && (bprm.buf[1] == '!') && (!sh_bang)) {
bprm581fs/exec.ciput(bprm.inode);
bprm582fs/exec.cbprm.buf[127] = '\0';
bprm583fs/exec.cif ((cp = strchr(bprm.buf, '\n')) == NULL)
bprm584fs/exec.ccp = bprm.buf+127;
bprm586fs/exec.cwhile (cp > bprm.buf) {
bprm593fs/exec.cfor (cp = bprm.buf+2; (*cp == ' ') || (*cp == '\t'); cp++);
bprm613fs/exec.cbprm.p = copy_strings(bprm.envc, envp, bprm.page, bprm.p, 0);
bprm614fs/exec.cbprm.p = copy_strings(--bprm.argc, argv+1, bprm.page, bprm.p, 0);
bprm624fs/exec.cbprm.p = copy_strings(1, &bprm.filename, bprm.page, bprm.p, 2);
bprm625fs/exec.cbprm.argc++;
bprm627fs/exec.cbprm.p = copy_strings(1, &i_arg, bprm.page, bprm.p, 2);
bprm628fs/exec.cbprm.argc++;
bprm630fs/exec.cbprm.p = copy_strings(1, &i_name, bprm.page, bprm.p, 2);
bprm631fs/exec.cbprm.argc++;
bprm632fs/exec.cif (!bprm.p) {
bprm641fs/exec.cretval = open_namei(interp, 0, 0, &bprm.inode, NULL);
bprm647fs/exec.cbprm.p = copy_strings(bprm.envc,envp,bprm.page,bprm.p,0);
bprm648fs/exec.cbprm.p = copy_strings(bprm.argc,argv,bprm.page,bprm.p,0);
bprm649fs/exec.cif (!bprm.p) {
bprm655fs/exec.cbprm.sh_bang = sh_bang;
bprm661fs/exec.cretval = fn(&bprm, regs);
bprm663fs/exec.ciput(bprm.inode);
bprm669fs/exec.ciput(bprm.inode);
bprm672fs/exec.cfree_page(bprm.page[i]);
bprm719fs/exec.cint load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
bprm724fs/exec.cunsigned long p = bprm->p;
bprm726fs/exec.cex = *((struct exec *) bprm->buf);    /* exec-header */
bprm730fs/exec.cbprm->inode->i_size < ex.a_text+ex.a_data+ex.a_syms+N_TXTOFF(ex)) {
bprm735fs/exec.c(N_TXTOFF(ex) < bprm->inode->i_sb->s_blocksize)) {
bprm746fs/exec.cflush_old_exec(bprm);
bprm754fs/exec.ccurrent->suid = current->euid = bprm->e_uid;
bprm757fs/exec.ccurrent->sgid = current->egid = bprm->e_gid;
bprm759fs/exec.cread_exec(bprm->inode, 32, (char *) 0, ex.a_text+ex.a_data);
bprm764fs/exec.cfd = open_inode(bprm->inode, O_RDONLY);
bprm771fs/exec.cread_exec(bprm->inode, N_TXTOFF(ex), 
bprm793fs/exec.ccurrent->executable = bprm->inode;
bprm794fs/exec.cbprm->inode->i_count++;
bprm798fs/exec.cp += change_ldt(ex.a_text,bprm->page);
bprm800fs/exec.cp = (unsigned long) create_tables((char *)p,bprm->argc,bprm->envc);
bprm42include/linux/binfmts.hextern void flush_old_exec(struct linux_binprm * bprm);