aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2007-12-20 11:13:05 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-01-24 23:40:40 -0500
commitc10997f6575f476ff38442fa18fd4a0d80345f9d (patch)
tree9b2bb7e647bd39fb80f23d7a6b34bf2587d660a7
parent38a382ae5dd4f4d04e3046816b0a41836094e538 (diff)
Kobject: convert drivers/* from kobject_unregister() to kobject_put()
There is no need for kobject_unregister() anymore, thanks to Kay's kobject cleanup changes, so replace all instances of it with kobject_put(). Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/base/bus.c4
-rw-r--r--drivers/base/sys.c2
-rw-r--r--drivers/block/pktcdvd.c2
-rw-r--r--drivers/cpufreq/cpufreq.c4
-rw-r--r--drivers/cpuidle/sysfs.c4
-rw-r--r--drivers/edac/edac_device_sysfs.c10
-rw-r--r--drivers/edac/edac_mc_sysfs.c12
-rw-r--r--drivers/edac/edac_pci_sysfs.c6
-rw-r--r--drivers/firmware/edd.c2
-rw-r--r--drivers/firmware/efivars.c6
-rw-r--r--drivers/infiniband/core/sysfs.c6
-rw-r--r--drivers/md/md.c2
-rw-r--r--drivers/net/ibmveth.c2
-rw-r--r--drivers/parisc/pdc_stable.c6
-rw-r--r--drivers/pci/hotplug/pci_hotplug_core.c2
-rw-r--r--drivers/pci/hotplug/rpadlpar_sysfs.c4
-rw-r--r--drivers/uio/uio.c8
17 files changed, 40 insertions, 42 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index aea579365f6d..a377b65ba328 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -681,7 +681,7 @@ int bus_add_driver(struct device_driver *drv)
681 kobject_uevent(&priv->kobj, KOBJ_ADD); 681 kobject_uevent(&priv->kobj, KOBJ_ADD);
682 return error; 682 return error;
683out_unregister: 683out_unregister:
684 kobject_unregister(&priv->kobj); 684 kobject_put(&priv->kobj);
685out_put_bus: 685out_put_bus:
686 bus_put(bus); 686 bus_put(bus);
687 return error; 687 return error;
@@ -708,7 +708,7 @@ void bus_remove_driver(struct device_driver * drv)
708 pr_debug("bus: '%s': remove driver %s\n", drv->bus->name, drv->name); 708 pr_debug("bus: '%s': remove driver %s\n", drv->bus->name, drv->name);
709 driver_detach(drv); 709 driver_detach(drv);
710 module_remove_driver(drv); 710 module_remove_driver(drv);
711 kobject_unregister(&drv->p->kobj); 711 kobject_put(&drv->p->kobj);
712 bus_put(drv->bus); 712 bus_put(drv->bus);
713} 713}
714 714
diff --git a/drivers/base/sys.c b/drivers/base/sys.c
index 47fc6eb6473f..e666441dd76b 100644
--- a/drivers/base/sys.c
+++ b/drivers/base/sys.c
@@ -264,7 +264,7 @@ void sysdev_unregister(struct sys_device * sysdev)
264 } 264 }
265 mutex_unlock(&sysdev_drivers_lock); 265 mutex_unlock(&sysdev_drivers_lock);
266 266
267 kobject_unregister(&sysdev->kobj); 267 kobject_put(&sysdev->kobj);
268} 268}
269 269
270 270
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index d1ee38361e0b..e9de1712e5a0 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -130,7 +130,7 @@ static struct pktcdvd_kobj* pkt_kobj_create(struct pktcdvd_device *pd,
130static void pkt_kobj_remove(struct pktcdvd_kobj *p) 130static void pkt_kobj_remove(struct pktcdvd_kobj *p)
131{ 131{
132 if (p) 132 if (p)
133 kobject_unregister(&p->kobj); 133 kobject_put(&p->kobj);
134} 134}
135/* 135/*
136 * default release function for pktcdvd kernel objects. 136 * default release function for pktcdvd kernel objects.
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 9e102af0c07b..5efd5550f4ca 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -913,7 +913,7 @@ err_out_unregister:
913 cpufreq_cpu_data[j] = NULL; 913 cpufreq_cpu_data[j] = NULL;
914 spin_unlock_irqrestore(&cpufreq_driver_lock, flags); 914 spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
915 915
916 kobject_unregister(&policy->kobj); 916 kobject_put(&policy->kobj);
917 wait_for_completion(&policy->kobj_unregister); 917 wait_for_completion(&policy->kobj_unregister);
918 918
919err_out_driver_exit: 919err_out_driver_exit:
@@ -1030,8 +1030,6 @@ static int __cpufreq_remove_dev (struct sys_device * sys_dev)
1030 1030
1031 unlock_policy_rwsem_write(cpu); 1031 unlock_policy_rwsem_write(cpu);
1032 1032
1033 kobject_unregister(&data->kobj);
1034
1035 kobject_put(&data->kobj); 1033 kobject_put(&data->kobj);
1036 1034
1037 /* we need to make sure that the underlying kobj is actually 1035 /* we need to make sure that the underlying kobj is actually
diff --git a/drivers/cpuidle/sysfs.c b/drivers/cpuidle/sysfs.c
index 059db9c21474..088ea74edd34 100644
--- a/drivers/cpuidle/sysfs.c
+++ b/drivers/cpuidle/sysfs.c
@@ -277,7 +277,7 @@ static struct kobj_type ktype_state_cpuidle = {
277 277
278static void inline cpuidle_free_state_kobj(struct cpuidle_device *device, int i) 278static void inline cpuidle_free_state_kobj(struct cpuidle_device *device, int i)
279{ 279{
280 kobject_unregister(&device->kobjs[i]->kobj); 280 kobject_put(&device->kobjs[i]->kobj);
281 wait_for_completion(&device->kobjs[i]->kobj_unregister); 281 wait_for_completion(&device->kobjs[i]->kobj_unregister);
282 kfree(device->kobjs[i]); 282 kfree(device->kobjs[i]);
283 device->kobjs[i] = NULL; 283 device->kobjs[i] = NULL;
@@ -358,5 +358,5 @@ void cpuidle_remove_sysfs(struct sys_device *sysdev)
358 struct cpuidle_device *dev; 358 struct cpuidle_device *dev;
359 359
360 dev = per_cpu(cpuidle_devices, cpu); 360 dev = per_cpu(cpuidle_devices, cpu);
361 kobject_unregister(&dev->kobj); 361 kobject_put(&dev->kobj);
362} 362}
diff --git a/drivers/edac/edac_device_sysfs.c b/drivers/edac/edac_device_sysfs.c
index 10e5b19a3e3b..53764577035f 100644
--- a/drivers/edac/edac_device_sysfs.c
+++ b/drivers/edac/edac_device_sysfs.c
@@ -303,7 +303,7 @@ void edac_device_unregister_sysfs_main_kobj(
303 * a) module_put() this module 303 * a) module_put() this module
304 * b) 'kfree' the memory 304 * b) 'kfree' the memory
305 */ 305 */
306 kobject_unregister(&edac_dev->kobj); 306 kobject_put(&edac_dev->kobj);
307} 307}
308 308
309/* edac_dev -> instance information */ 309/* edac_dev -> instance information */
@@ -574,7 +574,7 @@ static int edac_device_create_block(struct edac_device_ctl_info *edac_dev,
574 574
575 /* Error unwind stack */ 575 /* Error unwind stack */
576err_on_attrib: 576err_on_attrib:
577 kobject_unregister(&block->kobj); 577 kobject_put(&block->kobj);
578 578
579err_out: 579err_out:
580 return err; 580 return err;
@@ -605,7 +605,7 @@ static void edac_device_delete_block(struct edac_device_ctl_info *edac_dev,
605 /* unregister this block's kobject, SEE: 605 /* unregister this block's kobject, SEE:
606 * edac_device_ctrl_block_release() callback operation 606 * edac_device_ctrl_block_release() callback operation
607 */ 607 */
608 kobject_unregister(&block->kobj); 608 kobject_put(&block->kobj);
609} 609}
610 610
611/* instance ctor/dtor code */ 611/* instance ctor/dtor code */
@@ -672,7 +672,7 @@ static int edac_device_create_instance(struct edac_device_ctl_info *edac_dev,
672 672
673 /* error unwind stack */ 673 /* error unwind stack */
674err_release_instance_kobj: 674err_release_instance_kobj:
675 kobject_unregister(&instance->kobj); 675 kobject_put(&instance->kobj);
676 676
677err_out: 677err_out:
678 return err; 678 return err;
@@ -697,7 +697,7 @@ static void edac_device_delete_instance(struct edac_device_ctl_info *edac_dev,
697 /* unregister this instance's kobject, SEE: 697 /* unregister this instance's kobject, SEE:
698 * edac_device_ctrl_instance_release() for callback operation 698 * edac_device_ctrl_instance_release() for callback operation
699 */ 699 */
700 kobject_unregister(&instance->kobj); 700 kobject_put(&instance->kobj);
701} 701}
702 702
703/* 703/*
diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c
index 45b1d3633418..9aac88027fb3 100644
--- a/drivers/edac/edac_mc_sysfs.c
+++ b/drivers/edac/edac_mc_sysfs.c
@@ -395,7 +395,7 @@ static int edac_create_csrow_object(struct mem_ctl_info *mci,
395 goto err_release_top_kobj; 395 goto err_release_top_kobj;
396 396
397 /* At this point, to release a csrow kobj, one must 397 /* At this point, to release a csrow kobj, one must
398 * call the kobject_unregister and allow that tear down 398 * call the kobject_put and allow that tear down
399 * to work the releasing 399 * to work the releasing
400 */ 400 */
401 401
@@ -406,7 +406,7 @@ static int edac_create_csrow_object(struct mem_ctl_info *mci,
406 err = edac_create_channel_files(&csrow->kobj, chan); 406 err = edac_create_channel_files(&csrow->kobj, chan);
407 if (err) { 407 if (err) {
408 /* special case the unregister here */ 408 /* special case the unregister here */
409 kobject_unregister(&csrow->kobj); 409 kobject_put(&csrow->kobj);
410 goto err_out; 410 goto err_out;
411 } 411 }
412 } 412 }
@@ -808,7 +808,7 @@ fail_out:
808void edac_mc_unregister_sysfs_main_kobj(struct mem_ctl_info *mci) 808void edac_mc_unregister_sysfs_main_kobj(struct mem_ctl_info *mci)
809{ 809{
810 /* delete the kobj from the mc_kset */ 810 /* delete the kobj from the mc_kset */
811 kobject_unregister(&mci->edac_mci_kobj); 811 kobject_put(&mci->edac_mci_kobj);
812} 812}
813 813
814#define EDAC_DEVICE_SYMLINK "device" 814#define EDAC_DEVICE_SYMLINK "device"
@@ -923,7 +923,7 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci)
923fail1: 923fail1:
924 for (i--; i >= 0; i--) { 924 for (i--; i >= 0; i--) {
925 if (csrow->nr_pages > 0) { 925 if (csrow->nr_pages > 0) {
926 kobject_unregister(&mci->csrows[i].kobj); 926 kobject_put(&mci->csrows[i].kobj);
927 } 927 }
928 } 928 }
929 929
@@ -950,7 +950,7 @@ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci)
950 for (i = 0; i < mci->nr_csrows; i++) { 950 for (i = 0; i < mci->nr_csrows; i++) {
951 if (mci->csrows[i].nr_pages > 0) { 951 if (mci->csrows[i].nr_pages > 0) {
952 debugf0("%s() unreg csrow-%d\n", __func__, i); 952 debugf0("%s() unreg csrow-%d\n", __func__, i);
953 kobject_unregister(&mci->csrows[i].kobj); 953 kobject_put(&mci->csrows[i].kobj);
954 } 954 }
955 } 955 }
956 956
@@ -967,7 +967,7 @@ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci)
967 debugf0("%s() unregister this mci kobj\n", __func__); 967 debugf0("%s() unregister this mci kobj\n", __func__);
968 968
969 /* unregister this instance's kobject */ 969 /* unregister this instance's kobject */
970 kobject_unregister(&mci->edac_mci_kobj); 970 kobject_put(&mci->edac_mci_kobj);
971} 971}
972 972
973 973
diff --git a/drivers/edac/edac_pci_sysfs.c b/drivers/edac/edac_pci_sysfs.c
index 834eaa9d6148..5b075da99145 100644
--- a/drivers/edac/edac_pci_sysfs.c
+++ b/drivers/edac/edac_pci_sysfs.c
@@ -205,7 +205,7 @@ void edac_pci_unregister_sysfs_instance_kobj(struct edac_pci_ctl_info *pci)
205 * function release the main reference count and then 205 * function release the main reference count and then
206 * kfree the memory 206 * kfree the memory
207 */ 207 */
208 kobject_unregister(&pci->kobj); 208 kobject_put(&pci->kobj);
209} 209}
210 210
211/***************************** EDAC PCI sysfs root **********************/ 211/***************************** EDAC PCI sysfs root **********************/
@@ -411,9 +411,9 @@ static void edac_pci_main_kobj_teardown(void)
411 * main kobj 411 * main kobj
412 */ 412 */
413 if (atomic_dec_return(&edac_pci_sysfs_refcount) == 0) { 413 if (atomic_dec_return(&edac_pci_sysfs_refcount) == 0) {
414 debugf0("%s() called kobject_unregister on main kobj\n", 414 debugf0("%s() called kobject_put on main kobj\n",
415 __func__); 415 __func__);
416 kobject_unregister(&edac_pci_top_main_kobj); 416 kobject_put(&edac_pci_top_main_kobj);
417 } 417 }
418} 418}
419 419
diff --git a/drivers/firmware/edd.c b/drivers/firmware/edd.c
index dc0b87b13505..d168223db159 100644
--- a/drivers/firmware/edd.c
+++ b/drivers/firmware/edd.c
@@ -693,7 +693,7 @@ edd_create_symlink_to_pcidev(struct edd_device *edev)
693static inline void 693static inline void
694edd_device_unregister(struct edd_device *edev) 694edd_device_unregister(struct edd_device *edev)
695{ 695{
696 kobject_unregister(&edev->kobj); 696 kobject_put(&edev->kobj);
697} 697}
698 698
699static void edd_populate_dir(struct edd_device * edev) 699static void edd_populate_dir(struct edd_device * edev)
diff --git a/drivers/firmware/efivars.c b/drivers/firmware/efivars.c
index b61a72fb6219..f4f709d1370b 100644
--- a/drivers/firmware/efivars.c
+++ b/drivers/firmware/efivars.c
@@ -397,7 +397,7 @@ static struct kobj_type efivar_ktype = {
397static inline void 397static inline void
398efivar_unregister(struct efivar_entry *var) 398efivar_unregister(struct efivar_entry *var)
399{ 399{
400 kobject_unregister(&var->kobj); 400 kobject_put(&var->kobj);
401} 401}
402 402
403 403
@@ -732,7 +732,7 @@ efivars_init(void)
732 kset_unregister(vars_kset); 732 kset_unregister(vars_kset);
733 733
734out_firmware_unregister: 734out_firmware_unregister:
735 kobject_unregister(efi_kobj); 735 kobject_put(efi_kobj);
736 736
737out_free: 737out_free:
738 kfree(variable_name); 738 kfree(variable_name);
@@ -753,7 +753,7 @@ efivars_exit(void)
753 } 753 }
754 754
755 kset_unregister(vars_kset); 755 kset_unregister(vars_kset);
756 kobject_unregister(efi_kobj); 756 kobject_put(efi_kobj);
757} 757}
758 758
759module_init(efivars_init); 759module_init(efivars_init);
diff --git a/drivers/infiniband/core/sysfs.c b/drivers/infiniband/core/sysfs.c
index aa81129704cf..c864ef70fdf9 100644
--- a/drivers/infiniband/core/sysfs.c
+++ b/drivers/infiniband/core/sysfs.c
@@ -714,7 +714,7 @@ err_put:
714 sysfs_remove_group(p, &pma_group); 714 sysfs_remove_group(p, &pma_group);
715 sysfs_remove_group(p, &port->pkey_group); 715 sysfs_remove_group(p, &port->pkey_group);
716 sysfs_remove_group(p, &port->gid_group); 716 sysfs_remove_group(p, &port->gid_group);
717 kobject_unregister(p); 717 kobject_put(p);
718 } 718 }
719 } 719 }
720 720
@@ -738,10 +738,10 @@ void ib_device_unregister_sysfs(struct ib_device *device)
738 sysfs_remove_group(p, &pma_group); 738 sysfs_remove_group(p, &pma_group);
739 sysfs_remove_group(p, &port->pkey_group); 739 sysfs_remove_group(p, &port->pkey_group);
740 sysfs_remove_group(p, &port->gid_group); 740 sysfs_remove_group(p, &port->gid_group);
741 kobject_unregister(p); 741 kobject_put(p);
742 } 742 }
743 743
744 kobject_unregister(device->ports_parent); 744 kobject_put(device->ports_parent);
745 class_device_unregister(&device->class_dev); 745 class_device_unregister(&device->class_dev);
746} 746}
747 747
diff --git a/drivers/md/md.c b/drivers/md/md.c
index ae800ba061a6..c28a120b4161 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -231,7 +231,7 @@ static void mddev_put(mddev_t *mddev)
231 list_del(&mddev->all_mddevs); 231 list_del(&mddev->all_mddevs);
232 spin_unlock(&all_mddevs_lock); 232 spin_unlock(&all_mddevs_lock);
233 blk_cleanup_queue(mddev->queue); 233 blk_cleanup_queue(mddev->queue);
234 kobject_unregister(&mddev->kobj); 234 kobject_put(&mddev->kobj);
235 } else 235 } else
236 spin_unlock(&all_mddevs_lock); 236 spin_unlock(&all_mddevs_lock);
237} 237}
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c
index bee30375999a..57772bebff56 100644
--- a/drivers/net/ibmveth.c
+++ b/drivers/net/ibmveth.c
@@ -1236,7 +1236,7 @@ static int __devexit ibmveth_remove(struct vio_dev *dev)
1236 int i; 1236 int i;
1237 1237
1238 for(i = 0; i<IbmVethNumBufferPools; i++) 1238 for(i = 0; i<IbmVethNumBufferPools; i++)
1239 kobject_unregister(&adapter->rx_buff_pool[i].kobj); 1239 kobject_put(&adapter->rx_buff_pool[i].kobj);
1240 1240
1241 unregister_netdev(netdev); 1241 unregister_netdev(netdev);
1242 1242
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c
index 87bc6b73b249..de34aa9d3136 100644
--- a/drivers/parisc/pdc_stable.c
+++ b/drivers/parisc/pdc_stable.c
@@ -1026,7 +1026,7 @@ pdcs_unregister_pathentries(void)
1026 for (i = 0; (entry = pdcspath_entries[i]); i++) { 1026 for (i = 0; (entry = pdcspath_entries[i]); i++) {
1027 read_lock(&entry->rw_lock); 1027 read_lock(&entry->rw_lock);
1028 if (entry->ready >= 2) 1028 if (entry->ready >= 2)
1029 kobject_unregister(&entry->kobj); 1029 kobject_put(&entry->kobj);
1030 read_unlock(&entry->rw_lock); 1030 read_unlock(&entry->rw_lock);
1031 } 1031 }
1032} 1032}
@@ -1086,7 +1086,7 @@ fail_pdcsreg:
1086 kset_unregister(paths_kset); 1086 kset_unregister(paths_kset);
1087 1087
1088fail_ksetreg: 1088fail_ksetreg:
1089 kobject_unregister(stable_kobj); 1089 kobject_put(stable_kobj);
1090 1090
1091fail_firmreg: 1091fail_firmreg:
1092 printk(KERN_INFO PDCS_PREFIX " bailing out\n"); 1092 printk(KERN_INFO PDCS_PREFIX " bailing out\n");
@@ -1098,7 +1098,7 @@ pdc_stable_exit(void)
1098{ 1098{
1099 pdcs_unregister_pathentries(); 1099 pdcs_unregister_pathentries();
1100 kset_unregister(paths_kset); 1100 kset_unregister(paths_kset);
1101 kobject_unregister(stable_kobj); 1101 kobject_put(stable_kobj);
1102} 1102}
1103 1103
1104 1104
diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c
index 3606d5b52a70..47bb0e1ff3fa 100644
--- a/drivers/pci/hotplug/pci_hotplug_core.c
+++ b/drivers/pci/hotplug/pci_hotplug_core.c
@@ -671,7 +671,7 @@ int pci_hp_deregister (struct hotplug_slot *slot)
671 671
672 fs_remove_slot (slot); 672 fs_remove_slot (slot);
673 dbg ("Removed slot %s from the list\n", slot->name); 673 dbg ("Removed slot %s from the list\n", slot->name);
674 kobject_unregister(&slot->kobj); 674 kobject_put(&slot->kobj);
675 return 0; 675 return 0;
676} 676}
677 677
diff --git a/drivers/pci/hotplug/rpadlpar_sysfs.c b/drivers/pci/hotplug/rpadlpar_sysfs.c
index 9cde367915b6..e32148a8fa12 100644
--- a/drivers/pci/hotplug/rpadlpar_sysfs.c
+++ b/drivers/pci/hotplug/rpadlpar_sysfs.c
@@ -114,12 +114,12 @@ int dlpar_sysfs_init(void)
114 114
115 error = sysfs_create_group(dlpar_kobj, &dlpar_attr_group); 115 error = sysfs_create_group(dlpar_kobj, &dlpar_attr_group);
116 if (error) 116 if (error)
117 kobject_unregister(dlpar_kobj); 117 kobject_put(dlpar_kobj);
118 return error; 118 return error;
119} 119}
120 120
121void dlpar_sysfs_exit(void) 121void dlpar_sysfs_exit(void)
122{ 122{
123 sysfs_remove_group(dlpar_kobj, &dlpar_attr_group); 123 sysfs_remove_group(dlpar_kobj, &dlpar_attr_group);
124 kobject_unregister(dlpar_kobj); 124 kobject_put(dlpar_kobj);
125} 125}
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
index f352731add64..03b66fb734a6 100644
--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -186,9 +186,9 @@ err:
186 for (mi--; mi>=0; mi--) { 186 for (mi--; mi>=0; mi--) {
187 mem = &idev->info->mem[mi]; 187 mem = &idev->info->mem[mi];
188 map = mem->map; 188 map = mem->map;
189 kobject_unregister(&map->kobj); 189 kobject_put(&map->kobj);
190 } 190 }
191 kobject_unregister(idev->map_dir); 191 kobject_put(idev->map_dir);
192 sysfs_remove_group(&idev->dev->kobj, &uio_attr_grp); 192 sysfs_remove_group(&idev->dev->kobj, &uio_attr_grp);
193err_group: 193err_group:
194 dev_err(idev->dev, "error creating sysfs files (%d)\n", ret); 194 dev_err(idev->dev, "error creating sysfs files (%d)\n", ret);
@@ -203,9 +203,9 @@ static void uio_dev_del_attributes(struct uio_device *idev)
203 mem = &idev->info->mem[mi]; 203 mem = &idev->info->mem[mi];
204 if (mem->size == 0) 204 if (mem->size == 0)
205 break; 205 break;
206 kobject_unregister(&mem->map->kobj); 206 kobject_put(&mem->map->kobj);
207 } 207 }
208 kobject_unregister(idev->map_dir); 208 kobject_put(idev->map_dir);
209 sysfs_remove_group(&idev->dev->kobj, &uio_attr_grp); 209 sysfs_remove_group(&idev->dev->kobj, &uio_attr_grp);
210} 210}
211 211