git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
vsprintf: reduce code size by avoiding extra check
[safe/jmp/linux-2.6]
/
fs
/
binfmt_som.c
diff --git
a/fs/binfmt_som.c
b/fs/binfmt_som.c
index
227a268
..
eff74b9
100644
(file)
--- a/
fs/binfmt_som.c
+++ b/
fs/binfmt_som.c
@@
-32,7
+32,6
@@
#include <asm/uaccess.h>
#include <asm/pgtable.h>
#include <asm/uaccess.h>
#include <asm/pgtable.h>
-#include <linux/config.h>
#include <linux/elf.h>
#include <linux/elf.h>
@@
-44,7
+43,7
@@
static int load_som_library(struct file *);
* don't even try.
*/
#if 0
* don't even try.
*/
#if 0
-static int som_core_dump(long signr, struct pt_regs *
regs
);
+static int som_core_dump(long signr, struct pt_regs *
regs, unsigned long limit
);
#else
#define som_core_dump NULL
#endif
#else
#define som_core_dump NULL
#endif
@@
-189,7
+188,6
@@
out:
static int
load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs)
{
static int
load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs)
{
- int som_exec_fileno;
int retval;
unsigned int size;
unsigned long som_entry;
int retval;
unsigned int size;
unsigned long som_entry;
@@
-209,20
+207,17
@@
load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs)
size = som_ex->aux_header_size;
if (size > SOM_PAGESIZE)
goto out;
size = som_ex->aux_header_size;
if (size > SOM_PAGESIZE)
goto out;
- hpuxhdr =
(struct som_exec_auxhdr *)
kmalloc(size, GFP_KERNEL);
+ hpuxhdr = kmalloc(size, GFP_KERNEL);
if (!hpuxhdr)
goto out;
retval = kernel_read(bprm->file, som_ex->aux_header_location,
(char *) hpuxhdr, size);
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)
+ if (retval != size) {
+ if (retval >= 0)
+ retval = -EIO;
goto out_free;
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);
/* Flush all traces of the currently running executable */
retval = flush_old_exec(bprm);
@@
-253,13
+248,12
@@
load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs)
kfree(hpuxhdr);
set_binfmt(&som_format);
kfree(hpuxhdr);
set_binfmt(&som_format);
-
compute
_creds(bprm);
+
install_exec
_creds(bprm);
setup_arg_pages(bprm, STACK_TOP, EXSTACK_DEFAULT);
create_som_tables(bprm);
current->mm->start_stack = bprm->p;
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);
#if 0
printk("(start_brk) %08lx\n" , (unsigned long) current->mm->start_brk);
@@
-273,8
+267,6
@@
load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs)
map_hpux_gateway_page(current,current->mm);
start_thread_som(regs, som_entry, bprm->p);
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 */
return 0;
/* error cleanup */
@@
-307,3
+299,5
@@
static void __exit exit_som_binfmt(void)
core_initcall(init_som_binfmt);
module_exit(exit_som_binfmt);
core_initcall(init_som_binfmt);
module_exit(exit_som_binfmt);
+
+MODULE_LICENSE("GPL");