linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: incorrect type in argument 1 (different address spaces)
@ 2020-05-28  7:19 kbuild test robot
  0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2020-05-28  7:19 UTC (permalink / raw)
  To: Al Viro; +Cc: kbuild-all, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 4346 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b0c3ba31be3e45a130e13b278cf3b90f69bda6f6
commit: 57d563c8292569f2849569853e846bf740df5032 x86: ia32_setup_rt_frame(): consolidate uaccess areas
date:   9 weeks ago
config: x86_64-randconfig-s022-20200528 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-240-gf0fe1cd9-dirty
        git checkout 57d563c8292569f2849569853e846bf740df5032
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)

   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
>> arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@     expected void const volatile [noderef] <asn:1> * @@     got unsigned long long [usertype] * @@
   arch/x86/ia32/ia32_signal.c:350:9: sparse:     expected void const volatile [noderef] <asn:1> *
   arch/x86/ia32/ia32_signal.c:350:9: sparse:     got unsigned long long [usertype] *
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression
   arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: cast removes address space '<asn:1>' of expression

vim +350 arch/x86/ia32/ia32_signal.c

   299	
   300	int ia32_setup_rt_frame(int sig, struct ksignal *ksig,
   301				compat_sigset_t *set, struct pt_regs *regs)
   302	{
   303		struct rt_sigframe_ia32 __user *frame;
   304		void __user *restorer;
   305		void __user *fp = NULL;
   306	
   307		/* unsafe_put_user optimizes that into a single 8 byte store */
   308		static const struct {
   309			u8 movl;
   310			u32 val;
   311			u16 int80;
   312			u8  pad;
   313		} __attribute__((packed)) code = {
   314			0xb8,
   315			__NR_ia32_rt_sigreturn,
   316			0x80cd,
   317			0,
   318		};
   319	
   320		frame = get_sigframe(ksig, regs, sizeof(*frame), &fp);
   321	
   322		if (!user_access_begin(frame, sizeof(*frame)))
   323			return -EFAULT;
   324	
   325		unsafe_put_user(sig, &frame->sig, Efault);
   326		unsafe_put_user(ptr_to_compat(&frame->info), &frame->pinfo, Efault);
   327		unsafe_put_user(ptr_to_compat(&frame->uc), &frame->puc, Efault);
   328	
   329		/* Create the ucontext.  */
   330		if (static_cpu_has(X86_FEATURE_XSAVE))
   331			unsafe_put_user(UC_FP_XSTATE, &frame->uc.uc_flags, Efault);
   332		else
   333			unsafe_put_user(0, &frame->uc.uc_flags, Efault);
   334		unsafe_put_user(0, &frame->uc.uc_link, Efault);
   335		unsafe_compat_save_altstack(&frame->uc.uc_stack, regs->sp, Efault);
   336	
   337		if (ksig->ka.sa.sa_flags & SA_RESTORER)
   338			restorer = ksig->ka.sa.sa_restorer;
   339		else
   340			restorer = current->mm->context.vdso +
   341				vdso_image_32.sym___kernel_rt_sigreturn;
   342		unsafe_put_user(ptr_to_compat(restorer), &frame->pretcode, Efault);
   343	
   344		/*
   345		 * Not actually used anymore, but left because some gdb
   346		 * versions need it.
   347		 */
   348		unsafe_put_user(*((u64 *)&code), (u64 __user *)frame->retcode, Efault);
   349		unsafe_put_sigcontext32(&frame->uc.uc_mcontext, fp, regs, set, Efault);
 > 350		unsafe_put_user(*(__u64 *)set, (__u64 *)&frame->uc.uc_sigmask, Efault);

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34473 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-05-28  7:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-28  7:19 arch/x86/ia32/ia32_signal.c:350:9: sparse: sparse: incorrect type in argument 1 (different address spaces) kbuild test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).