nvme: avoid crashes when node 0 is memoryless node.
authorMasayoshi Mizuma <m.mizuma@jp.fujitsu.com>
Mon, 20 Jun 2016 00:33:17 +0000 (09:33 +0900)
committerJens Axboe <axboe@fb.com>
Wed, 13 Jul 2016 16:17:55 +0000 (09:17 -0700)
When CONFIG_NUMA is enabled and node 0 is memoryless, the system
crashes because nvme_probe() sets the device->numa_node to 0 by
set_dev_node(&pdev->dev, 0), so it tries to allocate memory from node 0.
To avoid the crash, we should change the 0 to first_memory_node.

Signed-off-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/nvme/host/pci.c

index 120f9b8c926eb3686900e87af34ece82d27e2d6b..8083ae8ec96d865db6cb4b5e3d80033959e3fe70 100644 (file)
@@ -1918,7 +1918,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
 
        node = dev_to_node(&pdev->dev);
        if (node == NUMA_NO_NODE)
-               set_dev_node(&pdev->dev, 0);
+               set_dev_node(&pdev->dev, first_memory_node);
 
        dev = kzalloc_node(sizeof(*dev), GFP_KERNEL, node);
        if (!dev)