commit e87c13993f16549e77abce9744af844c55154349
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Nov 24 08:35:59 2017 +0100

    Linux 4.13.16

commit 7336a443393f6990749d68052d2b224438605342
Author: Jan Harkes <jaharkes@cs.cmu.edu>
Date:   Wed Sep 27 15:52:12 2017 -0400

    coda: fix 'kernel memory exposure attempt' in fsync
    
    commit d337b66a4c52c7b04eec661d86c2ef6e168965a2 upstream.
    
    When an application called fsync on a file in Coda a small request with
    just the file identifier was allocated, but the declared length was set
    to the size of union of all possible upcall requests.
    
    This bug has been around for a very long time and is now caught by the
    extra checking in usercopy that was introduced in Linux-4.8.
    
    The exposure happens when the Coda cache manager process reads the fsync
    upcall request at which point it is killed. As a result there is nobody
    servicing any further upcalls, trapping any processes that try to access
    the mounted Coda filesystem.
    
    Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26a7acf37b063fd8ffefef7e9203135f0612ce54
Author: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Date:   Mon Jul 31 10:51:59 2017 +0200

    x86/cpu/amd: Derive L3 shared_cpu_map from cpu_llc_shared_mask
    
    commit 2b83809a5e6d619a780876fcaf68cdc42b50d28c upstream.
    
    For systems with X86_FEATURE_TOPOEXT, current logic uses the APIC ID
    to calculate shared_cpu_map. However, APIC IDs are not guaranteed to
    be contiguous for cores across different L3s (e.g. family17h system
    w/ downcore configuration). This breaks the logic, and results in an
    incorrect L3 shared_cpu_map.
    
    Instead, always use the previously calculated cpu_llc_shared_mask of
    each CPU to derive the L3 shared_cpu_map.
    
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170731085159.9455-3-bp@alien8.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8007f727bbaa562107dd3e60a473403c22faee2
Author: Jaewon Kim <jaewon31.kim@samsung.com>
Date:   Wed Nov 15 17:39:07 2017 -0800

    mm/page_ext.c: check if page_ext is not prepared
    
    commit e492080e640c2d1235ddf3441cae634cfffef7e1 upstream.
    
    online_page_ext() and page_ext_init() allocate page_ext for each
    section, but they do not allocate if the first PFN is !pfn_present(pfn)
    or !pfn_valid(pfn).  Then section->page_ext remains as NULL.
    lookup_page_ext checks NULL only if CONFIG_DEBUG_VM is enabled.  For a
    valid PFN, __set_page_owner will try to get page_ext through
    lookup_page_ext.  Without CONFIG_DEBUG_VM lookup_page_ext will misuse
    NULL pointer as value 0.  This incurrs invalid address access.
    
    This is the panic example when PFN 0x100000 is not valid but PFN
    0x13FC00 is being used for page_ext.  section->page_ext is NULL,
    get_entry returned invalid page_ext address as 0x1DFA000 for a PFN
    0x13FC00.
    
    To avoid this panic, CONFIG_DEBUG_VM should be removed so that page_ext
    will be checked at all times.
    
      Unable to handle kernel paging request at virtual address 01dfa014
      ------------[ cut here ]------------
      Kernel BUG at ffffff80082371e0 [verbose debug info unavailable]
      Internal error: Oops: 96000045 [#1] PREEMPT SMP
      Modules linked in:
      PC is at __set_page_owner+0x48/0x78
      LR is at __set_page_owner+0x44/0x78
        __set_page_owner+0x48/0x78
        get_page_from_freelist+0x880/0x8e8
        __alloc_pages_nodemask+0x14c/0xc48
        __do_page_cache_readahead+0xdc/0x264
        filemap_fault+0x2ac/0x550
        ext4_filemap_fault+0x3c/0x58
        __do_fault+0x80/0x120
        handle_mm_fault+0x704/0xbb0
        do_page_fault+0x2e8/0x394
        do_mem_abort+0x88/0x124
    
    Pre-4.7 kernels also need commit f86e4271978b ("mm: check the return
    value of lookup_page_ext for all call sites").
    
    Link: http://lkml.kernel.org/r/20171107094131.14621-1-jaewon31.kim@samsung.com
    Fixes: eefa864b701d ("mm/page_ext: resurrect struct page extending code for debugging")
    Signed-off-by: Jaewon Kim <jaewon31.kim@samsung.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Joonsoo Kim <js1304@gmail.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 3c560c5a129a3f75345cdd5f0504af33ba48b7ab
Author: Pavel Tatashin <pasha.tatashin@oracle.com>
Date:   Wed Nov 15 17:38:41 2017 -0800

    mm/page_alloc.c: broken deferred calculation
    
    commit d135e5750205a21a212a19dbb05aeb339e2cbea7 upstream.
    
    In reset_deferred_meminit() we determine number of pages that must not
    be deferred.  We initialize pages for at least 2G of memory, but also
    pages for reserved memory in this node.
    
    The reserved memory is determined in this function:
    memblock_reserved_memory_within(), which operates over physical
    addresses, and returns size in bytes.  However, reset_deferred_meminit()
    assumes that that this function operates with pfns, and returns page
    count.
    
    The result is that in the best case machine boots slower than expected
    due to initializing more pages than needed in single thread, and in the
    worst case panics because fewer than needed pages are initialized early.
    
    Link: http://lkml.kernel.org/r/20171021011707.15191-1-pasha.tatashin@oracle.com
    Fixes: 864b9a393dcb ("mm: consider memblock reservations for deferred memory initialization sizing")
    Signed-off-by: Pavel Tatashin <pasha.tatashin@oracle.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    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 6df1f9c1454fbb7fdff3eb8e1fa40897459f0fdb
Author: Corey Minyard <cminyard@mvista.com>
Date:   Sat Jul 29 21:14:55 2017 -0500

    ipmi: fix unsigned long underflow
    
    commit 392a17b10ec4320d3c0e96e2a23ebaad1123b989 upstream.
    
    When I set the timeout to a specific value such as 500ms, the timeout
    event will not happen in time due to the overflow in function
    check_msg_timeout:
    ...
            ent->timeout -= timeout_period;
            if (ent->timeout > 0)
                    return;
    ...
    
    The type of timeout_period is long, but ent->timeout is unsigned long.
    This patch makes the type consistent.
    
    Reported-by: Weilong Chen <chenweilong@huawei.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Tested-by: Weilong Chen <chenweilong@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ccb2cca45acfd1f34bdb19d8ef5e409af40f2533
Author: alex chen <alex.chen@huawei.com>
Date:   Wed Nov 15 17:31:40 2017 -0800

    ocfs2: should wait dio before inode lock in ocfs2_setattr()
    
    commit 28f5a8a7c033cbf3e32277f4cc9c6afd74f05300 upstream.
    
    we should wait dio requests to finish before inode lock in
    ocfs2_setattr(), otherwise the following deadlock will happen:
    
    process 1                  process 2                    process 3
    truncate file 'A'          end_io of writing file 'A'   receiving the bast messages
    ocfs2_setattr
     ocfs2_inode_lock_tracker
      ocfs2_inode_lock_full
     inode_dio_wait
      __inode_dio_wait
      -->waiting for all dio
      requests finish
                                                            dlm_proxy_ast_handler
                                                             dlm_do_local_bast
                                                              ocfs2_blocking_ast
                                                               ocfs2_generic_handle_bast
                                                                set OCFS2_LOCK_BLOCKED flag
                            dio_end_io
                             dio_bio_end_aio
                              dio_complete
                               ocfs2_dio_end_io
                                ocfs2_dio_end_io_write
                                 ocfs2_inode_lock
                                  __ocfs2_cluster_lock
                                   ocfs2_wait_for_mask
                                   -->waiting for OCFS2_LOCK_BLOCKED
                                   flag to be cleared, that is waiting
                                   for 'process 1' unlocking the inode lock
                               inode_dio_end
                               -->here dec the i_dio_count, but will never
                               be called, so a deadlock happened.
    
    Link: http://lkml.kernel.org/r/59F81636.70508@huawei.com
    Signed-off-by: Alex Chen <alex.chen@huawei.com>
    Reviewed-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Acked-by: Changwei Ge <ge.changwei@h3c.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.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 7ddd48946652f990505310265cf9c12d85ea36ff
Author: Changwei Ge <ge.changwei@h3c.com>
Date:   Wed Nov 15 17:31:33 2017 -0800

    ocfs2: fix cluster hang after a node dies
    
    commit 1c01967116a678fed8e2c68a6ab82abc8effeddc upstream.
    
    When a node dies, other live nodes have to choose a new master for an
    existed lock resource mastered by the dead node.
    
    As for ocfs2/dlm implementation, this is done by function -
    dlm_move_lockres_to_recovery_list which marks those lock rsources as
    DLM_LOCK_RES_RECOVERING and manages them via a list from which DLM
    changes lock resource's master later.
    
    So without invoking dlm_move_lockres_to_recovery_list, no master will be
    choosed after dlm recovery accomplishment since no lock resource can be
    found through ::resource list.
    
    What's worse is that if DLM_LOCK_RES_RECOVERING is not marked for lock
    resources mastered a dead node, it will break up synchronization among
    nodes.
    
    So invoke dlm_move_lockres_to_recovery_list again.
    
    Fixs: 'commit ee8f7fcbe638 ("ocfs2/dlm: continue to purge recovery lockres when recovery master goes down")'
    Link: http://lkml.kernel.org/r/63ADC13FD55D6546B7DECE290D39E373CED6E0F9@H3CMLB14-EX.srv.huawei-3com.com
    Signed-off-by: Changwei Ge <ge.changwei@h3c.com>
    Reported-by: Vitaly Mayatskih <v.mayatskih@gmail.com>
    Tested-by: Vitaly Mayatskikh <v.mayatskih@gmail.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.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 cd21766d6fb1b25bdc85d6541646b1dcf8a8cb52
Author: Jann Horn <jannh@google.com>
Date:   Tue Nov 14 01:03:44 2017 +0100

    mm/pagewalk.c: report holes in hugetlb ranges
    
    commit 373c4557d2aa362702c4c2d41288fb1e54990b7c upstream.
    
    This matters at least for the mincore syscall, which will otherwise copy
    uninitialized memory from the page allocator to userspace.  It is
    probably also a correctness error for /proc/$pid/pagemap, but I haven't
    tested that.
    
    Removing the `walk->hugetlb_entry` condition in walk_hugetlb_range() has
    no effect because the caller already checks for that.
    
    This only reports holes in hugetlb ranges to callers who have specified
    a hugetlb_entry callback.
    
    This issue was found using an AFL-based fuzzer.
    
    v2:
     - don't crash on ->pte_hole==NULL (Andrew Morton)
     - add Cc stable (Andrew Morton)
    
    Fixes: 1e25a271c8ac ("mincore: apply page table walker on do_mincore()")
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a02a8e217edd2cbcf247846a93643740f34c6290
Author: Neeraj Upadhyay <neeraju@codeaurora.org>
Date:   Mon Aug 7 11:20:10 2017 +0530

    rcu: Fix up pending cbs check in rcu_prepare_for_idle
    
    commit 135bd1a230bb69a68c9808a7d25467318900b80a upstream.
    
    The pending-callbacks check in rcu_prepare_for_idle() is backwards.
    It should accelerate if there are pending callbacks, but the check
    rather uselessly accelerates only if there are no callbacks.  This commit
    therefore inverts this check.
    
    Fixes: 15fecf89e46a ("srcu: Abstract multi-tail callback list handling")
    Signed-off-by: Neeraj Upadhyay <neeraju@codeaurora.org>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bcf274cab9971171b7726298eaf1a2d089dad5a
Author: Alexander Steffen <Alexander.Steffen@infineon.com>
Date:   Fri Sep 8 17:21:32 2017 +0200

    tpm-dev-common: Reject too short writes
    
    commit ee70bc1e7b63ac8023c9ff9475d8741e397316e7 upstream.
    
    tpm_transmit() does not offer an explicit interface to indicate the number
    of valid bytes in the communication buffer. Instead, it relies on the
    commandSize field in the TPM header that is encoded within the buffer.
    Therefore, ensure that a) enough data has been written to the buffer, so
    that the commandSize field is present and b) the commandSize field does not
    announce more data than has been written to the buffer.
    
    This should have been fixed with CVE-2011-1161 long ago, but apparently
    a correct version of that patch never made it into the kernel.
    
    Signed-off-by: Alexander Steffen <Alexander.Steffen@infineon.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9e4a960a271e4bfcbbc668c6d31bc1eebd755be
Author: Ji-Ze Hong (Peter Hong) <hpeter@gmail.com>
Date:   Tue Oct 17 14:23:08 2017 +0800

    serial: 8250_fintek: Fix finding base_port with activated SuperIO
    
    commit fd97e66c5529046e989a0879c3bb58fddb592c71 upstream.
    
    The SuperIO will be configured at boot time by BIOS, but some BIOS
    will not deactivate the SuperIO when the end of configuration. It'll
    lead to mismatch for pdata->base_port in probe_setup_port(). So we'll
    deactivate all SuperIO before activate special base_port in
    fintek_8250_enter_key().
    
    Tested on iBASE MI802.
    
    Tested-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com>
    Signed-off-by: Ji-Ze Hong (Peter Hong) <hpeter+linux_kernel@gmail.com>
    Reviewd-by: Alan Cox <alan@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e4ef480d01bac3093ad2cd7a29804c4541dd08b
Author: Lukas Wunner <lukas@wunner.de>
Date:   Sat Oct 21 10:50:18 2017 +0200

    serial: omap: Fix EFR write on RTS deassertion
    
    commit 2a71de2f7366fb1aec632116d0549ec56d6a3940 upstream.
    
    Commit 348f9bb31c56 ("serial: omap: Fix RTS handling") sought to enable
    auto RTS upon manual RTS assertion and disable it on deassertion.
    However it seems the latter was done incorrectly, it clears all bits in
    the Extended Features Register *except* auto RTS.
    
    Fixes: 348f9bb31c56 ("serial: omap: Fix RTS handling")
    Cc: Peter Hurley <peter@hurleysoftware.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0df78b26c96d41863510fd77bf529b927fcf1064
