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
History
File Mode Size
6lowpan_i.h -rw-r--r-- 970 bytes
Kconfig -rw-r--r-- 2.7 KB
Makefile -rw-r--r-- 831 bytes
core.c -rw-r--r-- 4.3 KB
debugfs.c -rw-r--r-- 8.0 KB
iphc.c -rw-r--r-- 36.1 KB
ndisc.c -rw-r--r-- 6.7 KB
nhc.c -rw-r--r-- 5.3 KB
nhc.h -rw-r--r-- 4.3 KB
nhc_dest.c -rw-r--r-- 860 bytes
nhc_fragment.c -rw-r--r-- 868 bytes
nhc_ghc_ext_dest.c -rw-r--r-- 880 bytes
nhc_ghc_ext_frag.c -rw-r--r-- 892 bytes
nhc_ghc_ext_hop.c -rw-r--r-- 868 bytes
nhc_ghc_ext_route.c -rw-r--r-- 885 bytes
nhc_ghc_icmpv6.c -rw-r--r-- 823 bytes
nhc_ghc_udp.c -rw-r--r-- 781 bytes
nhc_hop.c -rw-r--r-- 843 bytes
nhc_ipv6.c -rw-r--r-- 807 bytes
nhc_mobility.c -rw-r--r-- 868 bytes
nhc_routing.c -rw-r--r-- 855 bytes
nhc_udp.c -rw-r--r-- 5.7 KB

back to top