From: Julia Lawall <julia@diku.dk>
To: David Herrmann <dh.herrmann@googlemail.com>
Cc: Arend van Spriel <arend@broadcom.com>,
Dan Carpenter <dan.carpenter@oracle.com>,
Jiri Kosina <jkosina@suse.cz>,
"kernel-janitors@vger.kernel.org"
<kernel-janitors@vger.kernel.org>,
"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 3/5 v2] drivers/hid/hid-roccat.c: eliminate a null pointer dereference
Date: Sat, 29 Oct 2011 14:11:47 +0200 (CEST) [thread overview]
Message-ID: <Pine.LNX.4.64.1110291411150.17700@ask.diku.dk> (raw)
In-Reply-To: <CANq1E4QJoM+NYub9hfs3KnL1w212FK0MHo8ez2p1nyGmNVb-=A@mail.gmail.com>
From: Julia Lawall <julia@diku.dk>
It is not possible to take the lock in device if device is NULL.
The mutex_lock is thus moved after the NULL test, and the relevant part of
the shared error handling code is moved up.
The semantic match that finds this problem is as follows:
(http://coccinelle.lip6.fr/)
// <smpl>
@r@
expression E, E1;
identifier f;
statement S1,S2,S3;
@@
if (E == NULL)
{
... when != if (E == NULL || ...) S1 else S2
when != E = E1
*E->f
... when any
return ...;
}
else S3
// </smpl>
Signed-off-by: Julia Lawall <julia@diku.dk>
---
mutex_lock changed to mutex_unlock in error handling code
drivers/hid/hid-roccat.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/hid/hid-roccat.c b/drivers/hid/hid-roccat.c
index 2596321..36a28b8 100644
--- a/drivers/hid/hid-roccat.c
+++ b/drivers/hid/hid-roccat.c
@@ -163,14 +163,15 @@ static int roccat_open(struct inode *inode, struct file *file)
device = devices[minor];
- mutex_lock(&device->readers_lock);
-
if (!device) {
pr_emerg("roccat device with minor %d doesn't exist\n", minor);
- error = -ENODEV;
- goto exit_err;
+ kfree(reader);
+ mutex_unlock(&devices_lock);
+ return -ENODEV;
}
+ mutex_lock(&device->readers_lock);
+
if (!device->open++) {
/* power on device on adding first reader */
error = hid_hw_power(device->hid, PM_HINT_FULLON);
next prev parent reply other threads:[~2011-10-29 12:11 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-28 23:58 [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Julia Lawall
2011-10-29 6:24 ` Dan Carpenter
2011-10-29 9:36 ` Arend van Spriel
2011-10-29 10:53 ` David Herrmann
2011-10-29 12:11 ` Julia Lawall [this message]
2011-10-29 17:00 ` [PATCH 3/5 v2] " Jiri Kosina
2011-10-29 18:18 ` Julia Lawall
2011-10-29 18:45 ` [PATCH 3/5 v3] " Julia Lawall
2011-11-01 14:14 ` Jiri Kosina
2011-10-31 9:22 ` [PATCH 3/5] " Arend van Spriel
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=Pine.LNX.4.64.1110291411150.17700@ask.diku.dk \
--to=julia@diku.dk \
--cc=arend@broadcom.com \
--cc=dan.carpenter@oracle.com \
--cc=dh.herrmann@googlemail.com \
--cc=jkosina@suse.cz \
--cc=kernel-janitors@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).