]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
linux/pci_back: fix NULL pointer ref.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 14 Apr 2009 10:16:08 +0000 (11:16 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 14 Apr 2009 10:16:08 +0000 (11:16 +0100)
pcistub_device_release() can be called during
initialization. Thus pci_get_drvdata() can return NULL.
Fix it by inserting NULL check.

Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
drivers/xen/pciback/conf_space.c

index 0c4dd49067bf4f86c3862d91451481745750c2b6..0c76db1d5aed70530ff9010b97cc1593742d5b96 100644 (file)
@@ -297,6 +297,8 @@ void pciback_config_free_dyn_fields(struct pci_dev *dev)
 
        dev_dbg(&dev->dev,
                "free-ing dynamically allocated virtual configuration space fields\n");
+       if (!dev_data)
+               return;
 
        list_for_each_entry_safe(cfg_entry, t, &dev_data->config_fields, list) {
                field = cfg_entry->field;
@@ -321,6 +323,8 @@ void pciback_config_reset_dev(struct pci_dev *dev)
        const struct config_field *field;
 
        dev_dbg(&dev->dev, "resetting virtual configuration space\n");
+       if (!dev_data)
+               return;
 
        list_for_each_entry(cfg_entry, &dev_data->config_fields, list) {
                field = cfg_entry->field;
@@ -337,6 +341,8 @@ void pciback_config_free_dev(struct pci_dev *dev)
        const struct config_field *field;
 
        dev_dbg(&dev->dev, "free-ing virtual configuration space fields\n");
+       if (!dev_data)
+               return;
 
        list_for_each_entry_safe(cfg_entry, t, &dev_data->config_fields, list) {
                list_del(&cfg_entry->list);