Re: [PATCH v1.1 1/1] videodev2: Mark all user pointers as such

2018-04-13 Thread kbuild test robot
Hi Sakari,

I love your patch! Perhaps something to improve:

[auto build test WARNING on linuxtv-media/master]
[also build test WARNING 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/Sakari-Ailus/videodev2-Mark-all-user-pointers-as-such/20180414-002820
base:   git://linuxtv.org/media_tree.git master
reproduce:
# apt-get install sparse
make ARCH=x86_64 allmodconfig
make C=1 CF=-D__CHECK_ENDIAN__


sparse warnings: (new ones prefixed by >>)

>> drivers/media/common/cx2341x.c:967:73: sparse: incorrect type in initializer 
>> (different address spaces) @@expected struct v4l2_ext_control *ctrl @@   
>>  got struct v4l2_ext_cstruct v4l2_ext_control *ctrl @@
   drivers/media/common/cx2341x.c:967:73:expected struct v4l2_ext_control 
*ctrl
   drivers/media/common/cx2341x.c:967:73:got struct v4l2_ext_control 
[noderef] *
   drivers/media/common/cx2341x.c:978:65: sparse: incorrect type in initializer 
(different address spaces) @@expected struct v4l2_ext_control *ctrl @@
got struct v4l2_ext_cstruct v4l2_ext_control *ctrl @@
   drivers/media/common/cx2341x.c:978:65:expected struct v4l2_ext_control 
*ctrl
   drivers/media/common/cx2341x.c:978:65:got struct v4l2_ext_control 
[noderef] *
--
>> drivers/media/v4l2-core/v4l2-ioctl.c:453:31: sparse: incorrect type in 
>> assignment (different address spaces) @@expected struct v4l2_plane const 
>> *plane @@got struct v4l2struct v4l2_plane const *plane @@
   drivers/media/v4l2-core/v4l2-ioctl.c:453:31:expected struct v4l2_plane 
const *plane
   drivers/media/v4l2-core/v4l2-ioctl.c:453:31:got struct v4l2_plane 
[noderef] *
>> drivers/media/v4l2-core/v4l2-ioctl.c:2030:24: sparse: incorrect type in 
>> assignment (different address spaces) @@expected struct v4l2_ext_control 
>> [noderef] *[assigned] controls @@got eref] *[assigned] 
>> controls @@
   drivers/media/v4l2-core/v4l2-ioctl.c:2030:24:expected struct 
v4l2_ext_control [noderef] *[assigned] controls
   drivers/media/v4l2-core/v4l2-ioctl.c:2030:24:got struct v4l2_ext_control 
*
   drivers/media/v4l2-core/v4l2-ioctl.c:2064:24: sparse: incorrect type in 
assignment (different address spaces) @@expected struct v4l2_ext_control 
[noderef] *[assigned] controls @@got eref] *[assigned] 
controls @@
   drivers/media/v4l2-core/v4l2-ioctl.c:2064:24:expected struct 
v4l2_ext_control [noderef] *[assigned] controls
   drivers/media/v4l2-core/v4l2-ioctl.c:2064:24:got struct v4l2_ext_control 
*
>> drivers/media/v4l2-core/v4l2-ioctl.c:559:33: sparse: dereference of noderef 
>> expression
   drivers/media/v4l2-core/v4l2-ioctl.c:560:25: sparse: dereference of noderef 
expression
   drivers/media/v4l2-core/v4l2-ioctl.c:560:25: sparse: dereference of noderef 
expression
   drivers/media/v4l2-core/v4l2-ioctl.c:563:25: sparse: dereference of noderef 
expression
   drivers/media/v4l2-core/v4l2-ioctl.c:563:25: sparse: dereference of noderef 
expression
   drivers/media/v4l2-core/v4l2-ioctl.c:875:41: sparse: dereference of noderef 
expression
   drivers/media/v4l2-core/v4l2-ioctl.c:888:21: sparse: dereference of noderef 
