There is otherwise a risk of a null pointer dereference.

Signed-off-by: Young Xiao <[email protected]>
---
 drivers/pci/hotplug/cpqphp_ctrl.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/hotplug/cpqphp_ctrl.c 
b/drivers/pci/hotplug/cpqphp_ctrl.c
index b7f4e1f..3c8399f 100644
--- a/drivers/pci/hotplug/cpqphp_ctrl.c
+++ b/drivers/pci/hotplug/cpqphp_ctrl.c
@@ -598,10 +598,11 @@ static struct pci_resource *get_io_resource(struct 
pci_resource **head, u32 size
                        *head = node->next;
                } else {
                        prevnode = *head;
-                       while (prevnode->next != node)
+                       while (prevnode && prevnode->next != node)
                                prevnode = prevnode->next;
 
-                       prevnode->next = node->next;
+                       if (prevnode)
+                               prevnode->next = node->next;
                }
                node->next = NULL;
                break;
@@ -788,10 +789,11 @@ static struct pci_resource *get_resource(struct 
pci_resource **head, u32 size)
                        *head = node->next;
                } else {
                        prevnode = *head;
-                       while (prevnode->next != node)
+                       while (prevnode && prevnode->next != node)
                                prevnode = prevnode->next;
 
-                       prevnode->next = node->next;
+                       if (prevnode)
+                               prevnode->next = node->next;
                }
                node->next = NULL;
                break;
-- 
2.7.4

Reply via email to