Re: [PATCH] iio: cros_ec_accel_legacy: Always release lock when returning from _read()

From: Doug Anderson
Date: Mon Jul 15 2019 - 15:40:58 EST


Hi,

On Mon, Jul 15, 2019 at 12:10 PM Matthias Kaehlcke <mka@xxxxxxxxxxxx> wrote:
>
> Before doing any actual work cros_ec_accel_legacy_read() acquires
> a mutex, which is released at the end of the function. However for
> 'calibbias' channels the function returns directly, without releasing
> the lock. The next attempt to acquire the lock blocks forever. Instead
> of an explicit return statement use the common return path, which
> releases the lock.
>
> Fixes: 11b86c7004ef1 ("platform/chrome: Add cros_ec_accel_legacy driver")
> Signed-off-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>
> ---
> drivers/iio/accel/cros_ec_accel_legacy.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)

See also <https://lkml.kernel.org/r/39403a4c-bf7f-6a98-890c-57397fa66493@xxxxxxxxxxxxx>

Actually, the "Fixes" tag is wrong here, though. The problem only
exists because we have <https://crrev.com/c/1632659> in our tree, AKA
("FROMLIST: iio: cros_ec : Extend legacy support to ARM device").
Before that there was no mutex. For upstream purposes this could
probably be squashed into the original patch.

-Doug