Re: [PATCH v1.1 1/1] videodev2: Mark all user pointers as such
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
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 AilusPlease 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
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