Commit 4b706372 authored by Neil Horman's avatar Neil Horman Committed by David S. Miller

drop_monitor: Add error code to detect duplicate state changes

	Patch to add -EAGAIN error to dropwatch netlink message handling code.
-EAGAIN will be returned anytime userspace attempts to transition the state of
the drop monitor service to a state that its already in.  That allows user space
to detect this condition, so it doesn't wait for a success ACK that will never
arrive.  Tested successfully by me
Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d79d9913
...@@ -223,6 +223,11 @@ static int set_all_monitor_traces(int state) ...@@ -223,6 +223,11 @@ static int set_all_monitor_traces(int state)
spin_lock(&trace_state_lock); spin_lock(&trace_state_lock);
if (state == trace_state) {
rc = -EAGAIN;
goto out_unlock;
}
switch (state) { switch (state) {
case TRACE_ON: case TRACE_ON:
rc |= register_trace_kfree_skb(trace_kfree_skb_hit, NULL); rc |= register_trace_kfree_skb(trace_kfree_skb_hit, NULL);
...@@ -251,11 +256,12 @@ static int set_all_monitor_traces(int state) ...@@ -251,11 +256,12 @@ static int set_all_monitor_traces(int state)
if (!rc) if (!rc)
trace_state = state; trace_state = state;
else
rc = -EINPROGRESS;
out_unlock:
spin_unlock(&trace_state_lock); spin_unlock(&trace_state_lock);
if (rc)
return -EINPROGRESS;
return rc; return rc;
} }
......
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