Author: Roberto Sassu <roberto.sassu@huawei.com>
Date:   Tue Nov 7 11:37:07 2017 +0100

    ima: do not update security.ima if appraisal status is not INTEGRITY_PASS
    
    commit 020aae3ee58c1af0e7ffc4e2cc9fe4dc630338cb upstream.
    
    Commit b65a9cfc2c38 ("Untangling ima mess, part 2: deal with counters")
    moved the call of ima_file_check() from may_open() to do_filp_open() at a
    point where the file descriptor is already opened.
    
    This breaks the assumption made by IMA that file descriptors being closed
    belong to files whose access was granted by ima_file_check(). The
    consequence is that security.ima and security.evm are updated with good
    values, regardless of the current appraisal status.
    
    For example, if a file does not have security.ima, IMA will create it after
    opening the file for writing, even if access is denied. Access to the file
    will be allowed afterwards.
    
    Avoid this issue by checking the appraisal status before updating
    security.ima.
    
    Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bc71e8424356163f31458dc12d2196013a8d37c
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed Nov 15 22:17:48 2017 -0600

    net/sctp: Always set scope_id in sctp_inet6_skb_msgname
    
    
    [ Upstream commit 7c8a61d9ee1df0fb4747879fa67a99614eb62fec ]
    
    Alexandar Potapenko while testing the kernel with KMSAN and syzkaller
    discovered that in some configurations sctp would leak 4 bytes of
    kernel stack.
    
    Working with his reproducer I discovered that those 4 bytes that
    are leaked is the scope id of an ipv6 address returned by recvmsg.
    
    With a little code inspection and a shrewd guess I discovered that
    sctp_inet6_skb_msgname only initializes the scope_id field for link
    local ipv6 addresses to the interface index the link local address
    pertains to instead of initializing the scope_id field for all ipv6
    addresses.
    
    That is almost reasonable as scope_id's are meaniningful only for link
    local addresses.  Set the scope_id in all other cases to 0 which is
    not a valid interface index to make it clear there is nothing useful
    in the scope_id field.
    
    There should be no danger of breaking userspace as the stack leak
    guaranteed that previously meaningless random data was being returned.
    
    Fixes: 372f525b495c ("SCTP:  Resync with LKSCTP tree.")
    History-tree: https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git
    Reported-by: Alexander Potapenko <glider@google.com>
    Tested-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e9abe192f008e61e7b604a162b06fdaa6895b1ed
Author: Huacai Chen <chenhc@lemote.com>
Date:   Thu Nov 16 11:07:15 2017 +0800

    fealnx: Fix building error on MIPS
    
    
    [ Upstream commit cc54c1d32e6a4bb3f116721abf900513173e4d02 ]
    
    This patch try to fix the building error on MIPS. The reason is MIPS
    has already defined the LONG macro, which conflicts with the LONG enum
    in drivers/net/ethernet/fealnx.c.
    
    Signed-off-by: Huacai Chen <chenhc@lemote.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22f767973fb024036d8a9c2878035bdc6c5d1e6d
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Oct 17 23:26:10 2017 +0800

    sctp: do not peel off an assoc from one netns to another one
    
    
    [ Upstream commit df80cd9b28b9ebaa284a41df611dbf3a2d05ca74 ]
    
    Now when peeling off an association to the sock in another netns, all
    transports in this assoc are not to be rehashed and keep use the old
    key in hashtable.
    
    As a transport uses sk->net as the hash key to insert into hashtable,
    it would miss removing these transports from hashtable due to the new
    netns when closing the sock and all transports are being freeed, then
    later an use-after-free issue could be caused when looking up an asoc
    and dereferencing those transports.
    
    This is a very old issue since very beginning, ChunYu found it with
    syzkaller fuzz testing with this series:
    
      socket$inet6_sctp()
      bind$inet6()
      sendto$inet6()
      unshare(0x40000000)
      getsockopt$inet_sctp6_SCTP_GET_ASSOC_ID_LIST()
      getsockopt$inet_sctp6_SCTP_SOCKOPT_PEELOFF()
    
    This patch is to block this call when peeling one assoc off from one
    netns to another one, so that the netns of all transport would not
    go out-sync with the key in hashtable.
    
    Note that this patch didn't fix it by rehashing transports, as it's
    difficult to handle the situation when the tuple is already in use
    in the new netns. Besides, no one would like to peel off one assoc
    to another netns, considering ipaddrs, ifaces, etc. are usually
    different.
    
    Reported-by: ChunYu Wang <chunwang@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Acked-by: Neil Horman <nhorman@tuxdriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 518ae9074514595e250898d4c48776a313649021
