commit e831353e20d7fdac43120c408cfc21b420b8460a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Aug 11 09:30:35 2017 -0700

    Linux 3.18.64

commit 06114f074b92f87eeaf12e2560362a2105a1d5b3
Author: Tejun Heo <tj@kernel.org>
Date:   Sun Jul 23 08:36:15 2017 -0400

    workqueue: implicit ordered attribute should be overridable
    
    commit 0a94efb5acbb6980d7c9ab604372d93cd507e4d8 upstream.
    
    5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be
    ordered") automatically enabled ordered attribute for unbound
    workqueues w/ max_active == 1.  Because ordered workqueues reject
    max_active and some attribute changes, this implicit ordered mode
    broke cases where the user creates an unbound workqueue w/ max_active
    == 1 and later explicitly changes the related attributes.
    
    This patch distinguishes explicit and implicit ordered setting and
    overrides from attribute changes if implict.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 5c0338c68706 ("workqueue: restore WQ_UNBOUND/max_active==1 to be ordered")
    Cc: Holger Hoffstätte <holger@applied-asynchrony.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6ed9325bc181b47c65928bc746099ededb8a255
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Feb 17 16:07:33 2017 -0800

    net: phy: Fix PHY unbind crash
    
    commit 7b9a88a390dacb37b051a7b09b9a08f546edf5eb upstream.
    
    The PHY library does not deal very well with bind and unbind events. The first
    thing we would see is that we were not properly canceling the PHY state machine
    workqueue, so we would be crashing while dereferencing phydev->drv since there
    is no driver attached anymore.
    
    Suggested-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1d536a0075f33cf1ca53ccf34b2e01934a3e843
Author: zheng li <james.z.li@ericsson.com>
Date:   Mon Dec 12 09:56:05 2016 +0800

    ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output
    
    
    [ Upstream commit 0a28cfd51e17f4f0a056bcf66bfbe492c3b99f38 ]
    
    There is an inconsistent conditional judgement in __ip_append_data and
    ip_finish_output functions, the variable length in __ip_append_data just
    include the length of application's payload and udp header, don't include
    the length of ip header, but in ip_finish_output use
    (skb->len > ip_skb_dst_mtu(skb)) as judgement, and skb->len include the
    length of ip header.
    
    That causes some particular application's udp payload whose length is
    between (MTU - IP Header) and MTU were fragmented by ip_fragment even
    though the rst->dev support UFO feature.
    
    Add the length of ip header to length in __ip_append_data to keep
    consistent conditional judgement as ip_finish_output for ip fragment.
    
    Signed-off-by: Zheng Li <james.z.li@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bb90b72c25c3229334afb2166209f02617a2bbb
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Tue Jan 10 16:58:00 2017 -0800

    mm: don't dereference struct page fields of invalid pages
    
    
    [ Upstream commit f073bdc51771f5a5c7a8d1191bfc3ae371d44de7 ]
    
    The VM_BUG_ON() check in move_freepages() checks whether the node id of
    a page matches the node id of its zone.  However, it does this before
    having checked whether the struct page pointer refers to a valid struct
    page to begin with.  This is guaranteed in most cases, but may not be
    the case if CONFIG_HOLES_IN_ZONE=y.
    
    So reorder the VM_BUG_ON() with the pfn_valid_within() check.
    
    Link: http://lkml.kernel.org/r/1481706707-6211-2-git-send-email-ard.biesheuvel@linaro.org
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Hanjun Guo <hanjun.guo@linaro.org>
    Cc: Yisheng Xie <xieyisheng1@huawei.com>
    Cc: Robert Richter <rrichter@cavium.com>
    Cc: James Morse <james.morse@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c398f3bb3ebaf25c149e12790a913d83b6d861b3
Author: Jamie Iles <jamie.iles@oracle.com>
Date:   Tue Jan 10 16:57:54 2017 -0800

    signal: protect SIGNAL_UNKILLABLE from unintentional clearing.
    
    
    [ Upstream commit 2d39b3cd34e6d323720d4c61bd714f5ae202c022 ]
    
    Since commit 00cd5c37afd5 ("ptrace: permit ptracing of /sbin/init") we
    can now trace init processes.  init is initially protected with
    SIGNAL_UNKILLABLE which will prevent fatal signals such as SIGSTOP, but
    there are a number of paths during tracing where SIGNAL_UNKILLABLE can
    be implicitly cleared.
    
    This can result in init becoming stoppable/killable after tracing.  For
    example, running:
    
      while true; do kill -STOP 1; done &
      strace -p 1
    
    and then stopping strace and the kill loop will result in init being
    left in state TASK_STOPPED.  Sending SIGCONT to init will resume it, but
    init will now respond to future SIGSTOP signals rather than ignoring
    them.
    
    Make sure that when setting SIGNAL_STOP_CONTINUED/SIGNAL_STOP_STOPPED
    that we don't clear SIGNAL_UNKILLABLE.
    
    Link: http://lkml.kernel.org/r/20170104122017.25047-1-jamie.iles@oracle.com
    Signed-off-by: Jamie Iles <jamie.iles@oracle.com>
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8535838e166ee6a66032d6ed3c68ea4bcad44ba
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Tue Jan 10 16:57:45 2017 -0800

    lib/Kconfig.debug: fix frv build failure
    
    
    [ Upstream commit da0510c47519fe0999cffe316e1d370e29f952be ]
    
    The build of frv allmodconfig was failing with the errors like:
    
      /tmp/cc0JSPc3.s: Assembler messages:
      /tmp/cc0JSPc3.s:1839: Error: symbol `.LSLT0' is already defined
      /tmp/cc0JSPc3.s:1842: Error: symbol `.LASLTP0' is already defined
      /tmp/cc0JSPc3.s:1969: Error: symbol `.LELTP0' is already defined
      /tmp/cc0JSPc3.s:1970: Error: symbol `.LELT0' is already defined
    
    Commit 866ced950bcd ("kbuild: Support split debug info v4") introduced
    splitting the debug info and keeping that in a separate file.  Somehow,
    the frv-linux gcc did not like that and I am guessing that instead of
    splitting it started copying.  The first report about this is at:
    
      https://lists.01.org/pipermail/kbuild-all/2015-July/010527.html.
    
    I will try and see if this can work with frv and if still fails I will
    open a bug report with gcc.  But meanwhile this is the easiest option to
    solve build failure of frv.
    
    Fixes: 866ced950bcd ("kbuild: Support split debug info v4")
    Link: http://lkml.kernel.org/r/1482062348-5352-1-git-send-email-sudipm.mukherjee@gmail.com
    Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Reported-by: Fengguang Wu <fengguang.wu@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Howells <dhowells@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b54ffff7508ba1dacf6d400d781e898d72b6c62e
Author: Michal Hocko <mhocko@suse.com>
Date:   Tue Jan 10 16:57:27 2017 -0800

    mm, slab: make sure that KMALLOC_MAX_SIZE will fit into MAX_ORDER
    
    
    [ Upstream commit bb1107f7c6052c863692a41f78c000db792334bf ]
    
    Andrey Konovalov has reported the following warning triggered by the
    syzkaller fuzzer.
    
      WARNING: CPU: 1 PID: 9935 at mm/page_alloc.c:3511 __alloc_pages_nodemask+0x159c/0x1e20
      Kernel panic - not syncing: panic_on_warn set ...
      CPU: 1 PID: 9935 Comm: syz-executor0 Not tainted 4.9.0-rc7+ #34
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      Call Trace:
        __alloc_pages_slowpath mm/page_alloc.c:3511
        __alloc_pages_nodemask+0x159c/0x1e20 mm/page_alloc.c:3781
        alloc_pages_current+0x1c7/0x6b0 mm/mempolicy.c:2072
        alloc_pages include/linux/gfp.h:469
        kmalloc_order+0x1f/0x70 mm/slab_common.c:1015
        kmalloc_order_trace+0x1f/0x160 mm/slab_common.c:1026
        kmalloc_large include/linux/slab.h:422
        __kmalloc+0x210/0x2d0 mm/slub.c:3723
        kmalloc include/linux/slab.h:495
        ep_write_iter+0x167/0xb50 drivers/usb/gadget/legacy/inode.c:664
        new_sync_write fs/read_write.c:499
        __vfs_write+0x483/0x760 fs/read_write.c:512
        vfs_write+0x170/0x4e0 fs/read_write.c:560
        SYSC_write fs/read_write.c:607
        SyS_write+0xfb/0x230 fs/read_write.c:599
        entry_SYSCALL_64_fastpath+0x1f/0xc2
    
    The issue is caused by a lack of size check for the request size in
    ep_write_iter which should be fixed.  It, however, points to another
    problem, that SLUB defines KMALLOC_MAX_SIZE too large because the its
    KMALLOC_SHIFT_MAX is (MAX_ORDER + PAGE_SHIFT) which means that the
    resulting page allocator request might be MAX_ORDER which is too large
    (see __alloc_pages_slowpath).
    
    The same applies to the SLOB allocator which allows even larger sizes.
    Make sure that they are capped properly and never request more than
    MAX_ORDER order.
    
    Link: http://lkml.kernel.org/r/20161220130659.16461-2-mhocko@kernel.org
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Christoph Lameter <cl@linux.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aceb1a8af248b1e9941d77ce1082309064fac046
Author: Rabin Vincent <rabinv@axis.com>
Date:   Wed Nov 23 13:02:32 2016 +0100

    ARM: 8632/1: ftrace: fix syscall name matching
    
    
    [ Upstream commit 270c8cf1cacc69cb8d99dea812f06067a45e4609 ]
    
    ARM has a few system calls (most notably mmap) for which the names of
    the functions which are referenced in the syscall table do not match the
    names of the syscall tracepoints.  As a consequence of this, these
    tracepoints are not made available.  Implement
    arch_syscall_match_sym_name to fix this and allow tracing even these
    system calls.
    
    Signed-off-by: Rabin Vincent <rabinv@axis.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc07fc6cb1a6738d663a55bf93d9e26ad394f692
Author: Milan P. Gandhi <mgandhi@redhat.com>
Date:   Sat Dec 24 22:02:46 2016 +0530

    scsi: qla2xxx: Get mutex lock before checking optrom_state
    
    
    [ Upstream commit c7702b8c22712a06080e10f1d2dee1a133ec8809 ]
    
    There is a race condition with qla2xxx optrom functions where one thread
    might modify optrom buffer, optrom_state while other thread is still
    reading from it.
    
    In couple of crashes, it was found that we had successfully passed the
    following 'if' check where we confirm optrom_state to be
    QLA_SREADING. But by the time we acquired mutex lock to proceed with
    memory_read_from_buffer function, some other thread/process had already
    modified that option rom buffer and optrom_state from QLA_SREADING to
    QLA_SWAITING. Then we got ha->optrom_buffer 0x0 and crashed the system:
    
            if (ha->optrom_state != QLA_SREADING)
                    return 0;
    
            mutex_lock(&ha->optrom_mutex);
            rval = memory_read_from_buffer(buf, count, &off, ha->optrom_buffer,
                ha->optrom_region_size);
            mutex_unlock(&ha->optrom_mutex);
    
    With current optrom function we get following crash due to a race
    condition:
    
    [ 1479.466679] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [ 1479.466707] IP: [<ffffffff81326756>] memcpy+0x6/0x110
    [...]
    [ 1479.473673] Call Trace:
    [ 1479.474296]  [<ffffffff81225cbc>] ? memory_read_from_buffer+0x3c/0x60
    [ 1479.474941]  [<ffffffffa01574dc>] qla2x00_sysfs_read_optrom+0x9c/0xc0 [qla2xxx]
    [ 1479.475571]  [<ffffffff8127e76b>] read+0xdb/0x1f0
    [ 1479.476206]  [<ffffffff811fdf9e>] vfs_read+0x9e/0x170
    [ 1479.476839]  [<ffffffff811feb6f>] SyS_read+0x7f/0xe0
    [ 1479.477466]  [<ffffffff816964c9>] system_call_fastpath+0x16/0x1b
    
    Below patch modifies qla2x00_sysfs_read_optrom,
    qla2x00_sysfs_write_optrom functions to get the mutex_lock before
    checking ha->optrom_state to avoid similar crashes.
    
    The patch was applied and tested and same crashes were no longer
    observed again.
    
    Tested-by: Milan P. Gandhi <mgandhi@redhat.com>
    Signed-off-by: Milan P. Gandhi <mgandhi@redhat.com>
    Reviewed-by: Laurence Oberman <loberman@redhat.com>
    Acked-by: Himanshu Madhani <himanshu.madhani@cavium.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aff24165ba49f42332012661a6b2c040f2404c60
