Revision e7d316a02f683864a12389f8808570e37fb90aa3 authored by Subash Abhinov Kasiviswanathan on 25 August 2016, 22:16:51 UTC, committed by Linus Torvalds on 27 August 2016, 00:39:35 UTC
We have scripts which write to certain fields on 3.18 kernels but this seems to be failing on 4.4 kernels. An entry which we write to here is xfrm_aevent_rseqth which is u32. echo 4294967295 > /proc/sys/net/core/xfrm_aevent_rseqth Commit 230633d109e3 ("kernel/sysctl.c: detect overflows when converting to int") prevented writing to sysctl entries when integer overflow occurs. However, this does not apply to unsigned integers. Heinrich suggested that we introduce a new option to handle 64 bit limits and set min as 0 and max as UINT_MAX. This might not work as it leads to issues similar to __do_proc_doulongvec_minmax. Alternatively, we would need to change the datatype of the entry to 64 bit. static int __do_proc_doulongvec_minmax(void *data, struct ctl_table { i = (unsigned long *) data; //This cast is causing to read beyond the size of data (u32) vleft = table->maxlen / sizeof(unsigned long); //vleft is 0 because maxlen is sizeof(u32) which is lesser than sizeof(unsigned long) on x86_64. Introduce a new proc handler proc_douintvec. Individual proc entries will need to be updated to use the new handler. [akpm@linux-foundation.org: coding-style fixes] Fixes: 230633d109e3 ("kernel/sysctl.c:detect overflows when converting to int") Link: http://lkml.kernel.org/r/1471479806-5252-1-git-send-email-subashab@codeaurora.org Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Kees Cook <keescook@chromium.org> Cc: "David S. Miller" <davem@davemloft.net> Cc: Ingo Molnar <mingo@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent 8582fb5
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 3.2 KB |
Makefile | -rw-r--r-- | 636 bytes |
associola.c | -rw-r--r-- | 48.3 KB |
auth.c | -rw-r--r-- | 23.9 KB |
bind_addr.c | -rw-r--r-- | 13.8 KB |
chunk.c | -rw-r--r-- | 9.8 KB |
debug.c | -rw-r--r-- | 4.2 KB |
endpointola.c | -rw-r--r-- | 12.2 KB |
input.c | -rw-r--r-- | 32.8 KB |
inqueue.c | -rw-r--r-- | 7.4 KB |
ipv6.c | -rw-r--r-- | 28.8 KB |
objcnt.c | -rw-r--r-- | 4.0 KB |
offload.c | -rw-r--r-- | 2.7 KB |
output.c | -rw-r--r-- | 26.3 KB |
outqueue.c | -rw-r--r-- | 55.0 KB |
primitive.c | -rw-r--r-- | 7.3 KB |
probe.c | -rw-r--r-- | 5.9 KB |
proc.c | -rw-r--r-- | 13.9 KB |
protocol.c | -rw-r--r-- | 42.7 KB |
sctp_diag.c | -rw-r--r-- | 12.7 KB |
sm_make_chunk.c | -rw-r--r-- | 103.3 KB |
sm_sideeffect.c | -rw-r--r-- | 48.7 KB |
sm_statefuns.c | -rw-r--r-- | 196.9 KB |
sm_statetable.c | -rw-r--r-- | 31.2 KB |
socket.c | -rw-r--r-- | 219.0 KB |
ssnmap.c | -rw-r--r-- | 3.1 KB |
sysctl.c | -rw-r--r-- | 12.4 KB |
transport.c | -rw-r--r-- | 19.9 KB |
tsnmap.c | -rw-r--r-- | 9.5 KB |
ulpevent.c | -rw-r--r-- | 29.5 KB |
ulpqueue.c | -rw-r--r-- | 29.2 KB |
Computing file changes ...