]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
staging: unisys: visorbus: NULL pending_msg_hdr not an error
authorDavid Kershner <david.kershner@unisys.com>
Wed, 27 Sep 2017 17:14:16 +0000 (13:14 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Sep 2017 09:17:13 +0000 (11:17 +0200)
A NULL pending_msg_hdr is not an error, it just means that the firmware
does not want an error response for that message.

Signed-off-by: David Kershner <david.kershner@unisys.com>
Reviewed-by: Tim Sell <timothy.sell@unisys.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/unisys/visorbus/visorbus_main.c
drivers/staging/unisys/visorbus/visorchipset.c

index 7bfccc8bc5441273e8bfc6edabc0806e380c313b..b35b8a6be99aea4149effb674164d1ae5724c697 100644 (file)
@@ -690,8 +690,9 @@ void remove_visor_device(struct visor_device *dev)
 {
        list_del(&dev->list_all);
        put_device(&dev->device);
+       if (dev->pending_msg_hdr)
+               visorbus_response(dev, 0, CONTROLVM_DEVICE_DESTROY);
        device_unregister(&dev->device);
-       visorbus_response(dev, 0, CONTROLVM_DEVICE_DESTROY);
 }
 
 static int get_vbus_header_info(struct visorchannel *chan,
index 14bc219350a72d407cd367aadf873a4a47272dbb..df7429df06992a280b2379180c406202389afc7d 100644 (file)
@@ -481,9 +481,6 @@ static int controlvm_responder(enum controlvm_id cmd_id,
                               struct controlvm_message_header *pending_msg_hdr,
                               int response)
 {
-       if (!pending_msg_hdr)
-               return -EIO;
-
        if (pending_msg_hdr->id != (u32)cmd_id)
                return -EINVAL;
 
@@ -497,8 +494,6 @@ static int device_changestate_responder(
 {
        struct controlvm_message outmsg;
 
-       if (!p->pending_msg_hdr)
-               return -EIO;
        if (p->pending_msg_hdr->id != cmd_id)
                return -EINVAL;
 
@@ -1391,8 +1386,10 @@ static void setup_crash_devices_work_queue(struct work_struct *work)
 void visorbus_response(struct visor_device *bus_info, int response,
                       int controlvm_id)
 {
-       controlvm_responder(controlvm_id, bus_info->pending_msg_hdr, response);
+       if (!bus_info->pending_msg_hdr)
+               return;
 
+       controlvm_responder(controlvm_id, bus_info->pending_msg_hdr, response);
        kfree(bus_info->pending_msg_hdr);
        bus_info->pending_msg_hdr = NULL;
 }
@@ -1401,9 +1398,11 @@ void visorbus_device_changestate_response(struct visor_device *dev_info,
                                          int response,
                                          struct visor_segment_state state)
 {
+       if (!dev_info->pending_msg_hdr)
+               return;
+
        device_changestate_responder(CONTROLVM_DEVICE_CHANGESTATE, dev_info,
                                     response, state);
-
        kfree(dev_info->pending_msg_hdr);
        dev_info->pending_msg_hdr = NULL;
 }