nvme: Replace rcu_assign_pointer() with RCU_INIT_POINTER()
authorAndreea-Cristina Bernat <bernat.ada@gmail.com>
Mon, 18 Aug 2014 14:41:01 +0000 (17:41 +0300)
committerJens Axboe <axboe@fb.com>
Tue, 4 Nov 2014 20:17:08 +0000 (13:17 -0700)
The use of "rcu_assign_pointer()" is NULLing out the pointer.
According to RCU_INIT_POINTER()'s block comment:
"1.   This use of RCU_INIT_POINTER() is NULLing out the pointer"
it is better to use it instead of rcu_assign_pointer() because it has a
smaller overhead.

The following Coccinelle semantic patch was used:
@@
@@

- rcu_assign_pointer
+ RCU_INIT_POINTER
  (..., NULL)

Signed-off-by: Andreea-Cristina Bernat <bernat.ada@gmail.com>
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/nvme-core.c

index 5d44c93..c1e3c1a 100644 (file)
@@ -1230,7 +1230,7 @@ static void nvme_free_queues(struct nvme_dev *dev, int lowest)
 
        for (i = dev->queue_count - 1; i >= lowest; i--) {
                nvmeq = raw_nvmeq(dev, i);
-               rcu_assign_pointer(dev->queues[i], NULL);
+               RCU_INIT_POINTER(dev->queues[i], NULL);
                llist_add(&nvmeq->node, &q_list);
                dev->queue_count--;
        }