diff options
-rw-r--r-- | drivers/staging/comedi/drivers/unioxx5.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/drivers/staging/comedi/drivers/unioxx5.c b/drivers/staging/comedi/drivers/unioxx5.c index fc88b66f408..c9201d821fb 100644 --- a/drivers/staging/comedi/drivers/unioxx5.c +++ b/drivers/staging/comedi/drivers/unioxx5.c @@ -371,15 +371,13 @@ static int __unioxx5_subdev_init(struct comedi_device *dev, int i, to, ndef_flag = 0; int ret; - usp = kzalloc(sizeof(*usp), GFP_KERNEL); - if (usp == NULL) + usp = comedi_alloc_spriv(s, sizeof(*usp)); + if (!usp) return -ENOMEM; ret = __comedi_request_region(dev, iobase, UNIOXX5_SIZE); - if (ret) { - kfree(usp); + if (ret) return ret; - } usp->usp_iobase = iobase; /* defining modules types */ @@ -413,7 +411,6 @@ static int __unioxx5_subdev_init(struct comedi_device *dev, /* initial subdevice for digital or analog i/o */ s->type = COMEDI_SUBD_DIO; - s->private = usp; s->subdev_flags = SDF_READABLE | SDF_WRITABLE; s->n_chan = UNIOXX5_NUM_OF_CHANS; s->maxdata = 0xFFF; @@ -483,7 +480,6 @@ static void unioxx5_detach(struct comedi_device *dev) spriv = s->private; if (spriv && spriv->usp_iobase) release_region(spriv->usp_iobase, UNIOXX5_SIZE); - kfree(spriv); } } |