Re: [PATCH] media: v4l2-compat-ioctl32: fix several __user annotations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Mauro,

I love your patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v4.16 next-20180413]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Mauro-Carvalho-Chehab/media-v4l2-compat-ioctl32-fix-several-__user-annotations/20180414-001705
base:   git://linuxtv.org/media_tree.git master
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All error/warnings (new ones prefixed by >>):

   In file included from include/linux/uaccess.h:14:0,
                    from include/linux/compat.h:20,
                    from drivers/media/v4l2-core/v4l2-compat-ioctl32.c:16:
   drivers/media/v4l2-core/v4l2-compat-ioctl32.c: In function 'put_v4l2_buffer32':
>> arch/arm64/include/asm/uaccess.h:306:6: error: void value not ignored as it ought to be
     (x) = (__force __typeof__(*(ptr)))__gu_val;   \
         ^
>> arch/arm64/include/asm/uaccess.h:315:3: note: in expansion of macro '__get_user_err'
      __get_user_err((x), __p, (err));   \
      ^~~~~~~~~~~~~~
>> arch/arm64/include/asm/uaccess.h:330:2: note: in expansion of macro '__get_user_check'
     __get_user_check((x), (ptr), __gu_err);    \
     ^~~~~~~~~~~~~~~~
>> arch/arm64/include/asm/uaccess.h:334:18: note: in expansion of macro '__get_user'
    #define get_user __get_user
                     ^~~~~~~~~~
   drivers/media/v4l2-core/v4l2-compat-ioctl32.c:619:7: note: in expansion of macro 'get_user'
      if (get_user(uplane, (__force void __user *)&kp->m.planes))
          ^~~~~~~~
--
   In file included from include/linux/uaccess.h:14:0,
                    from include/linux/compat.h:20,
                    from drivers/media//v4l2-core/v4l2-compat-ioctl32.c:16:
   drivers/media//v4l2-core/v4l2-compat-ioctl32.c: In function 'put_v4l2_buffer32':
>> arch/arm64/include/asm/uaccess.h:306:6: error: void value not ignored as it ought to be
     (x) = (__force __typeof__(*(ptr)))__gu_val;   \
         ^
>> arch/arm64/include/asm/uaccess.h:315:3: note: in expansion of macro '__get_user_err'
      __get_user_err((x), __p, (err));   \
      ^~~~~~~~~~~~~~
>> arch/arm64/include/asm/uaccess.h:330:2: note: in expansion of macro '__get_user_check'
     __get_user_check((x), (ptr), __gu_err);    \
     ^~~~~~~~~~~~~~~~
>> arch/arm64/include/asm/uaccess.h:334:18: note: in expansion of macro '__get_user'
    #define get_user __get_user
                     ^~~~~~~~~~
   drivers/media//v4l2-core/v4l2-compat-ioctl32.c:619:7: note: in expansion of macro 'get_user'
      if (get_user(uplane, (__force void __user *)&kp->m.planes))
          ^~~~~~~~

vim +306 arch/arm64/include/asm/uaccess.h

