All of lore.kernel.org
 help / color / mirror / Atom feed
* [ammarfaizi2-block:axboe/linux-block/for-5.19/io_uring 22/30] fs/io_uring.c:5877:66: sparse: sparse: incorrect type in argument 1 (different base types)
@ 2022-04-13  8:17 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-04-13  8:17 UTC (permalink / raw)
  To: Pavel Begunkov
  Cc: kbuild-all, GNU/Weeb Mailing List, linux-kernel, Jens Axboe

tree:   https://github.com/ammarfaizi2/linux-block axboe/linux-block/for-5.19/io_uring
head:   d5148a37fea2d49b9dcbd237bae23fad70fcff2c
commit: 37aa9e03dd427a26edae2fd25e72df0732897a8d [22/30] io_uring: explicitly keep a CQE in io_kiocb
config: ia64-randconfig-s031-20220413 (https://download.01.org/0day-ci/archive/20220413/202204131639.xakN6roU-lkp@intel.com/config)
compiler: ia64-linux-gcc (GCC) 11.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://github.com/ammarfaizi2/linux-block/commit/37aa9e03dd427a26edae2fd25e72df0732897a8d
        git remote add ammarfaizi2-block https://github.com/ammarfaizi2/linux-block
        git fetch --no-tags ammarfaizi2-block axboe/linux-block/for-5.19/io_uring
        git checkout 37aa9e03dd427a26edae2fd25e72df0732897a8d
        # save the config file to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=ia64 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


sparse warnings: (new ones prefixed by >>)
   fs/io_uring.c:3199:23: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int [usertype] flags @@     got restricted __kernel_rwf_t @@
   fs/io_uring.c:3199:23: sparse:     expected unsigned int [usertype] flags
   fs/io_uring.c:3199:23: sparse:     got restricted __kernel_rwf_t
   fs/io_uring.c:3396: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:3396:24: sparse:     expected void [noderef] __user *
   fs/io_uring.c:3396:24: sparse:     got struct io_buffer *[assigned] kbuf
   fs/io_uring.c:3783:48: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected restricted __kernel_rwf_t [usertype] flags @@     got unsigned int [usertype] flags @@
   fs/io_uring.c:3783:48: sparse:     expected restricted __kernel_rwf_t [usertype] flags
   fs/io_uring.c:3783:48: sparse:     got unsigned int [usertype] flags
   fs/io_uring.c:5102:14: sparse: sparse: incorrect type in assignment (different address spaces) @@     expected struct file *file @@     got struct file [noderef] __rcu * @@
   fs/io_uring.c:5102:14: sparse:     expected struct file *file
   fs/io_uring.c:5102:14: sparse:     got struct file [noderef] __rcu *
   fs/io_uring.c:5867:68: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __poll_t [usertype] _key @@     got int apoll_events @@
   fs/io_uring.c:5867:68: sparse:     expected restricted __poll_t [usertype] _key
   fs/io_uring.c:5867:68: sparse:     got int apoll_events
   fs/io_uring.c:5872:56: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:5876:59: sparse: sparse: restricted __poll_t degrades to integer
>> fs/io_uring.c:5877:66: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected restricted __poll_t [usertype] val @@     got int @@
   fs/io_uring.c:5877:66: sparse:     expected restricted __poll_t [usertype] val
   fs/io_uring.c:5877:66: sparse:     got int
   fs/io_uring.c:5877:52: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __poll_t [usertype] mask @@     got unsigned short @@
   fs/io_uring.c:5877:52: sparse:     expected restricted __poll_t [usertype] mask
   fs/io_uring.c:5877:52: sparse:     got unsigned short
   fs/io_uring.c:5881:75: sparse: sparse: incorrect type in argument 3 (different base types) @@     expected signed int [usertype] res @@     got restricted __poll_t [usertype] mask @@
   fs/io_uring.c:5881:75: sparse:     expected signed int [usertype] res
   fs/io_uring.c:5881:75: sparse:     got restricted __poll_t [usertype] mask
   fs/io_uring.c:5911:68: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:5911:57: sparse: sparse: incorrect type in argument 1 (different base types) @@     expected restricted __poll_t [usertype] val @@     got unsigned int @@
   fs/io_uring.c:5911:57: sparse:     expected restricted __poll_t [usertype] val
   fs/io_uring.c:5911:57: sparse:     got unsigned int
   fs/io_uring.c:5992:45: sparse: sparse: incorrect type in argument 3 (different base types) @@     expected int events @@     got restricted __poll_t [usertype] events @@
   fs/io_uring.c:5992:45: sparse:     expected int events
   fs/io_uring.c:5992:45: sparse:     got restricted __poll_t [usertype] events
   fs/io_uring.c:6027:40: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected int mask @@     got restricted __poll_t [usertype] mask @@
   fs/io_uring.c:6027:40: sparse:     expected int mask
   fs/io_uring.c:6027:40: sparse:     got restricted __poll_t [usertype] mask
   fs/io_uring.c:6027:50: sparse: sparse: incorrect type in argument 3 (different base types) @@     expected int events @@     got restricted __poll_t [usertype] events @@
   fs/io_uring.c:6027:50: sparse:     expected int events
   fs/io_uring.c:6027:50: sparse:     got restricted __poll_t [usertype] events
   fs/io_uring.c:6118:24: sparse: sparse: incorrect type in return expression (different base types) @@     expected int @@     got restricted __poll_t [assigned] [usertype] mask @@
   fs/io_uring.c:6118:24: sparse:     expected int
   fs/io_uring.c:6118:24: sparse:     got restricted __poll_t [assigned] [usertype] mask
   fs/io_uring.c:6135:40: sparse: sparse: incorrect type in argument 2 (different base types) @@     expected int mask @@     got restricted __poll_t [assigned] [usertype] mask @@
   fs/io_uring.c:6135:40: sparse:     expected int mask
   fs/io_uring.c:6135:40: sparse:     got restricted __poll_t [assigned] [usertype] mask
   fs/io_uring.c:6135:50: sparse: sparse: incorrect type in argument 3 (different base types) @@     expected int events @@     got restricted __poll_t [usertype] events @@
   fs/io_uring.c:6135:50: sparse:     expected int events
   fs/io_uring.c:6135:50: sparse:     got restricted __poll_t [usertype] events
   fs/io_uring.c:6145:47: sparse: sparse: incorrect type in argument 3 (different base types) @@     expected int events @@     got restricted __poll_t [usertype] events @@
   fs/io_uring.c:6145:47: sparse:     expected int events
   fs/io_uring.c:6145:47: sparse:     got restricted __poll_t [usertype] events
   fs/io_uring.c:6170:25: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:6170:48: sparse: sparse: incorrect type in initializer (different base types) @@     expected restricted __poll_t [usertype] mask @@     got unsigned int @@
   fs/io_uring.c:6170:48: sparse:     expected restricted __poll_t [usertype] mask
   fs/io_uring.c:6170:48: sparse:     got unsigned int
   fs/io_uring.c:6179:22: sparse: sparse: invalid assignment: |=
   fs/io_uring.c:6179:22: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:6179:22: sparse:    right side has type int
   fs/io_uring.c:6184:30: sparse: sparse: invalid assignment: &=
   fs/io_uring.c:6184:30: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:6184:30: sparse:    right side has type int
   fs/io_uring.c:6186:22: sparse: sparse: invalid assignment: |=
   fs/io_uring.c:6186:22: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:6186:22: sparse:    right side has type int
   fs/io_uring.c:6212:33: sparse: sparse: incorrect type in argument 5 (different base types) @@     expected int mask @@     got restricted __poll_t [assigned] [usertype] mask @@
   fs/io_uring.c:6212:33: sparse:     expected int mask
   fs/io_uring.c:6212:33: sparse:     got restricted __poll_t [assigned] [usertype] mask
   fs/io_uring.c:6212:50: sparse: sparse: incorrect type in argument 6 (different base types) @@     expected int events @@     got restricted __poll_t [usertype] events @@
   fs/io_uring.c:6212:50: sparse:     expected int events
   fs/io_uring.c:6212:50: sparse:     got restricted __poll_t [usertype] events
   fs/io_uring.c:6294:24: sparse: sparse: invalid assignment: |=
   fs/io_uring.c:6294:24: sparse:    left side has type unsigned int
   fs/io_uring.c:6294:24: sparse:    right side has type restricted __poll_t
   fs/io_uring.c:6295:65: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:6295:29: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:6295:38: sparse: sparse: incorrect type in return expression (different base types) @@     expected restricted __poll_t @@     got unsigned int @@
   fs/io_uring.c:6295:38: sparse:     expected restricted __poll_t
   fs/io_uring.c:6295:38: sparse:     got unsigned int
   fs/io_uring.c:6347:27: sparse: sparse: incorrect type in assignment (different base types) @@     expected int apoll_events @@     got restricted __poll_t [usertype] events @@
   fs/io_uring.c:6347:27: sparse:     expected int apoll_events
   fs/io_uring.c:6347:27: sparse:     got restricted __poll_t [usertype] events
   fs/io_uring.c:6385:43: sparse: sparse: invalid assignment: &=
   fs/io_uring.c:6385:43: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:6385:43: sparse:    right side has type int
   fs/io_uring.c:6386:62: sparse: sparse: restricted __poll_t degrades to integer
   fs/io_uring.c:6386:43: sparse: sparse: invalid assignment: |=
   fs/io_uring.c:6386:43: sparse:    left side has type restricted __poll_t
   fs/io_uring.c:6386:43: sparse:    right side has type unsigned int
   fs/io_uring.c:2451:17: sparse: sparse: context imbalance in 'handle_prev_tw_list' - different lock contexts for basic block
   fs/io_uring.c:7394:39: sparse: sparse: marked inline, but without a definition
   fs/io_uring.c:7394:39: sparse: sparse: marked inline, but without a definition
   fs/io_uring.c:7394:39: sparse: sparse: marked inline, but without a definition

vim +5877 fs/io_uring.c

  5839	
  5840	/*
  5841	 * All poll tw should go through this. Checks for poll events, manages
  5842	 * references, does rewait, etc.
  5843	 *
  5844	 * Returns a negative error on failure. >0 when no action require, which is
  5845	 * either spurious wakeup or multishot CQE is served. 0 when it's done with
  5846	 * the request, then the mask is stored in req->cqe.res.
  5847	 */
  5848	static int io_poll_check_events(struct io_kiocb *req, bool locked)
  5849	{
  5850		struct io_ring_ctx *ctx = req->ctx;
  5851		int v;
  5852	
  5853		/* req->task == current here, checking PF_EXITING is safe */
  5854		if (unlikely(req->task->flags & PF_EXITING))
  5855			io_poll_mark_cancelled(req);
  5856	
  5857		do {
  5858			v = atomic_read(&req->poll_refs);
  5859	
  5860			/* tw handler should be the owner, and so have some references */
  5861			if (WARN_ON_ONCE(!(v & IO_POLL_REF_MASK)))
  5862				return 0;
  5863			if (v & IO_POLL_CANCEL_FLAG)
  5864				return -ECANCELED;
  5865	
  5866			if (!req->cqe.res) {
  5867				struct poll_table_struct pt = { ._key = req->apoll_events };
  5868	
  5869				if (unlikely(!io_assign_file(req, IO_URING_F_UNLOCKED)))
  5870					req->cqe.res = -EBADF;
  5871				else
  5872					req->cqe.res = vfs_poll(req->file, &pt) & req->apoll_events;
  5873			}
  5874	
  5875			/* multishot, just fill an CQE and proceed */
  5876			if (req->cqe.res && !(req->apoll_events & EPOLLONESHOT)) {
> 5877				__poll_t mask = mangle_poll(req->cqe.res & req->apoll_events);
  5878				bool filled;
  5879	
  5880				spin_lock(&ctx->completion_lock);
  5881				filled = io_fill_cqe_aux(ctx, req->cqe.user_data, mask,
  5882							 IORING_CQE_F_MORE);
  5883				io_commit_cqring(ctx);
  5884				spin_unlock(&ctx->completion_lock);
  5885				if (unlikely(!filled))
  5886					return -ECANCELED;
  5887				io_cqring_ev_posted(ctx);
  5888			} else if (req->cqe.res) {
  5889				return 0;
  5890			}
  5891	
  5892			/*
  5893			 * Release all references, retry if someone tried to restart
  5894			 * task_work while we were executing it.
  5895			 */
  5896		} while (atomic_sub_return(v & IO_POLL_REF_MASK, &req->poll_refs));
  5897	
  5898		return 1;
  5899	}
  5900	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-04-13  8:18 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-13  8:17 [ammarfaizi2-block:axboe/linux-block/for-5.19/io_uring 22/30] fs/io_uring.c:5877:66: sparse: sparse: incorrect type in argument 1 (different base types) kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.