[PATCH v3 04/18] nvme: add context annotations for nvme_ns_head::requeue_list
Nilay Shroff <[email protected]>
| Newsgroups | org.infradead.lists.linux-nvme,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
nvme_ns_head::requeue_list is protected by nvme_ns_head::requeue_lock. Annotate requeue_list with __guarded_by(&requeue_lock) so that Clang's context analysis can validate accesses to the list. For zero-initialized objects, bio_list_init() is a no-op. Remove the redundant initialization from nvme_mpath_alloc_disk(), which initializes nvme_ns_head::requeue_list. Besides simplifying the code, this also avoids a false positive from Clang's context analysis, which would otherwise warn about accessing nvme_ns_head::requeue_list without holding nvme_ns_head::requeue_lock. Signed-off-by: Nilay Shroff <[email protected]> --- drivers/nvme/host/multipath.c | 1 - drivers/nvme/host/nvme.h | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c index e4ec5d5e2df1..67fd0752e894 100644 --- a/drivers/nvme/host/multipath.c +++ b/drivers/nvme/host/multipath.c @@ -732,7 +732,6 @@ int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl, struct nvme_ns_head *head) struct queue_limits lim; mutex_init(&head->lock); - bio_list_init(&head->requeue_list); spin_lock_init(&head->requeue_lock); INIT_WORK(&head->requeue_work, nvme_requeue_work); INIT_WORK(&head->partition_scan_work, nvme_partition_scan_work); diff --git a/drivers/nvme/host/nvme.h b/drivers/nvme/host/nvme.h index b7c3ba9c0fc1..5e746ae1c805 100644 --- a/drivers/nvme/host/nvme.h +++ b/drivers/nvme/host/nvme.h @@ -561,7 +561,8 @@ struct nvme_ns_head { u16 nr_plids; u16 *plids; #ifdef CONFIG_NVME_MULTIPATH - struct bio_list requeue_list; + struct bio_list requeue_list + __guarded_by(&requeue_lock); spinlock_t requeue_lock; struct work_struct requeue_work; struct work_struct partition_scan_work; -- 2.53.0