]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
uio: uio_hv_generic: use devm_kzalloc() for private data alloc
authorAlexandru Ardelean <alexandru.ardelean@analog.com>
Thu, 19 Nov 2020 15:49:03 +0000 (17:49 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 9 Dec 2020 18:59:00 +0000 (19:59 +0100)
This is a minor cleanup for the management of the private object of this
driver. The allocation can be tied to the life-time of the hv_device
object.
This cleans up a bit the exit & error paths, since the object doesn't need
to be explicitly free'd anymore.

Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Link: https://lore.kernel.org/r/20201119154903.82099-4-alexandru.ardelean@analog.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uio/uio_hv_generic.c

index 4dae2320b103e2d03eeb7117cb0d263ed8a8a591..0330ba99730e2b2a21054c52b72cdf14bebfea9d 100644 (file)
@@ -247,14 +247,14 @@ hv_uio_probe(struct hv_device *dev,
                return -ENOTSUPP;
        }
 
-       pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
+       pdata = devm_kzalloc(&dev->device, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return -ENOMEM;
 
        ret = vmbus_alloc_ring(channel, HV_RING_SIZE * PAGE_SIZE,
                               HV_RING_SIZE * PAGE_SIZE);
        if (ret)
-               goto fail;
+               return ret;
 
        set_channel_read_mode(channel, HV_CALL_ISR);
 
@@ -347,8 +347,6 @@ hv_uio_probe(struct hv_device *dev,
 
 fail_close:
        hv_uio_cleanup(dev, pdata);
-fail:
-       kfree(pdata);
 
        return ret;
 }
@@ -364,10 +362,8 @@ hv_uio_remove(struct hv_device *dev)
        sysfs_remove_bin_file(&dev->channel->kobj, &ring_buffer_bin_attr);
        uio_unregister_device(&pdata->info);
        hv_uio_cleanup(dev, pdata);
-       hv_set_drvdata(dev, NULL);
 
        vmbus_free_ring(dev->channel);
-       kfree(pdata);
        return 0;
 }