From: H Hartley Sweeten Date: Mon, 15 Apr 2013 17:19:07 +0000 (-0700) Subject: staging: comedi: unionxx5: fix memory leak during subdevice init X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f4362867e047a254b745741d09fa68a583f50499;p=linux-beck.git staging: comedi: unionxx5: fix memory leak during subdevice init In the subdevice init during the attach of this driver, private data is allocated for each subdevice. The pointer to this data is then saved in the subdevice 's->private' so it can be free'ed during the detach. In __unioxx5_subdev_init() an error path exists that can happen before the allocated pointer is saved in s->private. Make sure the allocated memory is free'ed before returning the error. Reported-by: Dan Carpenter Signed-off-by: H Hartley Sweeten Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/unioxx5.c b/drivers/staging/comedi/drivers/unioxx5.c index 1b19cc246ab2..0c243477cbe5 100644 --- a/drivers/staging/comedi/drivers/unioxx5.c +++ b/drivers/staging/comedi/drivers/unioxx5.c @@ -380,8 +380,10 @@ static int __unioxx5_subdev_init(struct comedi_device *dev, return -ENOMEM; ret = __comedi_request_region(dev, iobase, UNIOXX5_SIZE); - if (ret) + if (ret) { + kfree(usp); return ret; + } usp->usp_iobase = iobase; /* defining modules types */