Re: drivers/spi/spi.c:1160:3-9: preceding lock on line 1153

From: Julia Lawall
Date: Tue Aug 09 2016 - 12:35:20 EST




On Tue, 9 Aug 2016, Mark Brown wrote:

> On Tue, Aug 09, 2016 at 06:19:13PM +0200, Julia Lawall wrote:
>
> > Looks worth checking.
>
> I don't really have any idea what this is trying to tell me, sorry.

The important lines are the ones with the @. Line 1153 takes a lock and
in line 1160 there is a return in error handling code with the lock still
held. The semantic patch that reported this should also only give a
report if there is some patch out of the function that releases the lock.
Overall, it seems unusual to keep the lock in an error case.

julia

>
> >
> > julia
> >
> > ---------- Forwarded message ----------
> > Date: Wed, 10 Aug 2016 00:17:07 +0800
> > From: kbuild test robot <fengguang.wu@xxxxxxxxx>
> > To: kbuild@xxxxxx
> > Cc: Julia Lawall <julia.lawall@xxxxxxx>
> > Subject: drivers/spi/spi.c:1160:3-9: preceding lock on line 1153
> >
> > CC: kbuild-all@xxxxxx
> > CC: linux-kernel@xxxxxxxxxxxxxxx
> > TO: Mark Brown <broonie@xxxxxxxxxx>
> >
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> > head: 81abf2525827b29839a78fd55ab0699f033c41a5
> > commit: ef4d96ec4ad947360f48677b6007a4c77953b090 spi: Split bus and I/O locking
> > date: 2 weeks ago
> > :::::: branch date: 18 hours ago
> > :::::: commit date: 2 weeks ago
> >
> > >> drivers/spi/spi.c:1160:3-9: preceding lock on line 1153
> >
> > git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> > git remote update linus
> > git checkout ef4d96ec4ad947360f48677b6007a4c77953b090
> > vim +1160 drivers/spi/spi.c
> >
> > ffbbdd213 Linus Walleij 2012-02-22 1147 if (master->busy)
> > ffbbdd213 Linus Walleij 2012-02-22 1148 was_busy = true;
> > ffbbdd213 Linus Walleij 2012-02-22 1149 else
> > ffbbdd213 Linus Walleij 2012-02-22 1150 master->busy = true;
> > ffbbdd213 Linus Walleij 2012-02-22 1151 spin_unlock_irqrestore(&master->queue_lock, flags);
> > ffbbdd213 Linus Walleij 2012-02-22 1152
> > ef4d96ec4 Mark Brown 2016-07-21 @1153 mutex_lock(&master->io_mutex);
> > ef4d96ec4 Mark Brown 2016-07-21 1154
> > 49834de23 Mark Brown 2013-07-28 1155 if (!was_busy && master->auto_runtime_pm) {
> > 49834de23 Mark Brown 2013-07-28 1156 ret = pm_runtime_get_sync(master->dev.parent);
> > 49834de23 Mark Brown 2013-07-28 1157 if (ret < 0) {
> > 49834de23 Mark Brown 2013-07-28 1158 dev_err(&master->dev, "Failed to power device: %d\n",
> > 49834de23 Mark Brown 2013-07-28 1159 ret);
> > 49834de23 Mark Brown 2013-07-28 @1160 return;
> > 49834de23 Mark Brown 2013-07-28 1161 }
> > 49834de23 Mark Brown 2013-07-28 1162 }
> > 49834de23 Mark Brown 2013-07-28 1163
> >
> > :::::: The code at line 1160 was first introduced by commit
> > :::::: 49834de234f3cf592c3d242c889ca603db8e7050 spi: Provide core support for runtime PM during transfers
> >
> > :::::: TO: Mark Brown <broonie@xxxxxxxxxx>
> > :::::: CC: Mark Brown <broonie@xxxxxxxxxx>
> >
> > ---
> > 0-DAY kernel test infrastructure Open Source Technology Center
> > https://lists.01.org/pipermail/kbuild-all Intel Corporation
>