staging: greybus: add host device function pointer checks
authorJason Hrycay <jhrycay@gmail.com>
Tue, 20 Dec 2016 20:49:27 +0000 (14:49 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Jan 2017 15:47:52 +0000 (16:47 +0100)
Add sanity checks for cport_quiesce and cport_clear before invoking the
callbacks as these function pointers are not required during the host
device registration. This follows the logic implemented elsewhere for
various other function pointers.

Signed-off-by: Jason Hrycay <jhrycay@gmail.com>
Reviewed-by: Bryan O'Donoghue <pure.logic@nexus-software.ie>
Acked-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/greybus/connection.c

index 5570751..1bf0ee4 100644 (file)
@@ -357,6 +357,9 @@ static int gb_connection_hd_cport_quiesce(struct gb_connection *connection)
        size_t peer_space;
        int ret;
 
+       if (!hd->driver->cport_quiesce)
+               return 0;
+
        peer_space = sizeof(struct gb_operation_msg_hdr) +
                        sizeof(struct gb_cport_shutdown_request);
 
@@ -380,6 +383,9 @@ static int gb_connection_hd_cport_clear(struct gb_connection *connection)
        struct gb_host_device *hd = connection->hd;
        int ret;
 
+       if (!hd->driver->cport_clear)
+               return 0;
+
        ret = hd->driver->cport_clear(hd, connection->hd_cport_id);
        if (ret) {
                dev_err(&hd->dev, "%s: failed to clear host cport: %d\n",