Commit 55382134 authored by GONG, Ruiqi's avatar GONG, Ruiqi Committed by Paul Moore

capability: erase checker warnings about struct __user_cap_data_struct

Currently Sparse warns the following when compiling kernel/capability.c:

kernel/capability.c:191:35: warning: incorrect type in argument 2
                              (different address spaces)
kernel/capability.c:191:35:    expected void const *from
kernel/capability.c:191:35:    got struct __user_cap_data_struct
                                 [noderef] __user *
kernel/capability.c:168:14: warning: dereference of noderef expression
...... (multiple noderef warnings on different locations)
kernel/capability.c:244:29: warning: incorrect type in argument 1
                              (different address spaces)
kernel/capability.c:244:29:    expected void *to
kernel/capability.c:244:29:    got struct __user_cap_data_struct
                                 [noderef] __user ( * )[2]
kernel/capability.c:247:42: warning: dereference of noderef expression
...... (multiple noderef warnings on different locations)

It seems that defining `struct __user_cap_data_struct` together with
`cap_user_data_t` make Sparse believe that the struct is `noderef` as
well. Separate their definitions to clarify their respective attributes.
Signed-off-by: default avatarGONG, Ruiqi <gongruiqi@huaweicloud.com>
Acked-by: default avatarSerge Hallyn <serge@hallyn.com>
[PM: wrapped long lines in the description]
Signed-off-by: default avatarPaul Moore <paul@paul-moore.com>
parent 4432b507
...@@ -41,11 +41,12 @@ typedef struct __user_cap_header_struct { ...@@ -41,11 +41,12 @@ typedef struct __user_cap_header_struct {
int pid; int pid;
} __user *cap_user_header_t; } __user *cap_user_header_t;
typedef struct __user_cap_data_struct { struct __user_cap_data_struct {
__u32 effective; __u32 effective;
__u32 permitted; __u32 permitted;
__u32 inheritable; __u32 inheritable;
} __user *cap_user_data_t; };
typedef struct __user_cap_data_struct __user *cap_user_data_t;
#define VFS_CAP_REVISION_MASK 0xFF000000 #define VFS_CAP_REVISION_MASK 0xFF000000
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment