[IA64] ia32_signal.c: erroneous use of memset/memcpy
Arun Sharma [Fri, 22 Apr 2005 20:06:47 +0000 (13:06 -0700)]
Found by Alexander Nyberg, improved by Bjorn Helgaas.

- Fix the incorrect argument to sizeof()
- looks like memcpy() code pass was dervived from code that used
  copy_from_user().  But in this case we are doing to kernel space
  to kernel space copy, so memcpy is the right routine, but it
  doesn't return an error code.

Signed-off-by: Arun Sharma <arun.sharma@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>

arch/ia64/ia32/ia32_signal.c

index 19b02ad..ebb89be 100644 (file)
@@ -460,10 +460,9 @@ __ia32_rt_sigsuspend (compat_sigset_t *sset, unsigned int sigsetsize, struct sig
        sigset_t oldset, set;
 
        scr->scratch_unat = 0;  /* avoid leaking kernel bits to user level */
-       memset(&set, 0, sizeof(&set));
+       memset(&set, 0, sizeof(set));
 
-       if (memcpy(&set.sig, &sset->sig, sigsetsize))
-               return -EFAULT;
+       memcpy(&set.sig, &sset->sig, sigsetsize);
 
        sigdelsetmask(&set, ~_BLOCKABLE);