| From foo@baz Thu Dec 21 09:02:40 CET 2017 |
| From: Alexander Duyck <alexander.h.duyck@intel.com> |
| Date: Fri, 24 Mar 2017 09:38:03 -0700 |
| Subject: net: Do not allow negative values for busy_read and busy_poll sysctl interfaces |
| |
| From: Alexander Duyck <alexander.h.duyck@intel.com> |
| |
| |
| [ Upstream commit 95f255211396958c718aef8c45e3923b5211ea7b ] |
| |
| This change basically codifies what I think was already the limitations on |
| the busy_poll and busy_read sysctl interfaces. We weren't checking the |
| lower bounds and as such could input negative values. The behavior when |
| that was used was dependent on the architecture. In order to prevent any |
| issues with that I am just disabling support for values less than 0 since |
| this way we don't have to worry about any odd behaviors. |
| |
| By limiting the sysctl values this way it also makes it consistent with how |
| we handle the SO_BUSY_POLL socket option since the value appears to be |
| reported as a signed integer value and negative values are rejected. |
| |
| Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> |
| Acked-by: Eric Dumazet <edumazet@google.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <alexander.levin@verizon.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/core/sysctl_net_core.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| --- a/net/core/sysctl_net_core.c |
| +++ b/net/core/sysctl_net_core.c |
| @@ -369,14 +369,16 @@ static struct ctl_table net_core_table[] |
| .data = &sysctl_net_busy_poll, |
| .maxlen = sizeof(unsigned int), |
| .mode = 0644, |
| - .proc_handler = proc_dointvec |
| + .proc_handler = proc_dointvec_minmax, |
| + .extra1 = &zero, |
| }, |
| { |
| .procname = "busy_read", |
| .data = &sysctl_net_busy_read, |
| .maxlen = sizeof(unsigned int), |
| .mode = 0644, |
| - .proc_handler = proc_dointvec |
| + .proc_handler = proc_dointvec_minmax, |
| + .extra1 = &zero, |
| }, |
| #endif |
| #ifdef CONFIG_NET_SCHED |