[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK8P3a2huLuzaaHh-hw4S1pRa0BTPEywvp3Kw134j_dm8Lns6g@mail.gmail.com>
Date: Thu, 8 Jun 2017 17:10:51 +0200
From: Arnd Bergmann <arnd@...db.de>
To: Binoy Jayan <binoy.jayan@...aro.org>
Cc: Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
Rajendra <rnayak@...eaurora.org>,
Mark Brown <broonie@...nel.org>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
Sakari Ailus <sakari.ailus@...ux.intel.com>,
Julia Lawall <Julia.Lawall@...6.fr>,
"Michael S. Tsirkin" <mst@...hat.com>,
Cao jin <caoj.fnst@...fujitsu.com>,
Linux Media Mailing List <linux-media@...r.kernel.org>
Subject: Re: [PATCH 1/3] media: ngene: Replace semaphore cmd_mutex with mutex
On Thu, Jun 8, 2017 at 12:04 PM, Binoy Jayan <binoy.jayan@...aro.org> wrote:
> The semaphore 'cmd_mutex' is used as a simple mutex, so
> it should be written as one. Semaphores are going away in the future.
>
> Signed-off-by: Binoy Jayan <binoy.jayan@...aro.org>
> ---
> @@ -1283,7 +1283,7 @@ static int ngene_load_firm(struct ngene *dev)
>
> static void ngene_stop(struct ngene *dev)
> {
> - down(&dev->cmd_mutex);
> + mutex_lock(&dev->cmd_mutex);
> i2c_del_adapter(&(dev->channel[0].i2c_adapter));
> i2c_del_adapter(&(dev->channel[1].i2c_adapter));
> ngwritel(0, NGENE_INT_ENABLE);
Are you sure about this one? There is only one mutex_lock() and
then the structure gets freed without a corresponding mutex_unlock().
I suspect this violates some rules of mutexes, either when compile
testing with "make C=1", or when running with lockdep enabled.
Can we actually have a concurrently held mutex at the time we
get here? If not, using mutex_destroy() in place of the down()
may be the right answer.
Arnd
Powered by blists - more mailing lists