The patch titled Subject: treewide: remove false-positive VLAs when using max() has been removed from the -mm tree. Its filename was remove-false-positive-vlas-when-using-max.patch This patch was dropped because it is obsolete ------------------------------------------------------ From: Kees Cook <keescook@xxxxxxxxxxxx> Subject: treewide: remove false-positive VLAs when using max() As part of removing VLAs from the kernel[1], we want to build with -Wvla, but it is overly pessimistic and only accepts constant expressions for stack array sizes, instead of also constant values. The max() macro triggers the warning, so this refactors these uses of max() to use the new const_max() instead. [1] https://lkml.org/lkml/2018/3/7/621 Link: http://lkml.kernel.org/r/1521143266-31350-3-git-send-email-keescook@xxxxxxxxxxxx Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> Reviewed-by: Nikolay Borisov <nborisov@xxxxxxxx> [btrfs] Cc: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> Cc: Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx> Cc: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Cc: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: David Laight <David.Laight@xxxxxxxxxx> Cc: Ian Abbott <abbotti@xxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/input/touchscreen/cyttsp4_core.c | 2 +- fs/btrfs/tree-checker.c | 3 ++- lib/vsprintf.c | 4 ++-- net/ipv4/proc.c | 8 ++++---- net/ipv6/proc.c | 10 ++++------ 5 files changed, 13 insertions(+), 14 deletions(-) diff -puN drivers/input/touchscreen/cyttsp4_core.c~remove-false-positive-vlas-when-using-max drivers/input/touchscreen/cyttsp4_core.c --- a/drivers/input/touchscreen/cyttsp4_core.c~remove-false-positive-vlas-when-using-max +++ a/drivers/input/touchscreen/cyttsp4_core.c @@ -868,7 +868,7 @@ static void cyttsp4_get_mt_touches(struc struct cyttsp4_touch tch; int sig; int i, j, t = 0; - int ids[max(CY_TMA1036_MAX_TCH, CY_TMA4XX_MAX_TCH)]; + int ids[const_max(CY_TMA1036_MAX_TCH, CY_TMA4XX_MAX_TCH)]; memset(ids, 0, si->si_ofs.tch_abs[CY_TCH_T].max * sizeof(int)); for (i = 0; i < num_cur_tch; i++) { diff -puN fs/btrfs/tree-checker.c~remove-false-positive-vlas-when-using-max fs/btrfs/tree-checker.c --- a/fs/btrfs/tree-checker.c~remove-false-positive-vlas-when-using-max +++ a/fs/btrfs/tree-checker.c @@ -346,7 +346,8 @@ static int check_dir_item(struct btrfs_f */ if (key->type == BTRFS_DIR_ITEM_KEY || key->type == BTRFS_XATTR_ITEM_KEY) { - char namebuf[max(BTRFS_NAME_LEN, XATTR_NAME_MAX)]; + char namebuf[const_max(BTRFS_NAME_LEN, + XATTR_NAME_MAX)]; read_extent_buffer(leaf, namebuf, (unsigned long)(di + 1), name_len); diff -puN lib/vsprintf.c~remove-false-positive-vlas-when-using-max lib/vsprintf.c --- a/lib/vsprintf.c~remove-false-positive-vlas-when-using-max +++ a/lib/vsprintf.c @@ -754,8 +754,8 @@ char *resource_string(char *buf, char *e #define FLAG_BUF_SIZE (2 * sizeof(res->flags)) #define DECODED_BUF_SIZE sizeof("[mem - 64bit pref window disabled]") #define RAW_BUF_SIZE sizeof("[mem - flags 0x]") - char sym[max(2*RSRC_BUF_SIZE + DECODED_BUF_SIZE, - 2*RSRC_BUF_SIZE + FLAG_BUF_SIZE + RAW_BUF_SIZE)]; + char sym[const_max(2*RSRC_BUF_SIZE + DECODED_BUF_SIZE, + 2*RSRC_BUF_SIZE + FLAG_BUF_SIZE + RAW_BUF_SIZE)]; char *p = sym, *pend = sym + sizeof(sym); int decode = (fmt[0] == 'R') ? 1 : 0; diff -puN net/ipv4/proc.c~remove-false-positive-vlas-when-using-max net/ipv4/proc.c --- a/net/ipv4/proc.c~remove-false-positive-vlas-when-using-max +++ a/net/ipv4/proc.c @@ -46,7 +46,7 @@ #include <net/sock.h> #include <net/raw.h> -#define TCPUDP_MIB_MAX max_t(u32, UDP_MIB_MAX, TCP_MIB_MAX) +#define TCPUDP_MIB_MAX const_max(UDP_MIB_MAX, TCP_MIB_MAX) /* * Report socket allocation statistics [mea@xxxxxx] @@ -404,7 +404,7 @@ static int snmp_seq_show_tcp_udp(struct struct net *net = seq->private; int i; - memset(buff, 0, TCPUDP_MIB_MAX * sizeof(unsigned long)); + memset(buff, 0, sizeof(buff)); seq_puts(seq, "\nTcp:"); for (i = 0; snmp4_tcp_list[i].name; i++) @@ -421,7 +421,7 @@ static int snmp_seq_show_tcp_udp(struct seq_printf(seq, " %lu", buff[i]); } - memset(buff, 0, TCPUDP_MIB_MAX * sizeof(unsigned long)); + memset(buff, 0, sizeof(buff)); snmp_get_cpu_field_batch(buff, snmp4_udp_list, net->mib.udp_statistics); @@ -432,7 +432,7 @@ static int snmp_seq_show_tcp_udp(struct for (i = 0; snmp4_udp_list[i].name; i++) seq_printf(seq, " %lu", buff[i]); - memset(buff, 0, TCPUDP_MIB_MAX * sizeof(unsigned long)); + memset(buff, 0, sizeof(buff)); /* the UDP and UDP-Lite MIBs are the same */ seq_puts(seq, "\nUdpLite:"); diff -puN net/ipv6/proc.c~remove-false-positive-vlas-when-using-max net/ipv6/proc.c --- a/net/ipv6/proc.c~remove-false-positive-vlas-when-using-max +++ a/net/ipv6/proc.c @@ -30,10 +30,8 @@ #include <net/transp_v6.h> #include <net/ipv6.h> -#define MAX4(a, b, c, d) \ - max_t(u32, max_t(u32, a, b), max_t(u32, c, d)) -#define SNMP_MIB_MAX MAX4(UDP_MIB_MAX, TCP_MIB_MAX, \ - IPSTATS_MIB_MAX, ICMP_MIB_MAX) +#define SNMP_MIB_MAX const_max(const_max(UDP_MIB_MAX, TCP_MIB_MAX), \ + const_max(IPSTATS_MIB_MAX, ICMP_MIB_MAX)) static int sockstat6_seq_show(struct seq_file *seq, void *v) { @@ -200,7 +198,7 @@ static void snmp6_seq_show_item(struct s int i; if (pcpumib) { - memset(buff, 0, sizeof(unsigned long) * SNMP_MIB_MAX); + memset(buff, 0, sizeof(buff)); snmp_get_cpu_field_batch(buff, itemlist, pcpumib); for (i = 0; itemlist[i].name; i++) @@ -219,7 +217,7 @@ static void snmp6_seq_show_item64(struct u64 buff64[SNMP_MIB_MAX]; int i; - memset(buff64, 0, sizeof(u64) * SNMP_MIB_MAX); + memset(buff64, 0, sizeof(buff64)); snmp_get_cpu_field64_batch(buff64, itemlist, mib, syncpoff); for (i = 0; itemlist[i].name; i++) _ Patches currently in -mm which might be from keescook@xxxxxxxxxxxx are taint-convert-to-indexed-initialization.patch taint-consolidate-documentation.patch taint-add-taint-for-randstruct.patch task_struct-only-use-anon-struct-under-randstruct-plugin.patch test_bitmap-do-not-accidentally-use-stack-vla.patch rslib-remove-vlas-by-setting-upper-bound-on-nroots.patch fork-unconditionally-clear-stack-on-fork.patch exec-pass-stack-rlimit-into-mm-layout-functions.patch exec-introduce-finalize_exec-before-start_thread.patch exec-pin-stack-limit-during-exec.patch exofs-avoid-vla-in-structures.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html