drop_monitor: Use pre_doit / post_doit hooks
Each operation from user space should be protected by the global drop monitor mutex. Use the pre_doit / post_doit hooks to take / release the lock instead of doing it explicitly in each function. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
965100966e
commit
b19d955055
|
@ -247,12 +247,9 @@ static int set_all_monitor_traces(int state, struct netlink_ext_ack *extack)
|
||||||
struct dm_hw_stat_delta *new_stat = NULL;
|
struct dm_hw_stat_delta *new_stat = NULL;
|
||||||
struct dm_hw_stat_delta *temp;
|
struct dm_hw_stat_delta *temp;
|
||||||
|
|
||||||
mutex_lock(&net_dm_mutex);
|
|
||||||
|
|
||||||
if (state == trace_state) {
|
if (state == trace_state) {
|
||||||
NL_SET_ERR_MSG_MOD(extack, "Trace state already set to requested state");
|
NL_SET_ERR_MSG_MOD(extack, "Trace state already set to requested state");
|
||||||
rc = -EAGAIN;
|
return -EAGAIN;
|
||||||
goto out_unlock;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (state) {
|
switch (state) {
|
||||||
|
@ -296,9 +293,6 @@ static int set_all_monitor_traces(int state, struct netlink_ext_ack *extack)
|
||||||
else
|
else
|
||||||
rc = -EINPROGRESS;
|
rc = -EINPROGRESS;
|
||||||
|
|
||||||
out_unlock:
|
|
||||||
mutex_unlock(&net_dm_mutex);
|
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -380,10 +374,26 @@ static const struct genl_ops dropmon_ops[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int net_dm_nl_pre_doit(const struct genl_ops *ops,
|
||||||
|
struct sk_buff *skb, struct genl_info *info)
|
||||||
|
{
|
||||||
|
mutex_lock(&net_dm_mutex);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void net_dm_nl_post_doit(const struct genl_ops *ops,
|
||||||
|
struct sk_buff *skb, struct genl_info *info)
|
||||||
|
{
|
||||||
|
mutex_unlock(&net_dm_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
static struct genl_family net_drop_monitor_family __ro_after_init = {
|
static struct genl_family net_drop_monitor_family __ro_after_init = {
|
||||||
.hdrsize = 0,
|
.hdrsize = 0,
|
||||||
.name = "NET_DM",
|
.name = "NET_DM",
|
||||||
.version = 2,
|
.version = 2,
|
||||||
|
.pre_doit = net_dm_nl_pre_doit,
|
||||||
|
.post_doit = net_dm_nl_post_doit,
|
||||||
.module = THIS_MODULE,
|
.module = THIS_MODULE,
|
||||||
.ops = dropmon_ops,
|
.ops = dropmon_ops,
|
||||||
.n_ops = ARRAY_SIZE(dropmon_ops),
|
.n_ops = ARRAY_SIZE(dropmon_ops),
|
||||||
|
|
Loading…
Reference in a new issue