diff --git a/drivers/staging/comedi/drivers/unioxx5.c b/drivers/staging/comedi/drivers/unioxx5.c index d05d46d0a1f26..fc88b66f408d5 100644 --- a/drivers/staging/comedi/drivers/unioxx5.c +++ b/drivers/staging/comedi/drivers/unioxx5.c @@ -474,15 +474,16 @@ static int unioxx5_attach(struct comedi_device *dev, static void unioxx5_detach(struct comedi_device *dev) { + struct comedi_subdevice *s; + struct unioxx5_subd_priv *spriv; int i; - struct comedi_subdevice *subdev; - struct unioxx5_subd_priv *usp; for (i = 0; i < dev->n_subdevices; i++) { - subdev = &dev->subdevices[i]; - usp = subdev->private; - release_region(usp->usp_iobase, UNIOXX5_SIZE); - kfree(subdev->private); + s = &dev->subdevices[i]; + spriv = s->private; + if (spriv && spriv->usp_iobase) + release_region(spriv->usp_iobase, UNIOXX5_SIZE); + kfree(spriv); } }