commit fa394784e74b918f44fca1e6a1f826cf818350d2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Sep 20 08:25:38 2017 +0200

    Linux 4.12.14

commit d0fa64e2a3e8a0c2302bc5fe7c8145a8ee0ccb97
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Fri Aug 25 09:05:42 2017 +0200

    ipv6: Fix may be used uninitialized warning in rt6_check
    
    commit 3614364527daa870264f6dde77f02853cdecd02c upstream.
    
    rt_cookie might be used uninitialized, fix this by
    initializing it.
    
    Fixes: c5cff8561d2d ("ipv6: add rcu grace period before freeing fib6_node")
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7816eb3874a273dc9461c78cdc3280a2437bc280
Author: Song Liu <songliubraving@fb.com>
Date:   Thu Aug 24 09:53:59 2017 -0700

    md/raid5: release/flush io in raid5_do_work()
    
    commit 9c72a18e46ebe0f09484cce8ebf847abdab58498 upstream.
    
    In raid5, there are scenarios where some ios are deferred to a later
    time, and some IO need a flush to complete. To make sure we make
    progress with these IOs, we need to call the following functions:
    
        flush_deferred_bios(conf);
        r5l_flush_stripe_to_raid(conf->log);
    
    Both of these functions are called in raid5d(), but missing in
    raid5_do_work(). As a result, these functions are not called
    when multi-threading (group_thread_cnt > 0) is enabled. This patch
    adds calls to these function to raid5_do_work().
    
    Note for stable branches:
    
      r5l_flush_stripe_to_raid(conf->log) is need for 4.4+
      flush_deferred_bios(conf) is only needed for 4.11+
    
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b57c1b424549cc819534bc5d5774e8259d1df384
Author: Shaohua Li <shli@fb.com>
Date:   Thu Aug 24 17:50:40 2017 -0700

    md/raid1/10: reset bio allocated from mempool
    
    commit 208410b546207cfc4c832635fa46419cfa86b4cd upstream.
    
    Data allocated from mempool doesn't always get initialized, this happens when
    the data is reused instead of fresh allocation. In the raid1/10 case, we must
    reinitialize the bios.
    
    Reported-by: Jonathan G. Underwood <jonathan.underwood@gmail.com>
    Fixes: f0250618361d(md: raid10: don't use bio's vec table to manage resync pages)
    Fixes: 98d30c5812c3(md: raid1: don't use bio's vec table to manage resync pages)
    Cc: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3f9d09e70a3f2de08b3025e1baf69008693ada2
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Sep 13 16:28:11 2017 -0700

    idr: remove WARN_ON_ONCE() when trying to replace negative ID
    
    commit a47f68d6a944113bdc8097db6f933c2e17c27bf9 upstream.
    
    IDR only supports non-negative IDs.  There used to be a 'WARN_ON_ONCE(id <
    0)' in idr_replace(), but it was intentionally removed by commit
    2e1c9b286765 ("idr: remove WARN_ON_ONCE() on negative IDs").
    
    Then it was added back by commit 0a835c4f090a ("Reimplement IDR and IDA
    using the radix tree").  However it seems that adding it back was a
    mistake, given that some users such as drm_gem_handle_delete()
    (DRM_IOCTL_GEM_CLOSE) pass in a value from userspace to idr_replace(),
    allowing the WARN_ON_ONCE to be triggered.  drm_gem_handle_delete()
    actually just wants idr_replace() to return an error code if the ID is
    not allocated, including in the case where the ID is invalid (negative).
    
    So once again remove the bogus WARN_ON_ONCE().
    
    This bug was found by syzkaller, which encountered the following
    warning:
    
        WARNING: CPU: 3 PID: 3008 at lib/idr.c:157 idr_replace+0x1d8/0x240 lib/idr.c:157
        Kernel panic - not syncing: panic_on_warn set ...
    
        CPU: 3 PID: 3008 Comm: syzkaller218828 Not tainted 4.13.0-rc4-next-20170811 #2
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
        Call Trace:
         fixup_bug+0x40/0x90 arch/x86/kernel/traps.c:190
         do_trap_no_signal arch/x86/kernel/traps.c:224 [inline]
         do_trap+0x260/0x390 arch/x86/kernel/traps.c:273
         do_error_trap+0x120/0x390 arch/x86/kernel/traps.c:310
         do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:323
         invalid_op+0x1e/0x30 arch/x86/entry/entry_64.S:930
        RIP: 0010:idr_replace+0x1d8/0x240 lib/idr.c:157
        RSP: 0018:ffff8800394bf9f8 EFLAGS: 00010297
        RAX: ffff88003c6c60c0 RBX: 1ffff10007297f43 RCX: 0000000000000000
        RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8800394bfa78
        RBP: ffff8800394bfae0 R08: ffffffff82856487 R09: 0000000000000000
        R10: ffff8800394bf9a8 R11: ffff88006c8bae28 R12: ffffffffffffffff
        R13: ffff8800394bfab8 R14: dffffc0000000000 R15: ffff8800394bfbc8
         drm_gem_handle_delete+0x33/0xa0 drivers/gpu/drm/drm_gem.c:297
         drm_gem_close_ioctl+0xa1/0xe0 drivers/gpu/drm/drm_gem.c:671
         drm_ioctl_kernel+0x1e7/0x2e0 drivers/gpu/drm/drm_ioctl.c:729
         drm_ioctl+0x72e/0xa50 drivers/gpu/drm/drm_ioctl.c:825
         vfs_ioctl fs/ioctl.c:45 [inline]
         do_vfs_ioctl+0x1b1/0x1520 fs/ioctl.c:685
         SYSC_ioctl fs/ioctl.c:700 [inline]
         SyS_ioctl+0x8f/0xc0 fs/ioctl.c:691
         entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Here is a C reproducer:
    
        #include <fcntl.h>
        #include <stddef.h>
        #include <stdint.h>
        #include <sys/ioctl.h>
        #include <drm/drm.h>
    
        int main(void)
        {
                int cardfd = open("/dev/dri/card0", O_RDONLY);
    
                ioctl(cardfd, DRM_IOCTL_GEM_CLOSE,
                      &(struct drm_gem_close) { .handle = -1 } );
        }
    
    Link: http://lkml.kernel.org/r/20170906235306.20534-1-ebiggers3@gmail.com
    Fixes: 0a835c4f090a ("Reimplement IDR and IDA using the radix tree")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Matthew Wilcox <mawilcox@microsoft.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a82e202cbb72851aa6ad49a0ed31f9bc6657486b
Author: Miklos Szeredi <mszeredi@redhat.com>
Date:   Tue Sep 12 16:57:53 2017 +0200

    fuse: allow server to run in different pid_ns
    
    commit 5d6d3a301c4e749e04be6fcdcf4cb1ffa8bae524 upstream.
    
    Commit 0b6e9ea041e6 ("fuse: Add support for pid namespaces") broke
    Sandstorm.io development tools, which have been sending FUSE file
    descriptors across PID namespace boundaries since early 2014.
    
    The above patch added a check that prevented I/O on the fuse device file
    descriptor if the pid namespace of the reader/writer was different from the
    pid namespace of the mounter.  With this change passing the device file
    descriptor to a different pid namespace simply doesn't work.  The check was
    added because pids are transferred to/from the fuse userspace server in the
    namespace registered at mount time.
    
    To fix this regression, remove the checks and do the following:
    
    1) the pid in the request header (the pid of the task that initiated the
    filesystem operation) is translated to the reader's pid namespace.  If a
    mapping doesn't exist for this pid, then a zero pid is used.  Note: even if
    a mapping would exist between the initiator task's pid namespace and the
    reader's pid namespace the pid will be zero if either mapping from
    initator's to mounter's namespace or mapping from mounter's to reader's
    namespace doesn't exist.
    
    2) The lk.pid value in setlk/setlkw requests and getlk reply is left alone.
    Userspace should not interpret this value anyway.  Also allow the
    setlk/setlkw operations if the pid of the task cannot be represented in the
    mounter's namespace (pid being zero in that case).
    
    Reported-by: Kenton Varda <kenton@sandstorm.io>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Fixes: 0b6e9ea041e6 ("fuse: Add support for pid namespaces")
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Seth Forshee <seth.forshee@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b777a6cc52ae067076aa747fd67283c3b9eb600
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Aug 1 07:11:37 2017 -0700

    x86/switch_to/64: Rewrite FS/GS switching yet again to fix AMD CPUs
    
    commit e137a4d8f4dd2e277e355495b6b2cb241a8693c3 upstream.
    
    Switching FS and GS is a mess, and the current code is still subtly
    wrong: it assumes that "Loading a nonzero value into FS sets the
    index and base", which is false on AMD CPUs if the value being
    loaded is 1, 2, or 3.
    
    (The current code came from commit 3e2b68d752c9 ("x86/asm,
    sched/x86: Rewrite the FS and GS context switch code"), which made
    it better but didn't fully fix it.)
    
    Rewrite it to be much simpler and more obviously correct.  This
    should fix it fully on AMD CPUs and shouldn't adversely affect
    performance.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Chang Seok <chang.seok.bae@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 831621ada28a457fea16982c1776b0c5e4b9b67a
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Aug 1 07:11:35 2017 -0700

    x86/fsgsbase/64: Report FSBASE and GSBASE correctly in core dumps
    
    commit 9584d98bed7a7a904d0702ad06bbcc94703cb5b4 upstream.
    
    In ELF_COPY_CORE_REGS, we're copying from the current task, so
    accessing thread.fsbase and thread.gsbase makes no sense.  Just read
    the values from the CPU registers.
    
    In practice, the old code would have been correct most of the time
    simply because thread.fsbase and thread.gsbase usually matched the
    CPU registers.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Chang Seok <chang.seok.bae@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90ecd1c5bc55be60d96b60b937a108e4db26007c
Author: Andy Lutomirski <luto@kernel.org>
Date:   Tue Aug 1 07:11:34 2017 -0700

    x86/fsgsbase/64: Fully initialize FS and GS state in start_thread_common
    
    commit 767d035d838f4fd6b5a5bbd7a3f6d293b7f65a49 upstream.
    
    execve used to leak FSBASE and GSBASE on AMD CPUs.  Fix it.
    
    The security impact of this bug is small but not quite zero -- it
    could weaken ASLR when a privileged task execs a less privileged
    program, but only if program changed bitness across the exec, or the
    child binary was highly unusual or actively malicious.  A child
    program that was compromised after the exec would not have access to
    the leaked base.
    
    Signed-off-by: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bpetkov@suse.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Chang Seok <chang.seok.bae@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb14d4cebdb29df42c4a22ebe3fcf6097138663b
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Sat Aug 12 21:33:23 2017 -0700

    f2fs: check hot_data for roll-forward recovery
    
    commit 125c9fb1ccb53eb2ea9380df40f3c743f3fb2fed upstream.
    
    We need to check HOT_DATA to truncate any previous data block when doing
    roll-forward recovery.
    
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96a069a6babb4a19eaaa6a7dd72943040f0a5848
Author: Jaegeuk Kim <jaegeuk@kernel.org>
Date:   Thu Aug 10 17:35:04 2017 -0700

    f2fs: let fill_super handle roll-forward errors
    
    commit afd2b4da40b3b567ef8d8e6881479345a2312a03 upstream.
    
    If we set CP_ERROR_FLAG in roll-forward error, f2fs is no longer to proceed
    any IOs due to f2fs_cp_error(). But, for example, if some stale data is involved
    on roll-forward process, we're able to get -ENOENT, getting fs stuck.
    If we get any error, let fill_super set SBI_NEED_FSCK and try to recover back
    to stable point.
    
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 442df0425e95c1662d08389b3a96a975c300b976
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Fri Sep 8 11:35:21 2017 -0300

    sctp: fix missing wake ups in some situations
    
    
    [ Upstream commit 7906b00f5cd1cd484fced7fcda892176e3202c8a ]
    
    Commit fb586f25300f ("sctp: delay calls to sk_data_ready() as much as
    possible") minimized the number of wake ups that are triggered in case
    the association receives a packet with multiple data chunks on it and/or
    when io_events are enabled and then commit 0970f5b36659 ("sctp: signal
    sk_data_ready earlier on data chunks reception") moved the wake up to as
    soon as possible. It thus relies on the state machine running later to
    clean the flag that the event was already generated.
    
    The issue is that there are 2 call paths that calls
    sctp_ulpq_tail_event() outside of the state machine, causing the flag to
    linger and possibly omitting a needed wake up in the sequence.
    
    One of the call paths is when enabling SCTP_SENDER_DRY_EVENTS via
    setsockopt(SCTP_EVENTS), as noticed by Harald Welte. The other is when
    partial reliability triggers removal of chunks from the send queue when
    the application calls sendmsg().
    
    This commit fixes it by not setting the flag in case the socket is not
    owned by the user, as it won't be cleaned later. This works for
    user-initiated calls and also for rx path processing.
    
    Fixes: fb586f25300f ("sctp: delay calls to sk_data_ready() as much as possible")
    Reported-by: Harald Welte <laforge@gnumonks.org>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa02286a03c75d6b2f739f0dc0b49e310d9ce42c
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 8 15:48:47 2017 -0700

    ipv6: fix typo in fib6_net_exit()
    
    
    [ Upstream commit 32a805baf0fb70b6dbedefcd7249ac7f580f9e3b ]
    
    IPv6 FIB should use FIB6_TABLE_HASHSZ, not FIB_TABLE_HASHSZ.
    
    Fixes: ba1cc08d9488 ("ipv6: fix memory leak with multiple tables during netns destruction")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18c6d4c4d17a26d2ae1e53092d3afcbaae3690ef
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Fri Sep 8 10:26:19 2017 +0200

    ipv6: fix memory leak with multiple tables during netns destruction
    
    
    [ Upstream commit ba1cc08d9488c94cb8d94f545305688b72a2a300 ]
    
    fib6_net_exit only frees the main and local tables. If another table was
    created with fib6_alloc_table, we leak it when the netns is destroyed.
    
    Fix this in the same way ip_fib_net_exit cleans up tables, by walking
    through the whole hashtable of fib6_table's. We can get rid of the
    special cases for local and main, since they're also part of the
    hashtable.
    
    Reproducer:
        ip netns add x
        ip -net x -6 rule add from 6003:1::/64 table 100
        ip netns del x
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Fixes: 58f09b78b730 ("[NETNS][IPV6] ip6_fib - make it per network namespace")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 888b7a94104a498189a9551d7c0ced5ef7cd6421
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Sep 5 17:26:33 2017 +0800

    ip6_gre: update mtu properly in ip6gre_err
    
    
    [ Upstream commit 5c25f30c93fdc5bf25e62101aeaae7a4f9b421b3 ]
    
    Now when probessing ICMPV6_PKT_TOOBIG, ip6gre_err only subtracts the
    offset of gre header from mtu info. The expected mtu of gre device
    should also subtract gre header. Otherwise, the next packets still
    can't be sent out.
    
    Jianlin found this issue when using the topo:
      client(ip6gre)<---->(nic1)route(nic2)<----->(ip6gre)server
    
    and reducing nic2's mtu, then both tcp and sctp's performance with
    big size data became 0.
    
    This patch is to fix it by also subtracting grehdr (tun->tun_hlen)
    from mtu info when updating gre device's mtu in ip6gre_err(). It
    also needs to subtract ETH_HLEN if gre dev'type is ARPHRD_ETHER.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88f6c6f254bf414cf135acc1d5d6edf106a02ab4
Author: Jason Wang <jasowang@redhat.com>
Date:   Tue Sep 5 09:22:05 2017 +0800

    vhost_net: correctly check tx avail during rx busy polling
    
    
    [ Upstream commit 8b949bef9172ca69d918e93509a4ecb03d0355e0 ]
    
    We check tx avail through vhost_enable_notify() in the past which is
    wrong since it only checks whether or not guest has filled more
    available buffer since last avail idx synchronization which was just
    done by vhost_vq_avail_empty() before. What we really want is checking
    pending buffers in the avail ring. Fix this by calling
    vhost_vq_avail_empty() instead.
    
    This issue could be noticed by doing netperf TCP_RR benchmark as
    client from guest (but not host). With this fix, TCP_RR from guest to
    localhost restores from 1375.91 trans per sec to 55235.28 trans per
    sec on my laptop (Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz).
    
    Fixes: 030881372460 ("vhost_net: basic polling support")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc33f146d9f1f43c444b4586115ededb4ac766d1
Author: Claudiu Manoil <claudiu.manoil@nxp.com>
Date:   Mon Sep 4 10:45:28 2017 +0300

    gianfar: Fix Tx flow control deactivation
    
    
    [ Upstream commit 5d621672bc1a1e5090c1ac5432a18c79e0e13e03 ]
    
    The wrong register is checked for the Tx flow control bit,
    it should have been maccfg1 not maccfg2.
    This went unnoticed for so long probably because the impact is
    hardly visible, not to mention the tangled code from adjust_link().
    First, link flow control (i.e. handling of Rx/Tx link level pause frames)
    is disabled by default (needs to be enabled via 'ethtool -A').
    Secondly, maccfg2 always returns 0 for tx_flow_oldval (except for a few
    old boards), which results in Tx flow control remaining always on
    once activated.
    
    Fixes: 45b679c9a3ccd9e34f28e6ec677b812a860eb8eb ("gianfar: Implement PAUSE frame generation support")
    Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a44bb1c4596a811af2b030723485f6f954bd9ecf
Author: Jesper Dangaard Brouer <brouer@redhat.com>
Date:   Fri Sep 1 11:26:13 2017 +0200

    Revert "net: fix percpu memory leaks"
    
    
    [ Upstream commit 5a63643e583b6a9789d7a225ae076fb4e603991c ]
    
    This reverts commit 1d6119baf0610f813eb9d9580eb4fd16de5b4ceb.
    
    After reverting commit 6d7b857d541e ("net: use lib/percpu_counter API
    for fragmentation mem accounting") then here is no need for this
    fix-up patch.  As percpu_counter is no longer used, it cannot
    memory leak it any-longer.
    
    Fixes: 6d7b857d541e ("net: use lib/percpu_counter API for fragmentation mem accounting")
    Fixes: 1d6119baf061 ("net: fix percpu memory leaks")
    Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fbf9f91959727e95b8c165abf1ab361c8b1b737
Author: Jesper Dangaard Brouer <brouer@redhat.com>
Date:   Fri Sep 1 11:26:08 2017 +0200

    Revert "net: use lib/percpu_counter API for fragmentation mem accounting"
    
    
    [ Upstream commit fb452a1aa3fd4034d7999e309c5466ff2d7005aa ]
    
    This reverts commit 6d7b857d541ecd1d9bd997c97242d4ef94b19de2.
    
    There is a bug in fragmentation codes use of the percpu_counter API,
    that can cause issues on systems with many CPUs.
    
    The frag_mem_limit() just reads the global counter (fbc->count),
    without considering other CPUs can have upto batch size (130K) that
    haven't been subtracted yet.  Due to the 3MBytes lower thresh limit,
    this become dangerous at >=24 CPUs (3*1024*1024/130000=24).
    
    The correct API usage would be to use __percpu_counter_compare() which
    does the right thing, and takes into account the number of (online)
    CPUs and batch size, to account for this and call __percpu_counter_sum()
    when needed.
    
    We choose to revert the use of the lib/percpu_counter API for frag
    memory accounting for several reasons:
    
    1) On systems with CPUs > 24, the heavier fully locked
       __percpu_counter_sum() is always invoked, which will be more
       expensive than the atomic_t that is reverted to.
    
    Given systems with more than 24 CPUs are becoming common this doesn't
    seem like a good option.  To mitigate this, the batch size could be
    decreased and thresh be increased.
    
    2) The add_frag_mem_limit+sub_frag_mem_limit pairs happen on the RX
       CPU, before SKBs are pushed into sockets on remote CPUs.  Given
       NICs can only hash on L2 part of the IP-header, the NIC-RXq's will
       likely be limited.  Thus, a fair chance that atomic add+dec happen
       on the same CPU.
    
    Revert note that commit 1d6119baf061 ("net: fix percpu memory leaks")
    removed init_frag_mem_limit() and instead use inet_frags_init_net().
    After this revert, inet_frags_uninit_net() becomes empty.
    
    Fixes: 6d7b857d541e ("net: use lib/percpu_counter API for fragmentation mem accounting")
    Fixes: 1d6119baf061 ("net: fix percpu memory leaks")
    Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79f08820eeb84a2e60cba843dc33a4f53188a269
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Fri Sep 1 12:22:25 2017 +0300

    bridge: switchdev: Clear forward mark when transmitting packet
    
    
    [ Upstream commit 79e99bdd60b484af9afe0147e85a13e66d5c1cdb ]
    
    Commit 6bc506b4fb06 ("bridge: switchdev: Add forward mark support for
    stacked devices") added the 'offload_fwd_mark' bit to the skb in order
    to allow drivers to indicate to the bridge driver that they already
    forwarded the packet in L2.
    
    In case the bit is set, before transmitting the packet from each port,
    the port's mark is compared with the mark stored in the skb's control
    block. If both marks are equal, we know the packet arrived from a switch
    device that already forwarded the packet and it's not re-transmitted.
    
    However, if the packet is transmitted from the bridge device itself
    (e.g., br0), we should clear the 'offload_fwd_mark' bit as the mark
    stored in the skb's control block isn't valid.
    
    This scenario can happen in rare cases where a packet was trapped during
    L3 forwarding and forwarded by the kernel to a bridge device.
    
    Fixes: 6bc506b4fb06 ("bridge: switchdev: Add forward mark support for stacked devices")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-by: Yotam Gigi <yotamg@mellanox.com>
    Tested-by: Yotam Gigi <yotamg@mellanox.com>
    Reviewed-by: Jiri Pirko <jiri@mellanox.com>
    Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f4232ba8001ea54e3e51291045cf6fee3fc75d2
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Fri Sep 1 10:52:31 2017 +0200

    mlxsw: spectrum: Forbid linking to devices that have uppers
    
    
    [ Upstream commit 25cc72a33835ed8a6f53180a822cadab855852ac ]
    
    The mlxsw driver relies on NETDEV_CHANGEUPPER events to configure the
    device in case a port is enslaved to a master netdev such as bridge or
    bond.
    
    Since the driver ignores events unrelated to its ports and their
    uppers, it's possible to engineer situations in which the device's data
    path differs from the kernel's.
    
    One example to such a situation is when a port is enslaved to a bond
    that is already enslaved to a bridge. When the bond was enslaved the
    driver ignored the event - as the bond wasn't one of its uppers - and
    therefore a bridge port instance isn't created in the device.
    
    Until such configurations are supported forbid them by checking that the
    upper device doesn't have uppers of its own.
    
    Fixes: 0d65fc13042f ("mlxsw: spectrum: Implement LAG port join/leave")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-by: Nogah Frankel <nogahf@mellanox.com>
    Tested-by: Nogah Frankel <nogahf@mellanox.com>
    Signed-off-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9e548de4cf93b2e397f52c821654f979656edb9
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sun Jul 30 19:36:05 2017 +0200

    net: fec: Allow reception of frames bigger than 1522 bytes
    
    
    [ Upstream commit fbbeefdd21049fcf9437c809da3828b210577f36 ]
    
    The FEC Receive Control Register has a 14 bit field indicating the
    longest frame that may be received. It is being set to 1522. Frames
    longer than this are discarded, but counted as being in error.
    
    When using DSA, frames from the switch has an additional header,
    either 4 or 8 bytes if a Marvell switch is used. Thus a full MTU frame
    of 1522 bytes received by the switch on a port becomes 1530 bytes when
    passed to the host via the FEC interface.
    
    Change the maximum receive size to 2048 - 64, where 64 is the maximum
    rx_alignment applied on the receive buffer for AVB capable FEC
    cores. Use this value also for the maximum receive buffer size. The
    driver is already allocating a receive SKB of 2048 bytes, so this
    change should not have any significant effects.
    
    Tested on imx51, imx6, vf610.
    
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8fcbae2fefadc786f8618fe894a67b202747b3f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Aug 30 17:49:29 2017 -0700

    Revert "net: phy: Correctly process PHY_HALTED in phy_stop_machine()"
    
    
    [ Upstream commit ebc8254aeae34226d0bc8fda309fd9790d4dccfe ]
    
    This reverts commit 7ad813f208533cebfcc32d3d7474dc1677d1b09a ("net: phy:
    Correctly process PHY_HALTED in phy_stop_machine()") because it is
    creating the possibility for a NULL pointer dereference.
    
    David Daney provide the following call trace and diagram of events:
    
    When ndo_stop() is called we call:
    
     phy_disconnect()
        +---> phy_stop_interrupts() implies: phydev->irq = PHY_POLL;
        +---> phy_stop_machine()
        |      +---> phy_state_machine()
        |              +----> queue_delayed_work(): Work queued.
        +--->phy_detach() implies: phydev->attached_dev = NULL;
    
    Now at a later time the queued work does:
    
     phy_state_machine()
        +---->netif_carrier_off(phydev->attached_dev): Oh no! It is NULL:
    
     CPU 12 Unable to handle kernel paging request at virtual address
    0000000000000048, epc == ffffffff80de37ec, ra == ffffffff80c7c
    Oops[#1]:
    CPU: 12 PID: 1502 Comm: kworker/12:1 Not tainted 4.9.43-Cavium-Octeon+ #1
    Workqueue: events_power_efficient phy_state_machine
    task: 80000004021ed100 task.stack: 8000000409d70000
    $ 0   : 0000000000000000 ffffffff84720060 0000000000000048 0000000000000004
    $ 4   : 0000000000000000 0000000000000001 0000000000000004 0000000000000000
    $ 8   : 0000000000000000 0000000000000000 00000000ffff98f3 0000000000000000
    $12   : 8000000409d73fe0 0000000000009c00 ffffffff846547c8 000000000000af3b
    $16   : 80000004096bab68 80000004096babd0 0000000000000000 80000004096ba800
    $20   : 0000000000000000 0000000000000000 ffffffff81090000 0000000000000008
    $24   : 0000000000000061 ffffffff808637b0
    $28   : 8000000409d70000 8000000409d73cf0 80000000271bd300 ffffffff80c7804c
    Hi    : 000000000000002a
    Lo    : 000000000000003f
    epc   : ffffffff80de37ec netif_carrier_off+0xc/0x58
    ra    : ffffffff80c7804c phy_state_machine+0x48c/0x4f8
    Status: 14009ce3        KX SX UX KERNEL EXL IE
    Cause : 00800008 (ExcCode 02)
    BadVA : 0000000000000048
    PrId  : 000d9501 (Cavium Octeon III)
    Modules linked in:
    Process kworker/12:1 (pid: 1502, threadinfo=8000000409d70000,
    task=80000004021ed100, tls=0000000000000000)
    Stack : 8000000409a54000 80000004096bab68 80000000271bd300 80000000271c1e00
            0000000000000000 ffffffff808a1708 8000000409a54000 80000000271bd300
            80000000271bd320 8000000409a54030 ffffffff80ff0f00 0000000000000001
            ffffffff81090000 ffffffff808a1ac0 8000000402182080 ffffffff84650000
            8000000402182080 ffffffff84650000 ffffffff80ff0000 8000000409a54000
            ffffffff808a1970 0000000000000000 80000004099e8000 8000000402099240
            0000000000000000 ffffffff808a8598 0000000000000000 8000000408eeeb00
            8000000409a54000 00000000810a1d00 0000000000000000 8000000409d73de8
            8000000409d73de8 0000000000000088 000000000c009c00 8000000409d73e08
            8000000409d73e08 8000000402182080 ffffffff808a84d0 8000000402182080
            ...
    Call Trace:
    [<ffffffff80de37ec>] netif_carrier_off+0xc/0x58
    [<ffffffff80c7804c>] phy_state_machine+0x48c/0x4f8
    [<ffffffff808a1708>] process_one_work+0x158/0x368
    [<ffffffff808a1ac0>] worker_thread+0x150/0x4c0
    [<ffffffff808a8598>] kthread+0xc8/0xe0
    [<ffffffff808617f0>] ret_from_kernel_thread+0x14/0x1c
    
    The original motivation for this change originated from Marc Gonzales
    indicating that his network driver did not have its adjust_link callback
    executing with phydev->link = 0 while he was expecting it.
    
    PHYLIB has never made any such guarantees ever because phy_stop() merely just
    tells the workqueue to move into PHY_HALTED state which will happen
    asynchronously.
    
    Reported-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reported-by: David Daney <ddaney.cavm@gmail.com>
    Fixes: 7ad813f20853 ("net: phy: Correctly process PHY_HALTED in phy_stop_machine()")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b88be44f595fff3d11bb6f5ca7763ab573023da3
Author: Tal Gilboa <talgi@mellanox.com>
Date:   Mon Aug 28 18:45:08 2017 +0300

    net/mlx5e: Fix CQ moderation mode not set properly
    
    
    [ Upstream commit 1213ad28f9595a08e3877248bbba1a25c40225d6 ]
    
    cq_period_mode assignment was mistakenly removed so it was always set to "0",
    which is EQE based moderation, regardless of the device CAPs and
    requested value in ethtool.
    
    Fixes: 6a9764efb255 ("net/mlx5e: Isolate open_channels from priv->params")
    Signed-off-by: Tal Gilboa <talgi@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8049c41db78d2d9cf299a4300732f9776a2affe7
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Tue Aug 8 15:56:37 2017 +0300

    net/mlx5e: Fix inline header size for small packets
    
    
    [ Upstream commit 6aace17e64f4aa1c49802c46bd10688968b3787f ]
    
    Fix inline header size, make sure it is not greater than skb len.
    This bug effects small packets, for example L2 packets with size < 18.
    
    Fixes: ae76715d153e ("net/mlx5e: Check the minimum inline header mode before xmit")
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8db40bcf439f3939d16de824adc7a0d781390761
Author: Shahar Klein <shahark@mellanox.com>
Date:   Tue Aug 1 15:29:55 2017 +0300

    net/mlx5: E-Switch, Unload the representors in the correct order
    
    
    [ Upstream commit 191220396db840822fc818edf03c49f0c02eb237 ]
    
    When changing from switchdev to legacy mode, all the representor port
    devices (uplink nic and reps) are cleaned up. Part of this cleaning
    process is removing the neigh entries and the hash table containing them.
    However, a representor neigh entry might be linked to the uplink port
    hash table and if the uplink nic is cleaned first the cleaning of the
    representor will end up in null deref.
    Fix that by unloading the representors in the opposite order of load.
    
    Fixes: cb67b832921c ("net/mlx5e: Introduce SRIOV VF representors")
    Signed-off-by: Shahar Klein <shahark@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0034cb5014e7c7d64389c52ee58180101c8ac29
Author: Paul Blakey <paulb@mellanox.com>
Date:   Tue Aug 22 13:51:56 2017 +0300

    net/mlx5e: Properly resolve TC offloaded ipv6 vxlan tunnel source address
    
    
    [ Upstream commit 08820528c9d3ff0d0eda047d7ef5ecac2da1ef6c ]
    
    Currently if vxlan tunnel ipv6 src isn't supplied the driver fails to
    resolve it as part of the route lookup. The resulting encap header
    is left with a zeroed out ipv6 src address so the packets are sent
    with this src ip.
    
    Use an appropriate route lookup API that also resolves the source
    ipv6 address if it's not supplied.
    
    Fixes: ce99f6b97fcd ('net/mlx5e: Support SRIOV TC encapsulation offloads for IPv6 tunnels')
    Signed-off-by: Paul Blakey <paulb@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53c5525785bc831f50c4eed741f4e7f6413d0057
Author: Inbar Karmy <inbark@mellanox.com>
Date:   Mon Aug 14 16:12:16 2017 +0300

    net/mlx5e: Don't override user RSS upon set channels
    
    
    [ Upstream commit 5a8e12678c767ccf8bb16d6237569e4a707d655b ]
    
    Currently, increasing the number of combined channels is changing
    the RSS spread to use the new created channels.
    Prevent the RSS spread change in case the user explicitly declare it,
    to avoid overriding user configuration.
    
    Tested:
    when RSS default:
    
    # ethtool -L ens8 combined 4
    RSS spread will change and point to 4 channels.
    
    # ethtool -X ens8 equal 4
    # ethtool -L ens8 combined 6
    RSS will not change after increasing the number of the channels.
    
    Fixes: 8bf368620486 ('ethtool: ensure channel counts are within bounds during SCHANNELS')
    Signed-off-by: Inbar Karmy <inbark@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ba008489371d05f5566ac31e140ed07fbb4f5fbb
Author: Eran Ben Elisha <eranbe@mellanox.com>
Date:   Wed Aug 16 14:37:11 2017 +0300

    net/mlx5e: Fix dangling page pointer on DMA mapping error
    
    
    [ Upstream commit 0556ce72ab16156af6c94cdc7964e4310acc97c0 ]
    
    Function mlx5e_dealloc_rx_wqe is using page pointer value as an
    indication to valid DMA mapping. In case that the mapping failed, we
    released the page but kept the dangling pointer. Store the page pointer
    only after the DMA mapping passed to avoid invalid page DMA unmap.
    
    Fixes: bc77b240b3c5 ("net/mlx5e: Add fragmented memory support for RX multi packet WQE")
    Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ae1eccbde90e827633e31a397301d6c9053ed9c
Author: Noa Osherovich <noaos@mellanox.com>
Date:   Sun Jul 30 13:55:48 2017 +0300

    net/mlx5: Fix arm SRQ command for ISSI version 0
    
    
    [ Upstream commit 672d0880b7798a917bcc622308f25a0fbb991dab ]
    
    Support for ISSI version 0 was recently broken as the arm_srq_cmd
    command, which is used only for ISSI version 0, was given the opcode
    for ISSI version 1 instead of ISSI version 0.
    
    Change arm_srq_cmd to use the correct command opcode for ISSI version
    0.
    
    Fixes: af1ba291c5e4 ('{net, IB}/mlx5: Refactor internal SRQ API')
    Signed-off-by: Noa Osherovich <noaos@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b6b3028c005985928687e2c705eef01b9b81bb9
Author: Huy Nguyen <huyn@mellanox.com>
Date:   Mon Jul 10 14:00:23 2017 -0500

    net/mlx5e: Fix DCB_CAP_ATTR_DCBX capability for DCBNL getcap.
    
    
    [ Upstream commit 9e10bf1d349787f373484d835efe2dbb5f9c5614 ]
    
    Current code doesn't report DCB_CAP_DCBX_HOST capability when query
    through getcap. User space lldptool expects capability to have HOST mode
    set when it wants to configure DCBX CEE mode. In absence of HOST mode
    capability, lldptool fails to switch to CEE mode.
    
    This fix returns DCB_CAP_DCBX_HOST capability when port's DCBX
    controlled mode is under software control.
    
    Fixes: 3a6a931dfb8e ("net/mlx5e: Support DCBX CEE API")
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Reviewed-by: Parav Pandit <parav@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b919ad3f99f689c169c7fbd9ba7ac164f51c23b
Author: Huy Nguyen <huyn@mellanox.com>
Date:   Thu Jul 13 13:45:11 2017 -0500

    net/mlx5e: Check for qos capability in dcbnl_initialize
    
    
    [ Upstream commit 33c52b6718d2a6cb414440c98560818910d896dc ]
    
    qos capability is the master capability bit that determines
    if the DCBX is supported for the PCI function. If this bit is off,
    driver cannot run any dcbx code.
    
    Fixes: e207b7e99176 ("net/mlx5e: ConnectX-4 firmware support for DCBX")
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Reviewed-by: Parav Pandit <parav@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31034e443fbff6622edf84c134fc74decc2349c8
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Wed Aug 30 12:39:33 2017 -0700

    net: dsa: bcm_sf2: Fix number of CFP entries for BCM7278
    
    
    [ Upstream commit df191632f814357ee4d646421662d866028b569d ]
    
    BCM7278 has only 128 entries while BCM7445 has the full 256 entries set,
    fix that.
    
    Fixes: 7318166cacad ("net: dsa: bcm_sf2: Add support for ethtool::rxnfc")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9901adf536c8430f29bddb36cc648e02143b8ec
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Aug 30 09:29:31 2017 -0700

    kcm: do not attach PF_KCM sockets to avoid deadlock
    
    
    [ Upstream commit 351050ecd6523374b370341cc29fe61e2201556b ]
    
    syzkaller had no problem to trigger a deadlock, attaching a KCM socket
    to another one (or itself). (original syzkaller report was a very
    confusing lockdep splat during a sendmsg())
    
    It seems KCM claims to only support TCP, but no enforcement is done,
    so we might need to add additional checks.
    
    Fixes: ab7ac4eb9832 ("kcm: Kernel Connection Multiplexor module")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Tom Herbert <tom@quantonium.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7ebdeb47c8b14614c65a0a2ad07cf4c04e51469
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Mon Aug 28 14:29:41 2017 -0400

    packet: Don't write vnet header beyond end of buffer
    
    
    [ Upstream commit edbd58be15a957f6a760c4a514cd475217eb97fd ]
    
    ... which may happen with certain values of tp_reserve and maclen.
    
    Fixes: 58d19b19cd99 ("packet: vnet_hdr support for tpacket_rcv")
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef5a20f0cbaed7ef8c0bc50fd1ef1f337bfbd609
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Aug 28 10:45:01 2017 +0800

    ipv6: do not set sk_destruct in IPV6_ADDRFORM sockopt
    
    
    [ Upstream commit e8d411d2980723b8f8ba8e4dd78b694c5fd9ea3e ]
    
    ChunYu found a kernel warn_on during syzkaller fuzzing:
    
    [40226.038539] WARNING: CPU: 5 PID: 23720 at net/ipv4/af_inet.c:152 inet_sock_destruct+0x78d/0x9a0
    [40226.144849] Call Trace:
    [40226.147590]  <IRQ>
    [40226.149859]  dump_stack+0xe2/0x186
    [40226.176546]  __warn+0x1a4/0x1e0
    [40226.180066]  warn_slowpath_null+0x31/0x40
    [40226.184555]  inet_sock_destruct+0x78d/0x9a0
    [40226.246355]  __sk_destruct+0xfa/0x8c0
    [40226.290612]  rcu_process_callbacks+0xaa0/0x18a0
    [40226.336816]  __do_softirq+0x241/0x75e
    [40226.367758]  irq_exit+0x1f6/0x220
    [40226.371458]  smp_apic_timer_interrupt+0x7b/0xa0
    [40226.376507]  apic_timer_interrupt+0x93/0xa0
    
    The warn_on happned when sk->sk_rmem_alloc wasn't 0 in inet_sock_destruct.
    As after commit f970bd9e3a06 ("udp: implement memory accounting helpers"),
    udp has changed to use udp_destruct_sock as sk_destruct where it would
    udp_rmem_release all rmem.
    
    But IPV6_ADDRFORM sockopt sets sk_destruct with inet_sock_destruct after
    changing family to PF_INET. If rmem is not 0 at that time, and there is
    no place to release rmem before calling inet_sock_destruct, the warn_on
    will be triggered.
    
    This patch is to fix it by not setting sk_destruct in IPV6_ADDRFORM sockopt
    any more. As IPV6_ADDRFORM sockopt only works for tcp and udp. TCP sock has
    already set it's sk_destruct with inet_sock_destruct and UDP has set with
    udp_destruct_sock since they're created.
    
    Fixes: f970bd9e3a06 ("udp: implement memory accounting helpers")
    Reported-by: ChunYu Wang <chunwang@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 440ea29af6a59c80f1bb76d1dbabf49e85ffd9a7
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat Aug 26 20:10:10 2017 +0800

    ipv6: set dst.obsolete when a cached route has expired
    
    
    [ Upstream commit 1e2ea8ad37be25a7cdcc974945935829d534d5d3 ]
    
    Now it doesn't check for the cached route expiration in ipv6's
    dst_ops->check(), because it trusts dst_gc that would clean the
    cached route up when it's expired.
    
    The problem is in dst_gc, it would clean the cached route only
    when it's refcount is 1. If some other module (like xfrm) keeps
    holding it and the module only release it when dst_ops->check()
    fails.
    
    But without checking for the cached route expiration, .check()
    may always return true. Meanwhile, without releasing the cached
    route, dst_gc couldn't del it. It will cause this cached route
    never to expire.
    
    This patch is to set dst.obsolete with DST_OBSOLETE_KILL in .gc
    when it's expired, and check obsolete != DST_OBSOLETE_FORCE_CHK
    in .check.
    
    Note that this is even needed when ipv6 dst_gc timer is removed
    one day. It would set dst.obsolete in .redirect and .update_pmtu
    instead, and check for cached route expiration when getting it,
    just like what ipv4 route does.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24bd86e627398c991a380bb736b9915a3faeb460
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Fri Aug 25 22:48:48 2017 +0200

    cxgb4: Fix stack out-of-bounds read due to wrong size to t4_record_mbox()
    
    
    [ Upstream commit 0f3086868e8889a823a6e0f3d299102aa895d947 ]
    
    Passing commands for logging to t4_record_mbox() with size
    MBOX_LEN, when the actual command size is actually smaller,
    causes out-of-bounds stack accesses in t4_record_mbox() while
    copying command words here:
    
            for (i = 0; i < size / 8; i++)
                    entry->cmd[i] = be64_to_cpu(cmd[i]);
    
    Up to 48 bytes from the stack are then leaked to debugfs.
    
    This happens whenever we send (and log) commands described by
    structs fw_sched_cmd (32 bytes leaked), fw_vi_rxmode_cmd (48),
    fw_hello_cmd (48), fw_bye_cmd (48), fw_initialize_cmd (48),
    fw_reset_cmd (48), fw_pfvf_cmd (32), fw_eq_eth_cmd (16),
    fw_eq_ctrl_cmd (32), fw_eq_ofld_cmd (32), fw_acl_mac_cmd(16),
    fw_rss_glb_config_cmd(32), fw_rss_vi_config_cmd(32),
    fw_devlog_cmd(32), fw_vi_enable_cmd(48), fw_port_cmd(32),
    fw_sched_cmd(32), fw_devlog_cmd(32).
    
    The cxgb4vf driver got this right instead.
    
    When we call t4_record_mbox() to log a command reply, a MBOX_LEN
    size can be used though, as get_mbox_rpl() will fill cmd_rpl up
    completely.
    
    Fixes: 7f080c3f2ff0 ("cxgb4: Add support to enable logging of firmware mailbox commands")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59b304fdff15cda0c95fdd83466c0f1fd5ab2621
Author: Antoine Tenart <antoine.tenart@free-electrons.com>
Date:   Fri Aug 25 16:14:17 2017 +0200

    net: mvpp2: fix the mac address used when using PPv2.2
    
    
    [ Upstream commit 4c22868264516fe0c42817a87f37efb44254e7a9 ]
    
    The mac address is only retrieved from h/w when using PPv2.1. Otherwise
    the variable holding it is still checked and used if it contains a valid
    value. As the variable isn't initialized to an invalid mac address
    value, we end up with random mac addresses which can be the same for all
    the ports handled by this PPv2 driver.
    
    Fixes this by initializing the h/w mac address variable to {0}, which is
    an invalid mac address value. This way the random assignation fallback
    is called and all ports end up with their own addresses.
    
    Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
    Fixes: 2697582144dd ("net: mvpp2: handle misc PPv2.1/PPv2.2 differences")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38ca2d395e1cd24f205db3176c4ce9198f22576e
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Fri Aug 25 14:31:01 2017 +0200

    udp6: set rx_dst_cookie on rx_dst updates
    
    
    [ Upstream commit 64f0f5d18a47c703c85576375cc010e83dac6a48 ]
    
    Currently, in the udp6 code, the dst cookie is not initialized/updated
    concurrently with the RX dst used by early demux.
    
    As a result, the dst_check() in the early_demux path always fails,
    the rx dst cache is always invalidated, and we can't really
    leverage significant gain from the demux lookup.
    
    Fix it adding udp6 specific variant of sk_rx_dst_set() and use it
    to set the dst cookie when the dst entry is really changed.
    
    The issue is there since the introduction of early demux for ipv6.
    
    Fixes: 5425077d73e0 ("net: ipv6: Add early demux handler for UDP unicast")
    Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4426cf203667b2ef94ade4d7e43e8ae39e9697d
Author: stephen hemminger <stephen@networkplumber.org>
Date:   Thu Aug 24 16:49:16 2017 -0700

    netvsc: fix deadlock betwen link status and removal
    
    
    [ Upstream commit 9b4e946ce14e20d7addbfb7d9139e604f9fda107 ]
    
    There is a deadlock possible when canceling the link status
    delayed work queue. The removal process is run with RTNL held,
    and the link status callback is acquring RTNL.
    
    Resolve the issue by using trylock and rescheduling.
    If cancel is in process, that block it from happening.
    
    Fixes: 122a5f6410f4 ("staging: hv: use delayed_work for netvsc_send_garp()")
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f0204b0b7b5ea5fde64ee8197b2d1a281e2fe3a
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Aug 24 16:01:13 2017 -0700

    net: systemport: Free DMA coherent descriptors on errors
    
    
    [ Upstream commit c2062ee3d9615828109ffe8089fbf69bed394d05 ]
    
    In case bcm_sysport_init_tx_ring() is not able to allocate ring->cbs, we
    would return with an error, and call bcm_sysport_fini_tx_ring() and it
    would see that ring->cbs is NULL and do nothing. This would leak the
    coherent DMA descriptor area, so we need to free it on error before
    returning.
    
    Reported-by: Eric Dumazet <edumazet@gmail.com>
    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71dd9ac555c50d4d233acd54f24d97c0f1541aa1
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Aug 24 15:56:29 2017 -0700

    net: bcmgenet: Be drop monitor friendly
    
    
    [ Upstream commit d4fec855905fa8bd5fb1c59f73ad2d74a944876a ]
    
    There are 3 spots where we call dev_kfree_skb() but we are actually
    just doing a normal SKB consumption: __bcmgenet_tx_reclaim() for normal
    TX reclamation, bcmgenet_alloc_rx_buffers() during the initial RX ring
    setup and bcmgenet_free_rx_buffers() during RX ring cleanup.
    
    Fixes: d6707bec5986 ("net: bcmgenet: rewrite bcmgenet_rx_refill()")
    Fixes: f48bed16a756 ("net: bcmgenet: Free skb after last Tx frag")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7def678f47fc9dac989c15e6cbe7eb8ae659cd1d
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Aug 24 15:20:41 2017 -0700

    net: systemport: Be drop monitor friendly
    
    
    [ Upstream commit c45182eb967af11e9482168be5be41aa22e5d321 ]
    
    Utilize dev_consume_skb_any(cb->skb) in bcm_sysport_free_cb() which is
    used when a TX packet is completed, as well as when the RX ring is
    cleaned on shutdown. None of these two cases are packet drops, so be
    drop monitor friendly.
    
    Suggested-by: Eric Dumazet <edumazet@gmail.com>
    Fixes: 80105befdb4b ("net: systemport: add Broadcom SYSTEMPORT Ethernet MAC driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c86a65cf30ac5e8eaba4abe921b1b471d1fbe329
Author: Bob Peterson <rpeterso@redhat.com>
Date:   Wed Aug 23 10:43:02 2017 -0400

    tipc: Fix tipc_sk_reinit handling of -EAGAIN
    
    
    [ Upstream commit 6c7e983b220f89e03286dc70a41c7ef3a8b409df ]
    
    In 9dbbfb0ab6680c6a85609041011484e6658e7d3c function tipc_sk_reinit
    had additional logic added to loop in the event that function
    rhashtable_walk_next() returned -EAGAIN. No worries.
    
    However, if rhashtable_walk_start returns -EAGAIN, it does "continue",
    and therefore skips the call to rhashtable_walk_stop(). That has
    the effect of calling rcu_read_lock() without its paired call to
    rcu_read_unlock(). Since rcu_read_lock() may be nested, the problem
    may not be apparent for a while, especially since resize events may
    be rare. But the comments to rhashtable_walk_start() state:
    
     * ...Note that we take the RCU lock in all
     * cases including when we return an error.  So you must always call
     * rhashtable_walk_stop to clean up.
    
    This patch replaces the continue with a goto and label to ensure a
    matching call to rhashtable_walk_stop().
    
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8aafed19d5230e0b95e57a6e9c9e4ad71c21e8ac
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Aug 23 15:59:49 2017 +0200

    qlge: avoid memcpy buffer overflow
    
    
    [ Upstream commit e58f95831e7468d25eb6e41f234842ecfe6f014f ]
    
    gcc-8.0.0 (snapshot) points out that we copy a variable-length string
    into a fixed length field using memcpy() with the destination length,
    and that ends up copying whatever follows the string:
    
        inlined from 'ql_core_dump' at drivers/net/ethernet/qlogic/qlge/qlge_dbg.c:1106:2:
    drivers/net/ethernet/qlogic/qlge/qlge_dbg.c:708:2: error: 'memcpy' reading 15 bytes from a region of size 14 [-Werror=stringop-overflow=]
      memcpy(seg_hdr->description, desc, (sizeof(seg_hdr->description)) - 1);
    
    Changing it to use strncpy() will instead zero-pad the destination,
    which seems to be the right thing to do here.
    
    The bug is probably harmless, but it seems like a good idea to address
    it in stable kernels as well, if only for the purpose of building with
    gcc-8 without warnings.
    
    Fixes: a61f80261306 ("qlge: Add ethtool register dump function.")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6da138247b47105eca005464383cae11ac57bdab
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Wed Aug 23 13:27:13 2017 +0200

    sctp: Avoid out-of-bounds reads from address storage
    
    
    [ Upstream commit ee6c88bb754e3d363e568da78086adfedb692447 ]
    
    inet_diag_msg_sctp{,l}addr_fill() and sctp_get_sctp_info() copy
    sizeof(sockaddr_storage) bytes to fill in sockaddr structs used
    to export diagnostic information to userspace.
    
    However, the memory allocated to store sockaddr information is
    smaller than that and depends on the address family, so we leak
    up to 100 uninitialized bytes to userspace. Just use the size of
    the source structs instead, in all the three cases this is what
    userspace expects. Zero out the remaining memory.
    
    Unused bytes (i.e. when IPv4 addresses are used) in source
    structs sctp_sockaddr_entry and sctp_transport are already
    cleared by sctp_add_bind_addr() and sctp_transport_new(),
    respectively.
    
    Noticed while testing KASAN-enabled kernel with 'ss':
    
    [ 2326.885243] BUG: KASAN: slab-out-of-bounds in inet_sctp_diag_fill+0x42c/0x6c0 [sctp_diag] at addr ffff881be8779800
    [ 2326.896800] Read of size 128 by task ss/9527
    [ 2326.901564] CPU: 0 PID: 9527 Comm: ss Not tainted 4.11.0-22.el7a.x86_64 #1
    [ 2326.909236] Hardware name: Dell Inc. PowerEdge R730/072T6D, BIOS 2.4.3 01/17/2017
    [ 2326.917585] Call Trace:
    [ 2326.920312]  dump_stack+0x63/0x8d
    [ 2326.924014]  kasan_object_err+0x21/0x70
    [ 2326.928295]  kasan_report+0x288/0x540
    [ 2326.932380]  ? inet_sctp_diag_fill+0x42c/0x6c0 [sctp_diag]
    [ 2326.938500]  ? skb_put+0x8b/0xd0
    [ 2326.942098]  ? memset+0x31/0x40
    [ 2326.945599]  check_memory_region+0x13c/0x1a0
    [ 2326.950362]  memcpy+0x23/0x50
    [ 2326.953669]  inet_sctp_diag_fill+0x42c/0x6c0 [sctp_diag]
    [ 2326.959596]  ? inet_diag_msg_sctpasoc_fill+0x460/0x460 [sctp_diag]
    [ 2326.966495]  ? __lock_sock+0x102/0x150
    [ 2326.970671]  ? sock_def_wakeup+0x60/0x60
    [ 2326.975048]  ? remove_wait_queue+0xc0/0xc0
    [ 2326.979619]  sctp_diag_dump+0x44a/0x760 [sctp_diag]
    [ 2326.985063]  ? sctp_ep_dump+0x280/0x280 [sctp_diag]
    [ 2326.990504]  ? memset+0x31/0x40
    [ 2326.994007]  ? mutex_lock+0x12/0x40
    [ 2326.997900]  __inet_diag_dump+0x57/0xb0 [inet_diag]
    [ 2327.003340]  ? __sys_sendmsg+0x150/0x150
    [ 2327.007715]  inet_diag_dump+0x4d/0x80 [inet_diag]
    [ 2327.012979]  netlink_dump+0x1e6/0x490
    [ 2327.017064]  __netlink_dump_start+0x28e/0x2c0
    [ 2327.021924]  inet_diag_handler_cmd+0x189/0x1a0 [inet_diag]
    [ 2327.028045]  ? inet_diag_rcv_msg_compat+0x1b0/0x1b0 [inet_diag]
    [ 2327.034651]  ? inet_diag_dump_compat+0x190/0x190 [inet_diag]
    [ 2327.040965]  ? __netlink_lookup+0x1b9/0x260
    [ 2327.045631]  sock_diag_rcv_msg+0x18b/0x1e0
    [ 2327.050199]  netlink_rcv_skb+0x14b/0x180
    [ 2327.054574]  ? sock_diag_bind+0x60/0x60
    [ 2327.058850]  sock_diag_rcv+0x28/0x40
    [ 2327.062837]  netlink_unicast+0x2e7/0x3b0
    [ 2327.067212]  ? netlink_attachskb+0x330/0x330
    [ 2327.071975]  ? kasan_check_write+0x14/0x20
    [ 2327.076544]  netlink_sendmsg+0x5be/0x730
    [ 2327.080918]  ? netlink_unicast+0x3b0/0x3b0
    [ 2327.085486]  ? kasan_check_write+0x14/0x20
    [ 2327.090057]  ? selinux_socket_sendmsg+0x24/0x30
    [ 2327.095109]  ? netlink_unicast+0x3b0/0x3b0
    [ 2327.099678]  sock_sendmsg+0x74/0x80
    [ 2327.103567]  ___sys_sendmsg+0x520/0x530
    [ 2327.107844]  ? __get_locked_pte+0x178/0x200
    [ 2327.112510]  ? copy_msghdr_from_user+0x270/0x270
    [ 2327.117660]  ? vm_insert_page+0x360/0x360
    [ 2327.122133]  ? vm_insert_pfn_prot+0xb4/0x150
    [ 2327.126895]  ? vm_insert_pfn+0x32/0x40
    [ 2327.131077]  ? vvar_fault+0x71/0xd0
    [ 2327.134968]  ? special_mapping_fault+0x69/0x110
    [ 2327.140022]  ? __do_fault+0x42/0x120
    [ 2327.144008]  ? __handle_mm_fault+0x1062/0x17a0
    [ 2327.148965]  ? __fget_light+0xa7/0xc0
    [ 2327.153049]  __sys_sendmsg+0xcb/0x150
    [ 2327.157133]  ? __sys_sendmsg+0xcb/0x150
    [ 2327.161409]  ? SyS_shutdown+0x140/0x140
    [ 2327.165688]  ? exit_to_usermode_loop+0xd0/0xd0
    [ 2327.170646]  ? __do_page_fault+0x55d/0x620
    [ 2327.175216]  ? __sys_sendmsg+0x150/0x150
    [ 2327.179591]  SyS_sendmsg+0x12/0x20
    [ 2327.183384]  do_syscall_64+0xe3/0x230
    [ 2327.187471]  entry_SYSCALL64_slow_path+0x25/0x25
    [ 2327.192622] RIP: 0033:0x7f41d18fa3b0
    [ 2327.196608] RSP: 002b:00007ffc3b731218 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    [ 2327.205055] RAX: ffffffffffffffda RBX: 00007ffc3b731380 RCX: 00007f41d18fa3b0
    [ 2327.213017] RDX: 0000000000000000 RSI: 00007ffc3b731340 RDI: 0000000000000003
    [ 2327.220978] RBP: 0000000000000002 R08: 0000000000000004 R09: 0000000000000040
    [ 2327.228939] R10: 00007ffc3b730f30 R11: 0000000000000246 R12: 0000000000000003
    [ 2327.236901] R13: 00007ffc3b731340 R14: 00007ffc3b7313d0 R15: 0000000000000084
    [ 2327.244865] Object at ffff881be87797e0, in cache kmalloc-64 size: 64
    [ 2327.251953] Allocated:
    [ 2327.254581] PID = 9484
    [ 2327.257215]  save_stack_trace+0x1b/0x20
    [ 2327.261485]  save_stack+0x46/0xd0
    [ 2327.265179]  kasan_kmalloc+0xad/0xe0
    [ 2327.269165]  kmem_cache_alloc_trace+0xe6/0x1d0
    [ 2327.274138]  sctp_add_bind_addr+0x58/0x180 [sctp]
    [ 2327.279400]  sctp_do_bind+0x208/0x310 [sctp]
    [ 2327.284176]  sctp_bind+0x61/0xa0 [sctp]
    [ 2327.288455]  inet_bind+0x5f/0x3a0
    [ 2327.292151]  SYSC_bind+0x1a4/0x1e0
    [ 2327.295944]  SyS_bind+0xe/0x10
    [ 2327.299349]  do_syscall_64+0xe3/0x230
    [ 2327.303433]  return_from_SYSCALL_64+0x0/0x6a
    [ 2327.308194] Freed:
    [ 2327.310434] PID = 4131
    [ 2327.313065]  save_stack_trace+0x1b/0x20
    [ 2327.317344]  save_stack+0x46/0xd0
    [ 2327.321040]  kasan_slab_free+0x73/0xc0
    [ 2327.325220]  kfree+0x96/0x1a0
    [ 2327.328530]  dynamic_kobj_release+0x15/0x40
    [ 2327.333195]  kobject_release+0x99/0x1e0
    [ 2327.337472]  kobject_put+0x38/0x70
    [ 2327.341266]  free_notes_attrs+0x66/0x80
    [ 2327.345545]  mod_sysfs_teardown+0x1a5/0x270
    [ 2327.350211]  free_module+0x20/0x2a0
    [ 2327.354099]  SyS_delete_module+0x2cb/0x2f0
    [ 2327.358667]  do_syscall_64+0xe3/0x230
    [ 2327.362750]  return_from_SYSCALL_64+0x0/0x6a
    [ 2327.367510] Memory state around the buggy address:
    [ 2327.372855]  ffff881be8779700: fc fc fc fc 00 00 00 00 00 00 00 00 fc fc fc fc
    [ 2327.380914]  ffff881be8779780: fb fb fb fb fb fb fb fb fc fc fc fc 00 00 00 00
    [ 2327.388972] >ffff881be8779800: 00 00 00 00 fc fc fc fc fb fb fb fb fb fb fb fb
    [ 2327.397031]                                ^
    [ 2327.401792]  ffff881be8779880: fc fc fc fc fb fb fb fb fb fb fb fb fc fc fc fc
    [ 2327.409850]  ffff881be8779900: 00 00 00 00 00 04 fc fc fc fc fc fc 00 00 00 00
    [ 2327.417907] ==================================================================
    
    This fixes CVE-2017-7558.
    
    References: https://bugzilla.redhat.com/show_bug.cgi?id=1480266
    Fixes: 8f840e47f190 ("sctp: add the sctp_diag.c file")
    Cc: Xin Long <lucien.xin@gmail.com>
    Cc: Vlad Yasevich <vyasevich@gmail.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Reviewed-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 207ab5d5a250a738b261529e05ea65815c6262c4
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Tue Aug 22 15:24:47 2017 -0700

    fsl/man: Inherit parent device and of_node
    
    
    [ Upstream commit a1a50c8e4c241a505b7270e1a3c6e50d94e794b1 ]
    
    Junote Cai reported that he was not able to get a DSA setup involving the
    Freescale DPAA/FMAN driver to work and narrowed it down to
    of_find_net_device_by_node(). This function requires the network device's
    device reference to be correctly set which is the case here, though we have
    lost any device_node association there.
    
    The problem is that dpaa_eth_add_device() allocates a "dpaa-ethernet" platform
    device, and later on dpaa_eth_probe() is called but SET_NETDEV_DEV() won't be
    propagating &pdev->dev.of_node properly. Fix this by inherenting both the parent
    device and the of_node when dpaa_eth_add_device() creates the platform device.
    
    Fixes: 3933961682a3 ("fsl/fman: Add FMan MAC driver")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4670d79613335f15f524e6b34e5c26bd44e858c0
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Wed Aug 23 00:06:09 2017 +0200

    bpf: fix map value attribute for hash of maps
    
    
    [ Upstream commit 33ba43ed0afc13a29b1314e3e45a9938d310ba13 ]
    
    Currently, iproute2's BPF ELF loader works fine with array of maps
    when retrieving the fd from a pinned node and doing a selfcheck
    against the provided map attributes from the object file, but we
    fail to do the same for hash of maps and thus refuse to get the
    map from pinned node.
    
    Reason is that when allocating hash of maps, fd_htab_map_alloc() will
    set the value size to sizeof(void *), and any user space map creation
    requests are forced to set 4 bytes as value size. Thus, selfcheck
    will complain about exposed 8 bytes on 64 bit archs vs. 4 bytes from
    object file as value size. Contract is that fdinfo or BPF_MAP_GET_FD_BY_ID
    returns the value size used to create the map.
    
    Fix it by handling it the same way as we do for array of maps, which
    means that we leave value size at 4 bytes and in the allocation phase
    round up value size to 8 bytes. alloc_htab_elem() needs an adjustment
    in order to copy rounded up 8 bytes due to bpf_fd_htab_map_update_elem()
    calling into htab_map_update_elem() with the pointer of the map
    pointer as value. Unlike array of maps where we just xchg(), we're
    using the generic htab_map_update_elem() callback also used from helper
    calls, which published the key/value already on return, so we need
    to ensure to memcpy() the right size.
    
    Fixes: bcc6b1b7ebf8 ("bpf: Add hash of maps support")
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79d6457e803641a1a025ac5ddfc212821ace379a
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Aug 22 09:39:28 2017 -0700

    udp: on peeking bad csum, drop packets even if not at head
    
    
    [ Upstream commit fd6055a806edc4019be1b9fb7d25262599bca5b1 ]
    
    When peeking, if a bad csum is discovered, the skb is unlinked from
    the queue with __sk_queue_drop_skb and the peek operation restarted.
    
    __sk_queue_drop_skb only drops packets that match the queue head.
    
    This fails if the skb was found after the head, using SO_PEEK_OFF
    socket option. This causes an infinite loop.
    
    We MUST drop this problematic skb, and we can simply check if skb was
    already removed by another thread, by looking at skb->next :
    
    This pointer is set to NULL by the  __skb_unlink() operation, that might
    have happened only under the spinlock protection.
    
    Many thanks to syzkaller team (and particularly Dmitry Vyukov who
    provided us nice C reproducers exhibiting the lockup) and Willem de
    Bruijn who provided first version for this patch and a test program.
    
    Fixes: 627d2d6b5500 ("udp: enable MSG_PEEK at non-zero offset")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1999821fa5008a95a16404ee35fb08ec451a8180
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Aug 22 15:36:08 2017 +0200

    macsec: add genl family module alias
    
    
    [ Upstream commit 78362998f58c7c271e2719dcd0aaced435c801f9 ]
    
    This helps tools such as wpa_supplicant can start even if the macsec
    module isn't loaded yet.
    
    Fixes: c09440f7dcb3 ("macsec: introduce IEEE 802.1AE driver")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 517e43bd1ebaab904d3a80f7c9a97c67c67b85bd
Author: Wei Wang <weiwan@google.com>
Date:   Fri Aug 25 15:03:10 2017 -0700

    ipv6: fix sparse warning on rt6i_node
    
    
    [ Upstream commit 4e587ea71bf924f7dac621f1351653bd41e446cb ]
    
    Commit c5cff8561d2d adds rcu grace period before freeing fib6_node. This
    generates a new sparse warning on rt->rt6i_node related code:
      net/ipv6/route.c:1394:30: error: incompatible types in comparison
      expression (different address spaces)
      ./include/net/ip6_fib.h:187:14: error: incompatible types in comparison
      expression (different address spaces)
    
    This commit adds "__rcu" tag for rt6i_node and makes sure corresponding
    rcu API is used for it.
    After this fix, sparse no longer generates the above warning.
    
    Fixes: c5cff8561d2d ("ipv6: add rcu grace period before freeing fib6_node")
    Signed-off-by: Wei Wang <weiwan@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 640efece69a4f8e15d3b20188cfd7bd9cc568829
Author: Wei Wang <weiwan@google.com>
Date:   Mon Aug 21 09:47:10 2017 -0700

    ipv6: add rcu grace period before freeing fib6_node
    
    
    [ Upstream commit c5cff8561d2d0006e972bd114afd51f082fee77c ]
    
    We currently keep rt->rt6i_node pointing to the fib6_node for the route.
    And some functions make use of this pointer to dereference the fib6_node
    from rt structure, e.g. rt6_check(). However, as there is neither
    refcount nor rcu taken when dereferencing rt->rt6i_node, it could
    potentially cause crashes as rt->rt6i_node could be set to NULL by other
    CPUs when doing a route deletion.
    This patch introduces an rcu grace period before freeing fib6_node and
    makes sure the functions that dereference it takes rcu_read_lock().
    
    Note: there is no "Fixes" tag because this bug was there in a very
    early stage.
    
    Signed-off-by: Wei Wang <weiwan@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76d3e7ff2362f1744d163bac6862215df661ed9b
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Fri Aug 18 14:40:53 2017 +0200

    ipv6: accept 64k - 1 packet length in ip6_find_1stfragopt()
    
    
    [ Upstream commit 3de33e1ba0506723ab25734e098cf280ecc34756 ]
    
    A packet length of exactly IPV6_MAXPLEN is allowed, we should
    refuse parsing options only if the size is 64KiB or more.
    
    While at it, remove one extra variable and one assignment which
    were also introduced by the commit that introduced the size
    check. Checking the sum 'offset + len' and only later adding
    'len' to 'offset' doesn't provide any advantage over directly
    summing to 'offset' and checking it.
    
    Fixes: 6399f1fae4ec ("ipv6: avoid overflow of offset in ip6_find_1stfragopt")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
