NVMe: RCU protected access to io queues
authorKeith Busch <keith.busch@intel.com>
Fri, 21 Feb 2014 21:13:44 +0000 (14:13 -0700)
committerMatthew Wilcox <matthew.r.wilcox@intel.com>
Mon, 24 Mar 2014 12:45:57 +0000 (08:45 -0400)
commit5a92e700af2e5e0e6404988d6a7f2ed3dad3f46f
tree0de62a3873a05bb0e21fc5195be6ff20af5366cf
parentfb35e914b3f88cda9ee6f9d776910c35269c4ecf
NVMe: RCU protected access to io queues

This adds rcu protected access to nvme_queue to fix a race between a
surprise removal freeing the queue and a thread with open reference on
a NVMe block device using that queue.

The queues do not need to be rcu protected during the initialization or
shutdown parts, so I've added a helper function for raw deferencing
to get around the sparse errors.

There is still a hole in the IOCTL path for the same problem, which is
fixed in a subsequent patch.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
drivers/block/nvme-core.c
include/linux/nvme.h