The patch titled Subject: net/switchdev/switchdev.c: work around gcc-4.4.4 initializer bug has been added to the -mm tree. Its filename is net-switchdev-switchdevc-work-around-gcc-444-initializer-bug.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/net-switchdev-switchdevc-work-around-gcc-444-initializer-bug.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/net-switchdev-switchdevc-work-around-gcc-444-initializer-bug.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: net/switchdev/switchdev.c: work around gcc-4.4.4 initializer bug gcc-4.4.4 (at least) doesn't like mixing anonymous unions with initializers. This workaround is pretty lame and maybe there's a better way, but it doesn't increase net/switchdev/switchdev.o's object size with gcc-4.8.2. Cc: Scott Feldman <sfeldma@xxxxxxxxx> Cc: Jiri Pirko <jiri@xxxxxxxxxxx> Cc: David S. Miller <davem@xxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- net/switchdev/switchdev.c | 40 +++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff -puN net/switchdev/switchdev.c~net-switchdev-switchdevc-work-around-gcc-444-initializer-bug net/switchdev/switchdev.c --- a/net/switchdev/switchdev.c~net-switchdev-switchdevc-work-around-gcc-444-initializer-bug +++ a/net/switchdev/switchdev.c @@ -641,21 +641,23 @@ static struct net_device *switchdev_get_ int switchdev_fib_ipv4_add(u32 dst, int dst_len, struct fib_info *fi, u8 tos, u8 type, u32 nlflags, u32 tb_id) { + struct switchdev_obj_ipv4_fib ipv4_fib = { + .dst = htonl(dst), + .dst_len = dst_len, + .fi = fi, + .tos = tos, + .type = type, + .nlflags = nlflags, + .tb_id = tb_id, + }; struct switchdev_obj fib_obj = { .id = SWITCHDEV_OBJ_IPV4_FIB, - .ipv4_fib = { - .dst = htonl(dst), - .dst_len = dst_len, - .fi = fi, - .tos = tos, - .type = type, - .nlflags = nlflags, - .tb_id = tb_id, - }, }; struct net_device *dev; int err = 0; + fib_obj.ipv4_fib = ipv4_fib; + /* Don't offload route if using custom ip rules or if * IPv4 FIB offloading has been disabled completely. */ @@ -695,21 +697,23 @@ EXPORT_SYMBOL_GPL(switchdev_fib_ipv4_add int switchdev_fib_ipv4_del(u32 dst, int dst_len, struct fib_info *fi, u8 tos, u8 type, u32 tb_id) { + struct switchdev_obj_ipv4_fib ipv4_fib = { + .dst = htonl(dst), + .dst_len = dst_len, + .fi = fi, + .tos = tos, + .type = type, + .nlflags = 0, + .tb_id = tb_id, + }; struct switchdev_obj fib_obj = { .id = SWITCHDEV_OBJ_IPV4_FIB, - .ipv4_fib = { - .dst = htonl(dst), - .dst_len = dst_len, - .fi = fi, - .tos = tos, - .type = type, - .nlflags = 0, - .tb_id = tb_id, - }, }; struct net_device *dev; int err = 0; + fib_obj.ipv4_fib = ipv4_fib; + if (!(fi->fib_flags & RTNH_F_EXTERNAL)) return 0; _ Patches currently in -mm which might be from akpm@xxxxxxxxxxxxxxxxxxxx are arch-alpha-kernel-systblss-remove-debug-check.patch drivers-rtc-rtc-armada38xc-remove-unused-local-flags.patch gfp-add-__gfp_noaccount-v2-fix.patch cma-page_isolation-check-buddy-before-access-it-fix.patch ocfs2-reduce-object-size-of-mlog-uses-fix.patch ocfs2-remove-__mlog_cpu_guess.patch ocfs2-remove-__mlog_cpu_guess-fix.patch mm.patch mm-slab_common-support-the-slub_debug-boot-option-on-specific-object-size-fix.patch slub-bulk-allocation-from-per-cpu-partial-pages-fix.patch mm-fix-mprotect-behaviour-on-vm_locked-vmas-fix.patch mm-new-mm-hook-framework.patch mm-meminit-inline-some-helper-functions-fix.patch mm-meminit-finish-initialisation-of-struct-pages-before-basic-setup-fix.patch rmap-fix-theoretical-race-between-do_wp_page-and-shrink_active_list-fix.patch rmap-fix-theoretical-race-between-do_wp_page-and-shrink_active_list-fix-fix.patch mm-thp-split-out-pmd-collpase-flush-into-a-separate-functions-fix.patch mm-clarify-that-the-function-operateds-on-hugepage-pte-fix.patch include-linux-page-flagsh-rename-macros-to-avoid-collisions.patch mm-vmscan-fix-the-page-state-calculation-in-too_many_isolated.patch x86-add-pmd_-for-thp-fix.patch sparc-add-pmd_-for-thp-fix.patch mm-support-madvisemadv_free-fix-2.patch mm-dont-split-thp-page-when-syscall-is-called-fix-3.patch mm-move-lazy-free-pages-to-inactive-list-fix-fix.patch mm-move-lazy-free-pages-to-inactive-list-fix-fix-fix.patch proc-fix-page_size-limit-of-proc-pid-cmdline-fix.patch bitmap-remove-explicit-newline-handling-using-scnprintf-format-string-fix.patch radix-tree-replace-preallocated-node-array-with-linked-list-fix.patch rtc-omap-add-external-32k-clock-feature-fix.patch devpts-if-initialization-failed-dont-crash-when-opening-dev-ptmx-fix.patch linux-next.patch linux-next-rejects.patch linux-next-git-rejects.patch net-bridge-br_stpc-work-around-gcc-444-initializer-bug.patch do_shared_fault-check-that-mmap_sem-is-held.patch journal_add_journal_head-debug.patch journal_add_journal_head-debug-fix.patch kernel-forkc-export-kernel_thread-to-modules.patch mutex-subsystem-synchro-test-module.patch slab-leaks3-default-y.patch net-switchdev-switchdevc-work-around-gcc-444-initializer-bug.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