NTB: Handle ntb client device probes without present hardware
authorJon Mason <jon.mason@intel.com>
Sat, 19 Jan 2013 09:02:16 +0000 (02:02 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 20 Jan 2013 23:45:50 +0000 (15:45 -0800)
Attempts to probe client ntb drivers without ntb hardware present will
result in null pointer dereference due to the lack of the ntb bus device
being registers.  Check to see if this is the case, and fail all calls
by the clients registering their drivers.

Signed-off-by: Jon Mason <jon.mason@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/ntb/ntb_transport.c

index 250190fba7579c80d0f8e474592d1c6fb8a18be9..1d17857a2d978c9c5e2ac683654c182f6256d9b9 100644 (file)
@@ -288,6 +288,9 @@ int ntb_register_client_dev(char *device_name)
        struct ntb_transport *nt;
        int rc;
 
+       if (list_empty(&ntb_transport_list))
+               return -ENODEV;
+
        list_for_each_entry(nt, &ntb_transport_list, entry) {
                struct device *dev;
 
@@ -336,6 +339,9 @@ int ntb_register_client(struct ntb_client *drv)
 {
        drv->driver.bus = &ntb_bus_type;
 
+       if (list_empty(&ntb_transport_list))
+               return -ENODEV;
+
        return driver_register(&drv->driver);
 }
 EXPORT_SYMBOL_GPL(ntb_register_client);