diff options
| author | Solganik Alexander <[email protected]> | 2016-10-30 08:35:15 +0000 |
|---|---|---|
| committer | Sagi Grimberg <[email protected]> | 2016-12-06 08:17:03 +0000 |
| commit | e4fcf07cca6a3b6c4be00df16f08be894325eaa3 (patch) | |
| tree | fe89e5c2ba76c318026e6b708bc73060f9c4902f /lib/parser.c | |
| parent | nvme-fabrics: Fix a memory leak in an nvmf_create_ctrl() error path (diff) | |
| download | kernel-e4fcf07cca6a3b6c4be00df16f08be894325eaa3.tar.gz kernel-e4fcf07cca6a3b6c4be00df16f08be894325eaa3.zip | |
nvmet: Fix possible infinite loop triggered on hot namespace removal
When removing a namespace we delete it from the subsystem namespaces
list with list_del_init which allows us to know if it is enabled or
not.
The problem is that list_del_init initialize the list next and does
not respect the RCU list-traversal we do on the IO path for locating
a namespace. Instead we need to use list_del_rcu which is allowed to
run concurrently with the _rcu list-traversal primitives (keeps list
next intact) and guarantees concurrent nvmet_find_naespace forward
progress.
By changing that, we cannot rely on ns->dev_link for knowing if the
namspace is enabled, so add enabled indicator entry to nvmet_ns for
that.
Signed-off-by: Sagi Grimberg <[email protected]>
Signed-off-by: Solganik Alexander <[email protected]>
Cc: <[email protected]> # v4.8+
Diffstat (limited to 'lib/parser.c')
0 files changed, 0 insertions, 0 deletions
