taglinefilesource code
bprm205fs/binfmt_aout.cdo_load_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
bprm211fs/binfmt_aout.cunsigned long p = bprm->p;
bprm215fs/binfmt_aout.cex = *((struct exec *) bprm->buf);    /* exec-header */
bprm219fs/binfmt_aout.cbprm->inode->i_size < ex.a_text+ex.a_data+N_SYMSIZE(ex)+N_TXTOFF(ex)) {
bprm233fs/binfmt_aout.c(fd_offset < bprm->inode->i_sb->s_blocksize)) {
bprm250fs/binfmt_aout.cflush_old_exec(bprm);
bprm261fs/binfmt_aout.ccurrent->suid = current->euid = current->fsuid = bprm->e_uid;
bprm262fs/binfmt_aout.ccurrent->sgid = current->egid = current->fsgid = bprm->e_gid;
bprm269fs/binfmt_aout.cread_exec(bprm->inode, fd_offset, (char *) N_TXTADDR(ex),
bprm275fs/binfmt_aout.cread_exec(bprm->inode, 32, (char *) 0, ex.a_text+ex.a_data, 0);
bprm281fs/binfmt_aout.cfd = open_inode(bprm->inode, O_RDONLY);
bprm291fs/binfmt_aout.cread_exec(bprm->inode, fd_offset,
bprm331fs/binfmt_aout.cfd_offset = setup_arg_pages(ex.a_text,bprm->page) - MAX_ARG_PAGES*PAGE_SIZE;
bprm333fs/binfmt_aout.cif (bprm->loader)
bprm334fs/binfmt_aout.cbprm->loader += fd_offset;
bprm335fs/binfmt_aout.cbprm->exec += fd_offset;
bprm337fs/binfmt_aout.cp = (unsigned long)create_tables((char *)p, bprm,
bprm350fs/binfmt_aout.cload_aout_binary(struct linux_binprm * bprm, struct pt_regs * regs)
bprm355fs/binfmt_aout.cretval = do_load_aout_binary(bprm, regs);
bprm40fs/binfmt_elf.cstatic int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs);
bprm347fs/binfmt_elf.cdo_load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs)
bprm374fs/binfmt_elf.celf_ex = *((struct elfhdr *) bprm->buf);    /* exec-header */
bprm386fs/binfmt_elf.c(!bprm->inode->i_op || !bprm->inode->i_op->default_file_ops ||
bprm387fs/binfmt_elf.c!bprm->inode->i_op->default_file_ops->mmap)){
bprm399fs/binfmt_elf.cretval = read_exec(bprm->inode, elf_ex.e_phoff, (char *) elf_phdata,
bprm411fs/binfmt_elf.celf_exec_fileno = open_inode(bprm->inode, O_RDONLY);
bprm447fs/binfmt_elf.cretval = read_exec(bprm->inode,elf_ppnt->p_offset,elf_interpreter,
bprm466fs/binfmt_elf.cretval = read_exec(interpreter_inode,0,bprm->buf,128, 1);
bprm469fs/binfmt_elf.cinterp_ex = *((struct exec *) bprm->buf);    /* exec-header */
bprm470fs/binfmt_elf.cinterp_elf_ex = *((struct elfhdr *) bprm->buf);    /* exec-header */
bprm507fs/binfmt_elf.cif (!bprm->sh_bang) {
bprm515fs/binfmt_elf.cbprm->p = copy_strings(1,&passed_p,bprm->page,bprm->p,2);
bprm516fs/binfmt_elf.cbprm->argc++;
bprm519fs/binfmt_elf.cif (!bprm->p) {
bprm529fs/binfmt_elf.cflush_old_exec(bprm);
bprm540fs/binfmt_elf.cbprm->p += setup_arg_pages(0, bprm->page);
bprm541fs/binfmt_elf.ccurrent->mm->start_stack = bprm->p;
bprm634fs/binfmt_elf.ccurrent->executable = bprm->inode;
bprm635fs/binfmt_elf.cbprm->inode->i_count++;
bprm640fs/binfmt_elf.ccurrent->suid = current->euid = current->fsuid = bprm->e_uid;
bprm641fs/binfmt_elf.ccurrent->sgid = current->egid = current->fsgid = bprm->e_gid;
bprm642fs/binfmt_elf.cbprm->p -= MAX_ARG_PAGES*PAGE_SIZE;
bprm643fs/binfmt_elf.cbprm->p = (unsigned long) 
bprm644fs/binfmt_elf.ccreate_elf_tables((char *)bprm->p,
bprm645fs/binfmt_elf.cbprm->argc,
bprm646fs/binfmt_elf.cbprm->envc,
bprm657fs/binfmt_elf.ccurrent->mm->start_stack = bprm->p;
bprm693fs/binfmt_elf.cstart_thread(regs, elf_entry, bprm->p);
bprm700fs/binfmt_elf.cload_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs)
bprm705fs/binfmt_elf.cretval = do_load_elf_binary(bprm, regs);
bprm185fs/exec.cunsigned long * create_tables(char * p, struct linux_binprm * bprm, int ibcs)
bprm190fs/exec.cint argc = bprm->argc;
bprm191fs/exec.cint envc = bprm->envc;
bprm212fs/exec.cif (bprm->loader) {
bprm215fs/exec.cput_user(bprm->loader, --sp);
bprm218fs/exec.cput_user(bprm->exec, --sp);
bprm446fs/exec.cvoid flush_old_exec(struct linux_binprm * bprm)
bprm454fs/exec.cname = bprm->filename;
bprm469fs/exec.cif (bprm->e_uid != current->euid || bprm->e_gid != current->egid || 
bprm470fs/exec.cpermission(bprm->inode,MAY_READ))
bprm493fs/exec.cstruct linux_binprm bprm;
bprm503fs/exec.cbprm.p = PAGE_SIZE*MAX_ARG_PAGES-sizeof(void *);
bprm505fs/exec.cbprm.page[i] = 0;
bprm506fs/exec.cretval = open_namei(filename, 0, 0, &bprm.inode, NULL);
bprm509fs/exec.cbprm.filename = filename;
bprm510fs/exec.cbprm.loader = 0;
bprm511fs/exec.cbprm.exec = 0;
bprm512fs/exec.cif ((bprm.argc = count(argv)) < 0)
bprm513fs/exec.creturn bprm.argc;
bprm514fs/exec.cif ((bprm.envc = count(envp)) < 0)
bprm515fs/exec.creturn bprm.envc;
bprm518fs/exec.cif (!S_ISREG(bprm.inode->i_mode)) {  /* must be regular file */
bprm522fs/exec.cif (IS_NOEXEC(bprm.inode)) {    /* FS mustn't be mounted noexec */
bprm526fs/exec.cif (!bprm.inode->i_sb) {
bprm530fs/exec.ci = bprm.inode->i_mode;
bprm531fs/exec.cif (IS_NOSUID(bprm.inode) && (((i & S_ISUID) && bprm.inode->i_uid != current->
bprm532fs/exec.ceuid) || ((i & S_ISGID) && !in_group_p(bprm.inode->i_gid))) && !suser()) {
bprm538fs/exec.cbprm.e_uid = current->euid;
bprm539fs/exec.cbprm.e_gid = current->egid;
bprm541fs/exec.cbprm.e_uid = (i & S_ISUID) ? bprm.inode->i_uid : current->euid;
bprm542fs/exec.cbprm.e_gid = (i & S_ISGID) ? bprm.inode->i_gid : current->egid;
bprm544fs/exec.cif ((retval = permission(bprm.inode, MAY_EXEC)) != 0)
bprm546fs/exec.cif (!(bprm.inode->i_mode & 0111) && fsuser()) {
bprm551fs/exec.cif (bprm.inode->i_writecount > 0) {
bprm555fs/exec.cmemset(bprm.buf,0,sizeof(bprm.buf));
bprm556fs/exec.cretval = read_exec(bprm.inode,0,bprm.buf,128,1);
bprm559fs/exec.cif ((bprm.buf[0] == '#') && (bprm.buf[1] == '!') && (!sh_bang)) {
bprm567fs/exec.ciput(bprm.inode);
bprm568fs/exec.cbprm.buf[127] = '\0';
bprm569fs/exec.cif ((cp = strchr(bprm.buf, '\n')) == NULL)
bprm570fs/exec.ccp = bprm.buf+127;
bprm572fs/exec.cwhile (cp > bprm.buf) {
bprm579fs/exec.cfor (cp = bprm.buf+2; (*cp == ' ') || (*cp == '\t'); cp++);
bprm599fs/exec.cbprm.p = copy_strings(bprm.envc, envp, bprm.page, bprm.p, 0);
bprm600fs/exec.cbprm.p = copy_strings(--bprm.argc, argv+1, bprm.page, bprm.p, 0);
bprm610fs/exec.cbprm.p = copy_strings(1, &bprm.filename, bprm.page, bprm.p, 2);
bprm611fs/exec.cbprm.argc++;
bprm613fs/exec.cbprm.p = copy_strings(1, &i_arg, bprm.page, bprm.p, 2);
bprm614fs/exec.cbprm.argc++;
bprm616fs/exec.cbprm.p = copy_strings(1, &i_name, bprm.page, bprm.p, 2);
bprm617fs/exec.cbprm.argc++;
bprm618fs/exec.cif (!bprm.p) {
bprm627fs/exec.cretval = open_namei(interp, 0, 0, &bprm.inode, NULL);
bprm635fs/exec.cstruct exec * eh = (struct exec *) bprm.buf;
bprm641fs/exec.ciput(bprm.inode);
bprm643fs/exec.cbprm.p = copy_strings(1, dynloader, bprm.page, bprm.p, 2);
bprm644fs/exec.cbprm.loader = bprm.p;
bprm645fs/exec.cretval = open_namei(dynloader[0], 0, 0, &bprm.inode, NULL);
bprm653fs/exec.cbprm.p = copy_strings(1, &bprm.filename, bprm.page, bprm.p, 2);
bprm654fs/exec.cbprm.exec = bprm.p;
bprm655fs/exec.cbprm.p = copy_strings(bprm.envc,envp,bprm.page,bprm.p,0);
bprm656fs/exec.cbprm.p = copy_strings(bprm.argc,argv,bprm.page,bprm.p,0);
bprm657fs/exec.cif (!bprm.p) {
bprm663fs/exec.cbprm.sh_bang = sh_bang;
bprm669fs/exec.cretval = fn(&bprm, regs);
bprm671fs/exec.ciput(bprm.inode);
bprm684fs/exec.cif (printable(bprm.buf[0]) &&
bprm685fs/exec.cprintable(bprm.buf[1]) &&
bprm686fs/exec.cprintable(bprm.buf[2]) &&
bprm687fs/exec.cprintable(bprm.buf[3]))
bprm689fs/exec.csprintf(modname, "binfmt-%hd", *(short*)(&bprm.buf));
bprm695fs/exec.ciput(bprm.inode);
bprm698fs/exec.cfree_page(bprm.page[i]);
bprm51include/linux/binfmts.hextern void flush_old_exec(struct linux_binprm * bprm);
bprm53include/linux/binfmts.hextern unsigned long * create_tables(char * p,struct linux_binprm * bprm,int ibcs);