lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <202111130536.cOylQlMu-lkp@intel.com>
Date:   Sat, 13 Nov 2021 05:26:42 +0800
From:   kernel test robot <lkp@...el.com>
To:     Pavel Begunkov <asml.silence@...il.com>
Cc:     kbuild-all@...ts.01.org, linux-kernel@...r.kernel.org,
        Jens Axboe <axboe@...nel.dk>
Subject: block/blk-mq.c:324:26: sparse: sparse: incorrect type in assignment
 (different base types)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   5833291ab6de9c3e2374336b51c814e515e8f3a5
commit: 128459062bc994355027e190477c432ec5b5638a block: cache rq_flags inside blk_mq_rq_ctx_init()
date:   4 weeks ago
config: x86_64-rhel-8.3-kselftests (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.4-dirty
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=128459062bc994355027e190477c432ec5b5638a
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 128459062bc994355027e190477c432ec5b5638a
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64 

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


sparse warnings: (new ones prefixed by >>)
>> block/blk-mq.c:324:26: sparse: sparse: incorrect type in assignment (different base types) @@     expected unsigned int rq_flags @@     got restricted req_flags_t [usertype] @@
   block/blk-mq.c:324:26: sparse:     expected unsigned int rq_flags
   block/blk-mq.c:324:26: sparse:     got restricted req_flags_t [usertype]
>> block/blk-mq.c:333:26: sparse: sparse: invalid assignment: |=
>> block/blk-mq.c:333:26: sparse:    left side has type unsigned int
>> block/blk-mq.c:333:26: sparse:    right side has type restricted req_flags_t
   block/blk-mq.c:335:26: sparse: sparse: invalid assignment: |=
   block/blk-mq.c:335:26: sparse:    left side has type unsigned int
   block/blk-mq.c:335:26: sparse:    right side has type restricted req_flags_t
>> block/blk-mq.c:336:22: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted req_flags_t [usertype] rq_flags @@     got unsigned int rq_flags @@
   block/blk-mq.c:336:22: sparse:     expected restricted req_flags_t [usertype] rq_flags
   block/blk-mq.c:336:22: sparse:     got unsigned int rq_flags

vim +324 block/blk-mq.c

   311	
   312	static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data,
   313			unsigned int tag, u64 alloc_time_ns)
   314	{
   315		struct blk_mq_ctx *ctx = data->ctx;
   316		struct blk_mq_hw_ctx *hctx = data->hctx;
   317		struct request_queue *q = data->q;
   318		struct elevator_queue *e = q->elevator;
   319		struct blk_mq_tags *tags = blk_mq_tags_from_data(data);
   320		struct request *rq = tags->static_rqs[tag];
   321		unsigned int rq_flags = 0;
   322	
   323		if (e) {
 > 324			rq_flags = RQF_ELV;
   325			rq->tag = BLK_MQ_NO_TAG;
   326			rq->internal_tag = tag;
   327		} else {
   328			rq->tag = tag;
   329			rq->internal_tag = BLK_MQ_NO_TAG;
   330		}
   331	
   332		if (data->flags & BLK_MQ_REQ_PM)
 > 333			rq_flags |= RQF_PM;
   334		if (blk_queue_io_stat(q))
   335			rq_flags |= RQF_IO_STAT;
 > 336		rq->rq_flags = rq_flags;
   337	
   338		if (blk_mq_need_time_stamp(rq))
   339			rq->start_time_ns = ktime_get_ns();
   340		else
   341			rq->start_time_ns = 0;
   342		/* csd/requeue_work/fifo_time is initialized before use */
   343		rq->q = q;
   344		rq->mq_ctx = ctx;
   345		rq->mq_hctx = hctx;
   346		rq->cmd_flags = data->cmd_flags;
   347		rq->rq_disk = NULL;
   348		rq->part = NULL;
   349	#ifdef CONFIG_BLK_RQ_ALLOC_TIME
   350		rq->alloc_time_ns = alloc_time_ns;
   351	#endif
   352		rq->io_start_time_ns = 0;
   353		rq->stats_sectors = 0;
   354		rq->nr_phys_segments = 0;
   355	#if defined(CONFIG_BLK_DEV_INTEGRITY)
   356		rq->nr_integrity_segments = 0;
   357	#endif
   358		rq->timeout = 0;
   359		rq->end_io = NULL;
   360		rq->end_io_data = NULL;
   361	
   362		data->ctx->rq_dispatched[op_is_sync(data->cmd_flags)]++;
   363		blk_crypto_rq_set_defaults(rq);
   364		INIT_LIST_HEAD(&rq->queuelist);
   365		/* tag was already set */
   366		WRITE_ONCE(rq->deadline, 0);
   367		refcount_set(&rq->ref, 1);
   368	
   369		if (rq->rq_flags & RQF_ELV) {
   370			struct elevator_queue *e = data->q->elevator;
   371	
   372			rq->elv.icq = NULL;
   373			INIT_HLIST_NODE(&rq->hash);
   374			RB_CLEAR_NODE(&rq->rb_node);
   375	
   376			if (!op_is_flush(data->cmd_flags) &&
   377			    e->type->ops.prepare_request) {
   378				if (e->type->icq_cache)
   379					blk_mq_sched_assign_ioc(rq);
   380	
   381				e->type->ops.prepare_request(rq);
   382				rq->rq_flags |= RQF_ELVPRIV;
   383			}
   384		}
   385	
   386		data->hctx->queued++;
   387		return rq;
   388	}
   389	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Download attachment ".config.gz" of type "application/gzip" (42180 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