Skip to content

Commit

Permalink
staging: comedi: unioxx5: fix unioxx5_detach()
Browse files Browse the repository at this point in the history
During the attach of this driver, it's possible for the allocation
of the subdevice private data to fail. It's also possible that the
io region was not successfully requested.

Validate the pointer and iobase before trying to release the region.

For aesthetic reasons, rename the local variables.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Jun 24, 2013
1 parent 27a9095 commit 7f5ac6f
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions drivers/staging/comedi/drivers/unioxx5.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}

Expand Down

0 comments on commit 7f5ac6f

Please sign in to comment.