From: Julia Lawall <julia at diku.dk> Since card must already be non-NULL, it seems that what was intended was to test the result of kmalloc. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ expression E,E1; identifier f,fld,fld1; statement S1,S2; @@ E->fld = f(...); ... when != E = E1 when != E->fld1 = E1 if ( - E + E->fld == NULL) S1 else S2 // </smpl> Signed-off-by: Julia Lawall <julia at diku.dk> Signed-off-by: Greg Kroah-Hartman <gregkh at suse.de> --- drivers/staging/cpc-usb/cpc-usb_drv.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/staging/cpc-usb/cpc-usb_drv.c b/drivers/staging/cpc-usb/cpc-usb_drv.c index 14aca39..672f786 100644 --- a/drivers/staging/cpc-usb/cpc-usb_drv.c +++ b/drivers/staging/cpc-usb/cpc-usb_drv.c @@ -899,7 +899,7 @@ static int cpcusb_probe(struct usb_interface *interface, /* allocate and initialize the channel struct */ card->chan = kmalloc(sizeof(CPC_CHAN_T), GFP_KERNEL); - if (!card) { + if (!card->chan) { kfree(card); err("Out of memory"); return -ENOMEM; -- 1.6.3.2