Author: Bjørn Mork <bjorn@mork.no>
Date:   Wed Nov 15 09:35:02 2017 +0100

    net: cdc_ncm: GetNtbFormat endian fix
    
    
    [ Upstream commit 6314dab4b8fb8493d810e175cb340376052c69b6 ]
    
    The GetNtbFormat and SetNtbFormat requests operate on 16 bit little
    endian values. We get away with ignoring this most of the time, because
    we only care about USB_CDC_NCM_NTB16_FORMAT which is 0x0000.  This
    fails for USB_CDC_NCM_NTB32_FORMAT.
    
    Fix comparison between LE value from device and constant by converting
    the constant to LE.
    
    Reported-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Fixes: 2b02c20ce0c2 ("cdc_ncm: Set NTB format again after altsetting switch for Huawei devices")
    Cc: Enrico Mioso <mrkiko.rs@gmail.com>
    Cc: Christian Panton <christian@panton.org>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Acked-By: Enrico Mioso <mrkiko.rs@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4590a899ee02a73ecbd484e8b45ee6760cd69867
Author: Xin Long <lucien.xin@gmail.com>
Date:   Sat Nov 11 19:58:50 2017 +0800

    vxlan: fix the issue that neigh proxy blocks all icmpv6 packets
    
    
    [ Upstream commit 8bff3685a4bbf175a96bc6a528f13455d8d38244 ]
    
    Commit f1fb08f6337c ("vxlan: fix ND proxy when skb doesn't have transport
    header offset") removed icmp6_code and icmp6_type check before calling
    neigh_reduce when doing neigh proxy.
    
    It means all icmpv6 packets would be blocked by this, not only ns packet.
    In Jianlin's env, even ping6 couldn't work through it.
    
    This patch is to bring the icmp6_code and icmp6_type check back and also
    removed the same check from neigh_reduce().
    
    Fixes: f1fb08f6337c ("vxlan: fix ND proxy when skb doesn't have transport header offset")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Reviewed-by: Vincent Bernat <vincent@bernat.im>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 451ccb135578474c5a5fa527404d242918706620
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Thu Nov 9 13:04:44 2017 +0900

    af_netlink: ensure that NLMSG_DONE never fails in dumps
    
    
    [ Upstream commit 0642840b8bb008528dbdf929cec9f65ac4231ad0 ]
    
    The way people generally use netlink_dump is that they fill in the skb
    as much as possible, breaking when nla_put returns an error. Then, they
    get called again and start filling out the next skb, and again, and so
    forth. The mechanism at work here is the ability for the iterative
    dumping function to detect when the skb is filled up and not fill it
    past the brim, waiting for a fresh skb for the rest of the data.
    
    However, if the attributes are small and nicely packed, it is possible
    that a dump callback function successfully fills in attributes until the
    skb is of size 4080 (libmnl's default page-sized receive buffer size).
    The dump function completes, satisfied, and then, if it happens to be
    that this is actually the last skb, and no further ones are to be sent,
    then netlink_dump will add on the NLMSG_DONE part:
    
      nlh = nlmsg_put_answer(skb, cb, NLMSG_DONE, sizeof(len), NLM_F_MULTI);
    
    It is very important that netlink_dump does this, of course. However, in
    this example, that call to nlmsg_put_answer will fail, because the
    previous filling by the dump function did not leave it enough room. And
    how could it possibly have done so? All of the nla_put variety of
    functions simply check to see if the skb has enough tailroom,
    independent of the context it is in.
    
    In order to keep the important assumptions of all netlink dump users, it
    is therefore important to give them an skb that has this end part of the
    tail already reserved, so that the call to nlmsg_put_answer does not
    fail. Otherwise, library authors are forced to find some bizarre sized
    receive buffer that has a large modulo relative to the common sizes of
    messages received, which is ugly and buggy.
    
    This patch thus saves the NLMSG_DONE for an additional message, for the
    case that things are dangerously close to the brim. This requires
    keeping track of the errno from ->dump() across calls.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd09c28f439ebf461505143dab2fd9175a164592
Author: Inbar Karmy <inbark@mellanox.com>
Date:   Sun Oct 15 17:30:59 2017 +0300

    net/mlx5e: Set page to null in case dma mapping fails
    
    
    [ Upstream commit 2e50b2619538ea0224c037f6fa746023089e0654 ]
    
    Currently, when dma mapping fails, put_page is called,
    but the page is not set to null. Later, in the page_reuse treatment in
    mlx5e_free_rx_descs(), mlx5e_page_release() is called for the second time,
    improperly doing dma_unmap (for a non-mapped address) and an extra put_page.
    Prevent this by nullifying the page pointer when dma_map fails.
    
    Fixes: accd58833237 ("net/mlx5e: Introduce RX Page-Reuse")
    Signed-off-by: Inbar Karmy <inbark@mellanox.com>
    Reviewed-by: Tariq Toukan <tariqt@mellanox.com>
    Cc: kernel-team@fb.com
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63d10e93df94c93bdeac87a9401696b1edadb7ed
Author: Huy Nguyen <huyn@mellanox.com>
Date:   Tue Sep 26 15:11:56 2017 -0500

    net/mlx5: Cancel health poll before sending panic teardown command
    
    
    [ Upstream commit d2aa060d40fa060e963f9a356d43481e43ba3dac ]
    
    After the panic teardown firmware command, health_care detects the error
    in PCI bus and calls the mlx5_pci_err_detected. This health_care flow is
    no longer needed because the panic teardown firmware command will bring
    down the PCI bus communication with the HCA.
    
    The solution is to cancel the health care timer and its pending
    workqueue request before sending panic teardown firmware command.
    
    Kernel trace:
    mlx5_core 0033:01:00.0: Shutdown was called
    mlx5_core 0033:01:00.0: health_care:154:(pid 9304): handling bad device here
    mlx5_core 0033:01:00.0: mlx5_handle_bad_state:114:(pid 9304): NIC state 1
    mlx5_core 0033:01:00.0: mlx5_pci_err_detected was called
    mlx5_core 0033:01:00.0: mlx5_enter_error_state:96:(pid 9304): start
    mlx5_3:mlx5_ib_event:3061:(pid 9304): warning: event on port 0
    mlx5_core 0033:01:00.0: mlx5_enter_error_state:104:(pid 9304): end
    Unable to handle kernel paging request for data at address 0x0000003f
    Faulting instruction address: 0xc0080000434b8c80
    
    Fixes: 8812c24d28f4 ('net/mlx5: Add fast unload support in shutdown flow')
    Signed-off-by: Huy Nguyen <huyn@mellanox.com>
    Reviewed-by: Moshe Shemesh <moshe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e169082791ebd27f6e735a1f997bafb67c682f0b
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Nov 9 16:43:13 2017 -0800

    vlan: fix a use-after-free in vlan_device_event()
    
    
    [ Upstream commit 052d41c01b3a2e3371d66de569717353af489d63 ]
    
    After refcnt reaches zero, vlan_vid_del() could free
    dev->vlan_info via RCU:
    
            RCU_INIT_POINTER(dev->vlan_info, NULL);
            call_rcu(&vlan_info->rcu, vlan_info_rcu_free);
    
    However, the pointer 'grp' still points to that memory
    since it is set before vlan_vid_del():
    
            vlan_info = rtnl_dereference(dev->vlan_info);
            if (!vlan_info)
                    goto out;
            grp = &vlan_info->grp;
    
    Depends on when that RCU callback is scheduled, we could
    trigger a use-after-free in vlan_group_for_each_dev()
    right following this vlan_vid_del().
    
    Fix it by moving vlan_vid_del() before setting grp. This
    is also symmetric to the vlan_vid_add() we call in
    vlan_device_event().
    
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Fixes: efc73f4bbc23 ("net: Fix memory leak - vlan_info struct")
    Cc: Alexander Duyck <alexander.duyck@gmail.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Girish Moodalbail <girish.moodalbail@oracle.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Girish Moodalbail <girish.moodalbail@oracle.com>
    Tested-by: Fengguang Wu <fengguang.wu@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9314f5d54f2f0d8d5c0199ca5454a0c2072ce707
Author: Yuchung Cheng <ycheng@google.com>
Date:   Tue Nov 7 15:33:43 2017 -0800

    tcp: fix tcp_fastretrans_alert warning
    
    
    [ Upstream commit 0eb96bf754d7fa6635aa0b0f6650c74b8a6b1cc9 ]
    
    This patch fixes the cause of an WARNING indicatng TCP has pending
    retransmission in Open state in tcp_fastretrans_alert().
    
    The root cause is a bad interaction between path mtu probing,
    if enabled, and the RACK loss detection. Upong receiving a SACK
    above the sequence of the MTU probing packet, RACK could mark the
    probe packet lost in tcp_fastretrans_alert(), prior to calling
    tcp_simple_retransmit().
    
    tcp_simple_retransmit() only enters Loss state if it newly marks
    the probe packet lost. If the probe packet is already identified as
    lost by RACK, the sender remains in Open state with some packets
    marked lost and retransmitted. Then the next SACK would trigger
    the warning. The likely scenario is that the probe packet was
    lost due to its size or network congestion. The actual impact of
    this warning is small by potentially entering fast recovery an
    ACK later.
    
    The simple fix is always entering recovery (Loss) state if some
    packet is marked lost during path MTU probing.
    
    Fixes: a0370b3f3f2c ("tcp: enable RACK loss detection to trigger recovery")
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Reported-by: Alexei Starovoitov <alexei.starovoitov@gmail.com>
    Reported-by: Roman Gushchin <guro@fb.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Reviewed-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37999faa560aad28a18157b275570514401a75b9
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Nov 7 15:15:04 2017 -0800

    tcp: gso: avoid refcount_t warning from tcp_gso_segment()
    
    
    [ Upstream commit 7ec318feeed10a64c0359ec4d10889cb4defa39a ]
    
    When a GSO skb of truesize O is segmented into 2 new skbs of truesize N1
    and N2, we want to transfer socket ownership to the new fresh skbs.
    
    In order to avoid expensive atomic operations on a cache line subject to
    cache bouncing, we replace the sequence :
    
    refcount_add(N1, &sk->sk_wmem_alloc);
    refcount_add(N2, &sk->sk_wmem_alloc); // repeated by number of segments
    
    refcount_sub(O, &sk->sk_wmem_alloc);
    
    by a single
    
    refcount_add(sum_of(N) - O, &sk->sk_wmem_alloc);
    
    Problem is :
    
    In some pathological cases, sum(N) - O might be a negative number, and
    syzkaller bot was apparently able to trigger this trace [1]
    
    atomic_t was ok with this construct, but we need to take care of the
    negative delta with refcount_t
    
    [1]
    refcount_t: saturated; leaking memory.
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 8404 at lib/refcount.c:77 refcount_add_not_zero+0x198/0x200 lib/refcount.c:77
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 0 PID: 8404 Comm: syz-executor2 Not tainted 4.14.0-rc5-mm1+ #20
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     panic+0x1e4/0x41c kernel/panic.c:183
     __warn+0x1c4/0x1e0 kernel/panic.c:546
     report_bug+0x211/0x2d0 lib/bug.c:183
     fixup_bug+0x40/0x90 arch/x86/kernel/traps.c:177
     do_trap_no_signal arch/x86/kernel/traps.c:211 [inline]
     do_trap+0x260/0x390 arch/x86/kernel/traps.c:260
     do_error_trap+0x120/0x390 arch/x86/kernel/traps.c:297
     do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:310
     invalid_op+0x18/0x20 arch/x86/entry/entry_64.S:905
    RIP: 0010:refcount_add_not_zero+0x198/0x200 lib/refcount.c:77
    RSP: 0018:ffff8801c606e3a0 EFLAGS: 00010282
    RAX: 0000000000000026 RBX: 0000000000001401 RCX: 0000000000000000
    RDX: 0000000000000026 RSI: ffffc900036fc000 RDI: ffffed0038c0dc68
    RBP: ffff8801c606e430 R08: 0000000000000001 R09: 0000000000000000
    R10: ffff8801d97f5eba R11: 0000000000000000 R12: ffff8801d5acf73c
    R13: 1ffff10038c0dc75 R14: 00000000ffffffff R15: 00000000fffff72f
     refcount_add+0x1b/0x60 lib/refcount.c:101
     tcp_gso_segment+0x10d0/0x16b0 net/ipv4/tcp_offload.c:155
     tcp4_gso_segment+0xd4/0x310 net/ipv4/tcp_offload.c:51
     inet_gso_segment+0x60c/0x11c0 net/ipv4/af_inet.c:1271
     skb_mac_gso_segment+0x33f/0x660 net/core/dev.c:2749
     __skb_gso_segment+0x35f/0x7f0 net/core/dev.c:2821
     skb_gso_segment include/linux/netdevice.h:3971 [inline]
     validate_xmit_skb+0x4ba/0xb20 net/core/dev.c:3074
     __dev_queue_xmit+0xe49/0x2070 net/core/dev.c:3497
     dev_queue_xmit+0x17/0x20 net/core/dev.c:3538
     neigh_hh_output include/net/neighbour.h:471 [inline]
     neigh_output include/net/neighbour.h:479 [inline]
     ip_finish_output2+0xece/0x1460 net/ipv4/ip_output.c:229
     ip_finish_output+0x85e/0xd10 net/ipv4/ip_output.c:317
     NF_HOOK_COND include/linux/netfilter.h:238 [inline]
     ip_output+0x1cc/0x860 net/ipv4/ip_output.c:405
     dst_output include/net/dst.h:459 [inline]
     ip_local_out+0x95/0x160 net/ipv4/ip_output.c:124
     ip_queue_xmit+0x8c6/0x18e0 net/ipv4/ip_output.c:504
     tcp_transmit_skb+0x1ab7/0x3840 net/ipv4/tcp_output.c:1137
     tcp_write_xmit+0x663/0x4de0 net/ipv4/tcp_output.c:2341
     __tcp_push_pending_frames+0xa0/0x250 net/ipv4/tcp_output.c:2513
     tcp_push_pending_frames include/net/tcp.h:1722 [inline]
     tcp_data_snd_check net/ipv4/tcp_input.c:5050 [inline]
     tcp_rcv_established+0x8c7/0x18a0 net/ipv4/tcp_input.c:5497
     tcp_v4_do_rcv+0x2ab/0x7d0 net/ipv4/tcp_ipv4.c:1460
     sk_backlog_rcv include/net/sock.h:909 [inline]
     __release_sock+0x124/0x360 net/core/sock.c:2264
     release_sock+0xa4/0x2a0 net/core/sock.c:2776
     tcp_sendmsg+0x3a/0x50 net/ipv4/tcp.c:1462
     inet_sendmsg+0x11f/0x5e0 net/ipv4/af_inet.c:763
     sock_sendmsg_nosec net/socket.c:632 [inline]
     sock_sendmsg+0xca/0x110 net/socket.c:642
     ___sys_sendmsg+0x31c/0x890 net/socket.c:2048
     __sys_sendmmsg+0x1e6/0x5f0 net/socket.c:2138
    
    Fixes: 14afee4b6092 ("net: convert sock.sk_wmem_alloc from atomic_t to refcount_t")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f93b123370688313fb3624aa7cb3ebfc6019c24e
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Mon Nov 6 13:26:46 2017 +0100

    net: usb: asix: fill null-ptr-deref in asix_suspend
    
    
    [ Upstream commit 8f5624629105589bcc23d0e51cc01bd8103d09a5 ]
    
    When asix_suspend() is called dev->driver_priv might not have been
    assigned a value, so we need to check that it's not NULL.
    
    Similar issue is present in asix_resume(), this patch fixes it as well.
    
    Found by syzkaller.
    
    kasan: CONFIG_KASAN_INLINE enabled
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] PREEMPT SMP KASAN
    Modules linked in:
    CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 4.14.0-rc4-43422-geccacdd69a8c #400
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: usb_hub_wq hub_event
    task: ffff88006bb36300 task.stack: ffff88006bba8000
    RIP: 0010:asix_suspend+0x76/0xc0 drivers/net/usb/asix_devices.c:629
    RSP: 0018:ffff88006bbae718 EFLAGS: 00010202
    RAX: dffffc0000000000 RBX: ffff880061ba3b80 RCX: 1ffff1000c34d644
    RDX: 0000000000000001 RSI: 0000000000000402 RDI: 0000000000000008
    RBP: ffff88006bbae738 R08: 1ffff1000d775cad R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8800630a8b40
    R13: 0000000000000000 R14: 0000000000000402 R15: ffff880061ba3b80
    FS:  0000000000000000(0000) GS:ffff88006c600000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007ff33cf89000 CR3: 0000000061c0a000 CR4: 00000000000006f0
    Call Trace:
     usb_suspend_interface drivers/usb/core/driver.c:1209
     usb_suspend_both+0x27f/0x7e0 drivers/usb/core/driver.c:1314
     usb_runtime_suspend+0x41/0x120 drivers/usb/core/driver.c:1852
     __rpm_callback+0x339/0xb60 drivers/base/power/runtime.c:334
     rpm_callback+0x106/0x220 drivers/base/power/runtime.c:461
     rpm_suspend+0x465/0x1980 drivers/base/power/runtime.c:596
     __pm_runtime_suspend+0x11e/0x230 drivers/base/power/runtime.c:1009
     pm_runtime_put_sync_autosuspend ./include/linux/pm_runtime.h:251
     usb_new_device+0xa37/0x1020 drivers/usb/core/hub.c:2487
     hub_port_connect drivers/usb/core/hub.c:4903
     hub_port_connect_change drivers/usb/core/hub.c:5009
     port_event drivers/usb/core/hub.c:5115
     hub_event+0x194d/0x3740 drivers/usb/core/hub.c:5195
     process_one_work+0xc7f/0x1db0 kernel/workqueue.c:2119
     worker_thread+0x221/0x1850 kernel/workqueue.c:2253
     kthread+0x3a1/0x470 kernel/kthread.c:231
     ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431
    Code: 8d 7c 24 20 48 89 fa 48 c1 ea 03 80 3c 02 00 75 5b 48 b8 00 00
    00 00 00 fc ff df 4d 8b 6c 24 20 49 8d 7d 08 48 89 fa 48 c1 ea 03 <80>
    3c 02 00 75 34 4d 8b 6d 08 4d 85 ed 74 0b e8 26 2b 51 fd 4c
    RIP: asix_suspend+0x76/0xc0 RSP: ffff88006bbae718
    ---[ end trace dfc4f5649284342c ]---
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5dde5a4faa32778e29367dfec9f57f8576589853
Author: Kristian Evensen <kristian.evensen@gmail.com>
Date:   Tue Nov 7 13:47:56 2017 +0100

    qmi_wwan: Add missing skb_reset_mac_header-call
    
    
    [ Upstream commit 0de0add10e587effa880c741c9413c874f16be91 ]
    
    When we receive a packet on a QMI device in raw IP mode, we should call
    skb_reset_mac_header() to ensure that skb->mac_header contains a valid
    offset in the packet. While it shouldn't really matter, the packets have
    no MAC header and the interface is configured as-such, it seems certain
    parts of the network stack expects a "good" value in skb->mac_header.
    
    Without the skb_reset_mac_header() call added in this patch, for example
    shaping traffic (using tc) triggers the following oops on the first
    received packet:
    
    [  303.642957] skbuff: skb_under_panic: text:8f137918 len:177 put:67 head:8e4b0f00 data:8e4b0eff tail:0x8e4b0fb0 end:0x8e4b1520 dev:wwan0
    [  303.655045] Kernel bug detected[#1]:
    [  303.658622] CPU: 1 PID: 1002 Comm: logd Not tainted 4.9.58 #0
    [  303.664339] task: 8fdf05e0 task.stack: 8f15c000
    [  303.668844] $ 0   : 00000000 00000001 0000007a 00000000
    [  303.674062] $ 4   : 8149a2fc 8149a2fc 8149ce20 00000000
    [  303.679284] $ 8   : 00000030 3878303a 31623465 20303235
    [  303.684510] $12   : ded731e3 2626a277 00000000 03bd0000
    [  303.689747] $16   : 8ef62b40 00000043 8f137918 804db5fc
    [  303.694978] $20   : 00000001 00000004 8fc13800 00000003
    [  303.700215] $24   : 00000001 8024ab10
    [  303.705442] $28   : 8f15c000 8fc19cf0 00000043 802cc920
    [  303.710664] Hi    : 00000000
    [  303.713533] Lo    : 74e58000
    [  303.716436] epc   : 802cc920 skb_panic+0x58/0x5c
    [  303.721046] ra    : 802cc920 skb_panic+0x58/0x5c
    [  303.725639] Status: 11007c03 KERNEL EXL IE
    [  303.729823] Cause : 50800024 (ExcCode 09)
    [  303.733817] PrId  : 0001992f (MIPS 1004Kc)
    [  303.737892] Modules linked in: rt2800pci rt2800mmio rt2800lib qcserial ppp_async option usb_wwan rt2x00pci rt2x00mmio rt2x00lib rndis_host qmi_wwan ppp_generic nf_nat_pptp nf_conntrack_pptp nf_conntrack_ipv6 mt76x2i
    Process logd (pid: 1002, threadinfo=8f15c000, task=8fdf05e0, tls=77b3eee4)
    [  303.962509] Stack : 00000000 80408990 8f137918 000000b1 00000043 8e4b0f00 8e4b0eff 8e4b0fb0
    [  303.970871]         8e4b1520 8fec1800 00000043 802cd2a4 6e000045 00000043 00000000 8ef62000
    [  303.979219]         8eef5d00 8ef62b40 8fea7300 8f137918 00000000 00000000 0002bb01 793e5664
    [  303.987568]         8ef08884 00000001 8fea7300 00000002 8fc19e80 8eef5d00 00000006 00000003
    [  303.995934]         00000000 8030ba90 00000003 77ab3fd0 8149dc80 8004d1bc 8f15c000 8f383700
    [  304.004324]         ...
    [  304.006767] Call Trace:
    [  304.009241] [<802cc920>] skb_panic+0x58/0x5c
    [  304.013504] [<802cd2a4>] skb_push+0x78/0x90
    [  304.017783] [<8f137918>] 0x8f137918
    [  304.021269] Code: 00602825  0c02a3b4  24842888 <000c000d> 8c870060  8c8200a0  0007382b  00070336  8c88005c
    [  304.031034]
    [  304.032805] ---[ end trace b778c482b3f0bda9 ]---
    [  304.041384] Kernel panic - not syncing: Fatal exception in interrupt
    [  304.051975] Rebooting in 3 seconds..
    
    While the oops is for a 4.9-kernel, I was able to trigger the same oops with
    net-next as of yesterday.
    
    Fixes: 32f7adf633b9 ("net: qmi_wwan: support "raw IP" mode")
    Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com>
    Acked-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcf3cdb7b7603b7b09c1beb7bccf227e64b0f07f
Author: Bjørn Mork <bjorn@mork.no>
Date:   Mon Nov 6 15:32:18 2017 +0100

    net: qmi_wwan: fix divide by 0 on bad descriptors
    
    
    [ Upstream commit 7fd078337201cf7468f53c3d9ef81ff78cb6df3b ]
    
    A CDC Ethernet functional descriptor with wMaxSegmentSize = 0 will
    cause a divide error in usbnet_probe:
    
    divide error: 0000 [#1] PREEMPT SMP KASAN
    Modules linked in:
    CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 4.14.0-rc8-44453-g1fdc1a82c34f #56
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: usb_hub_wq hub_event
    task: ffff88006bef5c00 task.stack: ffff88006bf60000
    RIP: 0010:usbnet_update_max_qlen+0x24d/0x390 drivers/net/usb/usbnet.c:355
    RSP: 0018:ffff88006bf67508 EFLAGS: 00010246
    RAX: 00000000000163c8 RBX: ffff8800621fce40 RCX: ffff8800621fcf34
    RDX: 0000000000000000 RSI: ffffffff837ecb7a RDI: ffff8800621fcf34
    RBP: ffff88006bf67520 R08: ffff88006bef5c00 R09: ffffed000c43f881
    R10: ffffed000c43f880 R11: ffff8800621fc406 R12: 0000000000000003
    R13: ffffffff85c71de0 R14: 0000000000000000 R15: 0000000000000000
    FS:  0000000000000000(0000) GS:ffff88006ca00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007ffe9c0d6dac CR3: 00000000614f4000 CR4: 00000000000006f0
    Call Trace:
     usbnet_probe+0x18b5/0x2790 drivers/net/usb/usbnet.c:1783
     qmi_wwan_probe+0x133/0x220 drivers/net/usb/qmi_wwan.c:1338
     usb_probe_interface+0x324/0x940 drivers/usb/core/driver.c:361
     really_probe drivers/base/dd.c:413
     driver_probe_device+0x522/0x740 drivers/base/dd.c:557
    
    Fix by simply ignoring the bogus descriptor, as it is optional
    for QMI devices anyway.
    
    Fixes: 423ce8caab7e ("net: usb: qmi_wwan: New driver for Huawei QMI based WWAN devices")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f99427bc5d83e5c8546560c006effa91592cfcc4
Author: Bjørn Mork <bjorn@mork.no>
Date:   Mon Nov 6 15:37:22 2017 +0100

    net: cdc_ether: fix divide by 0 on bad descriptors
    
    
    [ Upstream commit 2cb80187ba065d7decad7c6614e35e07aec8a974 ]
    
    Setting dev->hard_mtu to 0 will cause a divide error in
    usbnet_probe. Protect against devices with bogus CDC Ethernet
    functional descriptors by ignoring a zero wMaxSegmentSize.
    
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efe3058c6214b29016a93d59bde0955d3bfc3291
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Mon Nov 6 09:01:57 2017 +0800

    bonding: discard lowest hash bit for 802.3ad layer3+4
    
    
    [ Upstream commit b5f862180d7011d9575d0499fa37f0f25b423b12 ]
    
    After commit 07f4c90062f8 ("tcp/dccp: try to not exhaust ip_local_port_range
    in connect()"), we will try to use even ports for connect(). Then if an
    application (seen clearly with iperf) opens multiple streams to the same
    destination IP and port, each stream will be given an even source port.
    
    So the bonding driver's simple xmit_hash_policy based on layer3+4 addressing
    will always hash all these streams to the same interface. And the total
    throughput will limited to a single slave.
    
    Change the tcp code will impact the whole tcp behavior, only for bonding
    usage. Paolo Abeni suggested fix this by changing the bonding code only,
    which should be more reasonable, and less impact.
    
    Fix this by discarding the lowest hash bit because it contains little entropy.
    After the fix we can re-balance between slaves.
    
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32cfb30c6d6cb3a90846ed9190e6841222afce80
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Fri Nov 3 16:49:00 2017 +0100

    l2tp: don't use l2tp_tunnel_find() in l2tp_ip and l2tp_ip6
    
    
    [ Upstream commit 8f7dc9ae4a7aece9fbc3e6637bdfa38b36bcdf09 ]
    
    Using l2tp_tunnel_find() in l2tp_ip_recv() is wrong for two reasons:
    
      * It doesn't take a reference on the returned tunnel, which makes the
        call racy wrt. concurrent tunnel deletion.
    
      * The lookup is only based on the tunnel identifier, so it can return
        a tunnel that doesn't match the packet's addresses or protocol.
    
    For example, a packet sent to an L2TPv3 over IPv6 tunnel can be
    delivered to an L2TPv2 over UDPv4 tunnel. This is worse than a simple
    cross-talk: when delivering the packet to an L2TP over UDP tunnel, the
    corresponding socket is UDP, where ->sk_backlog_rcv() is NULL. Calling
    sk_receive_skb() will then crash the kernel by trying to execute this
    callback.
    
    And l2tp_tunnel_find() isn't even needed here. __l2tp_ip_bind_lookup()
    properly checks the socket binding and connection settings. It was used
    as a fallback mechanism for finding tunnels that didn't have their data
    path registered yet. But it's not limited to this case and can be used
    to replace l2tp_tunnel_find() in the general case.
    
    Fix l2tp_ip6 in the same way.
    
    Fixes: 0d76751fad77 ("l2tp: Add L2TPv3 IP encapsulation (no UDP) support")
    Fixes: a32e0eec7042 ("l2tp: introduce L2TPv3 IP encapsulation support for IPv6")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbd3bd9e117cd37b8a75cca08ff4c00d70a73581
Author: Ye Yin <hustcat@gmail.com>
Date:   Thu Oct 26 16:57:05 2017 +0800

    netfilter/ipvs: clear ipvs_property flag when SKB net namespace changed
    
    
    [ Upstream commit 2b5ec1a5f9738ee7bf8f5ec0526e75e00362c48f ]
    
    When run ipvs in two different network namespace at the same host, and one
    ipvs transport network traffic to the other network namespace ipvs.
    'ipvs_property' flag will make the second ipvs take no effect. So we should
    clear 'ipvs_property' when SKB network namespace changed.
    
    Fixes: 621e84d6f373 ("dev: introduce skb_scrub_packet()")
    Signed-off-by: Ye Yin <hustcat@gmail.com>
    Signed-off-by: Wei Zhou <chouryzhou@gmail.com>
    Signed-off-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Simon Horman <horms@verge.net.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb56542e998c10276df827443ea81ff19c3abb4f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Nov 2 16:08:40 2017 -0700

    net: systemport: Correct IPG length settings
    
    
    [ Upstream commit 93824c80bf47ebe087414b3a40ca0ff9aab7d1fb ]
    
    Due to a documentation mistake, the IPG length was set to 0x12 while it
    should have been 12 (decimal). This would affect short packet (64B
    typically) performance since the IPG was bigger than necessary.
    
    Fixes: 44a4524c54af ("net: systemport: Add support for SYSTEMPORT Lite")
    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 a488ab57b7ff6886ddd77d601ea8f6bd11d21748
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Nov 2 12:30:25 2017 -0700

    tcp: do not mangle skb->cb[] in tcp_make_synack()
    
    
    [ Upstream commit 3b11775033dc87c3d161996c54507b15ba26414a ]
    
    Christoph Paasch sent a patch to address the following issue :
    
    tcp_make_synack() is leaving some TCP private info in skb->cb[],
    then send the packet by other means than tcp_transmit_skb()
    
    tcp_transmit_skb() makes sure to clear skb->cb[] to not confuse
    IPv4/IPV6 stacks, but we have no such cleanup for SYNACK.
    
    tcp_make_synack() should not use tcp_init_nondata_skb() :
    
    tcp_init_nondata_skb() really should be limited to skbs put in write/rtx
    queues (the ones that are only sent via tcp_transmit_skb())
    
    This patch fixes the issue and should even save few cpu cycles ;)
    
    Fixes: 971f10eca186 ("tcp: better TCP_SKB_CB layout to reduce cache line misses")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Christoph Paasch <cpaasch@apple.com>
    Reviewed-by: Christoph Paasch <cpaasch@apple.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fc1f1ac43518c7eba814d69698f6e04e9530539
Author: Jeff Barnhill <0xeffeff@gmail.com>
Date:   Wed Nov 1 14:58:09 2017 +0000

    net: vrf: correct FRA_L3MDEV encode type
    
    
    [ Upstream commit 18129a24983906eaf2a2d448ce4b83e27091ebe2 ]
    
    FRA_L3MDEV is defined as U8, but is being added as a U32 attribute. On
    big endian architecture, this results in the l3mdev entry not being
    added to the FIB rules.
    
    Fixes: 1aa6c4f6b8cd8 ("net: vrf: Add l3mdev rules on first device create")
    Signed-off-by: Jeff Barnhill <0xeffeff@gmail.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fda29ee84637310f3eab1d867062388015afd122
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Nov 1 16:32:15 2017 +0300

    tcp_nv: fix division by zero in tcpnv_acked()
    
    
    [ Upstream commit 4eebff27ca4182bbf5f039dd60d79e2d7c0a707e ]
    
    Average RTT could become zero. This happened in real life at least twice.
    This patch treats zero as 1us.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Acked-by: Lawrence Brakmo <Brakmo@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>