Skip to content
Commit d6d67427 authored by Chris Leech's avatar Chris Leech Committed by Christoph Hellwig
Browse files

nvme: fix RCU hole that allowed for endless looping in multipath round robin



Make nvme_ns_remove match the assumptions elsewhere.

1) !NVME_NS_READY needs to be srcu synchronized to make sure nothing is
   running in __nvme_find_path or nvme_round_robin_path that will
   re-assign this ns to current_path.

2) Any matching current_path entries need to be cleared before removing
   from the siblings list, to prevent calling nvme_round_robin_path with
   an "old" ns that's off list.

3) Finally the list_del_rcu can happen, and then synchronize again
   before releasing any reference counts.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
parent 5974ea7c
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment