set_mm_counter(current->mm, rss, 0); 
load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs){	int som_exec_fileno;	int retval;	unsigned int size;	unsigned long som_entry;	struct som_hdr *som_ex;	struct som_exec_auxhdr *hpuxhdr;	/* Get the exec-header */	som_ex = (struct som_hdr *) bprm->buf;	retval = check_som_header(som_ex);	if (retval != 0)		goto out;	/* Now read in the auxiliary header information */	retval = -ENOMEM;	size = som_ex->aux_header_size;	if (size > SOM_PAGESIZE)		goto out;	hpuxhdr = (struct som_exec_auxhdr *) kmalloc(size, GFP_KERNEL);	if (!hpuxhdr)		goto out;	retval = kernel_read(bprm->file, som_ex->aux_header_location,			(char *) hpuxhdr, size);	if (retval < 0)		goto out_free;#error "Fix security hole before enabling me"	retval = get_unused_fd();	if (retval < 0)		goto out_free;	get_file(bprm->file);	fd_install(som_exec_fileno = retval, bprm->file);	/* Flush all traces of the currently running executable */	retval = flush_old_exec(bprm);	if (retval)		goto out_free;	/* OK, This is the point of no return */	current->flags &= ~PF_FORKNOEXEC;	current->personality = PER_HPUX;	/* Set the task size for HP-UX processes such that	 * the gateway page is outside the address space.	 * This can be fixed later, but for now, this is much	 * easier.	 */	current->thread.task_size = 0xc0000000;	/* Set map base to allow enough room for hp-ux heap growth */	current->thread.map_base = 0x80000000;	retval = map_som_binary(bprm->file, hpuxhdr);	if (retval < 0)		goto out_free;	som_entry = hpuxhdr->exec_entry;	kfree(hpuxhdr);	set_binfmt(&som_format);	compute_creds(bprm);	setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);	create_som_tables(bprm);	current->mm->start_stack = bprm->p;	set_mm_counter(current->mm, rss, 0);#if 0	printk("(start_brk) %08lx\n" , (unsigned long) current->mm->start_brk);	printk("(end_code) %08lx\n" , (unsigned long) current->mm->end_code);	printk("(start_code) %08lx\n" , (unsigned long) current->mm->start_code);	printk("(end_data) %08lx\n" , (unsigned long) current->mm->end_data);	printk("(start_stack) %08lx\n" , (unsigned long) current->mm->start_stack);	printk("(brk) %08lx\n" , (unsigned long) current->mm->brk);#endif	map_hpux_gateway_page(current,current->mm);	start_thread_som(regs, som_entry, bprm->p);	if (current->ptrace & PT_PTRACED)		send_sig(SIGTRAP, current, 0);	return 0;	/* error cleanup */out_free:	kfree(hpuxhdr);out:	return retval;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/404351e67a9facb475abf1492245374a28d13e90/binfmt_som.c/clean/fs/binfmt_som.c