PCI: cpqphp: Fix possible NULL pointer dereference
authorShawn Lin <shawn.lin@rock-chips.com>
Sun, 25 Feb 2018 02:01:42 +0000 (10:01 +0800)
committerBjorn Helgaas <helgaas@kernel.org>
Wed, 28 Feb 2018 20:35:54 +0000 (14:35 -0600)
Check io_node for NULL before dereferencing it.

Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com>
Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
drivers/pci/hotplug/cpqphp_ctrl.c

index b1b6e45..616df44 100644 (file)
@@ -2812,18 +2812,16 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
 
                                        dbg("CND:      length = 0x%x\n", base);
                                        io_node = get_io_resource(&(resources->io_head), base);
+                                       if (!io_node)
+                                               return -ENOMEM;
                                        dbg("Got io_node start = %8.8x, length = %8.8x next (%p)\n",
                                            io_node->base, io_node->length, io_node->next);
                                        dbg("func (%p) io_head (%p)\n", func, func->io_head);
 
                                        /* allocate the resource to the board */
-                                       if (io_node) {
-                                               base = io_node->base;
-
-                                               io_node->next = func->io_head;
-                                               func->io_head = io_node;
-                                       } else
-                                               return -ENOMEM;
+                                       base = io_node->base;
+                                       io_node->next = func->io_head;
+                                       func->io_head = io_node;
                                } else if ((temp_register & 0x0BL) == 0x08) {
                                        /* Map prefetchable memory */
                                        base = temp_register & 0xFFFFFFF0;