From f4362867e047a254b745741d09fa68a583f50499 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Mon, 15 Apr 2013 10:19:07 -0700 Subject: [PATCH] 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 --- drivers/staging/comedi/drivers/unioxx5.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 */ -- 2.30.2