platform/chrome: cros_ec_ishtp: Fix a double-unlock issue
authorQiushi Wu <wu000273@umn.edu>
Sat, 23 May 2020 03:16:08 +0000 (22:16 -0500)
committerEnric Balletbo i Serra <enric.balletbo@collabora.com>
Tue, 30 Jun 2020 09:41:25 +0000 (11:41 +0200)
In function cros_ec_ishtp_probe(), "up_write" is already called
before function "cros_ec_dev_init". But "up_write" will be called
again after the calling of the function "cros_ec_dev_init" failed.
Thus add a call of the function “down_write” in this if branch
for the completion of the exception handling.

Fixes: 26a14267aff2 ("platform/chrome: Add ChromeOS EC ISHTP driver")
Signed-off-by: Qiushi Wu <wu000273@umn.edu>
Tested-by: Mathew King <mathewk@chromium.org>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
drivers/platform/chrome/cros_ec_ishtp.c

index ed794a7ddba9b5024f86fe62fc5b391d4dcecfd3..81364029af3675a278a9bc46ea5ec866c35229e0 100644 (file)
@@ -681,8 +681,10 @@ static int cros_ec_ishtp_probe(struct ishtp_cl_device *cl_device)
 
        /* Register croc_ec_dev mfd */
        rv = cros_ec_dev_init(client_data);
-       if (rv)
+       if (rv) {
+               down_write(&init_lock);
                goto end_cros_ec_dev_init_error;
+       }
 
        return 0;