]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
um: fix sparse warnings in signal code
authorBenjamin Berg <benjamin.berg@intel.com>
Thu, 31 Oct 2024 14:20:17 +0000 (15:20 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 7 Nov 2024 16:34:50 +0000 (17:34 +0100)
sparse reports that various places were missing the __user tag in casts.
In addition, one location was using 0 instead of NULL.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Link: https://patch.msgid.link/20241031142017.430420-2-benjamin@sipsolutions.net
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
arch/x86/um/signal.c

index 797c4e4e57f3549d996fe0d3cbfcb8ee60c423d6..75087e85b6fdb7fb51cf71d96e97b2574fc10be2 100644 (file)
@@ -242,7 +242,7 @@ int setup_signal_stack_sc(unsigned long stack_top, struct ksignal *ksig,
        if (ksig->ka.sa.sa_flags & SA_RESTORER)
                restorer = ksig->ka.sa.sa_restorer;
 
-       err |= __put_user(restorer, (void **)&frame->pretcode);
+       err |= __put_user(restorer, (void __user * __user *)&frame->pretcode);
        err |= __put_user(sig, &frame->sig);
 
        fp_to = (unsigned long)frame + sizeof(*frame);
@@ -298,10 +298,10 @@ int setup_signal_stack_si(unsigned long stack_top, struct ksignal *ksig,
        if (ksig->ka.sa.sa_flags & SA_RESTORER)
                restorer = ksig->ka.sa.sa_restorer;
 
-       err |= __put_user(restorer, (void **)&frame->pretcode);
+       err |= __put_user(restorer, (void __user * __user *)&frame->pretcode);
        err |= __put_user(sig, &frame->sig);
-       err |= __put_user(&frame->info, (void **)&frame->pinfo);
-       err |= __put_user(&frame->uc, (void **)&frame->puc);
+       err |= __put_user(&frame->info, (void __user * __user *)&frame->pinfo);
+       err |= __put_user(&frame->uc, (void __user * __user *)&frame->puc);
        err |= copy_siginfo_to_user(&frame->info, &ksig->info);
 
        fp_to = (unsigned long)frame + sizeof(*frame);
@@ -387,7 +387,7 @@ int setup_signal_stack_si(unsigned long stack_top, struct ksignal *ksig,
 
        /* Create the ucontext.  */
        err |= __put_user(0, &frame->uc.uc_flags);
-       err |= __put_user(0, &frame->uc.uc_link);
+       err |= __put_user(NULL, &frame->uc.uc_link);
        err |= __save_altstack(&frame->uc.uc_stack, PT_REGS_SP(regs));
 
        fp_to = (unsigned long)frame + sizeof(*frame);
@@ -411,7 +411,7 @@ int setup_signal_stack_si(unsigned long stack_top, struct ksignal *ksig,
         */
        /* x86-64 should always use SA_RESTORER. */
        if (ksig->ka.sa.sa_flags & SA_RESTORER)
-               err |= __put_user((void *)ksig->ka.sa.sa_restorer,
+               err |= __put_user((void __user *)ksig->ka.sa.sa_restorer,
                                  &frame->pretcode);
        else
                /* could use a vstub here */