On 2013-11-11 20:41, Aaro Koskinen wrote: > When booting Nokia N900 smartphone with v3.12 + omap2plus_defconfig > (LOCKDEP enabled) and CONFIG_DISPLAY_PANEL_SONY_ACX565AKM enabled, > the following BUG is seen during the boot: > > [ 7.302154] ===================================== > [ 7.307128] [ BUG: bad unlock balance detected! ] > [ 7.312103] 3.12.0-los.git-2093492-00120-g5e01dc7 #3 Not tainted > [ 7.318450] ------------------------------------- > [ 7.323425] kworker/u2:1/12 is trying to release lock (&ddata->mutex) at: > [ 7.330657] [<c031b760>] acx565akm_enable+0x12c/0x18c > [ 7.335998] but there are no more locks to release! > > Fix by removing double unlock and handling the locking completely inside > acx565akm_panel_power_on() when doing the power on. > > Reported-by: Eduardo Valentin <eduardo.valentin@xxxxxx> > Signed-off-by: Aaro Koskinen <aaro.koskinen@xxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > --- > drivers/video/omap2/displays-new/panel-sony-acx565akm.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > > diff --git a/drivers/video/omap2/displays-new/panel-sony-acx565akm.c b/drivers/video/omap2/displays-new/panel-sony-acx565akm.c > index e6d56f7..d94f35d 100644 > --- a/drivers/video/omap2/displays-new/panel-sony-acx565akm.c > +++ b/drivers/video/omap2/displays-new/panel-sony-acx565akm.c > @@ -526,6 +526,8 @@ static int acx565akm_panel_power_on(struct omap_dss_device *dssdev) > struct omap_dss_device *in = ddata->in; > int r; > > + mutex_lock(&ddata->mutex); > + > dev_dbg(&ddata->spi->dev, "%s\n", __func__); > > in->ops.sdi->set_timings(in, &ddata->videomode); > @@ -614,10 +616,7 @@ static int acx565akm_enable(struct omap_dss_device *dssdev) > if (omapdss_device_is_enabled(dssdev)) > return 0; > > - mutex_lock(&ddata->mutex); > r = acx565akm_panel_power_on(dssdev); > - mutex_unlock(&ddata->mutex); > - > if (r) > return r; > > Thanks, this is better. lock and unlock in different functions makes me feel very uneasy... Tomi
Attachment:
signature.asc
Description: OpenPGP digital signature