From: kernel test robot <lkp@intel.com>
To: Max Kellermann <max.kellermann@ionos.com>
Cc: oe-kbuild-all@lists.linux.dev, Jens Axboe <axboe@kernel.dk>
Subject: [axboe-block:io_uring-epoll-wait 7/19] io_uring/io_uring.c:396:43: sparse: sparse: incorrect type in initializer (different base types)
Date: Sun, 2 Feb 2025 18:19:09 +0800 [thread overview]
Message-ID: <202502021802.ulY6VEco-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux-block.git io_uring-epoll-wait
head: 81a642b29d7d837fda2d86c4e1dc036effcfa4a7
commit: 4fbd68dbbb65f14f3fd40e1232045e06d168ecbd [7/19] io_uring: cache io_kiocb->flags in variable
config: hexagon-randconfig-r112-20250202 (https://download.01.org/0day-ci/archive/20250202/202502021802.ulY6VEco-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 355d0b186f178668b103068537e517f3d52ad639)
reproduce: (https://download.01.org/0day-ci/archive/20250202/202502021802.ulY6VEco-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202502021802.ulY6VEco-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
io_uring/io_uring.c: note: in included file (through include/linux/io_uring/cmd.h):
include/linux/io_uring_types.h:191:37: sparse: sparse: array of flexible structures
>> io_uring/io_uring.c:396:43: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int const req_flags @@ got restricted io_req_flags_t [usertype] flags @@
io_uring/io_uring.c:396:43: sparse: expected unsigned int const req_flags
io_uring/io_uring.c:396:43: sparse: got restricted io_req_flags_t [usertype] flags
>> io_uring/io_uring.c:398:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:404:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:410:26: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:415:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:417:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:419:25: sparse: sparse: restricted io_req_flags_t degrades to integer
>> io_uring/io_uring.c:473:37: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int req_flags @@ got restricted io_req_flags_t [usertype] flags @@
io_uring/io_uring.c:473:37: sparse: expected unsigned int req_flags
io_uring/io_uring.c:473:37: sparse: got restricted io_req_flags_t [usertype] flags
io_uring/io_uring.c:477:27: sparse: sparse: restricted io_req_flags_t degrades to integer
>> io_uring/io_uring.c:478:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int req_flags @@ got restricted io_req_flags_t [usertype] flags @@
io_uring/io_uring.c:478:27: sparse: expected unsigned int req_flags
io_uring/io_uring.c:478:27: sparse: got restricted io_req_flags_t [usertype] flags
io_uring/io_uring.c:484:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:487:40: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:488:27: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int req_flags @@ got restricted io_req_flags_t [usertype] flags @@
io_uring/io_uring.c:488:27: sparse: expected unsigned int req_flags
io_uring/io_uring.c:488:27: sparse: got restricted io_req_flags_t [usertype] flags
io_uring/io_uring.c:490:39: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:1723:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:1733:43: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int const req_flags @@ got restricted io_req_flags_t [usertype] flags @@
io_uring/io_uring.c:1733:43: sparse: expected unsigned int const req_flags
io_uring/io_uring.c:1733:43: sparse: got restricted io_req_flags_t [usertype] flags
io_uring/io_uring.c:1741:13: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:1798:43: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int const req_flags @@ got restricted io_req_flags_t [usertype] flags @@
io_uring/io_uring.c:1798:43: sparse: expected unsigned int const req_flags
io_uring/io_uring.c:1798:43: sparse: got restricted io_req_flags_t [usertype] flags
io_uring/io_uring.c:1805:27: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:1832:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:1847:25: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:1865:33: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:609:36: sparse: sparse: context imbalance in 'io_req_post_cqe' - unexpected unlock
io_uring/io_uring.c:1197:19: sparse: sparse: Using plain integer as NULL pointer
io_uring/io_uring.c:1197:19: sparse: sparse: Using plain integer as NULL pointer
io_uring/io_uring.c:611:17: sparse: sparse: context imbalance in '__io_submit_flush_completions' - different lock contexts for basic block
io_uring/io_uring.c: note: in included file (through include/linux/sched/signal.h, include/linux/rcuwait.h, include/linux/percpu-rwsem.h, ...):
include/linux/cred.h:175:41: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct cred const *old @@ got struct cred const [noderef] __rcu *cred @@
include/linux/cred.h:175:41: sparse: expected struct cred const *old
include/linux/cred.h:175:41: sparse: got struct cred const [noderef] __rcu *cred
include/linux/cred.h:183:51: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected struct cred const *override_cred @@ got struct cred const [noderef] __rcu *cred @@
include/linux/cred.h:183:51: sparse: expected struct cred const *override_cred
include/linux/cred.h:183:51: sparse: got struct cred const [noderef] __rcu *cred
>> io_uring/io_uring.c:468:34: sparse: sparse: incorrect type in argument 2 (different base types) @@ expected unsigned int req_flags @@ got restricted io_req_flags_t [usertype] flags @@
io_uring/io_uring.c:468:34: sparse: expected unsigned int req_flags
io_uring/io_uring.c:468:34: sparse: got restricted io_req_flags_t [usertype] flags
io_uring/io_uring.c:462:13: sparse: sparse: restricted io_req_flags_t degrades to integer
io_uring/io_uring.c:462:13: sparse: sparse: restricted io_req_flags_t degrades to integer
vim +396 io_uring/io_uring.c
393
394 static void io_clean_op(struct io_kiocb *req)
395 {
> 396 const unsigned int req_flags = req->flags;
397
> 398 if (req_flags & REQ_F_BUFFER_SELECTED) {
399 spin_lock(&req->ctx->completion_lock);
400 io_kbuf_drop(req);
401 spin_unlock(&req->ctx->completion_lock);
402 }
403
> 404 if (req_flags & REQ_F_NEED_CLEANUP) {
405 const struct io_cold_def *def = &io_cold_defs[req->opcode];
406
407 if (def->cleanup)
408 def->cleanup(req);
409 }
410 if ((req_flags & REQ_F_POLLED) && req->apoll) {
411 kfree(req->apoll->double_poll);
412 kfree(req->apoll);
413 req->apoll = NULL;
414 }
415 if (req_flags & REQ_F_INFLIGHT)
416 atomic_dec(&req->tctx->inflight_tracked);
417 if (req_flags & REQ_F_CREDS)
418 put_cred(req->creds);
419 if (req_flags & REQ_F_ASYNC_DATA) {
420 kfree(req->async_data);
421 req->async_data = NULL;
422 }
423 req->flags &= ~IO_REQ_CLEAN_FLAGS;
424 }
425
426 static inline void io_req_track_inflight(struct io_kiocb *req)
427 {
428 if (!(req->flags & REQ_F_INFLIGHT)) {
429 req->flags |= REQ_F_INFLIGHT;
430 atomic_inc(&req->tctx->inflight_tracked);
431 }
432 }
433
434 static struct io_kiocb *__io_prep_linked_timeout(struct io_kiocb *req)
435 {
436 if (WARN_ON_ONCE(!req->link))
437 return NULL;
438
439 req->flags &= ~REQ_F_ARM_LTIMEOUT;
440 req->flags |= REQ_F_LINK_TIMEOUT;
441
442 /* linked timeouts should have two refs once prep'ed */
443 io_req_set_refcount(req);
444 __io_req_set_refcount(req->link, 2);
445 return req->link;
446 }
447
448 static inline struct io_kiocb *io_prep_linked_timeout(struct io_kiocb *req)
449 {
450 if (likely(!(req->flags & REQ_F_ARM_LTIMEOUT)))
451 return NULL;
452 return __io_prep_linked_timeout(req);
453 }
454
455 static noinline void __io_arm_ltimeout(struct io_kiocb *req)
456 {
457 io_queue_linked_timeout(__io_prep_linked_timeout(req));
458 }
459
460 static inline void _io_arm_ltimeout(struct io_kiocb *req, unsigned int req_flags)
461 {
462 if (unlikely(req_flags & REQ_F_ARM_LTIMEOUT))
463 __io_arm_ltimeout(req);
464 }
465
466 static inline void io_arm_ltimeout(struct io_kiocb *req)
467 {
> 468 _io_arm_ltimeout(req, req->flags);
469 }
470
471 static void io_prep_async_work(struct io_kiocb *req)
472 {
> 473 unsigned int req_flags = req->flags;
474 const struct io_issue_def *def = &io_issue_defs[req->opcode];
475 struct io_ring_ctx *ctx = req->ctx;
476
477 if (!(req_flags & REQ_F_CREDS)) {
> 478 req_flags = req->flags |= REQ_F_CREDS;
479 req->creds = get_current_cred();
480 }
481
482 req->work.list.next = NULL;
483 atomic_set(&req->work.flags, 0);
484 if (req_flags & REQ_F_FORCE_ASYNC)
485 atomic_or(IO_WQ_WORK_CONCURRENT, &req->work.flags);
486
487 if (req->file && !(req_flags & REQ_F_FIXED_FILE))
488 req_flags = req->flags |= io_file_get_flags(req->file);
489
490 if (req->file && (req_flags & REQ_F_ISREG)) {
491 bool should_hash = def->hash_reg_file;
492
493 /* don't serialize this request if the fs doesn't need it */
494 if (should_hash && (req->file->f_flags & O_DIRECT) &&
495 (req->file->f_op->fop_flags & FOP_DIO_PARALLEL_WRITE))
496 should_hash = false;
497 if (should_hash || (ctx->flags & IORING_SETUP_IOPOLL))
498 io_wq_hash_work(&req->work, file_inode(req->file));
499 } else if (!req->file || !S_ISBLK(file_inode(req->file)->i_mode)) {
500 if (def->unbound_nonreg_file)
501 atomic_or(IO_WQ_WORK_UNBOUND, &req->work.flags);
502 }
503 }
504
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2025-02-02 10:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-02 10:19 kernel test robot [this message]
2025-02-02 15:03 ` [axboe-block:io_uring-epoll-wait 7/19] io_uring/io_uring.c:396:43: sparse: sparse: incorrect type in initializer (different base types) Jens Axboe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202502021802.ulY6VEco-lkp@intel.com \
--to=lkp@intel.com \
--cc=axboe@kernel.dk \
--cc=max.kellermann@ionos.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.