From: Dan Carpenter <dan.carpenter@oracle.com>
To: Andrey Konovalov <andreyknvl@google.com>
Cc: USB list <linux-usb@vger.kernel.org>
Subject: Re: [bug report] usb: gadget: add raw-gadget interface
Date: Mon, 6 Apr 2020 17:07:26 +0300 [thread overview]
Message-ID: <20200406140726.GK2066@kadam> (raw)
In-Reply-To: <CAAeHK+xRnfxJwbPapPJv6LhE5xKiELEKc6ThTgSchkE+6y+wJw@mail.gmail.com>
On Mon, Apr 06, 2020 at 03:06:12PM +0200, Andrey Konovalov wrote:
> On Mon, Apr 6, 2020 at 12:55 PM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> >
> > Hello Andrey Konovalov,
> >
> > The patch f2c2e717642c: "usb: gadget: add raw-gadget interface" from
> > Feb 24, 2020, leads to the following static checker warning:
> >
> > drivers/usb/gadget/legacy/raw_gadget.c:102 raw_event_queue_fetch() warn: inconsistent returns 'queue->sema'.
> > Locked on : 96,102
> > Unlocked on: 93
> >
> > drivers/usb/gadget/legacy/raw_gadget.c
> > 81 static struct usb_raw_event *raw_event_queue_fetch(
> > 82 struct raw_event_queue *queue)
> > 83 {
> > 84 unsigned long flags;
> > 85 struct usb_raw_event *event;
> > 86
> > 87 /*
> > 88 * This function can be called concurrently. We first check that
> > 89 * there's at least one event queued by decrementing the semaphore,
> > 90 * and then take the lock to protect queue struct fields.
> > 91 */
> > 92 if (down_interruptible(&queue->sema))
> > 93 return NULL;
> > 94 spin_lock_irqsave(&queue->lock, flags);
> > 95 if (WARN_ON(!queue->size))
> > 96 return NULL;
> >
> > I'm going to have investigate to see why Smatch doesn't complain that
> > we have disabled IRQs on this path... Anyway, this doesn't seem like it
> > can be correct. I get that this is a WARN_ON() path, but we're leaving
> > the computer in a very screwed up state we don't at least enable IRQs.
>
> Hi Dan,
>
> Oh, right, I'll send a patch to add spin_lock_irqsave() there.
>
> I don't really get the warning about queue->sema though, is there
> something wrong with it, or is it actually a warning about
> queue->lock?
The rule here is that we return NULL here and on line 93, so how does
the caller know if we took that "queue->sema" lock?
regards,
dan carpenter
next prev parent reply other threads:[~2020-04-06 14:07 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-06 10:55 [bug report] usb: gadget: add raw-gadget interface Dan Carpenter
2020-04-06 13:06 ` Andrey Konovalov
2020-04-06 14:07 ` Dan Carpenter [this message]
2020-04-06 16:04 ` Andrey Konovalov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200406140726.GK2066@kadam \
--to=dan.carpenter@oracle.com \
--cc=andreyknvl@google.com \
--cc=linux-usb@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.