From 70fcd1b7a6be4f4f60f4d05beeb3976bb0eaf6a2 Mon Sep 17 00:00:00 2001 From: H Hartley Sweeten Date: Fri, 29 Jun 2012 17:39:45 -0700 Subject: [PATCH] staging: comedi: ni_670x: fix dereference of an invalid pointer The attach if this driver can fail before the subdevices are allocated. If the attach fails the comedi core will call the detach routine to allow the driver to do it's cleanup. We need to make sure that the subdevice allocation was successful before trying to dereference subdevice[0] to free the allocated range table list. Signed-off-by: H Hartley Sweeten Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- drivers/staging/comedi/drivers/ni_670x.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/staging/comedi/drivers/ni_670x.c b/drivers/staging/comedi/drivers/ni_670x.c index bab964477118..46f373a0c0ca 100644 --- a/drivers/staging/comedi/drivers/ni_670x.c +++ b/drivers/staging/comedi/drivers/ni_670x.c @@ -301,8 +301,13 @@ static int ni_670x_attach(struct comedi_device *dev, static void ni_670x_detach(struct comedi_device *dev) { struct ni_670x_private *devpriv = dev->private; + struct comedi_subdevice *s; - kfree(dev->subdevices[0].range_table_list); + if (dev->n_subdevices) { + s = dev->subdevices + 0; + if (s) + kfree(s->range_table_list); + } if (devpriv && devpriv->mite) mite_unsetup(devpriv->mite); if (dev->irq) -- 2.20.1