expression
--
>> drivers/media/v4l2-core/v4l2-ctrls.c:2855:59: sparse: incorrect type in 
>> initializer (different address spaces) @@expected struct 
>> v4l2_ext_control *c @@got struct v4l2_ext_cstruct v4l2_ext_control *c @@
   drivers/media/v4l2-core/v4l2-ctrls.c:2855:59:expected struct 
v4l2_ext_control *c
   drivers/media/v4l2-core/v4l2-ctrls.c:2855:59:got struct v4l2_ext_control 
[noderef] *
>> drivers/media/v4l2-core/v4l2-ctrls.c:3015:65: sparse: incorrect type in 
>> argument 1 (different address spaces) @@expected struct v4l2_ext_control 
>> *c @@got struct v4l2_ext_cstruct v4l2_ext_control *c @@
   drivers/media/v4l2-core/v4l2-ctrls.c:3015:65:expected struct 
v4l2_ext_control *c
   drivers/media/v4l2-core/v4l2-ctrls.c:3015:65:got struct v4l2_ext_control 
[noderef] *
>> drivers/media/v4l2-core/v4l2-ctrls.c:3177:37: sparse: incorrect type in 
>> assignment (different address spaces) @@expected signed long long 
>> [usertype] *p_s64 @@got signedsigned long long [usertype] *p_s64 @@
   drivers/media/v4l2-core/v4l2-ctrls.c:3177:37:expected signed long long 
[usertype] *p_s64
   drivers/media/v4l2-core/v4l2-ctrls.c:3177:37:got signed long long 
[noderef] *
>> drivers/media/v4l2-core/v4l2-ctrls.c:3179:37: sparse: incorrect type in 
>> assignment (different address spaces) @@expected signed int [usertype] 
>> *p_s32 @@got signedsigned int [usertype] *p_s32 @@
   drivers/media/v4l2-core/v4l2-ctrls.c:3179:37:expected signed int 
[usertype] *p_s32
   drivers/media/v4l2-core/v4l2-ctrls.c:3179:37:got signed int [noderef] 
*
   drivers/media/v4l2-core/v4l2-ctrls.c:3282:56: sparse: incorrect type in 
argument 1 (different address spaces) @@

Re: [PATCH v1.1 1/1] videodev2: Mark all user pointers as such

2018-04-12 Thread Sakari Ailus
On Thu, Apr 12, 2018 at 04:03:22PM +0300, Sakari Ailus wrote:
> A number of uAPI structs have pointers but some lack the __user modifier.
> Add this to the pointers that do not have it.
> 
> Signed-off-by: Sakari Ailus 

Please ignore these patches; the issue is not as trivially solved.

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi


[PATCH v1.1 1/1] videodev2: Mark all user pointers as such

2018-04-12 Thread Sakari Ailus
A number of uAPI structs have pointers but some lack the __user modifier.
Add this to the pointers that do not have it.

Signed-off-by: Sakari Ailus 
---
since v1:

- Against the master branch (not Hans's reqv10)

 include/uapi/linux/videodev2.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 600877be5c22..ac9c65ee4c56 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -929,7 +929,7 @@ struct v4l2_buffer {
union {
__u32   offset;
unsigned long   userptr;
-   struct v4l2_plane *planes;
+   struct v4l2_plane __user *planes;
__s32   fd;
} m;
__u32   length;
@@ -1006,7 +1006,7 @@ struct v4l2_framebuffer {
__u32   flags;
 /* FIXME: in theory we should pass something like PCI device + memory
  * region + offset instead of some physical address */
-   void*base;
+   void __user *base;
struct {
__u32   width;
__u32   height;
@@ -1593,7 +1593,7 @@ struct v4l2_ext_controls {
__u32 count;
__u32 error_idx;
__u32 reserved[2];
-   struct v4l2_ext_control *controls;
+   struct v4l2_ext_control __user *controls;
 };
 
 #define V4L2_CTRL_ID_MASK(0x0fff)
-- 
2.11.0