NTB: Add Error Handling in ntb_device_setup
authorJon Mason <jon.mason@intel.com>
Mon, 15 Jul 2013 20:23:47 +0000 (13:23 -0700)
committerJon Mason <jon.mason@intel.com>
Tue, 3 Sep 2013 18:13:12 +0000 (11:13 -0700)
If an error is encountered in ntb_device_setup, it is possible that the
spci_cmd isn't populated.  Writes to the offset can result in a NULL
pointer dereference.  This issue is easily encountered by running in
NTB-RP mode, as it currently is not supported and will generate an
error.  To get around this issue, return if an error is encountered
prior to attempting to write to the spci_cmd offset.

Signed-off-by: Jon Mason <jon.mason@intel.com>
drivers/ntb/ntb_hw.c

index 2dacd19e1b8a15c5a7c8d66db2eb7cb2793a58ed..515099ee12fe484b3452f1507a4c09a872a99705 100644 (file)
@@ -644,10 +644,13 @@ static int ntb_device_setup(struct ntb_device *ndev)
                rc = -ENODEV;
        }
 
+       if (rc)
+               return rc;
+
        /* Enable Bus Master and Memory Space on the secondary side */
        writew(PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER, ndev->reg_ofs.spci_cmd);
 
-       return rc;
+       return 0;
 }
 
 static void ntb_device_free(struct ntb_device *ndev)