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
Kconfig -rw-r--r-- 2.9 KB
Makefile -rw-r--r-- 1.7 KB
bat_algo.c -rw-r--r-- 3.6 KB
bat_algo.h -rw-r--r-- 1.1 KB
bat_iv_ogm.c -rw-r--r-- 64.5 KB
bat_iv_ogm.h -rw-r--r-- 846 bytes
bat_v.c -rw-r--r-- 11.2 KB
bat_v.h -rw-r--r-- 1.3 KB
bat_v_elp.c -rw-r--r-- 16.2 KB
bat_v_elp.h -rw-r--r-- 1.3 KB
bat_v_ogm.c -rw-r--r-- 26.1 KB
bat_v_ogm.h -rw-r--r-- 1.3 KB
bitarray.c -rw-r--r-- 3.1 KB
bitarray.h -rw-r--r-- 1.9 KB
bridge_loop_avoidance.c -rw-r--r-- 59.7 KB
bridge_loop_avoidance.h -rw-r--r-- 3.2 KB
debugfs.c -rw-r--r-- 10.8 KB
debugfs.h -rw-r--r-- 1.7 KB
distributed-arp-table.c -rw-r--r-- 35.5 KB
distributed-arp-table.h -rw-r--r-- 4.7 KB
fragmentation.c -rw-r--r-- 15.5 KB
fragmentation.h -rw-r--r-- 1.8 KB
gateway_client.c -rw-r--r-- 24.0 KB
gateway_client.h -rw-r--r-- 1.8 KB
gateway_common.c -rw-r--r-- 7.3 KB
gateway_common.h -rw-r--r-- 1.6 KB
hard-interface.c -rw-r--r-- 21.9 KB
hard-interface.h -rw-r--r-- 2.8 KB
hash.c -rw-r--r-- 1.9 KB
hash.h -rw-r--r-- 4.7 KB
icmp_socket.c -rw-r--r-- 10.4 KB
icmp_socket.h -rw-r--r-- 1.1 KB
log.c -rw-r--r-- 5.2 KB
log.h -rw-r--r-- 3.4 KB
main.c -rw-r--r-- 17.4 KB
main.h -rw-r--r-- 10.4 KB
multicast.c -rw-r--r-- 39.5 KB
multicast.h -rw-r--r-- 2.2 KB
netlink.c -rw-r--r-- 10.2 KB
netlink.h -rw-r--r-- 1.0 KB
network-coding.c -rw-r--r-- 58.5 KB
network-coding.h -rw-r--r-- 3.6 KB
originator.c -rw-r--r-- 39.0 KB
originator.h -rw-r--r-- 4.3 KB
packet.h -rw-r--r-- 21.1 KB
routing.c -rw-r--r-- 33.9 KB
routing.h -rw-r--r-- 2.2 KB
send.c -rw-r--r-- 20.1 KB
send.h -rw-r--r-- 4.1 KB
soft-interface.c -rw-r--r-- 32.7 KB
soft-interface.h -rw-r--r-- 1.6 KB
sysfs.c -rw-r--r-- 30.4 KB
sysfs.h -rw-r--r-- 2.0 KB
tp_meter.c -rw-r--r-- 42.9 KB
tp_meter.h -rw-r--r-- 1.1 KB
translation-table.c -rw-r--r-- 114.6 KB
translation-table.h -rw-r--r-- 2.6 KB
tvlv.c -rw-r--r-- 18.9 KB
tvlv.h -rw-r--r-- 2.2 KB
types.h -rw-r--r-- 55.6 KB

back to top