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 <dan.carpenter@xxxxxxxxxx> Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- 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 1b19cc2..0c243477 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 */ -- 1.8.1.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel