All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null pointer dereference
@ 2011-10-28 23:58 ` Julia Lawall
  0 siblings, 0 replies; 21+ messages in thread
From: Julia Lawall @ 2011-10-28 23:58 UTC (permalink / raw)
  To: Jiri Kosina; +Cc: kernel-janitors, linux-input, linux-kernel

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>

---
 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_lock(&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);


^ permalink raw reply related	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2011-11-01 14:14 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-28 23:58 [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Julia Lawall
2011-10-28 23:58 ` Julia Lawall
2011-10-29  6:24 ` [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null pointer Dan Carpenter
2011-10-29  6:24   ` [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Dan Carpenter
2011-10-29  9:36   ` [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null Arend van Spriel
2011-10-29  9:36     ` [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Arend van Spriel
2011-10-29 10:53     ` David Herrmann
2011-10-29 10:53       ` David Herrmann
2011-10-29 10:53       ` David Herrmann
2011-10-29 12:11       ` [PATCH 3/5 v2] drivers/hid/hid-roccat.c: eliminate a null pointer Julia Lawall
2011-10-29 12:11         ` [PATCH 3/5 v2] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Julia Lawall
2011-10-29 17:00         ` [PATCH 3/5 v2] drivers/hid/hid-roccat.c: eliminate a null pointer Jiri Kosina
2011-10-29 17:00           ` [PATCH 3/5 v2] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Jiri Kosina
2011-10-29 18:18           ` [PATCH 3/5 v2] drivers/hid/hid-roccat.c: eliminate a null pointer Julia Lawall
2011-10-29 18:18             ` [PATCH 3/5 v2] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Julia Lawall
2011-10-29 18:45           ` [PATCH 3/5 v3] drivers/hid/hid-roccat.c: eliminate a null pointer Julia Lawall
2011-10-29 18:45             ` [PATCH 3/5 v3] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Julia Lawall
2011-11-01 14:14             ` [PATCH 3/5 v3] drivers/hid/hid-roccat.c: eliminate a null pointer Jiri Kosina
2011-11-01 14:14               ` [PATCH 3/5 v3] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Jiri Kosina
2011-10-31  9:22       ` [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null Arend van Spriel
2011-10-31  9:22         ` [PATCH 3/5] drivers/hid/hid-roccat.c: eliminate a null pointer dereference Arend van Spriel

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.