|
@@ -702,6 +702,8 @@ static ssize_t bonding_store_downdelay(struct device *d,
|
|
|
int new_value, ret = count;
|
|
|
struct bonding *bond = to_bond(d);
|
|
|
|
|
|
+ if (!rtnl_trylock())
|
|
|
+ return restart_syscall();
|
|
|
if (!(bond->params.miimon)) {
|
|
|
pr_err("%s: Unable to set down delay as MII monitoring is disabled\n",
|
|
|
bond->dev->name);
|
|
@@ -735,6 +737,7 @@ static ssize_t bonding_store_downdelay(struct device *d,
|
|
|
}
|
|
|
|
|
|
out:
|
|
|
+ rtnl_unlock();
|
|
|
return ret;
|
|
|
}
|
|
|
static DEVICE_ATTR(downdelay, S_IRUGO | S_IWUSR,
|
|
@@ -757,6 +760,8 @@ static ssize_t bonding_store_updelay(struct device *d,
|
|
|
int new_value, ret = count;
|
|
|
struct bonding *bond = to_bond(d);
|
|
|
|
|
|
+ if (!rtnl_trylock())
|
|
|
+ return restart_syscall();
|
|
|
if (!(bond->params.miimon)) {
|
|
|
pr_err("%s: Unable to set up delay as MII monitoring is disabled\n",
|
|
|
bond->dev->name);
|
|
@@ -790,6 +795,7 @@ static ssize_t bonding_store_updelay(struct device *d,
|
|
|
}
|
|
|
|
|
|
out:
|
|
|
+ rtnl_unlock();
|
|
|
return ret;
|
|
|
}
|
|
|
static DEVICE_ATTR(updelay, S_IRUGO | S_IWUSR,
|