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

From: Matthias Kaehlcke
Date: Mon Jul 15 2019 - 15:50:40 EST


On Mon, Jul 15, 2019 at 12:40:42PM -0700, Doug Anderson wrote:
> 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.

Oops, I didn't realize that upstream doesn't have the mutex. In this
case the entire patch as is with it's commit message doesn't make much
sense.