4d8efc2d Robin Murphy       2018-02-05  256  
4d8efc2d Robin Murphy       2018-02-05  257  /*
0aea86a2 Catalin Marinas    2012-03-05  258   * The "__xxx" versions of the user access functions do not verify the address
0aea86a2 Catalin Marinas    2012-03-05  259   * space - it must have been done previously with a separate "access_ok()"
0aea86a2 Catalin Marinas    2012-03-05  260   * call.
0aea86a2 Catalin Marinas    2012-03-05  261   *
0aea86a2 Catalin Marinas    2012-03-05  262   * The "__xxx_error" versions set the third argument to -EFAULT if an error
0aea86a2 Catalin Marinas    2012-03-05  263   * occurs, and leave it unchanged on success.
0aea86a2 Catalin Marinas    2012-03-05  264   */
57f4959b James Morse        2016-02-05  265  #define __get_user_asm(instr, alt_instr, reg, x, addr, err, feature)	\
0aea86a2 Catalin Marinas    2012-03-05  266  	asm volatile(							\
57f4959b James Morse        2016-02-05  267  	"1:"ALTERNATIVE(instr "     " reg "1, [%2]\n",			\
57f4959b James Morse        2016-02-05  268  			alt_instr " " reg "1, [%2]\n", feature)		\
0aea86a2 Catalin Marinas    2012-03-05  269  	"2:\n"								\
0aea86a2 Catalin Marinas    2012-03-05  270  	"	.section .fixup, \"ax\"\n"				\
0aea86a2 Catalin Marinas    2012-03-05  271  	"	.align	2\n"						\
0aea86a2 Catalin Marinas    2012-03-05  272  	"3:	mov	%w0, %3\n"					\
0aea86a2 Catalin Marinas    2012-03-05  273  	"	mov	%1, #0\n"					\
0aea86a2 Catalin Marinas    2012-03-05  274  	"	b	2b\n"						\
0aea86a2 Catalin Marinas    2012-03-05  275  	"	.previous\n"						\
6c94f27a Ard Biesheuvel     2016-01-01  276  	_ASM_EXTABLE(1b, 3b)						\
0aea86a2 Catalin Marinas    2012-03-05  277  	: "+r" (err), "=&r" (x)						\
0aea86a2 Catalin Marinas    2012-03-05  278  	: "r" (addr), "i" (-EFAULT))
0aea86a2 Catalin Marinas    2012-03-05  279  
0aea86a2 Catalin Marinas    2012-03-05  280  #define __get_user_err(x, ptr, err)					\
0aea86a2 Catalin Marinas    2012-03-05  281  do {									\
0aea86a2 Catalin Marinas    2012-03-05  282  	unsigned long __gu_val;						\
0aea86a2 Catalin Marinas    2012-03-05  283  	__chk_user_ptr(ptr);						\
bd38967d Catalin Marinas    2016-07-01  284  	uaccess_enable_not_uao();					\
0aea86a2 Catalin Marinas    2012-03-05  285  	switch (sizeof(*(ptr))) {					\
0aea86a2 Catalin Marinas    2012-03-05  286  	case 1:								\
57f4959b James Morse        2016-02-05  287  		__get_user_asm("ldrb", "ldtrb", "%w", __gu_val, (ptr),  \
57f4959b James Morse        2016-02-05  288  			       (err), ARM64_HAS_UAO);			\
0aea86a2 Catalin Marinas    2012-03-05  289  		break;							\
0aea86a2 Catalin Marinas    2012-03-05  290  	case 2:								\
57f4959b James Morse        2016-02-05  291  		__get_user_asm("ldrh", "ldtrh", "%w", __gu_val, (ptr),  \
57f4959b James Morse        2016-02-05  292  			       (err), ARM64_HAS_UAO);			\
0aea86a2 Catalin Marinas    2012-03-05  293  		break;							\
0aea86a2 Catalin Marinas    2012-03-05  294  	case 4:								\
57f4959b James Morse        2016-02-05  295  		__get_user_asm("ldr", "ldtr", "%w", __gu_val, (ptr),	\
57f4959b James Morse        2016-02-05  296  			       (err), ARM64_HAS_UAO);			\
0aea86a2 Catalin Marinas    2012-03-05  297  		break;							\
0aea86a2 Catalin Marinas    2012-03-05  298  	case 8:								\
d135b8b5 Mark Rutland       2017-05-03  299  		__get_user_asm("ldr", "ldtr", "%x",  __gu_val, (ptr),	\
57f4959b James Morse        2016-02-05  300  			       (err), ARM64_HAS_UAO);			\
0aea86a2 Catalin Marinas    2012-03-05  301  		break;							\
0aea86a2 Catalin Marinas    2012-03-05  302  	default:							\
0aea86a2 Catalin Marinas    2012-03-05  303  		BUILD_BUG();						\
0aea86a2 Catalin Marinas    2012-03-05  304  	}								\
bd38967d Catalin Marinas    2016-07-01  305  	uaccess_disable_not_uao();					\
58fff517 Michael S. Tsirkin 2014-12-12 @306  	(x) = (__force __typeof__(*(ptr)))__gu_val;			\
0aea86a2 Catalin Marinas    2012-03-05  307  } while (0)
0aea86a2 Catalin Marinas    2012-03-05  308  
84624087 Will Deacon        2018-02-05  309  #define __get_user_check(x, ptr, err)					\
0aea86a2 Catalin Marinas    2012-03-05  310  ({									\
84624087 Will Deacon        2018-02-05  311  	__typeof__(*(ptr)) __user *__p = (ptr);				\
84624087 Will Deacon        2018-02-05  312  	might_fault();							\
84624087 Will Deacon        2018-02-05  313  	if (access_ok(VERIFY_READ, __p, sizeof(*__p))) {		\
84624087 Will Deacon        2018-02-05  314  		__p = uaccess_mask_ptr(__p);				\
84624087 Will Deacon        2018-02-05 @315  		__get_user_err((x), __p, (err));			\
84624087 Will Deacon        2018-02-05  316  	} else {							\
84624087 Will Deacon        2018-02-05  317  		(x) = 0; (err) = -EFAULT;				\
84624087 Will Deacon        2018-02-05  318  	}								\
0aea86a2 Catalin Marinas    2012-03-05  319  })
0aea86a2 Catalin Marinas    2012-03-05  320  
0aea86a2 Catalin Marinas    2012-03-05  321  #define __get_user_error(x, ptr, err)					\
0aea86a2 Catalin Marinas    2012-03-05  322  ({									\
84624087 Will Deacon        2018-02-05  323  	__get_user_check((x), (ptr), (err));				\
0aea86a2 Catalin Marinas    2012-03-05  324  	(void)0;							\
0aea86a2 Catalin Marinas    2012-03-05  325  })
0aea86a2 Catalin Marinas    2012-03-05  326  
84624087 Will Deacon        2018-02-05  327  #define __get_user(x, ptr)						\
0aea86a2 Catalin Marinas    2012-03-05  328  ({									\
84624087 Will Deacon        2018-02-05  329  	int __gu_err = 0;						\
84624087 Will Deacon        2018-02-05 @330  	__get_user_check((x), (ptr), __gu_err);				\
84624087 Will Deacon        2018-02-05  331  	__gu_err;							\
0aea86a2 Catalin Marinas    2012-03-05  332  })
0aea86a2 Catalin Marinas    2012-03-05  333  
84624087 Will Deacon        2018-02-05 @334  #define get_user	__get_user
84624087 Will Deacon        2018-02-05  335  

:::::: The code at line 306 was first introduced by commit
:::::: 58fff51784cb5e1bcc06a1417be26eec4288507c arm64/uaccess: fix sparse errors

:::::: TO: Michael S. Tsirkin <mst@xxxxxxxxxx>
:::::: CC: Michael S. Tsirkin <mst@xxxxxxxxxx>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux