ipmi: Reset response handler when failing to send the command
authorMarkus Boehme <markubo@amazon.com>
Mon, 7 Sep 2020 16:25:35 +0000 (18:25 +0200)
committerCorey Minyard <cminyard@mvista.com>
Tue, 15 Sep 2020 13:52:27 +0000 (08:52 -0500)
When failing to send a command we don't expect a response. Clear the
`null_user_handler` like is done in the success path.

Signed-off-by: Markus Boehme <markubo@amazon.com>
Message-Id: <1599495937-10654-1-git-send-email-markubo@amazon.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
drivers/char/ipmi/ipmi_msghandler.c

index ed888d5..9f61a1a 100644 (file)
@@ -2433,7 +2433,7 @@ static int __get_device_id(struct ipmi_smi *intf, struct bmc_device *bmc)
 
        rv = send_get_device_id_cmd(intf);
        if (rv)
-               return rv;
+               goto out_reset_handler;
 
        wait_event(intf->waitq, bmc->dyn_id_set != 2);
 
@@ -2443,6 +2443,7 @@ static int __get_device_id(struct ipmi_smi *intf, struct bmc_device *bmc)
        /* dyn_id_set makes the id data available. */
        smp_rmb();
 
+out_reset_handler:
        intf->null_user_handler = NULL;
 
        return rv;
@@ -3329,6 +3330,7 @@ static int __scan_channels(struct ipmi_smi *intf, struct ipmi_device_id *id)
                        dev_warn(intf->si_dev,
                                 "Error sending channel information for channel 0, %d\n",
                                 rv);
+                       intf->null_user_handler = NULL;
                        return -EIO;
                }