diff options
author | Stephen Hemminger <shemminger@vyatta.com> | 2009-06-12 19:02:49 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-14 06:29:00 (GMT) |
commit | 6d7ab43ccce5fddeca945ba6b06ba32cda4e3355 (patch) | |
tree | 7492faab7570a039535936d4822f0c69f2eee0be /drivers/net/bonding | |
parent | 3d632c3f28e69f0d6d44aa09c4df708d63a91a7c (diff) | |
download | linux-6d7ab43ccce5fddeca945ba6b06ba32cda4e3355.tar.xz |
bonding: elminate bad refcount code
The "expected_refcount" stuff in bonding sysfs module is a mistake.
Sysfs does proper refcounting, and it is okay to remove a bond device
that has some user process holding the file open.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r-- | drivers/net/bonding/bond_sysfs.c | 21 |
1 files changed, 0 insertions, 21 deletions
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c index ecb2020..e3fb7f5 100644 --- a/drivers/net/bonding/bond_sysfs.c +++ b/drivers/net/bonding/bond_sysfs.c @@ -40,12 +40,6 @@ #define to_dev(obj) container_of(obj, struct device, kobj) #define to_bond(cd) ((struct bonding *)(netdev_priv(to_net_dev(cd)))) -/*---------------------------- Declarations -------------------------------*/ - -static int expected_refcount = -1; - -/*------------------------------ Functions --------------------------------*/ - /* * "show" function for the bond_masters attribute. * The class parameter is ignored. @@ -112,18 +106,6 @@ static ssize_t bonding_store_bonds(struct class *cls, list_for_each_entry(bond, &bond_dev_list, bond_list) if (strnicmp(bond->dev->name, ifname, IFNAMSIZ) == 0) { - /* check the ref count on the bond's kobject. - * If it's > expected, then there's a file open, - * and we have to fail. - */ - if (atomic_read(&bond->dev->dev.kobj.kref.refcount) - > expected_refcount){ - pr_info(DRV_NAME - ": Unable remove bond %s due to open references.\n", - ifname); - res = -EPERM; - goto out_unlock; - } pr_info(DRV_NAME ": %s is being deleted...\n", bond->dev->name); @@ -1579,9 +1561,6 @@ int bond_create_sysfs_entry(struct bonding *bond) if (err) printk(KERN_EMERG "eek! didn't create group!\n"); - if (expected_refcount < 1) - expected_refcount = atomic_read(&bond->dev->dev.kobj.kref.refcount); - return err; } /* |