Staging: ipack/devices/ipoctal: Clean up device removal.
authorJens Taprogge <jens.taprogge@taprogge.org>
Wed, 12 Sep 2012 12:55:39 +0000 (14:55 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 Sep 2012 16:56:01 +0000 (09:56 -0700)
Make use of dev_set_drvdata() and dev_get_drvdata() to store and obtain
a pointer to the ipoctal struct corresponding to a struct dev.
Previously we relied on a private list of devices.

Signed-off-by: Jens Taprogge <jens.taprogge@taprogge.org>
Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/ipack/devices/ipoctal.c

index 8e61ebd..b84ab5e 100644 (file)
@@ -725,6 +725,7 @@ static int ipoctal_probe(struct ipack_device *dev)
        if (res)
                goto out_uninst;
 
+       dev_set_drvdata(&dev->dev, ipoctal);
        list_add_tail(&ipoctal->list, &ipoctal_list);
        return 0;
 
@@ -751,14 +752,9 @@ static void __ipoctal_remove(struct ipoctal *ipoctal)
        kfree(ipoctal);
 }
 
-static void ipoctal_remove(struct ipack_device *device)
+static void ipoctal_remove(struct ipack_device *idev)
 {
-       struct ipoctal *ipoctal, *next;
-
-       list_for_each_entry_safe(ipoctal, next, &ipoctal_list, list) {
-               if (ipoctal->dev == device)
-                       __ipoctal_remove(ipoctal);
-       }
+       __ipoctal_remove(dev_get_drvdata(&idev->dev));
 }
 
 static DEFINE_IPACK_DEVICE_TABLE(ipoctal_ids) = {