diff options
author | Jon Mason <jon.mason@intel.com> | 2013-07-15 13:23:47 -0700 |
---|---|---|
committer | Jon Mason <jon.mason@intel.com> | 2013-09-03 11:13:12 -0700 |
commit | 3b12a0d15bd1559e72ad21d9d807fd2a6706f0ab (patch) | |
tree | 3209814c56be95926ee8fae65b2b95f752f059a8 | |
parent | 6e4664525b1db28f8c4e1130957f70a94c19213e (diff) | |
download | op-kernel-dev-3b12a0d15bd1559e72ad21d9d807fd2a6706f0ab.zip op-kernel-dev-3b12a0d15bd1559e72ad21d9d807fd2a6706f0ab.tar.gz |
NTB: Add Error Handling in ntb_device_setup
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>
-rw-r--r-- | drivers/ntb/ntb_hw.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/ntb/ntb_hw.c b/drivers/ntb/ntb_hw.c index 2dacd19..515099ee 100644 --- a/drivers/ntb/ntb_hw.c +++ b/drivers/ntb/ntb_hw.c @@ -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) |