]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - fs/binfmt_som.c
tracehook: exec
[linux-2.6-omap-h63xx.git] / fs / binfmt_som.c
index 32b5d625ce9c7c311835139eea61e8b98896a7b1..68be580ba289fc3135a0dcd93595ce5b66062206 100644 (file)
@@ -43,7 +43,7 @@ static int load_som_library(struct file *);
  * 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
@@ -208,15 +208,18 @@ load_som_binary(struct linux_binprm * bprm, struct pt_regs * regs)
        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 (retval < 0)
+       if (retval != size) {
+               if (retval >= 0)
+                       retval = -EIO;
                goto out_free;
-#error "Fix security hole before enabling me"
+       }
+
        retval = get_unused_fd();
        if (retval < 0)
                goto out_free;
@@ -271,8 +274,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);
-       if (current->ptrace & PT_PTRACED)
-               send_sig(SIGTRAP, current, 0);
        return 0;
 
        /* error cleanup */