Commit 6d7ab43c authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

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: default avatarStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3d632c3f
...@@ -40,12 +40,6 @@ ...@@ -40,12 +40,6 @@
#define to_dev(obj) container_of(obj, struct device, kobj) #define to_dev(obj) container_of(obj, struct device, kobj)
#define to_bond(cd) ((struct bonding *)(netdev_priv(to_net_dev(cd)))) #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. * "show" function for the bond_masters attribute.
* The class parameter is ignored. * The class parameter is ignored.
...@@ -112,18 +106,6 @@ static ssize_t bonding_store_bonds(struct class *cls, ...@@ -112,18 +106,6 @@ static ssize_t bonding_store_bonds(struct class *cls,
list_for_each_entry(bond, &bond_dev_list, bond_list) list_for_each_entry(bond, &bond_dev_list, bond_list)
if (strnicmp(bond->dev->name, ifname, IFNAMSIZ) == 0) { 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 pr_info(DRV_NAME
": %s is being deleted...\n", ": %s is being deleted...\n",
bond->dev->name); bond->dev->name);
...@@ -1579,9 +1561,6 @@ int bond_create_sysfs_entry(struct bonding *bond) ...@@ -1579,9 +1561,6 @@ int bond_create_sysfs_entry(struct bonding *bond)
if (err) if (err)
printk(KERN_EMERG "eek! didn't create group!\n"); 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; return err;
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment