[lkml]   [2019]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: [PATCH -next] pwm: pca9685: Remove set but not used variable 'pwm'
Hi YueHaibing,

On Fri, May 31, 2019 at 11:49 PM YueHaibing <> wrote:
> mutex_lock(&pca->lock);
> - pwm = &pca->chip.pwms[offset];
> mutex_unlock(&pca->lock);

Thanks for noticing this issue. However it should be fixed differently.

This was introduced by Uwe's clean-up patch:
commit e926b12c611c2095c79 ("pwm: Clear chip_data in pwm_put()")

But Uwe did not realize that in this case, the pwm chip_data is used as a
synchronization mechanism between pwm and gpio. Moving the chip_data
clear out of the mutex breaks this mechanism.

I think the following would restore the mechanism:

> mutex_lock(&pca->lock);
> pwm = &pca->chip.pwms[offset];
> + pwm_set_chip_data(pwm, NULL);
> mutex_unlock(&pca->lock);

This would of course clear the pwm chip_data twice, once in the driver and
once in the core, but that's not a problem.

I'd like to hear Mika Westerberg's opinion, because he introduced this
synchronization mechanism back in 2016.

[Adding Mika]


 \ /
  Last update: 2019-06-01 15:05    [W:0.065 / U:0.340 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site