Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+0 −21
Original line number Diff line number Diff line
@@ -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;
}
/*