staging: comedi: unioxx5: use comedi_alloc_spriv()
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Mon, 24 Jun 2013 23:23:20 +0000 (16:23 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 24 Jun 2013 23:43:40 +0000 (16:43 -0700)
Use the helper function to allocate the memory and set the subdevice
private pointer. This allows the core to automatically free the
memory during the detach so the driver doesn't need to deal with it.

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>
drivers/staging/comedi/drivers/unioxx5.c

index fc88b66f408d542dbbc533cc982fc924161e5de7..c9201d821fbc3aa5a8f1eb4fc4e8f02d66a94ea0 100644 (file)
@@ -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);
        }
 }