summaryrefslogtreecommitdiffstats
path: root/drivers/nvme/target/core.c
diff options
context:
space:
mode:
authorMax Gurtovoy2019-04-02 13:51:54 +0200
committerChristoph Hellwig2019-04-05 08:07:58 +0200
commit013a63ef4edcd2366299225c3b081102171e8fa9 (patch)
tree1f4eeef5d3fa89ddc7cb23795600043c68c3dacc /drivers/nvme/target/core.c
parentnvmet: never fail double namespace enablement (diff)
downloadkernel-qcow2-linux-013a63ef4edcd2366299225c3b081102171e8fa9.tar.gz
kernel-qcow2-linux-013a63ef4edcd2366299225c3b081102171e8fa9.tar.xz
kernel-qcow2-linux-013a63ef4edcd2366299225c3b081102171e8fa9.zip
nvmet: add safety check for subsystem lock during nvmet_ns_changed
we need to make sure that subsystem lock is taken during ctrl's list traversing. nvmet_ns_changed function is not static and can be used from various callers simultaneously. Signed-off-by: Max Gurtovoy <maxg@mellanox.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/nvme/target/core.c')
-rw-r--r--drivers/nvme/target/core.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index 4dc388a2ecb0..4d8dd29479c0 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -214,6 +214,8 @@ void nvmet_ns_changed(struct nvmet_subsys *subsys, u32 nsid)
{
struct nvmet_ctrl *ctrl;
+ lockdep_assert_held(&subsys->lock);
+
list_for_each_entry(ctrl, &subsys->ctrls, subsys_entry) {
nvmet_add_to_changed_ns_log(ctrl, cpu_to_le32(nsid));
if (nvmet_aen_bit_disabled(ctrl, NVME_AEN_BIT_NS_ATTR))