tree:
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
for-5.13/io_uring
head: c5de00366e3e675f9e321983d9bd357c1fbea0e9
commit: 9096af3e9c8734a34703bd9fb5ab14292296f911 [119/120] io_uring: add helper for
parsing poll events
config: i386-randconfig-s002-20210414 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-280-g2cd6d34e-dirty
#
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git/com...
git remote add block
https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git
git fetch --no-tags block for-5.13/io_uring
git checkout 9096af3e9c8734a34703bd9fb5ab14292296f911
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
fs/io_uring.c:2888:24: sparse: sparse: incorrect type in return expression (different
address spaces) @@ expected void [noderef] __user * @@ got struct io_buffer
*[assigned] kbuf @@
fs/io_uring.c:2888:24: sparse: expected void [noderef] __user *
fs/io_uring.c:2888:24: sparse: got struct io_buffer *[assigned] kbuf
fs/io_uring.c:4189:14: sparse: sparse: incorrect type in assignment (different address
spaces) @@ expected struct file *file @@ got struct file [noderef] __rcu * @@
fs/io_uring.c:4189:14: sparse: expected struct file *file
fs/io_uring.c:4189:14: sparse: got struct file [noderef] __rcu *
fs/io_uring.c:4794:72: sparse: sparse: incorrect type in argument 4 (different base
types) @@ expected int mask @@ got restricted __poll_t [usertype] mask @@
fs/io_uring.c:4794:72: sparse: expected int mask
fs/io_uring.c:4794:72: sparse: got restricted __poll_t [usertype] mask
fs/io_uring.c:4798:21: sparse: sparse: incorrect type in assignment (different base
types) @@ expected unsigned int [usertype] result @@ got restricted __poll_t
[usertype] mask @@
fs/io_uring.c:4798:21: sparse: expected unsigned int [usertype] result
fs/io_uring.c:4798:21: sparse: got restricted __poll_t [usertype] mask
fs/io_uring.c:4823:29: sparse: sparse: incorrect type in assignment (different base
types) @@ expected unsigned int [usertype] result @@ got restricted __poll_t @@
fs/io_uring.c:4823:29: sparse: expected unsigned int [usertype] result
fs/io_uring.c:4823:29: sparse: got restricted __poll_t
fs/io_uring.c:4904:49: sparse: sparse: incorrect type in argument 2 (different base
types) @@ expected restricted __poll_t [usertype] mask @@ got unsigned int
[usertype] result @@
fs/io_uring.c:4904:49: sparse: expected restricted __poll_t [usertype] mask
fs/io_uring.c:4904:49: sparse: got unsigned int [usertype] result
fs/io_uring.c:5053:41: sparse: sparse: incorrect type in argument 4 (different base
types) @@ expected int mask @@ got restricted __poll_t [usertype] @@
fs/io_uring.c:5053:41: sparse: expected int mask
fs/io_uring.c:5053:41: sparse: got restricted __poll_t [usertype]
fs/io_uring.c:5141:22: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5141:22: sparse: left side has type restricted __poll_t
fs/io_uring.c:5141:22: sparse: right side has type int
fs/io_uring.c:5143:22: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5143:22: sparse: left side has type restricted __poll_t
fs/io_uring.c:5143:22: sparse: right side has type int
fs/io_uring.c:5148:22: sparse: sparse: invalid assignment: &=
fs/io_uring.c:5148:22: sparse: left side has type restricted __poll_t
fs/io_uring.c:5148:22: sparse: right side has type int
fs/io_uring.c:5150:14: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5150:14: sparse: left side has type restricted __poll_t
fs/io_uring.c:5150:14: sparse: right side has type int
fs/io_uring.c:5164:67: sparse: sparse: incorrect type in argument 4 (different base
types) @@ expected int mask @@ got restricted __poll_t [assigned] [usertype] mask
@@
fs/io_uring.c:5164:67: sparse: expected int mask
fs/io_uring.c:5164:67: sparse: got restricted __poll_t [assigned] [usertype] mask
fs/io_uring.c:5165:52: sparse: sparse: incorrect type in argument 5 (different base
types) @@ expected int events @@ got restricted __poll_t [usertype] events @@
fs/io_uring.c:5165:52: sparse: expected int events
fs/io_uring.c:5165:52: sparse: got restricted __poll_t [usertype] events
fs/io_uring.c:5295:24: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5295:24: sparse: left side has type unsigned int
fs/io_uring.c:5295:24: sparse: right side has type restricted __poll_t
fs/io_uring.c:5296:65: sparse: sparse: restricted __poll_t degrades to integer
fs/io_uring.c:5296:29: sparse: sparse: restricted __poll_t degrades to integer
> fs/io_uring.c:5296:38: sparse: sparse: incorrect type in return
expression (different base types) @@ expected restricted __poll_t @@ got unsigned
int @@
fs/io_uring.c:5296:38: sparse: expected restricted __poll_t
fs/io_uring.c:5296:38: sparse: got unsigned int
fs/io_uring.c:5361:16: sparse: sparse: incorrect type in assignment (different base
types) @@ expected unsigned int [usertype] events @@ got restricted __poll_t @@
fs/io_uring.c:5361:16: sparse: expected unsigned int [usertype] events
fs/io_uring.c:5361:16: sparse: got restricted __poll_t
fs/io_uring.c:5367:34: sparse: sparse: incorrect type in assignment (different base
types) @@ expected restricted __poll_t [usertype] events @@ got unsigned int
[usertype] events @@
fs/io_uring.c:5367:34: sparse: expected restricted __poll_t [usertype] events
fs/io_uring.c:5367:34: sparse: got unsigned int [usertype] events
fs/io_uring.c:5376:30: sparse: sparse: incorrect type in assignment (different base
types) @@ expected restricted __poll_t [usertype] events @@ got unsigned int
[usertype] events @@
fs/io_uring.c:5376:30: sparse: expected restricted __poll_t [usertype] events
fs/io_uring.c:5376:30: sparse: got unsigned int [usertype] events
fs/io_uring.c:5444:35: sparse: sparse: invalid assignment: &=
fs/io_uring.c:5444:35: sparse: left side has type restricted __poll_t
fs/io_uring.c:5444:35: sparse: right side has type int
fs/io_uring.c:5445:54: sparse: sparse: restricted __poll_t degrades to integer
fs/io_uring.c:5445:35: sparse: sparse: invalid assignment: |=
fs/io_uring.c:5445:35: sparse: left side has type restricted __poll_t
fs/io_uring.c:5445:35: sparse: right side has type unsigned int
fs/io_uring.c:7202:9: sparse: sparse: context imbalance in
'io_sq_thread_unpark' - wrong count at exit
fs/io_uring.c:7213:9: sparse: sparse: context imbalance in 'io_sq_thread_park'
- wrong count at exit
vim +5296 fs/io_uring.c
5284
5285 static __poll_t io_poll_parse_events(const struct io_uring_sqe *sqe,
5286 unsigned int flags)
5287 {
5288 u32 events;
5289
5290 events = READ_ONCE(sqe->poll32_events);
5291 #ifdef __BIG_ENDIAN
5292 events = swahw32(events);
5293 #endif
5294 if (!(flags & IORING_POLL_ADD_MULTI))
5295 events |= EPOLLONESHOT;
5296 return demangle_poll(events) | (events &
(EPOLLEXCLUSIVE|EPOLLONESHOT));
5297 }
5298
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org