Staging: Eliminate a NULL pointer dereference
authorJulia Lawall <julia@diku.dk>
Thu, 27 May 2010 12:37:19 +0000 (14:37 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 4 Jun 2010 20:38:57 +0000 (13:38 -0700)
Eliminate a NULL or near NULL pointer dereference.

A simplified version of the semantic match that finds this problem is as
follows: (http://coccinelle.lip6.fr/)

// <smpl>
@r exists@
expression E,E1;
identifier f;
statement S1,S2,S3;
@@

if ((E == NULL && ...) || ...)
{
  ... when != if (...) S1 else S2
      when != E = E1
* E->f
  ... when any
  return ...;
}
else S3
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/comedi/drivers/usbdux.c
drivers/staging/dt3155/allocator.c

index 86f035d..27b4cb2 100644 (file)
@@ -351,8 +351,7 @@ static int usbdux_ai_stop(struct usbduxsub *this_usbduxsub, int do_unlink)
        int ret = 0;
 
        if (!this_usbduxsub) {
-               dev_err(&this_usbduxsub->interface->dev,
-                       "comedi?: usbdux_ai_stop: this_usbduxsub=NULL!\n");
+               pr_err("comedi?: usbdux_ai_stop: this_usbduxsub=NULL!\n");
                return -EFAULT;
        }
        dev_dbg(&this_usbduxsub->interface->dev, "comedi: usbdux_ai_stop\n");
index bd5adbc..d33947b 100644 (file)
@@ -176,9 +176,7 @@ int allocator_free_dma(unsigned long address)
        prev = ptr; ptr = ptr->next;
 
        if (!ptr) {
-               printk(KERN_ERR ALL_MSG
-                       "free_dma(0x%08lx) but add. not allocated\n",
-                       ptr->address);
+               pr_err(ALL_MSG "free_dma but add. not allocated\n");
                return -EINVAL;
        }
        PDEBUGG("freeing: %08lx (%li) next %08lx\n", ptr->address, ptr->size,