Author: Nicholas Mc Guire <hofrat@osadl.org>
Date:   Sat Jan 7 10:38:31 2017 +0100

    x86/boot: Add missing declaration of string functions
    
    
    [ Upstream commit fac69d0efad08fc15e4dbfc116830782acc0dc9a ]
    
    Add the missing declarations of basic string functions to string.h to allow
    a clean build.
    
    Fixes: 5be865661516 ("String-handling functions for the new x86 setup code.")
    Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
    Link: http://lkml.kernel.org/r/1483781911-21399-1-git-send-email-hofrat@osadl.org
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80334372c59660b41e7526070fef5261fad4c28c
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Fri Jan 6 16:18:53 2017 -0500

    tg3: Fix race condition in tg3_get_stats64().
    
    
    [ Upstream commit f5992b72ebe0dde488fa8f706b887194020c66fc ]
    
    The driver's ndo_get_stats64() method is not always called under RTNL.
    So it can race with driver close or ethtool reconfigurations.  Fix the
    race condition by taking tp->lock spinlock in tg3_free_consistent()
    when freeing the tp->hw_stats memory block.  tg3_get_stats64() is
    already taking tp->lock.
    
    Reported-by: Wang Yufen <wangyufen@huawei.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 032067e2588b7c15ac0fe084fd498b238cb18e76
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Thu Jan 5 00:29:32 2017 +0300

    sh_eth: R8A7740 supports packet shecksumming
    
    
    [ Upstream commit 0f1f9cbc04dbb3cc310f70a11cba0cf1f2109d9c ]
    
    The R8A7740 GEther controller supports the packet checksum offloading
    but the 'hw_crc' (bad name, I'll fix it) flag isn't set in the R8A7740
    data,  thus CSMR isn't cleared...
    
    Fixes: 73a0d907301e ("net: sh_eth: add support R8A7740")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2418e8ba0b1354c6dec76950767767194f55266
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jan 11 15:35:25 2017 +0100

    wext: handle NULL extra data in iwe_stream_add_point better
    
    commit 93be2b74279c15c2844684b1a027fdc71dd5d9bf upstream.
    
    gcc-7 complains that wl3501_cs passes NULL into a function that
    then uses the argument as the input for memcpy:
    
    drivers/net/wireless/wl3501_cs.c: In function 'wl3501_get_scan':
    include/net/iw_handler.h:559:3: error: argument 2 null where non-null expected [-Werror=nonnull]
       memcpy(stream + point_len, extra, iwe->u.data.length);
    
    This works fine here because iwe->u.data.length is guaranteed to be 0
    and the memcpy doesn't actually have an effect.
    
    Making the length check explicit avoids the warning and should have
    no other effect here.
    
    Also check the pointer itself, since otherwise we get warnings
    elsewhere in the code.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e8bb8743b54571048868d889d81926425b2df181
Author: Wei Liu <wei.liu2@citrix.com>
Date:   Wed Jun 21 10:21:22 2017 +0100

    xen-netback: correctly schedule rate-limited queues
    
    
    [ Upstream commit dfa523ae9f2542bee4cddaea37b3be3e157f6e6b ]
    
    Add a flag to indicate if a queue is rate-limited. Test the flag in
    NAPI poll handler and avoid rescheduling the queue if true, otherwise
    we risk locking up the host. The rescheduling will be done in the
    timer callback function.
    
    Reported-by: Jean-Louis Dupond <jean-louis@dupond.be>
    Signed-off-by: Wei Liu <wei.liu2@citrix.com>
    Tested-by: Jean-Louis Dupond <jean-louis@dupond.be>
    Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d03994ea7de32f90078da705425d49d901dfaa5c
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Fri Jul 28 11:58:36 2017 -0700

    net: phy: Correctly process PHY_HALTED in phy_stop_machine()
    
    
    [ Upstream commit 7ad813f208533cebfcc32d3d7474dc1677d1b09a ]
    
    Marc reported that he was not getting the PHY library adjust_link()
    callback function to run when calling phy_stop() + phy_disconnect()
    which does not indeed happen because we set the state machine to
    PHY_HALTED but we don't get to run it to process this state past that
    point.
    
    Fix this with a synchronous call to phy_state_machine() in order to have
    the state machine actually act on PHY_HALTED, set the PHY device's link
    down, turn the network device's carrier off and finally call the
    adjust_link() function.
    
    Reported-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
    Fixes: a390d1f379cf ("phylib: convert state_queue work to delayed_work")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b34c67e42f4ef6b10658f43aa37ebe448ccd8ab
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Jul 26 16:24:59 2017 +0800

    sctp: fix the check for _sctp_walk_params and _sctp_walk_errors
    
    
    [ Upstream commit 6b84202c946cd3da3a8daa92c682510e9ed80321 ]
    
    Commit b1f5bfc27a19 ("sctp: don't dereference ptr before leaving
    _sctp_walk_{params, errors}()") tried to fix the issue that it
    may overstep the chunk end for _sctp_walk_{params, errors} with
    'chunk_end > offset(length) + sizeof(length)'.
    
    But it introduced a side effect: When processing INIT, it verifies
    the chunks with 'param.v == chunk_end' after iterating all params
    by sctp_walk_params(). With the check 'chunk_end > offset(length)
    + sizeof(length)', it would return when the last param is not yet
    accessed. Because the last param usually is fwdtsn supported param
    whose size is 4 and 'chunk_end == offset(length) + sizeof(length)'
    
    This is a badly issue even causing sctp couldn't process 4-shakes.
    Client would always get abort when connecting to server, due to
    the failure of INIT chunk verification on server.
    
    The patch is to use 'chunk_end <= offset(length) + sizeof(length)'
    instead of 'chunk_end < offset(length) + sizeof(length)' for both
    _sctp_walk_params and _sctp_walk_errors.
    
    Fixes: b1f5bfc27a19 ("sctp: don't dereference ptr before leaving _sctp_walk_{params, errors}()")
    Signed-off-by: Xin Long <lucien.xin@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 6f1b77b21fd5fb90c47a3603c2b5992c62ac7449
Author: Alexander Potapenko <glider@google.com>
Date:   Fri Jul 14 18:32:45 2017 +0200

    sctp: don't dereference ptr before leaving _sctp_walk_{params, errors}()
    
    
    [ Upstream commit b1f5bfc27a19f214006b9b4db7b9126df2dfdf5a ]
    
    If the length field of the iterator (|pos.p| or |err|) is past the end
    of the chunk, we shouldn't access it.
    
    This bug has been detected by KMSAN. For the following pair of system
    calls:
    
      socket(PF_INET6, SOCK_STREAM, 0x84 /* IPPROTO_??? */) = 3
      sendto(3, "A", 1, MSG_OOB, {sa_family=AF_INET6, sin6_port=htons(0),
             inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0,
             sin6_scope_id=0}, 28) = 1
    
    the tool has reported a use of uninitialized memory:
    
      ==================================================================
      BUG: KMSAN: use of uninitialized memory in sctp_rcv+0x17b8/0x43b0
      CPU: 1 PID: 2940 Comm: probe Not tainted 4.11.0-rc5+ #2926
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
      01/01/2011
      Call Trace:
       <IRQ>
       __dump_stack lib/dump_stack.c:16
       dump_stack+0x172/0x1c0 lib/dump_stack.c:52
       kmsan_report+0x12a/0x180 mm/kmsan/kmsan.c:927
       __msan_warning_32+0x61/0xb0 mm/kmsan/kmsan_instr.c:469
       __sctp_rcv_init_lookup net/sctp/input.c:1074
       __sctp_rcv_lookup_harder net/sctp/input.c:1233
       __sctp_rcv_lookup net/sctp/input.c:1255
       sctp_rcv+0x17b8/0x43b0 net/sctp/input.c:170
       sctp6_rcv+0x32/0x70 net/sctp/ipv6.c:984
       ip6_input_finish+0x82f/0x1ee0 net/ipv6/ip6_input.c:279
       NF_HOOK ./include/linux/netfilter.h:257
       ip6_input+0x239/0x290 net/ipv6/ip6_input.c:322
       dst_input ./include/net/dst.h:492
       ip6_rcv_finish net/ipv6/ip6_input.c:69
       NF_HOOK ./include/linux/netfilter.h:257
       ipv6_rcv+0x1dbd/0x22e0 net/ipv6/ip6_input.c:203
       __netif_receive_skb_core+0x2f6f/0x3a20 net/core/dev.c:4208
       __netif_receive_skb net/core/dev.c:4246
       process_backlog+0x667/0xba0 net/core/dev.c:4866
       napi_poll net/core/dev.c:5268
       net_rx_action+0xc95/0x1590 net/core/dev.c:5333
       __do_softirq+0x485/0x942 kernel/softirq.c:284
       do_softirq_own_stack+0x1c/0x30 arch/x86/entry/entry_64.S:902
       </IRQ>
       do_softirq kernel/softirq.c:328
       __local_bh_enable_ip+0x25b/0x290 kernel/softirq.c:181
       local_bh_enable+0x37/0x40 ./include/linux/bottom_half.h:31
       rcu_read_unlock_bh ./include/linux/rcupdate.h:931
       ip6_finish_output2+0x19b2/0x1cf0 net/ipv6/ip6_output.c:124
       ip6_finish_output+0x764/0x970 net/ipv6/ip6_output.c:149
       NF_HOOK_COND ./include/linux/netfilter.h:246
       ip6_output+0x456/0x520 net/ipv6/ip6_output.c:163
       dst_output ./include/net/dst.h:486
       NF_HOOK ./include/linux/netfilter.h:257
       ip6_xmit+0x1841/0x1c00 net/ipv6/ip6_output.c:261
       sctp_v6_xmit+0x3b7/0x470 net/sctp/ipv6.c:225
       sctp_packet_transmit+0x38cb/0x3a20 net/sctp/output.c:632
       sctp_outq_flush+0xeb3/0x46e0 net/sctp/outqueue.c:885
       sctp_outq_uncork+0xb2/0xd0 net/sctp/outqueue.c:750
       sctp_side_effects net/sctp/sm_sideeffect.c:1773
       sctp_do_sm+0x6962/0x6ec0 net/sctp/sm_sideeffect.c:1147
       sctp_primitive_ASSOCIATE+0x12c/0x160 net/sctp/primitive.c:88
       sctp_sendmsg+0x43e5/0x4f90 net/sctp/socket.c:1954
       inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
       sock_sendmsg_nosec net/socket.c:633
       sock_sendmsg net/socket.c:643
       SYSC_sendto+0x608/0x710 net/socket.c:1696
       SyS_sendto+0x8a/0xb0 net/socket.c:1664
       do_syscall_64+0xe6/0x130 arch/x86/entry/common.c:285
       entry_SYSCALL64_slow_path+0x25/0x25 arch/x86/entry/entry_64.S:246
      RIP: 0033:0x401133
      RSP: 002b:00007fff6d99cd38 EFLAGS: 00000246 ORIG_RAX: 000000000000002c
      RAX: ffffffffffffffda RBX: 00000000004002b0 RCX: 0000000000401133
      RDX: 0000000000000001 RSI: 0000000000494088 RDI: 0000000000000003
      RBP: 00007fff6d99cd90 R08: 00007fff6d99cd50 R09: 000000000000001c
      R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000000
      R13: 00000000004063d0 R14: 0000000000406460 R15: 0000000000000000
      origin:
       save_stack_trace+0x37/0x40 arch/x86/kernel/stacktrace.c:59
       kmsan_save_stack_with_flags mm/kmsan/kmsan.c:302
       kmsan_internal_poison_shadow+0xb1/0x1a0 mm/kmsan/kmsan.c:198
       kmsan_poison_shadow+0x6d/0xc0 mm/kmsan/kmsan.c:211
       slab_alloc_node mm/slub.c:2743
       __kmalloc_node_track_caller+0x200/0x360 mm/slub.c:4351
       __kmalloc_reserve net/core/skbuff.c:138
       __alloc_skb+0x26b/0x840 net/core/skbuff.c:231
       alloc_skb ./include/linux/skbuff.h:933
       sctp_packet_transmit+0x31e/0x3a20 net/sctp/output.c:570
       sctp_outq_flush+0xeb3/0x46e0 net/sctp/outqueue.c:885
       sctp_outq_uncork+0xb2/0xd0 net/sctp/outqueue.c:750
       sctp_side_effects net/sctp/sm_sideeffect.c:1773
       sctp_do_sm+0x6962/0x6ec0 net/sctp/sm_sideeffect.c:1147
       sctp_primitive_ASSOCIATE+0x12c/0x160 net/sctp/primitive.c:88
       sctp_sendmsg+0x43e5/0x4f90 net/sctp/socket.c:1954
       inet_sendmsg+0x498/0x670 net/ipv4/af_inet.c:762
       sock_sendmsg_nosec net/socket.c:633
       sock_sendmsg net/socket.c:643
       SYSC_sendto+0x608/0x710 net/socket.c:1696
       SyS_sendto+0x8a/0xb0 net/socket.c:1664
       do_syscall_64+0xe6/0x130 arch/x86/entry/common.c:285
       return_from_SYSCALL_64+0x0/0x6a arch/x86/entry/entry_64.S:246
      ==================================================================
    
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e0e9e162796c99d97a79eea267ca84783644edc
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Jul 26 14:20:15 2017 +0800

    dccp: fix a memleak for dccp_feat_init err process
    
    
    [ Upstream commit e90ce2fc27cad7e7b1e72b9e66201a7a4c124c2b ]
    
    In dccp_feat_init, when ccid_get_builtin_ccids failsto alloc
    memory for rx.val, it should free tx.val before returning an
    error.
    
    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 ca604c89b8346cf3d59ec834519ab858e35802eb
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Mon Jul 24 10:07:32 2017 -0700

    packet: fix use-after-free in prb_retire_rx_blk_timer_expired()
    
    
    [ Upstream commit c800aaf8d869f2b9b47b10c5c312fe19f0a94042 ]
    
    There are multiple reports showing we have a use-after-free in
    the timer prb_retire_rx_blk_timer_expired(), where we use struct
    tpacket_kbdq_core::pkbdq, a pg_vec, after it gets freed by
    free_pg_vec().
    
    The interesting part is it is not freed via packet_release() but
    via packet_setsockopt(), which means we are not closing the socket.
    Looking into the big and fat function packet_set_ring(), this could
    happen if we satisfy the following conditions:
    
    1. closing == 0, not on packet_release() path
    2. req->tp_block_nr == 0, we don't allocate a new pg_vec
    3. rx_ring->pg_vec is already set as V3, which means we already called
       packet_set_ring() wtih req->tp_block_nr > 0 previously
    4. req->tp_frame_nr == 0, pass sanity check
    5. po->mapped == 0, never called mmap()
    
    In this scenario we are clearing the old rx_ring->pg_vec, so we need
    to free this pg_vec, but we don't stop the timer on this path because
    of closing==0.
    
    The timer has to be stopped as long as we need to free pg_vec, therefore
    the check on closing!=0 is wrong, we should check pg_vec!=NULL instead.
    
    Thanks to liujian for testing different fixes.
    
    Reported-by: alexander.levin@verizon.com
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Reported-by: liujian (CE) <liujian56@huawei.com>
    Tested-by: liujian (CE) <liujian56@huawei.com>
    Cc: Ding Tianhong <dingtianhong@huawei.com>
    Cc: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d233ae8a2d238f69b76f7bc4818df0cb22c41e8
Author: Thomas Jarosch <thomas.jarosch@intra2net.com>
Date:   Sat Jul 22 17:14:34 2017 +0200

    mcs7780: Fix initialization when CONFIG_VMAP_STACK is enabled
    
    
    [ Upstream commit 9476d393667968b4a02afbe9d35a3558482b943e ]
    
    DMA transfers are not allowed to buffers that are on the stack.
    Therefore allocate a buffer to store the result of usb_control_message().
    
    Fixes these bugreports:
    https://bugzilla.kernel.org/show_bug.cgi?id=195217
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1421387
    https://bugzilla.redhat.com/show_bug.cgi?id=1427398
    
    Shortened kernel backtrace from 4.11.9-200.fc25.x86_64:
    kernel: ------------[ cut here ]------------
    kernel: WARNING: CPU: 3 PID: 2957 at drivers/usb/core/hcd.c:1587
    kernel: transfer buffer not dma capable
    kernel: Call Trace:
    kernel: dump_stack+0x63/0x86
    kernel: __warn+0xcb/0xf0
    kernel: warn_slowpath_fmt+0x5a/0x80
    kernel: usb_hcd_map_urb_for_dma+0x37f/0x570
    kernel: ? try_to_del_timer_sync+0x53/0x80
    kernel: usb_hcd_submit_urb+0x34e/0xb90
    kernel: ? schedule_timeout+0x17e/0x300
    kernel: ? del_timer_sync+0x50/0x50
    kernel: ? __slab_free+0xa9/0x300
    kernel: usb_submit_urb+0x2f4/0x560
    kernel: ? urb_destroy+0x24/0x30
    kernel: usb_start_wait_urb+0x6e/0x170
    kernel: usb_control_msg+0xdc/0x120
    kernel: mcs_get_reg+0x36/0x40 [mcs7780]
    kernel: mcs_net_open+0xb5/0x5c0 [mcs7780]
    ...
    
    Regression goes back to 4.9, so it's a good candidate for -stable.
    Though it's the decision of the maintainer.
    
    Thanks to Dan Williams for adding the "transfer buffer not dma capable"
    warning in the first place. It instantly pointed me in the right direction.
    
    Patch has been tested with transferring data from a Polar watch.
    
    Signed-off-by: Thomas Jarosch <thomas.jarosch@intra2net.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d726bd73152ab8f0e8b424bd0e3346164343948
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Thu Jul 20 11:27:57 2017 -0700

    rtnetlink: allocate more memory for dev_set_mac_address()
    
    
    [ Upstream commit 153711f9421be5dbc973dc57a4109dc9d54c89b1 ]
    
    virtnet_set_mac_address() interprets mac address as struct
    sockaddr, but upper layer only allocates dev->addr_len
    which is ETH_ALEN + sizeof(sa_family_t) in this case.
    
    We lack a unified definition for mac address, so just fix
    the upper layer, this also allows drivers to interpret it
    to struct sockaddr freely.
    
    Reported-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d5d5fac1ed73f659a74a548e660a7adc556fb1c
Author: Mahesh Bandewar <maheshb@google.com>
Date:   Wed Jul 19 15:41:33 2017 -0700

    ipv4: initialize fib_trie prior to register_netdev_notifier call.
    
    
    [ Upstream commit 8799a221f5944a7d74516ecf46d58c28ec1d1f75 ]
    
    Net stack initialization currently initializes fib-trie after the
    first call to netdevice_notifier() call. In fact fib_trie initialization
    needs to happen before first rtnl_register(). It does not cause any problem
    since there are no devices UP at this moment, but trying to bring 'lo'
    UP at initialization would make this assumption wrong and exposes the issue.
    
    Fixes following crash
    
     Call Trace:
      ? alternate_node_alloc+0x76/0xa0
      fib_table_insert+0x1b7/0x4b0
      fib_magic.isra.17+0xea/0x120
      fib_add_ifaddr+0x7b/0x190
      fib_netdev_event+0xc0/0x130
      register_netdevice_notifier+0x1c1/0x1d0
      ip_fib_init+0x72/0x85
      ip_rt_init+0x187/0x1e9
      ip_init+0xe/0x1a
      inet_init+0x171/0x26c
      ? ipv4_offload_init+0x66/0x66
      do_one_initcall+0x43/0x160
      kernel_init_freeable+0x191/0x219
      ? rest_init+0x80/0x80
      kernel_init+0xe/0x150
      ret_from_fork+0x22/0x30
     Code: f6 46 23 04 74 86 4c 89 f7 e8 ae 45 01 00 49 89 c7 4d 85 ff 0f 85 7b ff ff ff 31 db eb 08 4c 89 ff e8 16 47 01 00 48 8b 44 24 38 <45> 8b 6e 14 4d 63 76 74 48 89 04 24 0f 1f 44 00 00 48 83 c4 08
     RIP: kmem_cache_alloc+0xcf/0x1c0 RSP: ffff9b1500017c28
     CR2: 0000000000000014
    
    Fixes: 7b1a74fdbb9e ("[NETNS]: Refactor fib initialization so it can handle multiple namespaces.")
    Fixes: 7f9b80529b8a ("[IPV4]: fib hash|trie initialization")
    
    Signed-off-by: Mahesh Bandewar <maheshb@google.com>
    Acked-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 41d33a5b803bd1c3ca84f5bfb9ab77d06ce09fca
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Wed Jul 19 22:28:55 2017 +0200

    ipv6: avoid overflow of offset in ip6_find_1stfragopt
    
    
    [ Upstream commit 6399f1fae4ec29fab5ec76070435555e256ca3a6 ]
    
    In some cases, offset can overflow and can cause an infinite loop in
    ip6_find_1stfragopt(). Make it unsigned int to prevent the overflow, and
    cap it at IPV6_MAXPLEN, since packets larger than that should be invalid.
    
    This problem has been here since before the beginning of git history.
    
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    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 e32f7a70ef5dbf7f14beca49ad829c4367c18ac4
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Jul 19 13:33:24 2017 -0700

    net: Zero terminate ifr_name in dev_ifname().
    
    
    [ Upstream commit 63679112c536289826fec61c917621de95ba2ade ]
    
    The ifr.ifr_name is passed around and assumed to be NULL terminated.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64133595b549c1036ffe8598f4c53aa355d9e3f1
Author: Jin Qian <jinqian@google.com>
Date:   Mon May 15 10:45:08 2017 -0700

    f2fs: sanity check checkpoint segno and blkoff
    
    commit 15d3042a937c13f5d9244241c7a9c8416ff6e82a upstream.
    
    Make sure segno and blkoff read from raw image are valid.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jin Qian <jinqian@google.com>
    [Jaegeuk Kim: adjust minor coding style]
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    [AmitP: Found in Android Security bulletin for Aug'17, fixes CVE-2017-10663]
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65d8b1d1dc86320649f50960a1c562d9dcbba5c7
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Sat Jun 3 05:35:47 2017 -0700

    iscsi-target: Fix delayed logout processing greater than SECONDS_FOR_LOGOUT_COMP
    
    commit 105fa2f44e504c830697b0c794822112d79808dc upstream.
    
    This patch fixes a BUG() in iscsit_close_session() that could be
    triggered when iscsit_logout_post_handler() execution from within
    tx thread context was not run for more than SECONDS_FOR_LOGOUT_COMP
    (15 seconds), and the TCP connection didn't already close before
    then forcing tx thread context to automatically exit.
    
    This would manifest itself during explicit logout as:
    
    [33206.974254] 1 connection(s) still exist for iSCSI session to iqn.1993-08.org.debian:01:3f5523242179
    [33206.980184] INFO: NMI handler (kgdb_nmi_handler) took too long to run: 2100.772 msecs
    [33209.078643] ------------[ cut here ]------------
    [33209.078646] kernel BUG at drivers/target/iscsi/iscsi_target.c:4346!
    
    Normally when explicit logout attempt fails, the tx thread context
    exits and iscsit_close_connection() from rx thread context does the
    extra cleanup once it detects conn->conn_logout_remove has not been
    cleared by the logout type specific post handlers.
    
    To address this special case, if the logout post handler in tx thread
    context detects conn->tx_thread_active has already been cleared, simply
    return and exit in order for existing iscsit_close_connection()
    logic from rx thread context do failed logout cleanup.
    
    Reported-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Tested-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.de>
    Cc: Sagi Grimberg <sagig@mellanox.com>
    Tested-by: Gary Guo <ghg@datera.io>
    Tested-by: Chu Yuan Lin <cyl@datera.io>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67819fe3af9a84c0866c9889e989ed75b74c36a3
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Wed May 24 21:47:09 2017 -0700

    iscsi-target: Fix initial login PDU asynchronous socket close OOPs
    
    commit 25cdda95fda78d22d44157da15aa7ea34be3c804 upstream.
    
    This patch fixes a OOPs originally introduced by:
    
       commit bb048357dad6d604520c91586334c9c230366a14
       Author: Nicholas Bellinger <nab@linux-iscsi.org>
       Date:   Thu Sep 5 14:54:04 2013 -0700
    
       iscsi-target: Add sk->sk_state_change to cleanup after TCP failure
    
    which would trigger a NULL pointer dereference when a TCP connection
    was closed asynchronously via iscsi_target_sk_state_change(), but only
    when the initial PDU processing in iscsi_target_do_login() from iscsi_np
    process context was blocked waiting for backend I/O to complete.
    
    To address this issue, this patch makes the following changes.
    
    First, it introduces some common helper functions used for checking
    socket closing state, checking login_flags, and atomically checking
    socket closing state + setting login_flags.
    
    Second, it introduces a LOGIN_FLAGS_INITIAL_PDU bit to know when a TCP
    connection has dropped via iscsi_target_sk_state_change(), but the
    initial PDU processing within iscsi_target_do_login() in iscsi_np
    context is still running.  For this case, it sets LOGIN_FLAGS_CLOSED,
    but doesn't invoke schedule_delayed_work().
    
    The original NULL pointer dereference case reported by MNC is now handled
    by iscsi_target_do_login() doing a iscsi_target_sk_check_close() before
    transitioning to FFP to determine when the socket has already closed,
    or iscsi_target_start_negotiation() if the login needs to exchange
    more PDUs (eg: iscsi_target_do_login returned 0) but the socket has
    closed.  For both of these cases, the cleanup up of remaining connection
    resources will occur in iscsi_target_start_negotiation() from iscsi_np
    process context once the failure is detected.
    
    Finally, to handle to case where iscsi_target_sk_state_change() is
    called after the initial PDU procesing is complete, it now invokes
    conn->login_work -> iscsi_target_do_login_rx() to perform cleanup once
    existing iscsi_target_sk_check_close() checks detect connection failure.
    For this case, the cleanup of remaining connection resources will occur
    in iscsi_target_do_login_rx() from delayed workqueue process context
    once the failure is detected.
    
    Reported-by: Mike Christie <mchristi@redhat.com>
    Reviewed-by: Mike Christie <mchristi@redhat.com>
    Tested-by: Mike Christie <mchristi@redhat.com>
    Cc: Mike Christie <mchristi@redhat.com>
    Reported-by: Hannes Reinecke <hare@suse.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Cc: Varun Prakash <varun@chelsio.com>
    Cc: <stable@vger.kernel.org> # v3.12+
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62ef15c6ed05ae759fe31a1fb11ab593a0401603
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Sat Feb 27 18:15:46 2016 -0800

    iscsi-target: Fix early sk_data_ready LOGIN_FLAGS_READY race
    
    commit 8f0dfb3d8b1120c61f6e2cc3729290db10772b2d upstream.
    
    There is a iscsi-target/tcp login race in LOGIN_FLAGS_READY
    state assignment that can result in frequent errors during
    iscsi discovery:
    
          "iSCSI Login negotiation failed."
    
    To address this bug, move the initial LOGIN_FLAGS_READY
    assignment ahead of iscsi_target_do_login() when handling
    the initial iscsi_target_start_negotiation() request PDU
    during connection login.
    
    As iscsi_target_do_login_rx() work_struct callback is
    clearing LOGIN_FLAGS_READ_ACTIVE after subsequent calls
    to iscsi_target_do_login(), the early sk_data_ready
    ahead of the first iscsi_target_do_login() expects
    LOGIN_FLAGS_READY to also be set for the initial
    login request PDU.
    
    As reported by Maged, this was first obsered using an
    MSFT initiator running across multiple VMWare host
    virtual machines with iscsi-target/tcp.
    
    Reported-by: Maged Mokhtar <mmokhtar@binarykinetics.com>
    Tested-by: Maged Mokhtar <mmokhtar@binarykinetics.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d18dfb505abacb786fc9e476f6d4d52ea39dab5e
Author: Jiang Yi <jiangyilism@gmail.com>
Date:   Tue May 16 17:57:55 2017 +0800

    iscsi-target: Always wait for kthread_should_stop() before kthread exit
    
    commit 5e0cf5e6c43b9e19fc0284f69e5cd2b4a47523b0 upstream.
    
    There are three timing problems in the kthread usages of iscsi_target_mod:
    
     - np_thread of struct iscsi_np
     - rx_thread and tx_thread of struct iscsi_conn
    
    In iscsit_close_connection(), it calls
    
     send_sig(SIGINT, conn->tx_thread, 1);
     kthread_stop(conn->tx_thread);
    
    In conn->tx_thread, which is iscsi_target_tx_thread(), when it receive
    SIGINT the kthread will exit without checking the return value of
    kthread_should_stop().
    
    So if iscsi_target_tx_thread() exit right between send_sig(SIGINT...)
    and kthread_stop(...), the kthread_stop() will try to stop an already
    stopped kthread.
    
    This is invalid according to the documentation of kthread_stop().
    
    (Fix -ECONNRESET logout handling in iscsi_target_tx_thread and
     early iscsi_target_rx_thread failure case - nab)
    
    Signed-off-by: Jiang Yi <jiangyilism@gmail.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8adc614240f1e2b793949d4efd9d344c970c116f
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Mon Mar 27 16:12:43 2017 -0700

    target: Avoid mappedlun symlink creation during lun shutdown
    
    commit 49cb77e297dc611a1b795cfeb79452b3002bd331 upstream.
    
    This patch closes a race between se_lun deletion during configfs
    unlink in target_fabric_port_unlink() -> core_dev_del_lun()
    -> core_tpg_remove_lun(), when transport_clear_lun_ref() blocks
    waiting for percpu_ref RCU grace period to finish, but a new
    NodeACL mappedlun is added before the RCU grace period has
    completed.
    
    This can happen in target_fabric_mappedlun_link() because it
    only checks for se_lun->lun_se_dev, which is not cleared until
    after transport_clear_lun_ref() percpu_ref RCU grace period
    finishes.
    
    This bug originally manifested as NULL pointer dereference
    OOPsen in target_stat_scsi_att_intr_port_show_attr_dev() on
    v4.1.y code, because it dereferences lun->lun_se_dev without
    a explicit NULL pointer check.
    
    In post v4.1 code with target-core RCU conversion, the code
    in target_stat_scsi_att_intr_port_show_attr_dev() no longer
    uses se_lun->lun_se_dev, but the same race still exists.
    
    To address the bug, go ahead and set se_lun>lun_shutdown as
    early as possible in core_tpg_remove_lun(), and ensure new
    NodeACL mappedlun creation in target_fabric_mappedlun_link()
    fails during se_lun shutdown.
    
    Reported-by: James Shen <jcs@datera.io>
    Cc: James Shen <jcs@datera.io>
    Tested-by: James Shen <jcs@datera.io>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ad69d5f5a9165b2fc129bcc809be47722949f93
Author: Prabhakar Lad <prabhakar.csengg@gmail.com>
Date:   Thu Jul 20 08:02:09 2017 -0400

    media: platform: davinci: return -EINVAL for VPFE_CMD_S_CCDC_RAW_PARAMS ioctl
    
    commit da05d52d2f0f6bd61094a0cd045fed94bf7d673a upstream.
    
    this patch makes sure VPFE_CMD_S_CCDC_RAW_PARAMS ioctl no longer works
    for vpfe_capture driver with a minimal patch suitable for backporting.
    
    - This ioctl was never in public api and was only defined in kernel header.
    - The function set_params constantly mixes up pointers and phys_addr_t
      numbers.
    - This is part of a 'VPFE_CMD_S_CCDC_RAW_PARAMS' ioctl command that is
      described as an 'experimental ioctl that will change in future kernels'.
    - The code to allocate the table never gets called after we copy_from_user
      the user input over the kernel settings, and then compare them
      for inequality.
    - We then go on to use an address provided by user space as both the
      __user pointer for input and pass it through phys_to_virt to come up
      with a kernel pointer to copy the data to. This looks like a trivially
      exploitable root hole.
    
    Due to these reasons we make sure this ioctl now returns -EINVAL and backport
    this patch as far as possible.
    
    Fixes: 5f15fbb68fd7 ("V4L/DVB (12251): v4l: dm644x ccdc module for vpfe capture driver")
    
    Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df5ef7a044433cc99e7e86e937f26519afc70d80
Author: Jerry Lee <jerrylee@qnap.com>
Date:   Sun Aug 6 01:18:31 2017 -0400

    ext4: fix overflow caused by missing cast in ext4_resize_fs()
    
    commit aec51758ce10a9c847a62a48a168f8c804c6e053 upstream.
    
    On a 32-bit platform, the value of n_blcoks_count may be wrong during
    the file system is resized to size larger than 2^32 blocks.  This may
    caused the superblock being corrupted with zero blocks count.
    
    Fixes: 1c6bd7173d66
    Signed-off-by: Jerry Lee <jerrylee@qnap.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a3a235bac007057f1ca51206899287019b88369
Author: Jan Kara <jack@suse.cz>
Date:   Sat Aug 5 17:43:24 2017 -0400

    ext4: fix SEEK_HOLE/SEEK_DATA for blocksize < pagesize
    
    commit fcf5ea10992fbac3c7473a1db33d56a139333cd1 upstream.
    
    ext4_find_unwritten_pgoff() does not properly handle a situation when
    starting index is in the middle of a page and blocksize < pagesize. The
    following command shows the bug on filesystem with 1k blocksize:
    
      xfs_io -f -c "falloc 0 4k" \
                -c "pwrite 1k 1k" \
                -c "pwrite 3k 1k" \
                -c "seek -a -r 0" foo
    
    In this example, neither lseek(fd, 1024, SEEK_HOLE) nor lseek(fd, 2048,
    SEEK_DATA) will return the correct result.
    
    Fix the problem by neglecting buffers in a page before starting offset.
    
    Reported-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6c7308ec57d6ee9936cd021873ff7b5d4e7be5b
Author: Josh Poimboeuf <jpoimboe@redhat.com>
Date:   Tue Oct 25 09:51:14 2016 -0500

    mm/page_alloc: Remove kernel address exposure in free_reserved_area()
    
    commit adb1fe9ae2ee6ef6bc10f3d5a588020e7664dfa7 upstream.
    
    Linus suggested we try to remove some of the low-hanging fruit related
    to kernel address exposure in dmesg.  The only leaks I see on my local
    system are:
    
      Freeing SMP alternatives memory: 32K (ffffffff9e309000 - ffffffff9e311000)
      Freeing initrd memory: 10588K (ffffa0b736b42000 - ffffa0b737599000)
      Freeing unused kernel memory: 3592K (ffffffff9df87000 - ffffffff9e309000)
      Freeing unused kernel memory: 1352K (ffffa0b7288ae000 - ffffa0b728a00000)
      Freeing unused kernel memory: 632K (ffffa0b728d62000 - ffffa0b728e00000)
    
    Linus says:
    
      "I suspect we should just remove [the addresses in the 'Freeing'
       messages]. I'm sure they are useful in theory, but I suspect they
       were more useful back when the whole "free init memory" was
       originally done.
    
       These days, if we have a use-after-free, I suspect the init-mem
       situation is the easiest situation by far. Compared to all the dynamic
       allocations which are much more likely to show it anyway. So having
       debug output for that case is likely not all that productive."
    
    With this patch the freeing messages now look like this:
    
      Freeing SMP alternatives memory: 32K
      Freeing initrd memory: 10588K
      Freeing unused kernel memory: 3592K
      Freeing unused kernel memory: 1352K
      Freeing unused kernel memory: 632K
    
    Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/6836ff90c45b71d38e5d4405aec56fa9e5d1d4b2.1477405374.git.jpoimboe@redhat.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Cc: Kees Cook <keescook@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4110ee7ebb2bc8120f7bf767bc6bd29a30b60912
Author: Wanpeng Li <wanpeng.li@hotmail.com>
Date:   Tue Aug 1 05:20:03 2017 -0700

    KVM: async_pf: make rcu irq exit if not triggered from idle task
    
    commit 337c017ccdf2653d0040099433fc1a2b1beb5926 upstream.
    
     WARNING: CPU: 5 PID: 1242 at kernel/rcu/tree_plugin.h:323 rcu_note_context_switch+0x207/0x6b0
     CPU: 5 PID: 1242 Comm: unity-settings- Not tainted 4.13.0-rc2+ #1
     RIP: 0010:rcu_note_context_switch+0x207/0x6b0
     Call Trace:
      __schedule+0xda/0xba0
      ? kvm_async_pf_task_wait+0x1b2/0x270
      schedule+0x40/0x90
      kvm_async_pf_task_wait+0x1cc/0x270
      ? prepare_to_swait+0x22/0x70
      do_async_page_fault+0x77/0xb0
      ? do_async_page_fault+0x77/0xb0
      async_page_fault+0x28/0x30
     RIP: 0010:__d_lookup_rcu+0x90/0x1e0
    
    I encounter this when trying to stress the async page fault in L1 guest w/
    L2 guests running.
    
    Commit 9b132fbe5419 (Add rcu user eqs exception hooks for async page
    fault) adds rcu_irq_enter/exit() to kvm_async_pf_task_wait() to exit cpu
    idle eqs when needed, to protect the code that needs use rcu.  However,
    we need to call the pair even if the function calls schedule(), as seen
    from the above backtrace.
    
    This patch fixes it by informing the RCU subsystem exit/enter the irq
    towards/away from idle for both n.halted and !n.halted.
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Signed-off-by: Wanpeng Li <wanpeng.li@hotmail.com>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7de27d201336252bc0034e5d217047e6deb899ba
Author: Banajit Goswami <bgoswami@codeaurora.org>
Date:   Fri Jul 14 23:15:05 2017 -0700

    ASoC: do not close shared backend dailink
    
    commit b1cd2e34c69a2f3988786af451b6e17967c293a0 upstream.
    
    Multiple frontend dailinks may be connected to a backend
    dailink at the same time. When one of frontend dailinks is
    closed, the associated backend dailink should not be closed
    if it is connected to other active frontend dailinks. Change
    ensures that backend dailink is closed only after all
    connected frontend dailinks are closed.
    
    Signed-off-by: Gopikrishnaiah Anandan <agopik@codeaurora.org>
    Signed-off-by: Banajit Goswami <bgoswami@codeaurora.org>
    Signed-off-by: Patrick Lai <plai@codeaurora.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b2bc1d63404af650cf6b87774bccf5f65152788
Author: Sergei A. Trusov <sergei.a.trusov@ya.ru>
Date:   Wed Aug 2 20:23:48 2017 +1000

    ALSA: hda - Fix speaker output from VAIO VPCL14M1R
    
    commit 3f3c371421e601fa93b6cb7fb52da9ad59ec90b4 upstream.
    
    Sony VAIO VPCL14M1R needs the quirk to make the speaker working properly.
    
    Tested-by: Dmitriy <mexx400@yandex.ru>
    Signed-off-by: Sergei A. Trusov <sergei.a.trusov@ya.ru>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70682a9ae28f3f357ca67d7629bae079a443a6cd
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Jul 18 18:41:52 2017 -0400

    workqueue: restore WQ_UNBOUND/max_active==1 to be ordered
    
    commit 5c0338c68706be53b3dc472e4308961c36e4ece1 upstream.
    
    The combination of WQ_UNBOUND and max_active == 1 used to imply
    ordered execution.  After NUMA affinity 4c16bd327c74 ("workqueue:
    implement NUMA affinity for unbound workqueues"), this is no longer
    true due to per-node worker pools.
    
    While the right way to create an ordered workqueue is
    alloc_ordered_workqueue(), the documentation has been misleading for a
    long time and people do use WQ_UNBOUND and max_active == 1 for ordered
    workqueues which can lead to subtle bugs which are very difficult to
    trigger.
    
    It's unlikely that we'd see noticeable performance impact by enforcing
    ordering on WQ_UNBOUND / max_active == 1 workqueues.  Let's
    automatically set __WQ_ORDERED for those workqueues.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Christoph Hellwig <hch@infradead.org>
    Reported-by: Alexei Potashnik <alexei@purestorage.com>
    Fixes: 4c16bd327c74 ("workqueue: implement NUMA affinity for unbound workqueues")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 715ad0f174e25074e1a6178d9dbef7bb27e7b326
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 19 13:06:41 2017 +0300

    libata: array underflow in ata_find_dev()
    
    commit 59a5e266c3f5c1567508888dd61a45b86daed0fa upstream.
    
    My static checker complains that "devno" can be negative, meaning that
    we read before the start of the loop.  I've looked at the code, and I
    think the warning is right.  This come from /proc so it's root only or
    it would be quite a quite a serious bug.  The call tree looks like this:
    
    proc_scsi_write() <- gets id and channel from simple_strtoul()
    -> scsi_add_single_device() <- calls shost->transportt->user_scan()
       -> ata_scsi_user_scan()
          -> ata_find_dev()
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a34eddfe54d0518d1b9467068378944cd5d184d5
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Wed Apr 29 13:07:38 2015 -0400

    tile: use global strscpy() rather than private copy
    
    commit 30059d494a72603d066baf55c748803df968aa08 upstream.
    
    Now that strscpy() is a standard API, remove the local copy.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d9110554bb83c5ff13d5d3b6014694339613d594
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Wed Oct 7 09:29:11 2015 -0400

    arch/powerpc: provide zero_bytemask() for big-endian
    
    commit 7a5692e6e533fd379081ab06fb58f3f5ee4d80bc upstream.
    
    For some reason, only the little-endian flavor of
    powerpc provided the zero_bytemask() implementation.
    
    Reported-by: Michal Sojka <sojkam1@fel.cvut.cz>
    Acked-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa66daa2a6f8fe305e3c2e8a513d051f31a78847
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Wed Apr 29 12:48:40 2015 -0400

    Make asm/word-at-a-time.h available on all architectures
    
    commit a6e2f029ae34f41adb6ae3812c32c5d326e1abd2 upstream.
    
    Added the x86 implementation of word-at-a-time to the
    generic version, which previously only supported big-endian.
    
    Omitted the x86-specific load_unaligned_zeropad(), which in
    any case is also not present for the existing BE-only
    implementation of a word-at-a-time, and is only used under
    CONFIG_DCACHE_WORD_ACCESS.
    
    Added as a "generic-y" to the Kbuilds of all architectures
    that didn't previously have it.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit abe061bd0a1649aab1f807369bbf2dd46f285958
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Tue Oct 6 14:20:45 2015 -0400

    word-at-a-time.h: support zero_bytemask() on alpha and tile
    
    commit c753bf34c94e5ac901e625e52f47320eeec4de2d upstream.
    
    Both alpha and tile needed implementations of zero_bytemask.
    
    The alpha version is untested.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3dabe4605826e66ed607ee718cc7d8081caee41
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Thu Apr 30 15:12:42 2015 -0400

    tile: add <asm/word-at-a-time.h> and enable support functions
    
    commit 5bf6c07a1843813d0065feaaecba622d49148d7e upstream.
    
    This change enables the generic strncpy_from_user() and strnlen_user()
    using word-at-a-time.h.  The tile implementation is trivial since
    both tilepro and tilegx have SIMD operations that do byte-wise
    comparisons against immediate zero for each byte, and return an
    0x01 byte in each position where there is a 0x00 byte.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a553ec72f334520ec7307c19dfb8869773470a23
Author: Steffen Klassert <steffen.klassert@secunet.com>
Date:   Tue Feb 14 07:43:56 2017 +0100

    xfrm: Don't use sk_family for socket policy lookups
    
    commit 4c86d77743a54fb2d8a4d18a037a074c892bb3be upstream.
    
    On IPv4-mapped IPv6 addresses sk_family is AF_INET6,
    but the flow informations are created based on AF_INET.
    So the routing set up 'struct flowi4' but we try to
    access 'struct flowi6' what leads to an out of bounds
    access. Fix this by using the family we get with the
    dst_entry, like we do it for the standard policy lookup.
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Tested-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a96228b3d265abb70fb5776e41c84f9b33985025
Author: Mike Manning <mmanning@brocade.com>
Date:   Fri May 27 17:45:07 2016 +0100

    vlan: Propagate MAC address to VLANs
    
    commit 308453aa9156a3b8ee382c0949befb507a32b0c1 upstream.
    
    The MAC address of the physical interface is only copied to the VLAN
    when it is first created, resulting in an inconsistency after MAC
    address changes of only newly created VLANs having an up-to-date MAC.
    
    The VLANs should continue inheriting the MAC address of the physical
    interface until the VLAN MAC address is explicitly set to any value.
    This allows IPv6 EUI64 addresses for the VLAN to reflect any changes
    to the MAC of the physical interface and thus for DAD to behave as
    expected.
    
    Signed-off-by: Mike Manning <mmanning@brocade.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fdd650e61776c7d6ad6176fc4f69e8e98dc2520
Author: Phil Reid <preid@electromag.com.au>
Date:   Thu Dec 22 17:18:12 2016 +0800

    spi: dw: Make debugfs name unique between instances
    
    
    [ Upstream commit 13288bdf4adbaa6bd1267f10044c1bc25d90ce7f ]
    
    Some system have multiple dw devices. Currently the driver uses a
    fixed name for the debugfs dir. Append dev name to the debugfs dir
    name to make it unique.
    
    Signed-off-by: Phil Reid <preid@electromag.com.au>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72fafee16367d3c4782dd3f6869b297a91d7cee0
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Dec 23 11:21:10 2016 +0200

    ASoC: tlv320aic3x: Mark the RESET register as volatile
    
    
    [ Upstream commit 63c3194b82530bd71fd49db84eb7ab656b8d404a ]
    
    The RESET register only have one self clearing bit and it should not be
    cached. If it is cached, when we sync the registers back to the chip we
    will initiate a software reset as well, which is not desirable.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Reviewed-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 09b08f40d17170a55a3cbd5455df77a05e2f1045
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Dec 30 08:13:47 2016 -0700

    vfio-pci: use 32-bit comparisons for register address for gcc-4.5
    
    
    [ Upstream commit 45e869714489431625c569d21fc952428d761476 ]
    
    Using ancient compilers (gcc-4.5 or older) on ARM, we get a link
    failure with the vfio-pci driver:
    
    ERROR: "__aeabi_lcmp" [drivers/vfio/pci/vfio-pci.ko] undefined!
    
    The reason is that the compiler tries to do a comparison of
    a 64-bit range. This changes it to convert to a 32-bit number
    explicitly first, as newer compilers do for themselves.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c166da740dd6b99332f292817a23e1af19dfca2
Author: Jordan Crouse <jcrouse@codeaurora.org>
Date:   Tue Dec 20 08:54:31 2016 -0700

    drm/msm: Verify that MSM_SUBMIT_BO_FLAGS are set
    
    
    [ Upstream commit a6cb3b864b21b7345f824a4faa12b723c8aaf099 ]
    
    For every submission buffer object one of MSM_SUBMIT_BO_WRITE
    and MSM_SUBMIT_BO_READ must be set (and nothing else). If we
    allowed zero then the buffer object would never get queued to
    be unreferenced.
    
    Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a077768ad10cbb6c4ea1091caa145d3d9499b72
Author: Jordan Crouse <jcrouse@codeaurora.org>
Date:   Tue Dec 20 08:54:29 2016 -0700

    drm/msm: Ensure that the hardware write pointer is valid
    
    
    [ Upstream commit 88b333b0ed790f9433ff542b163bf972953b74d3 ]
    
    Currently the value written to CP_RB_WPTR is calculated on the fly as
    (rb->next - rb->start). But as the code is designed rb->next is wrapped
    before writing the commands so if a series of commands happened to
    fit perfectly in the ringbuffer, rb->next would end up being equal to
    rb->size / 4 and thus result in an out of bounds address to CP_RB_WPTR.
    
    The easiest way to fix this is to mask WPTR when writing it to the
    hardware; it makes the hardware happy and the rest of the ringbuffer
    math appears to work and there isn't any point in upsetting anything.
    
    Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
    [squash in is_power_of_2() check]
    Signed-off-by: Rob Clark <robdclark@gmail.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e2225dbe6682d0b0d606740e69e6e2b32114a2b
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Thu Dec 29 18:37:11 2016 +0200

    net/mlx4: Remove BUG_ON from ICM allocation routine
    
    
    [ Upstream commit c1d5f8ff80ea84768f5fae1ca9d1abfbb5e6bbaa ]
    
    This patch removes BUG_ON() macro from mlx4_alloc_icm_coherent()
    by checking DMA address alignment in advance and performing proper
    folding in case of error.
    
    Fixes: 5b0bf5e25efe ("mlx4_core: Support ICM tables in coherent memory")
    Reported-by: Ozgur Karatas <okaratas@member.fsf.org>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45d2f34fbb91f9e4c34efcf1593e4746f2cd69bd
Author: Zheng Li <james.z.li@ericsson.com>
Date:   Wed Dec 28 23:23:46 2016 +0800

    ipv6: Should use consistent conditional judgement for ip6 fragment between __ip6_append_data and ip6_finish_output
    
    
    [ Upstream commit e4c5e13aa45c23692e4acf56f0b3533f328199b2 ]
    
    There is an inconsistent conditional judgement between __ip6_append_data
    and ip6_finish_output functions, the variable length in __ip6_append_data
    just include the length of application's payload and udp6 header, don't
    include the length of ipv6 header, but in ip6_finish_output use
    (skb->len > ip6_skb_dst_mtu(skb)) as judgement, and skb->len include the
    length of ipv6 header.
    
    That causes some particular application's udp6 payloads whose length are
    between (MTU - IPv6 Header) and MTU were fragmented by ip6_fragment even
    though the rst->dev support UFO feature.
    
    Add the length of ipv6 header to length in __ip6_append_data to keep
    consistent conditional judgement as ip6_finish_output for ip6 fragment.
    
    Signed-off-by: Zheng Li <james.z.li@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ecce825f316d806aed8585cbdc0fa3a76441624e
Author: Pali Rohár <pali.rohar@gmail.com>
Date:   Wed Dec 14 22:29:44 2016 +0100

    ARM: dts: n900: Mark eMMC slot with no-sdio and no-sd flags
    
    
    [ Upstream commit 4cf48f1d7520a4d325af58eded4d8090e1b40be7 ]
    
    Trying to initialize eMMC slot as SDIO or SD cause failure in n900 port of
    qemu. eMMC itself is not detected and is not working.
    
    Real Nokia N900 harware does not have this problem. As eMMC is really not
    SDIO or SD based such change is harmless and will fix support for qemu.
    
    Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
    Acked-by: Pavel Machek <pavel@ucw.cz>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae77d8ae4e1238efb0e44f72be48528d932c1b3c
Author: Chun-Hao Lin <hau@realtek.com>
Date:   Tue Dec 27 16:29:43 2016 +0800

    r8169: add support for RTL8168 series add-on card.
    
    
    [ Upstream commit 610c908773d30907c950ca3b2ee8ac4b2813537b ]
    
    This chip is the same as RTL8168, but its device id is 0x8161.
    
    Signed-off-by: Chun-Hao Lin <hau@realtek.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73f7545a039e01842d1b164d1bf985ede2786386
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Mon Dec 26 22:58:20 2016 +0100

    x86/mce/AMD: Make the init code more robust
    
    
    [ Upstream commit 0dad3a3014a0b9e72521ff44f17e0054f43dcdea ]
    
    If mce_device_init() fails then the mce device pointer is NULL and the
    AMD mce code happily dereferences it.
    
    Add a sanity check.
    
    Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
    Reported-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7ef4f1f48c413486a3583d416ed357c7bdb55ab
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Tue Jun 20 11:38:02 2017 +0200

    tpm: fix a kernel memory leak in tpm-sysfs.c
    
    commit 13b47cfcfc60495cde216eef4c01040d76174cbe upstream.
    
    While cleaning up sysfs callback that prints EK we discovered a kernel
    memory leak. This commit fixes the issue by zeroing the buffer used for
    TPM command/response.
    
    The leak happen when we use either tpm_vtpm_proxy, tpm_ibmvtpm or
    xen-tpmfront.
    
    Cc: stable@vger.kernel.org
    Fixes: 0883743825e3 ("TPM: sysfs functions consolidation")
    Reported-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
    Tested-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit beb807ce1de9fbf20d67c294a6af4e53b71463e9
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Feb 3 14:29:42 2017 -0800

    net: skb_needs_check() accepts CHECKSUM_NONE for tx
    
    commit 6e7bc478c9a006c701c14476ec9d389a484b4864 upstream.
    
    My recent change missed fact that UFO would perform a complete
    UDP checksum before segmenting in frags.
    
    In this case skb->ip_summed is set to CHECKSUM_NONE.
    
    We need to add this valid case to skb_needs_check()
    
    Fixes: b2504a5dbef3 ("net: reduce skb_warn_bad_offload() noise")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: 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 77ba7f02ae77233c5780bff35d79aa3f7da15f70
Author: Kees Cook <keescook@chromium.org>
Date:   Sun Mar 5 22:08:58 2017 -0800

    pstore: Use dynamic spinlock initializer
    
    commit e9a330c4289f2ba1ca4bf98c2b430ab165a8931b upstream.
    
    The per-prz spinlock should be using the dynamic initializer so that
    lockdep can correctly track it. Without this, under lockdep, we get a
    warning at boot that the lock is in non-static memory.
    
    Fixes: 109704492ef6 ("pstore: Make spinlock per zone instead of global")
    Fixes: 76d5692a5803 ("pstore: Correctly initialize spinlock and flags")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78bfdaabd972468476d2f178e50a2cf7f15df9a8
Author: Kees Cook <keescook@chromium.org>
Date:   Thu Feb 9 15:43:44 2017 -0800

    pstore: Correctly initialize spinlock and flags
    
    commit 76d5692a58031696e282384cbd893832bc92bd76 upstream.
    
    The ram backend wasn't always initializing its spinlock correctly. Since
    it was coming from kzalloc memory, though, it was harmless on
    architectures that initialize unlocked spinlocks to 0 (at least x86 and
    ARM). This also fixes a possibly ignored flag setting too.
    
    When running under CONFIG_DEBUG_SPINLOCK, the following Oops was visible:
    
    [    0.760836] persistent_ram: found existing buffer, size 29988, start 29988
    [    0.765112] persistent_ram: found existing buffer, size 30105, start 30105
    [    0.769435] persistent_ram: found existing buffer, size 118542, start 118542
    [    0.785960] persistent_ram: found existing buffer, size 0, start 0
    [    0.786098] persistent_ram: found existing buffer, size 0, start 0
    [    0.786131] pstore: using zlib compression
    [    0.790716] BUG: spinlock bad magic on CPU#0, swapper/0/1
    [    0.790729]  lock: 0xffffffc0d1ca9bb0, .magic: 00000000, .owner: <none>/-1, .owner_cpu: 0
    [    0.790742] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.10.0-rc2+ #913
    [    0.790747] Hardware name: Google Kevin (DT)
    [    0.790750] Call trace:
    [    0.790768] [<ffffff900808ae88>] dump_backtrace+0x0/0x2bc
    [    0.790780] [<ffffff900808b164>] show_stack+0x20/0x28
    [    0.790794] [<ffffff9008460ee0>] dump_stack+0xa4/0xcc
    [    0.790809] [<ffffff9008113cfc>] spin_dump+0xe0/0xf0
    [    0.790821] [<ffffff9008113d3c>] spin_bug+0x30/0x3c
    [    0.790834] [<ffffff9008113e28>] do_raw_spin_lock+0x50/0x1b8
    [    0.790846] [<ffffff9008a2d2ec>] _raw_spin_lock_irqsave+0x54/0x6c
    [    0.790862] [<ffffff90083ac3b4>] buffer_size_add+0x48/0xcc
    [    0.790875] [<ffffff90083acb34>] persistent_ram_write+0x60/0x11c
    [    0.790888] [<ffffff90083aab1c>] ramoops_pstore_write_buf+0xd4/0x2a4
    [    0.790900] [<ffffff90083a9d3c>] pstore_console_write+0xf0/0x134
    [    0.790912] [<ffffff900811c304>] console_unlock+0x48c/0x5e8
    [    0.790923] [<ffffff900811da18>] register_console+0x3b0/0x4d4
    [    0.790935] [<ffffff90083aa7d0>] pstore_register+0x1a8/0x234
    [    0.790947] [<ffffff90083ac250>] ramoops_probe+0x6b8/0x7d4
    [    0.790961] [<ffffff90085ca548>] platform_drv_probe+0x7c/0xd0
    [    0.790972] [<ffffff90085c76ac>] driver_probe_device+0x1b4/0x3bc
    [    0.790982] [<ffffff90085c7ac8>] __device_attach_driver+0xc8/0xf4
    [    0.790996] [<ffffff90085c4bfc>] bus_for_each_drv+0xb4/0xe4
    [    0.791006] [<ffffff90085c7414>] __device_attach+0xd0/0x158
    [    0.791016] [<ffffff90085c7b18>] device_initial_probe+0x24/0x30
    [    0.791026] [<ffffff90085c648c>] bus_probe_device+0x50/0xe4
    [    0.791038] [<ffffff90085c35b8>] device_add+0x3a4/0x76c
    [    0.791051] [<ffffff90087d0e84>] of_device_add+0x74/0x84
    [    0.791062] [<ffffff90087d19b8>] of_platform_device_create_pdata+0xc0/0x100
    [    0.791073] [<ffffff90087d1a2c>] of_platform_device_create+0x34/0x40
    [    0.791086] [<ffffff900903c910>] of_platform_default_populate_init+0x58/0x78
    [    0.791097] [<ffffff90080831fc>] do_one_initcall+0x88/0x160
    [    0.791109] [<ffffff90090010ac>] kernel_init_freeable+0x264/0x31c
    [    0.791123] [<ffffff9008a25bd0>] kernel_init+0x18/0x11c
    [    0.791133] [<ffffff9008082ec0>] ret_from_fork+0x10/0x50
    [    0.793717] console [pstore-1] enabled
    [    0.797845] pstore: Registered ramoops as persistent store backend
    [    0.804647] ramoops: attached 0x100000@0xf7edc000, ecc: 0/0
    
    Fixes: 663deb47880f ("pstore: Allow prz to control need for locking")
    Fixes: 109704492ef6 ("pstore: Make spinlock per zone instead of global")
    Reported-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc7e1a12dd5936544a1bf0f3b5e60e3087865b44
Author: Joel Fernandes <joelaf@google.com>
Date:   Thu Oct 20 00:34:01 2016 -0700

    pstore: Allow prz to control need for locking
    
    commit 663deb47880f2283809669563c5a52ac7c6aef1a upstream.
    
    In preparation of not locking at all for certain buffers depending on if
    there's contention, make locking optional depending on the initialization
    of the prz.
    
    Signed-off-by: Joel Fernandes <joelaf@google.com>
    [kees: moved locking flag into prz instead of via caller arguments]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0a8e4197bfe5810a61b262f0c57426e43d60feb
Author: Andrzej Hajda <a.hajda@samsung.com>
Date:   Thu Jan 5 10:34:07 2017 -0200

    v4l: s5c73m3: fix negation operator
    
    commit a2370ba2752538404e363346b339869c9973aeac upstream.
    
    Bool values should be negated using logical operators. Using bitwise operators
    results in unexpected and possibly incorrect results.
    
    Reported-by: David Binderman <dcb314@hotmail.com>
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1dbc0979b4f92f3b0d0bb86671639e09315f43c
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Jul 7 14:51:19 2017 -0400

    dentry name snapshots
    
    commit 49d31c2f389acfe83417083e1208422b4091cd9e upstream.
    
    take_dentry_name_snapshot() takes a safe snapshot of dentry name;
    if the name is a short one, it gets copied into caller-supplied
    structure, otherwise an extra reference to external name is grabbed
    (those are never modified).  In either case the pointer to stable
    string is stored into the same structure.
    
    dentry must be held by the caller of take_dentry_name_snapshot(),
    but may be freely dropped afterwards - the snapshot will stay
    until destroyed by release_dentry_name_snapshot().
    
    Intended use:
            struct name_snapshot s;
    
            take_dentry_name_snapshot(&s, dentry);
            ...
            access s.name
            ...
            release_dentry_name_snapshot(&s);
    
    Replaces fsnotify_oldname_...(), gets used in fsnotify to obtain the name
    to pass down with event.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f31f0a166c5ee34204e2b9b1533b6d7435bb8621
Author: Valentin Vidic <Valentin.Vidic@CARNet.hr>
Date:   Fri May 5 21:07:33 2017 +0200

    ipmi/watchdog: fix watchdog timeout set on reboot
    
    commit 860f01e96981a68553f3ca49f574ff14fe955e72 upstream.
    
    systemd by default starts watchdog on reboot and sets the timer to
    ShutdownWatchdogSec=10min.  Reboot handler in ipmi_watchdog than reduces
    the timer to 120s which is not enough time to boot a Xen machine with
    a lot of RAM.  As a result the machine is rebooted the second time
    during the long run of (XEN) Scrubbing Free RAM.....
    
    Fix this by setting the timer to 120s only if it was previously
    set to a low value.
    
    Signed-off-by: Valentin Vidic <Valentin.Vidic@CARNet.hr>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83eeedc1595f33d050cbd3d74b7af559f9ee1dd0
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Wed Dec 21 18:04:11 2016 +0100

    net, sched: fix soft lockup in tc_classify
    
    commit 628185cfddf1dfb701c4efe2cfd72cf5b09f5702 upstream.
    
    Shahar reported a soft lockup in tc_classify(), where we run into an
    endless loop when walking the classifier chain due to tp->next == tp
    which is a state we should never run into. The issue only seems to
    trigger under load in the tc control path.
    
    What happens is that in tc_ctl_tfilter(), thread A allocates a new
    tp, initializes it, sets tp_created to 1, and calls into tp->ops->change()
    with it. In that classifier callback we had to unlock/lock the rtnl
    mutex and returned with -EAGAIN. One reason why we need to drop there
    is, for example, that we need to request an action module to be loaded.
    
    This happens via tcf_exts_validate() -> tcf_action_init/_1() meaning
    after we loaded and found the requested action, we need to redo the
    whole request so we don't race against others. While we had to unlock
    rtnl in that time, thread B's request was processed next on that CPU.
    Thread B added a new tp instance successfully to the classifier chain.
    When thread A returned grabbing the rtnl mutex again, propagating -EAGAIN
    and destroying its tp instance which never got linked, we goto replay
    and redo A's request.
    
    This time when walking the classifier chain in tc_ctl_tfilter() for
    checking for existing tp instances we had a priority match and found
    the tp instance that was created and linked by thread B. Now calling
    again into tp->ops->change() with that tp was successful and returned
    without error.
    
    tp_created was never cleared in the second round, thus kernel thinks
    that we need to link it into the classifier chain (once again). tp and
    *back point to the same object due to the match we had earlier on. Thus
    for thread B's already public tp, we reset tp->next to tp itself and
    link it into the chain, which eventually causes the mentioned endless
    loop in tc_classify() once a packet hits the data path.
    
    Fix is to clear tp_created at the beginning of each request, also when
    we replay it. On the paths that can cause -EAGAIN we already destroy
    the original tp instance we had and on replay we really need to start
    from scratch. It seems that this issue was first introduced in commit
    12186be7d2e1 ("net_cls: fix unconfigured struct tcf_proto keeps chaining
    and avoid kernel panic when we use cls_cgroup").
    
    Fixes: 12186be7d2e1 ("net_cls: fix unconfigured struct tcf_proto keeps chaining and avoid kernel panic when we use cls_cgroup")
    Reported-by: Shahar Klein <shahark@mellanox.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Tested-by: Shahar Klein <shahark@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62e841cdbbf107863bd572aad893300b33d031fa
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Fri Jan 16 17:51:25 2015 +0000

    sh_eth: Fix ethtool operation crash when net device is down
    
    commit 4f9dce230b32eec45cec8c28cae61efdfa2f7d57 upstream.
    
    The driver connects and disconnects the PHY device whenever the
    net device is brought up and down.  The ethtool get_settings,
    set_settings and nway_reset operations will dereference a null
    or dangling pointer if called while it is down.
    
    I think it would be preferable to keep the PHY connected, but there
    may be good reasons not to.
    
    As an immediate fix for this bug:
    - Set the phydev pointer to NULL after disconnecting the PHY
    - Change those three operations to return -ENODEV while the PHY is
      not connected
    
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c59f879ba5ef8b7a0f36f66f14e10167c82ffe2
Author: Daniel Borkmann <dborkman@redhat.com>
Date:   Thu Jan 15 16:34:35 2015 +0100

    net: sctp: fix race for one-to-many sockets in sendmsg's auto associate
    
    commit 2061dcd6bff8b774b4fac8b0739b6be3f87bc9f2 upstream.
    
    I.e. one-to-many sockets in SCTP are not required to explicitly
    call into connect(2) or sctp_connectx(2) prior to data exchange.
    Instead, they can directly invoke sendmsg(2) and the SCTP stack
    will automatically trigger connection establishment through 4WHS
    via sctp_primitive_ASSOCIATE(). However, this in its current
    implementation is racy: INIT is being sent out immediately (as
    it cannot be bundled anyway) and the rest of the DATA chunks are
    queued up for later xmit when connection is established, meaning
    sendmsg(2) will return successfully. This behaviour can result
    in an undesired side-effect that the kernel made the application
    think the data has already been transmitted, although none of it
    has actually left the machine, worst case even after close(2)'ing
    the socket.
    
    Instead, when the association from client side has been shut down
    e.g. first gracefully through SCTP_EOF and then close(2), the
    client could afterwards still receive the server's INIT_ACK due
    to a connection with higher latency. This INIT_ACK is then considered
    out of the blue and hence responded with ABORT as there was no
    alive assoc found anymore. This can be easily reproduced f.e.
    with sctp_test application from lksctp. One way to fix this race
    is to wait for the handshake to actually complete.
    
    The fix defers waiting after sctp_primitive_ASSOCIATE() and
    sctp_primitive_SEND() succeeded, so that DATA chunks cooked up
    from sctp_sendmsg() have already been placed into the output
    queue through the side-effect interpreter, and therefore can then
    be bundeled together with COOKIE_ECHO control chunks.
    
    strace from example application (shortened):
    
    socket(PF_INET, SOCK_SEQPACKET, IPPROTO_SCTP) = 3
    sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
               msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
    sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
               msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
    sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
               msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
    sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
               msg_iov(1)=[{"hello", 5}], msg_controllen=0, msg_flags=0}, 0) = 5
    sendmsg(3, {msg_name(28)={sa_family=AF_INET, sin_port=htons(8888), sin_addr=inet_addr("192.168.1.115")},
               msg_iov(0)=[], msg_controllen=48, {cmsg_len=48, cmsg_level=0x84 /* SOL_??? */, cmsg_type=, ...},
               msg_flags=0}, 0) = 0 // graceful shutdown for SOCK_SEQPACKET via SCTP_EOF
    close(3) = 0
    
    tcpdump before patch (fooling the application):
    
    22:33:36.306142 IP 192.168.1.114.41462 > 192.168.1.115.8888: sctp (1) [INIT] [init tag: 3879023686] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: 3139201684]
    22:33:36.316619 IP 192.168.1.115.8888 > 192.168.1.114.41462: sctp (1) [INIT ACK] [init tag: 3345394793] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: 3380109591]
    22:33:36.317600 IP 192.168.1.114.41462 > 192.168.1.115.8888: sctp (1) [ABORT]
    
    tcpdump after patch:
    
    14:28:58.884116 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [INIT] [init tag: 438593213] [rwnd: 106496] [OS: 10] [MIS: 65535] [init TSN: 3092969729]
    14:28:58.888414 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [INIT ACK] [init tag: 381429855] [rwnd: 106496] [OS: 10] [MIS: 10] [init TSN: 2141904492]
    14:28:58.888638 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [COOKIE ECHO] , (2) [DATA] (B)(E) [TSN: 3092969729] [...]
    14:28:58.893278 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [COOKIE ACK] , (2) [SACK] [cum ack 3092969729] [a_rwnd 106491] [#gap acks 0] [#dup tsns 0]
    14:28:58.893591 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [DATA] (B)(E) [TSN: 3092969730] [...]
    14:28:59.096963 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [SACK] [cum ack 3092969730] [a_rwnd 106496] [#gap acks 0] [#dup tsns 0]
    14:28:59.097086 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [DATA] (B)(E) [TSN: 3092969731] [...] , (2) [DATA] (B)(E) [TSN: 3092969732] [...]
    14:28:59.103218 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [SACK] [cum ack 3092969732] [a_rwnd 106486] [#gap acks 0] [#dup tsns 0]
    14:28:59.103330 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [SHUTDOWN]
    14:28:59.107793 IP 192.168.1.115.8888 > 192.168.1.114.35846: sctp (1) [SHUTDOWN ACK]
    14:28:59.107890 IP 192.168.1.114.35846 > 192.168.1.115.8888: sctp (1) [SHUTDOWN COMPLETE]
    
    Looks like this bug is from the pre-git history museum. ;)
    
    Fixes: 08707d5482df ("lksctp-2_5_31-0_5_1.patch")
    Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
    Acked-by: Vlad Yasevich <vyasevich@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2e8037cd6b60cc85842280c19742244a66ffdc3
Author: Jan Stancek <jstancek@redhat.com>
Date:   Wed Feb 11 14:06:23 2015 +0100

    ipv6: fix possible deadlock in ip6_fl_purge / ip6_fl_gc
    
    commit 4762fb980465463734f02c67c67f40beb8903f73 upstream.
    
    Use spin_lock_bh in ip6_fl_purge() to prevent following potentially
    deadlock scenario between ip6_fl_purge() and ip6_fl_gc() timer.
    
      =================================
      [ INFO: inconsistent lock state ]
      3.19.0 #1 Not tainted
      ---------------------------------
      inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage.
      swapper/5/0 [HC0[0]:SC1[1]:HE1:SE0] takes:
       (ip6_fl_lock){+.?...}, at: [<ffffffff8171155d>] ip6_fl_gc+0x2d/0x180
      {SOFTIRQ-ON-W} state was registered at:
        [<ffffffff810ee9a0>] __lock_acquire+0x4a0/0x10b0
        [<ffffffff810efd54>] lock_acquire+0xc4/0x2b0
        [<ffffffff81751d2d>] _raw_spin_lock+0x3d/0x80
        [<ffffffff81711798>] ip6_flowlabel_net_exit+0x28/0x110
        [<ffffffff815f9759>] ops_exit_list.isra.1+0x39/0x60
        [<ffffffff815fa320>] cleanup_net+0x100/0x1e0
        [<ffffffff810ad80a>] process_one_work+0x20a/0x830
        [<ffffffff810adf4b>] worker_thread+0x11b/0x460
        [<ffffffff810b42f4>] kthread+0x104/0x120
        [<ffffffff81752bfc>] ret_from_fork+0x7c/0xb0
      irq event stamp: 84640
      hardirqs last  enabled at (84640): [<ffffffff81752080>] _raw_spin_unlock_irq+0x30/0x50
      hardirqs last disabled at (84639): [<ffffffff81751eff>] _raw_spin_lock_irq+0x1f/0x80
      softirqs last  enabled at (84628): [<ffffffff81091ad1>] _local_bh_enable+0x21/0x50
      softirqs last disabled at (84629): [<ffffffff81093b7d>] irq_exit+0x12d/0x150
    
      other info that might help us debug this:
       Possible unsafe locking scenario:
    
             CPU0
             ----
        lock(ip6_fl_lock);
        <Interrupt>
          lock(ip6_fl_lock);
    
       *** DEADLOCK ***
    
    Signed-off-by: Jan Stancek <jstancek@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 88c03bd0938b0cc8e0785cd58e6f08618bbaccd7
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Aug 17 15:51:56 2016 +0200

    kaweth: fix oops upon failed memory allocation
    
    commit 575ced7f8090c1a4e91e2daf8da9352a6a1fc7a7 upstream.
    
    Just return an error upon failure.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34d28e0ea037078a66cffb18b69924f8c9de975e
Author: Oliver Neukum <oneukum@suse.com>
Date:   Wed Aug 17 15:51:55 2016 +0200

    kaweth: fix firmware download
    
    commit 60bcabd080f53561efa9288be45c128feda1a8bb upstream.
    
    This fixes the oops discovered by the Umap2 project and Alan Stern.
    The intf member needs to be set before the firmware is downloaded.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5c94ca098a2693d1e7ec62b844eee81cdde06ea
Author: Calvin Owens <calvinowens@fb.com>
Date:   Fri Mar 18 12:45:42 2016 -0700

    mpt3sas: Don't overreach ioc->reply_post[] during initialization
    
    commit 5ec8a1753bc29efa7e4b1391d691c9c719b30257 upstream.
    
    In _base_make_ioc_operational(), we walk ioc->reply_queue_list and pull
    a pointer out of successive elements of ioc->reply_post[] for each entry
    in that list if RDPQ is enabled.
    
    Since the code pulls the pointer for the next iteration at the bottom of
    the loop, it triggers the a KASAN dump on the final iteration:
    
        BUG: KASAN: slab-out-of-bounds in _base_make_ioc_operational+0x47b7/0x47e0 [mpt3sas] at addr ffff880754816ab0
        Read of size 8 by task modprobe/305
        <snip>
        Call Trace:
         [<ffffffff81dfc591>] dump_stack+0x4d/0x6c
         [<ffffffff814c9689>] print_trailer+0xf9/0x150
         [<ffffffff814ceda4>] object_err+0x34/0x40
         [<ffffffff814d1231>] kasan_report_error+0x221/0x530
         [<ffffffff814d1673>] __asan_report_load8_noabort+0x43/0x50
         [<ffffffffa0043637>] _base_make_ioc_operational+0x47b7/0x47e0 [mpt3sas]
         [<ffffffffa0049a51>] mpt3sas_base_attach+0x1991/0x2120 [mpt3sas]
         [<ffffffffa0053c93>] _scsih_probe+0xeb3/0x16b0 [mpt3sas]
         [<ffffffff81ebd047>] local_pci_probe+0xc7/0x170
         [<ffffffff81ebf2cf>] pci_device_probe+0x20f/0x290
         [<ffffffff820d50cd>] really_probe+0x17d/0x600
         [<ffffffff820d56a3>] __driver_attach+0x153/0x190
         [<ffffffff820cffac>] bus_for_each_dev+0x11c/0x1a0
         [<ffffffff820d421d>] driver_attach+0x3d/0x50
         [<ffffffff820d378a>] bus_add_driver+0x44a/0x5f0
         [<ffffffff820d666c>] driver_register+0x18c/0x3b0
         [<ffffffff81ebcb76>] __pci_register_driver+0x156/0x200
         [<ffffffffa00c8135>] _mpt3sas_init+0x135/0x1000 [mpt3sas]
         [<ffffffff81000423>] do_one_initcall+0x113/0x2b0
         [<ffffffff813caa5a>] do_init_module+0x1d0/0x4d8
         [<ffffffff81273909>] load_module+0x6729/0x8dc0
         [<ffffffff81276123>] SYSC_init_module+0x183/0x1a0
         [<ffffffff8127625e>] SyS_init_module+0xe/0x10
         [<ffffffff828fe7d7>] entry_SYSCALL_64_fastpath+0x12/0x6a
    
    Fix this by pulling the value at the beginning of the loop.
    
    Signed-off-by: Calvin Owens <calvinowens@fb.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Jens Axboe <axboe@fb.com>
    Acked-by: Chaitra Basappa <chaitra.basappa@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37611b5784f18326e9b3d61220f87f6a324cb89b
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Tue Mar 21 11:30:16 2017 +0000

    mailbox: handle empty message in tx_tick
    
    commit cb710ab1d8a23f68ff8f45aedf3e552bb90e70de upstream.
    
    We already check if the message is empty before calling the client
    tx_done callback. Calling completion on a wait event is also invalid
    if the message is empty.
    
    This patch moves the existing empty message check earlier.
    
    Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox")
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b2d738b2123320141778fdf646a5e11a1e97922
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Tue Mar 21 11:30:15 2017 +0000

    mailbox: skip complete wait event if timer expired
    
    commit cc6eeaa3029a6dbcb4ad41b1f92876483bd88965 upstream.
    
    If a wait_for_completion_timeout() call returns due to a timeout,
    complete() can get called after returning from the wait which is
    incorrect and can cause subsequent transmissions on a channel to fail.
    Since the wait_for_completion_timeout() sees the completion variable
    is non-zero caused by the erroneous/spurious complete() call, and
    it immediately returns without waiting for the time as expected by the
    client.
    
    This patch fixes the issue by skipping complete() call for the timer
    expiry.
    
    Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox")
    Reported-by: Alexey Klimov <alexey.klimov@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 675c4213db56d53d3c358d80ba1cb45d1374ab27
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Tue Mar 21 11:30:14 2017 +0000

    mailbox: always wait in mbox_send_message for blocking Tx mode
    
    commit c61b781ee084e69855477d23dd33e7e6caad652c upstream.
    
    There exists a race when msg_submit return immediately as there was an
    active request being processed which may have completed just before it's
    checked again in mbox_send_message. This will result in return to the
    caller without waiting in mbox_send_message even when it's blocking Tx.
    
    This patch fixes the issue by waiting for the completion always if Tx
    is in blocking mode.
    
    Fixes: 2b6d83e2b8b7 ("mailbox: Introduce framework for mailbox")
    Reported-by: Alexey Klimov <alexey.klimov@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Reviewed-by: Alexey Klimov <alexey.klimov@arm.com>
    Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 60866c073c313ef3f72ccd0ea6f96cefa6beb167
Author: Lior David <qca_liord@qca.qualcomm.com>
Date:   Wed Nov 23 16:06:41 2016 +0200

    wil6210: fix deadlock when using fw_no_recovery option
    
    commit dfb5b098e0f40b68aa07f2ec55f4dd762efefbfa upstream.
    
    When FW crashes with no_fw_recovery option, driver
    waits for manual recovery with wil->mutex held, this
    can easily create deadlocks.
    Fix the problem by moving the wait outside the lock.
    
    Signed-off-by: Lior David <qca_liord@qca.qualcomm.com>
    Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cb1585c473ec9a5a98104e79ed07cee7de3729e
Author: Annie Cherkaev <annie.cherk@gmail.com>
Date:   Sat Jul 15 15:08:58 2017 -0600

    isdn/i4l: fix buffer overflow
    
    commit 9f5af546e6acc30f075828cb58c7f09665033967 upstream.
    
    This fixes a potential buffer overflow in isdn_net.c caused by an
    unbounded strcpy.
    
    [ ISDN seems to be effectively unmaintained, and the I4L driver in
      particular is long deprecated, but in case somebody uses this..
        - Linus ]
    
    Signed-off-by: Jiten Thakkar <jitenmt@gmail.com>
    Signed-off-by: Annie Cherkaev <annie.cherk@gmail.com>
    Cc: Karsten Keil <isdn@linux-pingi.de>
    Cc: Kees Cook <keescook@chromium.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 588b2464f3e5467902c6ebf56d10339793147155
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Tue Oct 6 12:37:41 2015 -0400

    strscpy: zero any trailing garbage bytes in the destination
    
    commit 990486c8af044f89bddfbde1d1cf9fde449bedbf upstream.
    
    It's possible that the destination can be shadowed in userspace
    (as, for example, the perf buffers are now).  So we should take
    care not to leak data that could be inspected by userspace.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7191e904907108f470dfdaabccf905e0be34265
Author: Chris Metcalf <cmetcalf@ezchip.com>
Date:   Wed Apr 29 12:52:04 2015 -0400

    string: provide strscpy()
    
    commit 30035e45753b708e7d47a98398500ca005e02b86 upstream.
    
    The strscpy() API is intended to be used instead of strlcpy(),
    and instead of most uses of strncpy().
    
    - Unlike strlcpy(), it doesn't read from memory beyond (src + size).
    
    - Unlike strlcpy() or strncpy(), the API provides an easy way to check
      for destination buffer overflow: an -E2BIG error return value.
    
    - The provided implementation is robust in the face of the source
      buffer being asynchronously changed during the copy, unlike the
      current implementation of strlcpy().
    
    - Unlike strncpy(), the destination buffer will be NUL-terminated
      if the string in the source buffer is too long.
    
    - Also unlike strncpy(), the destination buffer will not be updated
      beyond the NUL termination, avoiding strncpy's behavior of zeroing
      the entire tail end of the destination buffer.  (A memset() after
      the strscpy() can be used if this behavior is desired.)
    
    - The implementation should be reasonably performant on all
      platforms since it uses the asm/word-at-a-time.h API rather than
      simple byte copy.  Kernel-to-kernel string copy is not considered
      to be performance critical in any case.
    
    Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 906e29770e313720fed1a3d39e742e1e9c773f42
Author: Jia-Ju Bai <baijiaju1990@163.com>
Date:   Wed May 31 09:40:11 2017 +0800

    isdn: Fix a sleep-in-atomic bug
    
    commit e8f4ae85439f34bec3b0ab69223a41809dab28c9 upstream.
    
    The driver may sleep under a spin lock, the function call path is:
    isdn_ppp_mp_receive (acquire the lock)
      isdn_ppp_mp_reassembly
        isdn_ppp_push_higher
          isdn_ppp_decompress
            isdn_ppp_ccp_reset_trans
              isdn_ppp_ccp_reset_alloc_state
                kzalloc(GFP_KERNEL) --> may sleep
    
    To fixed it, the "GFP_KERNEL" is replaced with "GFP_ATOMIC".
    
    Signed-off-by: Jia-Ju Bai <baijiaju1990@163.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa3a735de9c9999da16b189424ca000a5bae5244
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Sun Mar 5 12:34:49 2017 -0800

    net: phy: Do not perform software reset for Generic PHY
    
    commit 0878fff1f42c18e448ab5b8b4f6a3eb32365b5b6 upstream.
    
    The Generic PHY driver is a catch-all PHY driver and it should preserve
    whatever prior initialization has been done by boot loader or firmware
    agents. For specific PHY device configuration it is expected that a
    specialized PHY driver would take over that role.
    
    Resetting the generic PHY was a bad idea that has lead to several
    complaints and downstream workarounds e.g: in OpenWrt/LEDE so restore
    the behavior prior to 87aa9f9c61ad ("net: phy: consolidate PHY
    reset in phy_init_hw()").
    
    Reported-by: Felix Fietkau <nbd@nbd.name>
    Fixes: 87aa9f9c61ad ("net: phy: consolidate PHY reset in phy_init_hw()")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd6409bbe3d8a822c5d7ce794c2093a444a6890d
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Dec 19 06:20:58 2014 +0000

    Bluetooth: cmtp: cmtp_add_connection() should verify that it's dealing with l2cap socket
    
    commit 96c26653ce65bf84f3212f8b00d4316c1efcbf4c upstream.
    
    ... rather than relying on ciptool(8) never passing it anything else.  Give
    it e.g. an AF_UNIX connected socket (from socketpair(2)) and it'll oops,
    trying to evaluate &l2cap_pi(sock->sk)->chan->dst...
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be7c0da374853896cf489c2390275fdfe2484613
Author: Johan Hedberg <johan.hedberg@intel.com>
Date:   Tue Feb 3 10:01:13 2015 +0200

    Bluetooth: Fix potential NULL dereference
    
    commit 88d9077c27d0c1a7c022d9dc987640beecf23560 upstream.
    
    The bnep_get_device function may be triggered by an ioctl just after a
    connection has gone down. In such a case the respective L2CAP chan->conn
    pointer will get set to NULL (by l2cap_chan_del). This patch adds a
    missing NULL check for this case in the bnep_get_device() function.
    
    Reported-by: Patrik Flykt <patrik.flykt@linux.intel.com>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6237750acc4494cb28e174289d5d335313ff2ea
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri Dec 19 06:20:59 2014 +0000

    Bluetooth: bnep: bnep_add_connection() should verify that it's dealing with l2cap socket
    
    commit 71bb99a02b32b4cc4265118e85f6035ca72923f0 upstream.
    
    same story as cmtp
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 354ff8045083e3f4e2257bd51ca06deda7dac7d6
Author: Cheah Kok Cheong <thrust73@gmail.com>
Date:   Fri Dec 30 19:25:52 2016 +0800

    Staging: comedi: comedi_fops: Avoid orphaned proc entry
    
    commit bf279ece37d2a3eaaa9813fcd7a1d8a81eb29c20 upstream.
    
    Move comedi_proc_init to the end to avoid orphaned proc entry
    if module loading failed.
    
    Signed-off-by: Cheah Kok Cheong <thrust73@gmail.com>
    Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 339b04fb7a83d0587d80588e960f3530d0fb9ba8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Aug 3 12:26:04 2017 -0700

    Revert "powerpc/numa: Fix percpu allocations to be NUMA aware"
    
    This reverts commit 138bb14846a5856747694ae9ef565c9eb4533a1e which is
    commit ba4a648f12f4cd0a8003dd229b6ca8a53348ee4b upstream.
    
    Michal Hocko writes:
    
    JFYI. We have encountered a regression after applying this patch on a
    large ppc machine. While the patch is the right thing to do it doesn't
    work well with the current vmalloc area size on ppc and large machines
    where NUMA nodes are very far from each other. Just for the reference
    the boot fails on such a machine with bunch of warning preceeding it.
    See http://lkml.kernel.org/r/20170724134240.GL25221@dhcp22.suse.cz
    
    It seems the right thing to do is to enlarge the vmalloc space on ppc
    but this is not the case in the upstream kernel yet AFAIK. It is also
    questionable whether that is a stable material but I will decision on
    you here.
    
    We have reverted this patch from our 4.4 based kernel.
    
    Newer kernels do not have enlarged vmalloc space yet AFAIK so they won't
    work properly eiter. This bug is quite rare though because you need a
    specific HW configuration to trigger the issue - namely NUMA nodes have
    to be far away from each other in the physical memory space.
    
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94f743e4b2b3868cb631846ec512cf4682a16669
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Fri Jun 16 11:53:19 2017 +1000

    KVM: PPC: Book3S HV: Save/restore host values of debug registers
    
    commit 7ceaa6dcd8c6f59588428cec37f3c8093dd1011f upstream.
    
    At present, HV KVM on POWER8 and POWER9 machines loses any instruction
    or data breakpoint set in the host whenever a guest is run.
    Instruction breakpoints are currently only used by xmon, but ptrace
    and the perf_event subsystem can set data breakpoints as well as xmon.
    
    To fix this, we save the host values of the debug registers (CIABR,
    DAWR and DAWRX) before entering the guest and restore them on exit.
    To provide space to save them in the stack frame, we expand the stack
    frame allocated by kvmppc_hv_entry() from 112 to 144 bytes.
    
    [paulus@ozlabs.org - Adjusted stack offsets since we aren't saving
     POWER9-specific registers.]
    
    Fixes: b005255e12a3 ("KVM: PPC: Book3S HV: Context-switch new POWER8 SPRs", 2014-01-08)
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c3ab87687300db30d14ed940716056e5891c2c1
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Mon Jul 31 10:07:43 2017 +1000

    KVM: PPC: Book3S HV: Reload HTM registers explicitly
    
    Commit 46a704f8409f ("KVM: PPC: Book3S HV: Preserve userspace HTM
    state properly", 2017-06-15) added code which assumes that the kernel
    is able to handle a TM (transactional memory) unavailable interrupt
    from userspace by reloading the TM-related registers and enabling TM
    for the process.  That ability was added in the 4.9 kernel; earlier
    kernel versions simply panic on getting the TM unavailable interrupt.
    
    Since commit 46a704f8409f has been backported to the 3.18 stable tree
    as commit 0b423daba180, 3.18.59 and subsequent versions are vulnerable
    to a userspace-triggerable panic.
    
    This patch fixes the problem by explicitly reloading the TM-related
    registers before returning to userspace, rather than disabling TM
    for the process.
    
    Commit 46a704f8409f also failed to enable TM for the kernel, leading
    to a TM unavailable interrupt in the kernel, causing an oops.  This
    fixes that problem too, by enabling TM before accessing the TM
    registers.  That problem is fixed upstream by the patch "KVM: PPC:
    Book3S HV: Enable TM before accessing TM registers".
    
    Fixes: 0b423daba180 ("KVM: PPC: Book3S HV: Preserve userspace HTM state properly")
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 901aae4f04ae1a1d69146c35d2c7bb342cd145d7
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Thu Jun 15 15:43:17 2017 +1000

    KVM: PPC: Book3S HV: Restore critical SPRs to host values on guest exit
    
    commit 4c3bb4ccd074e1a0552078c0bf94c662367a1658 upstream.
    
    This restores several special-purpose registers (SPRs) to sane values
    on guest exit that were missed before.
    
    TAR and VRSAVE are readable and writable by userspace, and we need to
    save and restore them to prevent the guest from potentially affecting
    userspace execution (not that TAR or VRSAVE are used by any known
    program that run uses the KVM_RUN ioctl).  We save/restore these
    in kvmppc_vcpu_run_hv() rather than on every guest entry/exit.
    
    FSCR affects userspace execution in that it can prohibit access to
    certain facilities by userspace.  We restore it to the normal value
    for the task on exit from the KVM_RUN ioctl.
    
    IAMR is normally 0, and is restored to 0 on guest exit.  However,
    with a radix host on POWER9, it is set to a value that prevents the
    kernel from executing user-accessible memory.  On POWER9, we save
    IAMR on guest entry and restore it on guest exit to the saved value
    rather than 0.  On POWER8 we continue to set it to 0 on guest exit.
    
    PSPB is normally 0.  We restore it to 0 on guest exit to prevent
    userspace taking advantage of the guest having set it non-zero
    (which would allow userspace to set its SMT priority to high).
    
    UAMOR is normally 0.  We restore it to 0 on guest exit to prevent
    the AMR from being used as a covert channel between userspace
    processes, since the AMR is not context-switched at present.
    
    [paulus@ozlabs.org - removed IAMR bits that are only needed on POWER9;
     adjusted FSCR save/restore for lack of fscr field in thread_struct.]
    
    Fixes: b005255e12a3 ("KVM: PPC: Book3S HV: Context-switch new POWER8 SPRs", 2014-01-08)
    Cc: stable@vger.kernel.org # v3.14+
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f1957f2bd485a17b9ed365e9001fb7055f5b291
Author: Sinclair Yeh <syeh@vmware.com>
Date:   Mon Jul 17 23:28:36 2017 -0700

    drm/vmwgfx: Fix gcc-7.1.1 warning
    
    commit fcfffdd8f98ac305285dca568b5065ef86be6458 upstream.
    
    The current code does not look correct, and the reason for it is
    probably lost.  Since this now generates a compiler warning,
    fix it to what makes sense.
    
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sinclair Yeh <syeh@vmware.com>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c81489cce937796ba94f6f93bde0577e6e642b39
Author: Ofer Heifetz <oferh@marvell.com>
Date:   Mon Jul 24 09:17:40 2017 +0300

    md/raid5: add thread_group worker async_tx_issue_pending_all
    
    commit 7e96d559634b73a8158ee99a7abece2eacec2668 upstream.
    
    Since thread_group worker and raid5d kthread are not in sync, if
    worker writes stripe before raid5d then requests will be waiting
    for issue_pendig.
    
    Issue observed when building raid5 with ext4, in some build runs
    jbd2 would get hung and requests were waiting in the HW engine
    waiting to be issued.
    
    Fix this by adding a call to async_tx_issue_pending_all in the
    raid5_do_work.
    
    Signed-off-by: Ofer Heifetz <oferh@marvell.com>
    Signed-off-by: Shaohua Li <shli@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 716c82acbf2eac596dff6362476b20a2fa55bbb5
Author: Laurent Vivier <lvivier@redhat.com>
Date:   Fri Jul 21 16:51:39 2017 +0200

    powerpc/pseries: Fix of_node_put() underflow during reconfig remove
    
    commit 4fd1bd443e80b12f0a01a45fb9a793206b41cb72 upstream.
    
    As for commit 68baf692c435 ("powerpc/pseries: Fix of_node_put()
    underflow during DLPAR remove"), the call to of_node_put() must be
    removed from pSeries_reconfig_remove_node().
    
    dlpar_detach_node() and pSeries_reconfig_remove_node() both call
    of_detach_node(), and thus the node should not be released in both
    cases.
    
    Fixes: 0829f6d1f69e ("of: device_node kobject lifecycle fixes")
    Signed-off-by: Laurent Vivier <lvivier@redhat.com>
    Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d85f4de8489038022d46f8b683d5ec1580b84da5
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 31 10:20:32 2017 -0800

    net: reduce skb_warn_bad_offload() noise
    
    commit b2504a5dbef3305ef41988ad270b0e8ec289331c upstream.
    
    Dmitry reported warnings occurring in __skb_gso_segment() [1]
    
    All SKB_GSO_DODGY producers can allow user space to feed
    packets that trigger the current check.
    
    We could prevent them from doing so, rejecting packets, but
    this might add regressions to existing programs.
    
    It turns out our SKB_GSO_DODGY handlers properly set up checksum
    information that is needed anyway when packets needs to be segmented.
    
    By checking again skb_needs_check() after skb_mac_gso_segment(),
    we should remove these pesky warnings, at a very minor cost.
    
    With help from Willem de Bruijn
    
    [1]
    WARNING: CPU: 1 PID: 6768 at net/core/dev.c:2439 skb_warn_bad_offload+0x2af/0x390 net/core/dev.c:2434
    lo: caps=(0x000000a2803b7c69, 0x0000000000000000) len=138 data_len=0 gso_size=15883 gso_type=4 ip_summed=0
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 1 PID: 6768 Comm: syz-executor1 Not tainted 4.9.0 #5
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
     ffff8801c063ecd8 ffffffff82346bdf ffffffff00000001 1ffff100380c7d2e
     ffffed00380c7d26 0000000041b58ab3 ffffffff84b37e38 ffffffff823468f1
     ffffffff84820740 ffffffff84f289c0 dffffc0000000000 ffff8801c063ee20
    Call Trace:
     [<ffffffff82346bdf>] __dump_stack lib/dump_stack.c:15 [inline]
     [<ffffffff82346bdf>] dump_stack+0x2ee/0x3ef lib/dump_stack.c:51
     [<ffffffff81827e34>] panic+0x1fb/0x412 kernel/panic.c:179
     [<ffffffff8141f704>] __warn+0x1c4/0x1e0 kernel/panic.c:542
     [<ffffffff8141f7e5>] warn_slowpath_fmt+0xc5/0x100 kernel/panic.c:565
     [<ffffffff8356cbaf>] skb_warn_bad_offload+0x2af/0x390 net/core/dev.c:2434
     [<ffffffff83585cd2>] __skb_gso_segment+0x482/0x780 net/core/dev.c:2706
     [<ffffffff83586f19>] skb_gso_segment include/linux/netdevice.h:3985 [inline]
     [<ffffffff83586f19>] validate_xmit_skb+0x5c9/0xc20 net/core/dev.c:2969
     [<ffffffff835892bb>] __dev_queue_xmit+0xe6b/0x1e70 net/core/dev.c:3383
     [<ffffffff8358a2d7>] dev_queue_xmit+0x17/0x20 net/core/dev.c:3424
     [<ffffffff83ad161d>] packet_snd net/packet/af_packet.c:2930 [inline]
     [<ffffffff83ad161d>] packet_sendmsg+0x32ed/0x4d30 net/packet/af_packet.c:2955
     [<ffffffff834f0aaa>] sock_sendmsg_nosec net/socket.c:621 [inline]
     [<ffffffff834f0aaa>] sock_sendmsg+0xca/0x110 net/socket.c:631
     [<ffffffff834f329a>] ___sys_sendmsg+0x8fa/0x9f0 net/socket.c:1954
     [<ffffffff834f5e58>] __sys_sendmsg+0x138/0x300 net/socket.c:1988
     [<ffffffff834f604d>] SYSC_sendmsg net/socket.c:1999 [inline]
     [<ffffffff834f604d>] SyS_sendmsg+0x2d/0x50 net/socket.c:1995
     [<ffffffff84371941>] entry_SYSCALL_64_fastpath+0x1f/0xc2
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov  <dvyukov@google.com>
    Cc: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Mark Salyzyn <salyzyn@android.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d0abb7b0debd522a0752571be1e820f45333d83
Author: Joel Fernandes <joelaf@google.com>
Date:   Thu Oct 20 00:34:00 2016 -0700

    pstore: Make spinlock per zone instead of global
    
    commit 109704492ef637956265ec2eb72ae7b3b39eb6f4 upstream.
    
    Currently pstore has a global spinlock for all zones. Since the zones
    are independent and modify different areas of memory, there's no need
    to have a global lock, so we should use a per-zone lock as introduced
    here. Also, when ramoops's ftrace use-case has a FTRACE_PER_CPU flag
    introduced later, which splits the ftrace memory area into a single zone
    per CPU, it will eliminate the need for locking. In preparation for this,
    make the locking optional.
    
    Signed-off-by: Joel Fernandes <joelaf@google.com>
    [kees: updated commit message]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Cc: Leo Yan <leo.yan@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c64a196b2b667555af9231dae4e63af6590ed2c7
Author: Yuejie Shi <syjcnss@gmail.com>
Date:   Fri Mar 31 15:10:20 2017 +0800

    af_key: Add lock to key dump
    
    commit 89e357d83c06b6fac581c3ca7f0ee3ae7e67109e upstream.
    
    A dump may come in the middle of another dump, modifying its dump
    structure members. This race condition will result in NULL pointer
    dereference in kernel. So add a lock to prevent that race.
    
    Fixes: 83321d6b9872 ("[AF_KEY]: Dump SA/SP entries non-atomically")
    Signed-off-by: Yuejie Shi <syjcnss@gmail.com>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Mark Salyzyn <salyzyn@android.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>