commit 4c666b0d9070a095e945387bd674476820f79528
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Aug 11 08:49:50 2017 -0700

    Linux 4.9.42

commit f9636c9bdd5828f29cdfaf620e3a424a5f8cc221
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 c3c94716855a1601b39c2ff587812906ea8b451c
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 ef09c9ff343122a0b245416066992d096416ff19
Author: Michal Kubeček <mkubecek@suse.cz>
Date:   Mon Jun 19 13:03:43 2017 +0200

    net: account for current skb length when deciding about UFO
    
    
    [ Upstream commit a5cb659bbc1c8644efa0c3138a757a1e432a4880 ]
    
    Our customer encountered stuck NFS writes for blocks starting at specific
    offsets w.r.t. page boundary caused by networking stack sending packets via
    UFO enabled device with wrong checksum. The problem can be reproduced by
    composing a long UDP datagram from multiple parts using MSG_MORE flag:
    
      sendto(sd, buff, 1000, MSG_MORE, ...);
      sendto(sd, buff, 1000, MSG_MORE, ...);
      sendto(sd, buff, 3000, 0, ...);
    
    Assume this packet is to be routed via a device with MTU 1500 and
    NETIF_F_UFO enabled. When second sendto() gets into __ip_append_data(),
    this condition is tested (among others) to decide whether to call
    ip_ufo_append_data():
    
      ((length + fragheaderlen) > mtu) || (skb && skb_is_gso(skb))
    
    At the moment, we already have skb with 1028 bytes of data which is not
    marked for GSO so that the test is false (fragheaderlen is usually 20).
    Thus we append second 1000 bytes to this skb without invoking UFO. Third
    sendto(), however, has sufficient length to trigger the UFO path so that we
    end up with non-UFO skb followed by a UFO one. Later on, udp_send_skb()
    uses udp_csum() to calculate the checksum but that assumes all fragments
    have correct checksum in skb->csum which is not true for UFO fragments.
    
    When checking against MTU, we need to add skb->len to length of new segment
    if we already have a partially filled skb and fragheaderlen only if there
    isn't one.
    
    In the IPv6 case, skb can only be null if this is the first segment so that
    we have to use headersize (length of the first IPv6 header) rather than
    fragheaderlen (length of IPv6 header of further fragments) for skb == NULL.
    
    Fixes: e89e9cf539a2 ("[IPv4/IPv6]: UFO Scatter-gather approach")
    Fixes: e4c5e13aa45c ("ipv6: Should use consistent conditional judgement for
            ip6 fragment between __ip6_append_data and ip6_finish_output")
    Signed-off-by: Michal Kubecek <mkubecek@suse.cz>
    Acked-by: Vlad Yasevich <vyasevic@redhat.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 f102bb7164c9020e12662998f0fd99c3be72d4f6
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 a69f0d54fdc96914a041039c22e46da8e95c4d22
Author: Or Gerlitz <ogerlitz@mellanox.com>
Date:   Sun Jan 15 19:05:38 2017 +0200

    net/mlx5: E-Switch, Re-enable RoCE on mode change only after FDB destroy
    
    
    [ Upstream commit 5bae8c031053c69b4aa74b7f1ba15d4ec8426208 ]
    
    We must re-enable RoCE on the e-switch management port (PF) only after destroying
    the FDB in its switchdev/offloaded mode. Otherwise, when encapsulation is supported,
    this re-enablement will fail.
    
    Also, it's more natural and symmetric to disable RoCE on the PF before we create
    the FDB under switchdev mode, so do that as well and revert if getting into error
    during the mode change later.
    
    Fixes: 9da34cd34e85 ('net/mlx5: Disable RoCE on the e-switch management [..]')
    Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
    Reviewed-by: Hadar Hen Zion <hadarh@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22cccef1fc709cae4d78c47c7371acf24f328037
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 916a05b90d8322f38ea133feb3a194617e507c3c
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 d12824c897a2dea1b8b794e28b4b88f9cd197d28
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 c736011052cf2fdc6e310195ce0fd0805ddbb0b6
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 bebbe845cb50ab4b499bff2d0bbe2fef09de86af
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 e6d53f5f8c0311032bf518d253522b73c96416f3
Author: Omar Sandoval <osandov@fb.com>
Date:   Mon Jan 9 11:44:12 2017 -0800

    virtio_blk: fix panic in initialization error path
    
    
    [ Upstream commit 6bf6b0aa3da84a3d9126919a94c49c0fb7ee2fb3 ]
    
    If blk_mq_init_queue() returns an error, it gets assigned to
    vblk->disk->queue. Then, when we call put_disk(), we end up calling
    blk_put_queue() with the ERR_PTR, causing a bad dereference. Fix it by
    only assigning to vblk->disk->queue on success.
    
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 952d07ac1e6e9e59267d69341c2e820710eaa718
Author: Jeff Moyer <jmoyer@redhat.com>
Date:   Mon Jan 9 15:20:31 2017 -0500

    nbd: blk_mq_init_queue returns an error code on failure, not NULL
    
    
    [ Upstream commit 25b4acfc7de0fc4da3bfea3a316f7282c6fbde81 ]
    
    Additionally, don't assign directly to disk->queue, otherwise
    blk_put_queue (called via put_disk) will choke (panic) on the errno
    stored there.
    
    Bug found by code inspection after Omar found a similar issue in
    virtio_blk.  Compile-tested only.
    
    Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
    Reviewed-by: Omar Sandoval <osandov@fb.com>
    Reviewed-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44d52834efb3d23e73a014afd8b22cfedb9a0eae
Author: Steve Wise <swise@opengridcomputing.com>
Date:   Thu Dec 22 07:40:37 2016 -0800

    iw_cxgb4: do not send RX_DATA_ACK CPLs after close/abort
    
    
    [ Upstream commit 3bcf96e0183f5c863657cb6ae9adad307a0f6071 ]
    
    Function rx_data(), which handles ingress CPL_RX_DATA messages, was
    always sending an RX_DATA_ACK with the goal of updating the credits.
    However, if the RDMA connection is moved out of FPDU mode abruptly,
    then it is possible for iw_cxgb4 to process queued RX_DATA CPLs after HW
    has aborted the connection.  These CPLs should not trigger RX_DATA_ACKS.
    If they do, HW can see a READ after DELETE of the DB_LE hash entry for
    the tid and post a LE_DB HashTblMemCrcError.
    
    Signed-off-by: Steve Wise <swise@opengridcomputing.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 984922f2c897f669e994ad851eb799d8348f92fd
Author: Emmanuel Vadot <manu@bidouilliste.com>
Date:   Wed Dec 14 15:57:24 2016 +0100

    ARM: dts: sunxi: Change node name for pwrseq pin on Olinuxino-lime2-emmc
    
    
    [ Upstream commit 3116d37651d77125bf50f81f859b1278e02ccce6 ]
    
    The node name for the power seq pin is mmc2@0 like the mmc2_pins_a one.
    This makes the original node (mmc2_pins_a) scrapped out of the dtb and
    result in a unusable eMMC if U-Boot didn't configured the pins to the
    correct functions.
    
    Signed-off-by: Emmanuel Vadot <manu@bidouilliste.com>
    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e9e71782f3462d5aecb0720d26298253bdbeca7
Author: Milo Kim <woogyom.kim@gmail.com>
Date:   Tue Dec 13 08:18:15 2016 +0900

    ARM: dts: sun8i: Support DTB build for NanoPi M1
    
    
    [ Upstream commit 661ccdc1a95f18ab6c1373322fde09afd5b90a1f ]
    
    The commit 10efbf5f1633 ("ARM: dts: sun8i: Add dts file for NanoPi M1 SBC")
    introduced NanoPi M1 board but it's missing in Allwinner H3 DTB build.
    
    Signed-off-by: Milo Kim <woogyom.kim@gmail.com>
    Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61cf0afe12eb0e5417b0c39087001412ca470d32
Author: Gerd Hoffmann <kraxel@redhat.com>
Date:   Mon Nov 28 08:52:20 2016 +0100

    drm/virtio: fix framebuffer sparse warning
    
    
    [ Upstream commit 71d3f6ef7f5af38dea2975ec5715c88bae92e92d ]
    
    virtio uses normal ram as backing storage for the framebuffer, so we
    should assign the address to new screen_buffer (added by commit
    17a7b0b4d9749f80d365d7baff5dec2f54b0e992) instead of screen_base.
    
    Reported-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a60965a0ef7e92325c4e72d8965c4b8c8fdc429
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 99eb27d6182d0d90c7f0786a1fa0147d75c25684
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Thu Dec 22 10:44:30 2016 +0100

    clk/samsung: exynos542x: mark some clocks as critical
    
    
    [ Upstream commit 318fa46cc60d37fec1e87dbf03a82aca0f5ce695 ]
    
    Some parent clocks of the Exynos542x clock blocks, which have separate
    power domains (like DISP, MFC, MSC, GSC, FSYS and G2D) must be always
    enabled to access any register related to power management unit or devices
    connected to it. For the time being, until a proper solution based on
    runtime PM is applied, mark those clocks as critical (instead of ignore
    unused or even no flags) to prevent disabling them.
    
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
    Tested-by: Javier Martinez Canillas <javier@osg.samsung.com> [Exynos5800 Peach Pi Chromebook]
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee96797b78cacf08b0d3d5ca72f725bd4e371c20
Author: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
Date:   Mon Jan 9 10:45:49 2017 +0300

    ipv4: make tcp_notsent_lowat sysctl knob behave as true unsigned int
    
    
    [ Upstream commit b007f09072ca8afa118ade333e717ba443e8d807 ]
    
    > cat /proc/sys/net/ipv4/tcp_notsent_lowat
    -1
    > echo 4294967295 > /proc/sys/net/ipv4/tcp_notsent_lowat
    -bash: echo: write error: Invalid argument
    > echo -2147483648 > /proc/sys/net/ipv4/tcp_notsent_lowat
    > cat /proc/sys/net/ipv4/tcp_notsent_lowat
    -2147483648
    
    but in documentation we have "tcp_notsent_lowat - UNSIGNED INTEGER"
    
    v2: simplify to just proc_douintvec
    Signed-off-by: Pavel Tikhomirov <ptikhomirov@virtuozzo.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 0bbbbaef6aa0df22c4bafd6db231b173697483ee
Author: Zefir Kurtisi <zefir.kurtisi@neratec.com>
Date:   Fri Jan 6 12:14:48 2017 +0100

    phy state machine: failsafe leave invalid RUNNING state
    
    
    [ Upstream commit 811a919135b980bac8009d042acdccf10dc1ef5e ]
    
    While in RUNNING state, phy_state_machine() checks for link changes by
    comparing phydev->link before and after calling phy_read_status().
    This works as long as it is guaranteed that phydev->link is never
    changed outside the phy_state_machine().
    
    If in some setups this happens, it causes the state machine to miss
    a link loss and remain RUNNING despite phydev->link being 0.
    
    This has been observed running a dsa setup with a process continuously
    polling the link states over ethtool each second (SNMPD RFC-1213
    agent). Disconnecting the link on a phy followed by a ETHTOOL_GSET
    causes dsa_slave_get_settings() / dsa_slave_get_link_ksettings() to
    call phy_read_status() and with that modify the link status - and
    with that bricking the phy state machine.
    
    This patch adds a fail-safe check while in RUNNING, which causes to
    move to CHANGELINK when the link is gone and we are still RUNNING.
    
    Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.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 9acfb313849e44e956a393b91a63386f7ef1df97
Author: Pau Espin Pedrol <pau.espin@tessares.net>
Date:   Fri Jan 6 20:33:27 2017 +0100

    netfilter: use fwmark_reflect in nf_send_reset
    
    
    [ Upstream commit cc31d43b4154ad5a7d8aa5543255a93b7e89edc2 ]
    
    Otherwise, RST packets generated by ipt_REJECT always have mark 0 when
    the routing is checked later in the same code path.
    
    Fixes: e110861f8609 ("net: add a sysctl to reflect the fwmark on replies")
    Cc: Lorenzo Colitti <lorenzo@google.com>
    Signed-off-by: Pau Espin Pedrol <pau.espin@tessares.net>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e2a390b7f6784d2409656f5ccf3433f4ec3e18d
Author: Bard Liao <bardliao@realtek.com>
Date:   Tue Dec 27 12:05:05 2016 +0800

    ASoC: rt5645: set sel_i2s_pre_div1 to 2
    
    
    [ Upstream commit 02c5c03283c52157d336abf5e44ffcda10579fbf ]
    
    The i2s clock pre-divider 1 is used for both i2s1 and sysclk.
    The i2s1 is usually used for the main i2s and the pre-divider
    will be set in hw_params function.
    
    However, if i2s2 is used, the pre-divider is not set in the hw_params
    function and the default value of i2s clock pre-divider 1 is too high
    for sysclk and DMIC usage. Fix by overriding default divider value to 2.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=95681
    Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Bard Liao <bardliao@realtek.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 c77512d671027c613db117dd1b45bd983c3a9954
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Jan 9 01:02:47 2017 +0100

    spi: spi-axi: Free resources on error path
    
    
    [ Upstream commit 9620ca90115d4bd700f05862d3b210a266a66efe ]
    
    We should go to 'err_put_master' here instead of returning directly.
    Otherwise a call to 'spi_master_put' is missing.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    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 f897e9ae07c428a04cf4fae0150a3d148ed1b09a
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 1042bd47ddfbe4cbb7b91156317752fec43f2d46
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 5f7eeee7940e256d786b883aa5b37188a05a156b
Author: Grygorii Strashko <grygorii.strashko@ti.com>
Date:   Thu Jan 5 14:48:07 2017 -0600

    net: phy: dp83867: fix irq generation
    
    
    [ Upstream commit 5ca7d1ca77dc23934504b95a96d2660d345f83c2 ]
    
    For proper IRQ generation by DP83867 phy the INT/PWDN pin has to be
    programmed as an interrupt output instead of a Powerdown input in
    Configuration Register 3 (CFG3), Address 0x001E, bit 7 INT_OE = 1. The
    current driver doesn't do this and as result IRQs will not be generated by
    DP83867 phy even if they are properly configured in DT.
    
    Hence, fix IRQ generation by properly configuring CFG3.INT_OE bit and
    ensure that Link Status Change (LINK_STATUS_CHNG_INT) and Auto-Negotiation
    Complete (AUTONEG_COMP_INT) interrupt are enabled. After this the DP83867
    driver will work properly in interrupt enabled mode.
    
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.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 bfe384ed452af92f390813e0fb041a5a7631a3ab
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 2d4fef7f4102ec8c9884a2600fd16218ccce7c1a
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Wed Jan 4 22:18:24 2017 +0300

    sh_eth: fix EESIPR values for SH77{34|63}
    
    
    [ Upstream commit 978d3639fd13d987950e4ce85c8737ae92154b2c ]
    
    As the SH77{34|63} manuals are freely available,  I've checked the EESIPR
    values written against the manuals, and they appeared to set the reserved
    bits 11-15 (which should be 0 on write). Fix those EESIPR values.
    
    Fixes: 380af9e390ec ("net: sh_eth: CPU dependency code collect to "struct sh_eth_cpu_data"")
    Fixes: f5d12767c8fd ("sh_eth: get SH77{34|63} support out of #ifdef")
    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 b87145215abe415dc3a31d0ff0e187117fe8e1b6
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 b9d68cdce72d49c06c24fb2f5bee5673557b33ac
Author: David S. Miller <davem@davemloft.net>
Date:   Fri Aug 4 09:47:52 2017 -0700

    sparc64: Fix exception handling in UltraSPARC-III memcpy.
    
    
    [ Upstream commit 0ede1c401332173ab0693121dc6cde04a4dbf131 ]
    
    Mikael Pettersson reported that some test programs in the strace-4.18
    testsuite cause an OOPS.
    
    After some debugging it turns out that garbage values are returned
    when an exception occurs, causing the fixup memset() to be run with
    bogus arguments.
    
    The problem is that two of the exception handler stubs write the
    successfully copied length into the wrong register.
    
    Fixes: ee841d0aff64 ("sparc64: Convert U3copy_{from,to}_user to accurate exception reporting.")
    Reported-by: Mikael Pettersson <mikpelinux@gmail.com>
    Tested-by: Mikael Pettersson <mikpelinux@gmail.com>
    Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfafa56e6c675adaa4942c4259baacc9650073ff
Author: Jane Chu <jane.chu@oracle.com>
Date:   Tue Jul 11 12:00:54 2017 -0600

    sparc64: Measure receiver forward progress to avoid send mondo timeout
    
    
    [ Upstream commit 9d53caec84c7c5700e7c1ed744ea584fff55f9ac ]
    
    A large sun4v SPARC system may have moments of intensive xcall activities,
    usually caused by unmapping many pages on many CPUs concurrently. This can
    flood receivers with CPU mondo interrupts for an extended period, causing
    some unlucky senders to hit send-mondo timeout. This problem gets worse
    as cpu count increases because sometimes mappings must be invalidated on
    all CPUs, and sometimes all CPUs may gang up on a single CPU.
    
    But a busy system is not a broken system. In the above scenario, as long
    as the receiver is making forward progress processing mondo interrupts,
    the sender should continue to retry.
    
    This patch implements the receiver's forward progress meter by introducing
    a per cpu counter 'cpu_mondo_counter[cpu]' where 'cpu' is in the range
    of 0..NR_CPUS. The receiver increments its counter as soon as it receives
    a mondo and the sender tracks the receiver's counter. If the receiver has
    stopped making forward progress when the retry limit is reached, the sender
    declares send-mondo-timeout and panic; otherwise, the receiver is allowed
    to keep making forward progress.
    
    In addition, it's been observed that PCIe hotplug events generate Correctable
    Errors that are handled by hypervisor and then OS. Hypervisor 'borrows'
    a guest cpu strand briefly to provide the service. If the cpu strand is
    simultaneously the only cpu targeted by a mondo, it may not be available
    for the mondo in 20msec, causing SUN4V mondo timeout. It appears that 1 second
    is the agreed wait time between hypervisor and guest OS, this patch makes
    the adjustment.
    
    Orabug: 25476541
    Orabug: 26417466
    
    Signed-off-by: Jane Chu <jane.chu@oracle.com>
    Reviewed-by: Steve Sistare <steven.sistare@oracle.com>
    Reviewed-by: Anthony Yznaga <anthony.yznaga@oracle.com>
    Reviewed-by: Rob Gardner <rob.gardner@oracle.com>
    Reviewed-by: Thomas Tai <thomas.tai@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 816843a257c77828c389cf9cce2170ef057bfc1b
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 38e71eabb8f71db17ce1aa846fb31abc936dcefa
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 33e25b2168dda8b000bc2951762c86fcbc23229b
Author: Eugenia Emantayev <eugenia@mellanox.com>
Date:   Wed Jul 12 17:44:07 2017 +0300

    net/mlx5e: Schedule overflow check work to mlx5e workqueue
    
    
    [ Upstream commit f08c39ed0bfb503c7b3e013cd40d036ce6a0941a ]
    
    This is done in order to ensure that work will not run after the cleanup.
    
    Fixes: ef9814deafd0 ('net/mlx5e: Add HW timestamping (TS) support')
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 862ade9a4383fc336d20036a085a13a196e686ce
Author: Eugenia Emantayev <eugenia@mellanox.com>
Date:   Wed Jul 12 17:27:18 2017 +0300

    net/mlx5e: Fix wrong delay calculation for overflow check scheduling
    
    
    [ Upstream commit d439c84509a510e864fdc6166c760482cd03fc57 ]
    
    The overflow_period is calculated in seconds. In order to use it
    for delayed work scheduling translation to jiffies is needed.
    
    Fixes: ef9814deafd0 ('net/mlx5e: Add HW timestamping (TS) support')
    Signed-off-by: Eugenia Emantayev <eugenia@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7049799668a206eb2a97024c91fc822e0a8a5c6
Author: Ilan Tayari <ilant@mellanox.com>
Date:   Wed Jul 5 10:17:04 2017 +0300

    net/mlx5e: Fix outer_header_zero() check size
    
    
    [ Upstream commit 0242f4a0bb03906010bbf80495512be00494a0ef ]
    
    outer_header_zero() routine checks if the outer_headers match of a
    flow-table entry are all zero.
    
    This function uses the size of whole fte_match_param, instead of just
    the outer_headers member, causing failure to detect all-zeros if
    any other members of the fte_match_param are non-zero.
    
    Use the correct size for zero check.
    
    Fixes: 6dc6071cfcde ("net/mlx5e: Add ethtool flow steering support")
    Signed-off-by: Ilan Tayari <ilant@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d19d0ac684e505200aad8db44271acbd0ab35bd1
Author: Moshe Shemesh <moshe@mellanox.com>
Date:   Sun Jun 25 18:45:32 2017 +0300

    net/mlx5: Fix command bad flow on command entry allocation failure
    
    
    [ Upstream commit 219c81f7d1d5a89656cb3b53d3b4e11e93608d80 ]
    
    When driver fail to allocate an entry to send command to FW, it must
    notify the calling function and release the memory allocated for
    this command.
    
    Fixes: e126ba97dba9e ('mlx5: Add driver for Mellanox Connect-IB adapters')
    Signed-off-by: Moshe Shemesh <moshe@mellanox.com>
    Cc: kernel-team@fb.com
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fca84d617f77ef8b5e52ef4db057971e96eee25a
Author: Aviv Heller <avivh@mellanox.com>
Date:   Sun Jul 2 19:13:43 2017 +0300

    net/mlx5: Consider tx_enabled in all modes on remap
    
    
    [ Upstream commit dc798b4cc0f2a06e7ad7d522403de274b86a0a6f ]
    
    The tx_enabled lag event field is used to determine whether a slave is
    active.
    Current logic uses this value only if the mode is active-backup.
    
    However, LACP mode, although considered a load balancing mode, can mark
    a slave as inactive in certain situations (e.g., LACP timeout).
    
    This fix takes the tx_enabled value into account when remapping, with
    no respect to the LAG mode (this should not affect the behavior in XOR
    mode, since in this mode both slaves are marked as active).
    
    Fixes: 7907f23adc18 (net/mlx5: Implement RoCE LAG feature)
    Signed-off-by: Aviv Heller <avivh@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df32d08293ea7db4fe7e030bd47c71b7f63fc05f
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 cc6f1486f2cb053a647db3a51cba5fbeabaa4a3f
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 bb21d2e75378ddda86775315e39344be624f9987
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 4d938b6fcb90c5d19ce7d23581d9bccc7ce70724
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Jul 26 14:19:46 2017 +0800

    dccp: fix a memleak that dccp_ipv4 doesn't put reqsk properly
    
    
    [ Upstream commit b7953d3c0e30a5fc944f6b7bd0bcceb0794bcd85 ]
    
    The patch "dccp: fix a memleak that dccp_ipv6 doesn't put reqsk
    properly" fixed reqsk refcnt leak for dccp_ipv6. The same issue
    exists on dccp_ipv4.
    
    This patch is to fix it for dccp_ipv4.
    
    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 9ffa6727f5712b8774b265b0a3c020acb9da726e
Author: Xin Long <lucien.xin@gmail.com>
Date:   Wed Jul 26 14:19:09 2017 +0800

    dccp: fix a memleak that dccp_ipv6 doesn't put reqsk properly
    
    
    [ Upstream commit 0c2232b0a71db0ac1d22f751aa1ac0cadb950fd2 ]
    
    In dccp_v6_conn_request, after reqsk gets alloced and hashed into
    ehash table, reqsk's refcnt is set 3. one is for req->rsk_timer,
    one is for hlist, and the other one is for current using.
    
    The problem is when dccp_v6_conn_request returns and finishes using
    reqsk, it doesn't put reqsk. This will cause reqsk refcnt leaks and
    reqsk obj never gets freed.
    
    Jianlin found this issue when running dccp_memleak.c in a loop, the
    system memory would run out.
    
    dccp_memleak.c:
      int s1 = socket(PF_INET6, 6, IPPROTO_IP);
      bind(s1, &sa1, 0x20);
      listen(s1, 0x9);
      int s2 = socket(PF_INET6, 6, IPPROTO_IP);
      connect(s2, &sa1, 0x20);
      close(s1);
      close(s2);
    
    This patch is to put the reqsk before dccp_v6_conn_request returns,
    just as what tcp_conn_request does.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0c8688f0debfef57af1f3a48cee4027ef7f50ab
Author: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
Date:   Tue Jul 25 14:35:03 2017 +0200

    net: ethernet: nb8800: Handle all 4 RGMII modes identically
    
    
    [ Upstream commit 4813497b537c6208c90d6cbecac5072d347de900 ]
    
    Before commit bf8f6952a233 ("Add blurb about RGMII") it was unclear
    whose responsibility it was to insert the required clock skew, and
    in hindsight, some PHY drivers got it wrong. The solution forward
    is to introduce a new property, explicitly requiring skew from the
    node to which it is attached. In the interim, this driver will handle
    all 4 RGMII modes identically (no skew).
    
    Fixes: 52dfc8301248 ("net: ethernet: add driver for Aurora VLSI NB8800 Ethernet controller")
    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 23a91c8ab682b841a18a88cb1d5332f20f1ec219
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Mon Jul 24 23:14:28 2017 +0200

    ipv6: Don't increase IPSTATS_MIB_FRAGFAILS twice in ip6_fragment()
    
    
    [ Upstream commit afce615aaabfbaad02550e75c0bec106dafa1adf ]
    
    RFC 2465 defines ipv6IfStatsOutFragFails as:
    
            "The number of IPv6 datagrams that have been discarded
             because they needed to be fragmented at this output
             interface but could not be."
    
    The existing implementation, instead, would increase the counter
    twice in case we fail to allocate room for single fragments:
    once for the fragment, once for the datagram.
    
    This didn't look intentional though. In one of the two affected
    affected failure paths, the double increase was simply a result
    of a new 'goto fail' statement, introduced to avoid a skb leak.
    The other path appears to be affected since at least 2.6.12-rc2.
    
    Reported-by: Sabrina Dubroca <sdubroca@redhat.com>
    Fixes: 1d325d217c7f ("ipv6: ip6_fragment: fix headroom tests and skb leak")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47f3bf6e31164a0a3b77746d30bf9b3ac9664b03
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 d53ff3816d94c841f7a7f1bf68505a2abb06757a
Author: Liping Zhang <zlpnobody@gmail.com>
Date:   Sun Jul 23 17:52:23 2017 +0800

    openvswitch: fix potential out of bound access in parse_ct
    
    
    [ Upstream commit 69ec932e364b1ba9c3a2085fe96b76c8a3f71e7c ]
    
    Before the 'type' is validated, we shouldn't use it to fetch the
    ovs_ct_attr_lens's minlen and maxlen, else, out of bound access
    may happen.
    
    Fixes: 7f8a436eaa2c ("openvswitch: Add conntrack action")
    Signed-off-by: Liping Zhang <zlpnobody@gmail.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59e76ed17981aa9ee8da4496d13edf42ec29958c
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 cda2bc91baf7b6849733145331726a1364f20512
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 0c47f11bc4a5ddd37962b2ba5a4d53f6caeeaec1
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 5a2d511a95ccaa164005991944d7564e2e21bca2
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Jul 20 12:25:22 2017 -0700

    net: dsa: b53: Add missing ARL entries for BCM53125
    
    
    [ Upstream commit be35e8c516c1915a3035d266a2015b41f73ba3f9 ]
    
    The BCM53125 entry was missing an arl_entries member which would
    basically prevent the ARL search from terminating properly. This switch
    has 4 ARL entries, so add that.
    
    Fixes: 1da6df85c6fb ("net: dsa: b53: Implement ARL add/del/dump operations")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a2ffe1707e3787f93a7d0ff2dec682a57ba25ad
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 0b83249a57adc1afd19c7e4818731d61d3a8ce7e
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 a62bc8d336e3e93538c3c5dd64a36db5efcf2fa8
Author: Alexander Potapenko <glider@google.com>
Date:   Mon Jul 17 12:35:58 2017 +0200

    ipv4: ipv6: initialize treq->txhash in cookie_v[46]_check()
    
    
    [ Upstream commit 18bcf2907df935981266532e1e0d052aff2e6fae ]
    
    KMSAN reported use of uninitialized memory in skb_set_hash_from_sk(),
    which originated from the TCP request socket created in
    cookie_v6_check():
    
     ==================================================================
     BUG: KMSAN: use of uninitialized memory in tcp_transmit_skb+0xf77/0x3ec0
     CPU: 1 PID: 2949 Comm: syz-execprog Not tainted 4.11.0-rc5+ #2931
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
     TCP: request_sock_TCPv6: Possible SYN flooding on port 20028. Sending cookies.  Check SNMP counters.
     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
      skb_set_hash_from_sk ./include/net/sock.h:2011
      tcp_transmit_skb+0xf77/0x3ec0 net/ipv4/tcp_output.c:983
      tcp_send_ack+0x75b/0x830 net/ipv4/tcp_output.c:3493
      tcp_delack_timer_handler+0x9a6/0xb90 net/ipv4/tcp_timer.c:284
      tcp_delack_timer+0x1b0/0x310 net/ipv4/tcp_timer.c:309
      call_timer_fn+0x240/0x520 kernel/time/timer.c:1268
      expire_timers kernel/time/timer.c:1307
      __run_timers+0xc13/0xf10 kernel/time/timer.c:1601
      run_timer_softirq+0x36/0xa0 kernel/time/timer.c:1614
      __do_softirq+0x485/0x942 kernel/softirq.c:284
      invoke_softirq kernel/softirq.c:364
      irq_exit+0x1fa/0x230 kernel/softirq.c:405
      exiting_irq+0xe/0x10 ./arch/x86/include/asm/apic.h:657
      smp_apic_timer_interrupt+0x5a/0x80 arch/x86/kernel/apic/apic.c:966
      apic_timer_interrupt+0x86/0x90 arch/x86/entry/entry_64.S:489
     RIP: 0010:native_restore_fl ./arch/x86/include/asm/irqflags.h:36
     RIP: 0010:arch_local_irq_restore ./arch/x86/include/asm/irqflags.h:77
     RIP: 0010:__msan_poison_alloca+0xed/0x120 mm/kmsan/kmsan_instr.c:440
     RSP: 0018:ffff880024917cd8 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff10
     RAX: 0000000000000246 RBX: ffff8800224c0000 RCX: 0000000000000005
     RDX: 0000000000000004 RSI: ffff880000000000 RDI: ffffea0000b6d770
     RBP: ffff880024917d58 R08: 0000000000000dd8 R09: 0000000000000004
     R10: 0000160000000000 R11: 0000000000000000 R12: ffffffff85abf810
     R13: ffff880024917dd8 R14: 0000000000000010 R15: ffffffff81cabde4
      </IRQ>
      poll_select_copy_remaining+0xac/0x6b0 fs/select.c:293
      SYSC_select+0x4b4/0x4e0 fs/select.c:653
      SyS_select+0x76/0xa0 fs/select.c:634
      entry_SYSCALL_64_fastpath+0x13/0x94 arch/x86/entry/entry_64.S:204
     RIP: 0033:0x4597e7
     RSP: 002b:000000c420037ee0 EFLAGS: 00000246 ORIG_RAX: 0000000000000017
     RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00000000004597e7
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
     RBP: 000000c420037ef0 R08: 000000c420037ee0 R09: 0000000000000059
     R10: 0000000000000000 R11: 0000000000000246 R12: 000000000042dc20
     R13: 00000000000000f3 R14: 0000000000000030 R15: 0000000000000003
     chained origin:
      save_stack_trace+0x37/0x40 arch/x86/kernel/stacktrace.c:59
      kmsan_save_stack_with_flags mm/kmsan/kmsan.c:302
      kmsan_save_stack mm/kmsan/kmsan.c:317
      kmsan_internal_chain_origin+0x12a/0x1f0 mm/kmsan/kmsan.c:547
      __msan_store_shadow_origin_4+0xac/0x110 mm/kmsan/kmsan_instr.c:259
      tcp_create_openreq_child+0x709/0x1ae0 net/ipv4/tcp_minisocks.c:472
      tcp_v6_syn_recv_sock+0x7eb/0x2a30 net/ipv6/tcp_ipv6.c:1103
      tcp_get_cookie_sock+0x136/0x5f0 net/ipv4/syncookies.c:212
      cookie_v6_check+0x17a9/0x1b50 net/ipv6/syncookies.c:245
      tcp_v6_cookie_check net/ipv6/tcp_ipv6.c:989
      tcp_v6_do_rcv+0xdd8/0x1c60 net/ipv6/tcp_ipv6.c:1298
      tcp_v6_rcv+0x41a3/0x4f00 net/ipv6/tcp_ipv6.c:1487
      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
     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_kmalloc+0x7f/0xe0 mm/kmsan/kmsan.c:337
      kmem_cache_alloc+0x1c2/0x1e0 mm/slub.c:2766
      reqsk_alloc ./include/net/request_sock.h:87
      inet_reqsk_alloc+0xa4/0x5b0 net/ipv4/tcp_input.c:6200
      cookie_v6_check+0x4f4/0x1b50 net/ipv6/syncookies.c:169
      tcp_v6_cookie_check net/ipv6/tcp_ipv6.c:989
      tcp_v6_do_rcv+0xdd8/0x1c60 net/ipv6/tcp_ipv6.c:1298
      tcp_v6_rcv+0x41a3/0x4f00 net/ipv6/tcp_ipv6.c:1487
      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
     ==================================================================
    
    Similar error is reported for cookie_v4_check().
    
    Fixes: 58d607d3e52f ("tcp: provide skb->hash to synack packets")
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cd73c42b7a2d9ab96632ccb895ddb521060c7a9
Author: Neal Cardwell <ncardwell@google.com>
Date:   Fri Jul 14 17:49:25 2017 -0400

    tcp_bbr: init pacing rate on first RTT sample
    
    
    [ Upstream commit 32984565574da7ed3afa10647bb4020d7a9e6c93 ]
    
    Fixes the following behavior: for connections that had no RTT sample
    at the time of initializing congestion control, BBR was initializing
    the pacing rate to a high nominal rate (based an a guess of RTT=1ms,
    in case this is LAN traffic). Then BBR never adjusted the pacing rate
    downward upon obtaining an actual RTT sample, if the connection never
    filled the pipe (e.g. all sends were small app-limited writes()).
    
    This fix adjusts the pacing rate upon obtaining the first RTT sample.
    
    Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control")
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e6b237dc03be379435de3c3f19841fe38096e51
Author: Neal Cardwell <ncardwell@google.com>
Date:   Fri Jul 14 17:49:24 2017 -0400

    tcp_bbr: remove sk_pacing_rate=0 transient during init
    
    
    [ Upstream commit 1d3648eb5d1fe9ed3d095ed8fa19ad11ca4c8bc0 ]
    
    Fix a corner case noticed by Eric Dumazet, where BBR's setting
    sk->sk_pacing_rate to 0 during initialization could theoretically
    cause packets in the sending host to hang if there were packets "in
    flight" in the pacing infrastructure at the time the BBR congestion
    control state is initialized. This could occur if the pacing
    infrastructure happened to race with bbr_init() in a way such that the
    pacer read the 0 rather than the immediately following non-zero pacing
    rate.
    
    Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control")
    Reported-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c0ede36b9e0a6b35c48c14203432c8ec0619b12
Author: Neal Cardwell <ncardwell@google.com>
Date:   Fri Jul 14 17:49:23 2017 -0400

    tcp_bbr: introduce bbr_init_pacing_rate_from_rtt() helper
    
    
    [ Upstream commit 79135b89b8af304456bd67916b80116ddf03d7b6 ]
    
    Introduce a helper to initialize the BBR pacing rate unconditionally,
    based on the current cwnd and RTT estimate. This is a pure refactor,
    but is needed for two following fixes.
    
    Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control")
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec789686d79b5d95c1623d2bbd6f0bb8657f6dcd
Author: Neal Cardwell <ncardwell@google.com>
Date:   Fri Jul 14 17:49:22 2017 -0400

    tcp_bbr: introduce bbr_bw_to_pacing_rate() helper
    
    
    [ Upstream commit f19fd62dafaf1ed6cf615dba655b82fa9df59074 ]
    
    Introduce a helper to convert a BBR bandwidth and gain factor to a
    pacing rate in bytes per second. This is a pure refactor, but is
    needed for two following fixes.
    
    Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control")
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73520d3814b6fd37483dc79e578906301122bbb3
Author: Neal Cardwell <ncardwell@google.com>
Date:   Fri Jul 14 17:49:21 2017 -0400

    tcp_bbr: cut pacing rate only if filled pipe
    
    
    [ Upstream commit 4aea287e90dd61a48268ff2994b56f9799441b62 ]
    
    In bbr_set_pacing_rate(), which decides whether to cut the pacing
    rate, there was some code that considered exiting STARTUP to be
    equivalent to the notion of filling the pipe (i.e.,
    bbr_full_bw_reached()). Specifically, as the code was structured,
    exiting STARTUP and going into PROBE_RTT could cause us to cut the
    pacing rate down to something silly and low, based on whatever
    bandwidth samples we've had so far, when it's possible that all of
    them have been small app-limited bandwidth samples that are not
    representative of the bandwidth available in the path. (The code was
    correct at the time it was written, but the state machine changed
    without this spot being adjusted correspondingly.)
    
    Fixes: 0f8782ea1497 ("tcp_bbr: add BBR congestion control")
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12d17d78e3f74b5022f61eee7d6de082e472a401
Author: Steven Toth <stoth@kernellabs.com>
Date:   Tue Jun 6 09:30:27 2017 -0300

    saa7164: fix double fetch PCIe access condition
    
    commit 6fb05e0dd32e566facb96ea61a48c7488daa5ac3 upstream.
    
    Avoid a double fetch by reusing the values from the prior transfer.
    
    Originally reported via https://bugzilla.kernel.org/show_bug.cgi?id=195559
    
    Thanks to Pengfei Wang <wpengfeinudt@gmail.com> for reporting.
    
    Signed-off-by: Steven Toth <stoth@kernellabs.com>
    Reported-by: Pengfei Wang <wpengfeinudt@gmail.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a63729427acd0ee9f6265d20cf3b9890e8d7a96
Author: Omar Sandoval <osandov@fb.com>
Date:   Thu Jul 20 15:10:35 2017 -0700

    Btrfs: fix early ENOSPC due to delalloc
    
    commit 17024ad0a0fdfcfe53043afb969b813d3e020c21 upstream.
    
    If a lot of metadata is reserved for outstanding delayed allocations, we
    rely on shrink_delalloc() to reclaim metadata space in order to fulfill
    reservation tickets. However, shrink_delalloc() has a shortcut where if
    it determines that space can be overcommitted, it will stop early. This
    made sense before the ticketed enospc system, but now it means that
    shrink_delalloc() will often not reclaim enough space to fulfill any
    tickets, leading to an early ENOSPC. (Reservation tickets don't care
    about being able to overcommit, they need every byte accounted for.)
    
    Fix it by getting rid of the shortcut so that shrink_delalloc() reclaims
    all of the metadata it is supposed to. This fixes early ENOSPCs we were
    seeing when doing a btrfs receive to populate a new filesystem, as well
    as early ENOSPCs Christoph saw when doing a big cp -r onto Btrfs.
    
    Fixes: 957780eb2788 ("Btrfs: introduce ticketed enospc infrastructure")
    Tested-by: Christoph Anton Mitterer <mail@christoph.anton.mitterer.name>
    Reviewed-by: Josef Bacik <jbacik@fb.com>
    Signed-off-by: Omar Sandoval <osandov@fb.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f442c5b2e4ac0b65027ed3374462f1c38675f7e
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 c14e327bee7018659e0b64db265e19f62cc2bd72
Author: Sean Young <sean@mess.org>
Date:   Fri Jul 7 18:49:18 2017 -0300

    media: lirc: LIRC_GET_REC_RESOLUTION should return microseconds
    
    commit 9f5039ba440e499d85c29b1ddbc3cbc9dc90e44b upstream.
    
    Since commit e8f4818895b3 ("[media] lirc: advertise
    LIRC_CAN_GET_REC_RESOLUTION and improve") lircd uses the ioctl
    LIRC_GET_REC_RESOLUTION to determine the shortest pulse or space that
    the hardware can detect. This breaks decoding in lirc because lircd
    expects the answer in microseconds, but nanoseconds is returned.
    
    Reported-by: Derek <user.vdr@gmail.com>
    Tested-by: Derek <user.vdr@gmail.com>
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e92add299fee14a3042960d723e074e8bd5c8412
Author: David Woods <dwoods@mellanox.com>
Date:   Fri May 26 17:53:21 2017 -0400

    mmc: core: Use device_property_read instead of of_property_read
    
    commit 73a47a9bb3e2c4a9c553c72456e63ab991b1a4d9 upstream.
    
    Using the device_property interfaces allows mmc drivers to work
    on platforms which run on either device tree or ACPI.
    
    Signed-off-by: David Woods <dwoods@mellanox.com>
    Reviewed-by: Chris Metcalf <cmetcalf@mellanox.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit baf4ad0e51620f88216a6b11cdc868ae861983a9
Author: David Woods <dwoods@mellanox.com>
Date:   Fri May 26 17:53:20 2017 -0400

    mmc: dw_mmc: Use device_property_read instead of of_property_read
    
    commit 852ff5fea9eb6a9799f1881d6df2cd69a9e6eed5 upstream.
    
    Using the device_property interfaces allows the dw_mmc driver to work
    on platforms which run on either device tree or ACPI.
    
    Signed-off-by: David Woods <dwoods@mellanox.com>
    Reviewed-by: Chris Metcalf <cmetcalf@mellanox.com>
    Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdabf097f05b9ef78c58622e3dfdec39b11a2ee5
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>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 733d7ab6c5bccef9a644afdcffc1e2369f0d5b6e
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 4f3544816937b0b59f81838295f018a2367e7e53
Author: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
Date:   Fri Jul 28 15:27:49 2017 +0200

    ARM: dts: tango4: Request RGMII RX and TX clock delays
    
    commit 985333b0eef8603b02181c4ec0a722b82be9642d upstream.
    
    RX and TX clock delays are required. Request them explicitly.
    
    Fixes: cad008b8a77e6 ("ARM: dts: tango4: Initial device trees")
    Signed-off-by: Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff603e017bee376dbc730924bbf4e554a719100f
Author: Gregory CLEMENT <gregory.clement@free-electrons.com>
Date:   Wed Jul 12 13:23:11 2017 +0200

    ARM: dts: armada-38x: Fix irq type for pca955
    
    commit 8d4514173211586c6238629b1ef1e071927735f5 upstream.
    
    As written in the datasheet the PCA955 can only handle low level irq and
    not edge irq.
    
    Without this fix the interrupt is not usable for pca955: the gpio-pca953x
    driver already set the irq type as low level which is incompatible with
    edge type, then the kernel prevents using the interrupt:
    
    "irq: type mismatch, failed to map hwirq-18 for
    /soc/internal-regs/gpio@18100!"
    
    Fixes: 928413bd859c ("ARM: mvebu: Add Armada 388 General Purpose
    Development Board support")
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12353a00df25d5c8da8de8c60b705e5ccc436cfe
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 0814c3a9447ba284ef91b2d27755bf5a4514ca64
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 b680e22fca767103ea4f86e21a8cca927f9d1ca7
Author: Bartosz Golaszewski <brgl@bgdev.pl>
Date:   Mon Jul 3 11:12:03 2017 +0200

    gpiolib: skip unwanted events, don't convert them to opposite edge
    
    commit df1e76f28ffe87d1b065eecab2d0fbb89e6bdee5 upstream.
    
    The previous fix for filtering out of unwatched events was not entirely
    correct. Instead of skipping the events we don't want, they are now
    interpreted as events with opposing edge.
    
    In order to fix it: always read the GPIO line value on interrupt and
    only emit the event if it corresponds with the event type we requested.
    
    Fixes: ad537b822577 ("gpiolib: fix filtering out unwanted events")
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be5c6efc996e439205c298331c755f007f66484b
Author: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Date:   Wed Jul 5 21:29:59 2017 -0500

    iommu/amd: Enable ga_log_intr when enabling guest_mode
    
    commit efe6f241602cb61466895f6816b8ea6b90f04d4e upstream.
    
    IRTE[GALogIntr] bit should set when enabling guest_mode, which enables
    IOMMU to generate entry in GALog when IRTE[IsRun] is not set, and send
    an interrupt to notify IOMMU driver.
    
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Fixes: d98de49a53e48 ('iommu/amd: Enable vAPIC interrupt remapping mode by default')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03ebdd1eb95afc3d4524540ecb1226567e655e5e
Author: Nicholas Piggin <npiggin@gmail.com>
Date:   Tue Aug 1 23:59:28 2017 +1000

    powerpc/64: Fix __check_irq_replay missing decrementer interrupt
    
    commit 3db40c312c2c1eb2187c5731102fa8ff380e6e40 upstream.
    
    If the decrementer wraps again and de-asserts the decrementer
    exception while hard-disabled, __check_irq_replay() has a test to
    notice the wrap when interrupts are re-enabled.
    
    The decrementer check must be done when clearing the PACA_IRQ_HARD_DIS
    flag, not when the PACA_IRQ_DEC flag is tested. Previously this worked
    because the decrementer interrupt was always the first one checked
    after clearing the hard disable flag, but HMI check was moved ahead of
    that, which introduced this bug.
    
    This can cause a missed decrementer interrupt if we soft-disable
    interrupts then take an HMI which is recorded in irq_happened, then
    hard-disable interrupts for > 4s to wrap the decrementer.
    
    Fixes: e0e0d6b7390b ("powerpc/64: Replay hypervisor maintenance interrupt first")
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8164692a2f66ecc08bcdc42955b6ce62d47637ec
Author: Gustavo Romero <gromero@linux.vnet.ibm.com>
Date:   Wed Jul 19 01:44:13 2017 -0400

    powerpc/tm: Fix saving of TM SPRs in core dump
    
    commit cd63f3cf1d59b7ad8419eba1cac8f9126e79cc43 upstream.
    
    Currently flush_tmregs_to_thread() does not save the TM SPRs (TFHAR,
    TFIAR, TEXASR) to the thread struct, unless the process is currently
    inside a suspended transaction.
    
    If the process is core dumping, and the TM SPRs have changed since the
    last time the process was context switched, then we will save stale
    values of the TM SPRs to the core dump.
    
    Fix it by saving the live register state to the thread struct in that
    case.
    
    Fixes: 08e1c01d6aed ("powerpc/ptrace: Enable support for TM SPR state")
    Signed-off-by: Gustavo Romero <gromero@linux.vnet.ibm.com>
    Reviewed-by: Cyril Bur <cyrilbur@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9ef8b23b94b98ec9b270e6fca5eadb97c96d809a
Author: Matija Glavinic Pecotic <matija.glavinic-pecotic.ext@nokia.com>
Date:   Tue Aug 1 09:11:52 2017 +0200

    timers: Fix overflow in get_next_timer_interrupt
    
    commit 34f41c0316ed52b0b44542491d89278efdaa70e4 upstream.
    
    For e.g. HZ=100, timer being 430 jiffies in the future, and 32 bit
    unsigned int, there is an overflow on unsigned int right-hand side
    of the expression which results with wrong values being returned.
    
    Type cast the multiplier to 64bit to avoid that issue.
    
    Fixes: 46c8f0b077a8 ("timers: Fix get_next_timer_interrupt() computation")
    Signed-off-by: Matija Glavinic Pecotic <matija.glavinic-pecotic.ext@nokia.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Cc: khilman@baylibre.com
    Cc: akpm@linux-foundation.org
    Link: http://lkml.kernel.org/r/a7900f04-2a21-c9fd-67be-ab334d459ee5@nokia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b95b74563627b95da435f5c120af63451e95380
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 0c609d3e1fbdc82ca9b628835b8480de98b7f448
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 650c763ea5ea68c136334f0e51ed2cd3938e09f5
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 69f15fff03e886e306fb4d7218403d1cb04e4840
Author: Jean Delvare <jdelvare@suse.de>
Date:   Sun Jul 30 10:18:25 2017 +0200

    drm/amdgpu: Fix undue fallthroughs in golden registers initialization
    
    commit 5694785cf09bf0e7bd8e5f62361ea34fa162a4a0 upstream.
    
    As I was staring at the si_init_golden_registers code, I noticed that
    the Pitcairn initialization silently falls through the Cape Verde
    initialization, and the Oland initialization falls through the Hainan
    initialization. However there is no comment stating that this is
    intentional, and the radeon driver doesn't have any such fallthrough,
    so I suspect this is not supposed to happen.
    
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Fixes: 62a37553414a ("drm/amdgpu: add si implementation v10")
    Cc: Ken Wang <Qingqing.Wang@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Cc: "Marek Olšák" <maraeo@gmail.com>
    Cc: "Christian König" <christian.koenig@amd.com>
    Cc: Flora Cui <Flora.Cui@amd.com>
    Reviewed-by: Marek Olšák <marek.olsak@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c531a24057acb51fe60450c48c7f2a7bb80178f1
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 45a636ec1849f842feb0716c7e25176a8b53af69
Author: Dima Zavin <dmitriyz@waymo.com>
Date:   Wed Aug 2 13:32:18 2017 -0700

    cpuset: fix a deadlock due to incomplete patching of cpusets_enabled()
    
    commit 89affbf5d9ebb15c6460596822e8857ea2f9e735 upstream.
    
    In codepaths that use the begin/retry interface for reading
    mems_allowed_seq with irqs disabled, there exists a race condition that
    stalls the patch process after only modifying a subset of the
    static_branch call sites.
    
    This problem manifested itself as a deadlock in the slub allocator,
    inside get_any_partial.  The loop reads mems_allowed_seq value (via
    read_mems_allowed_begin), performs the defrag operation, and then
    verifies the consistency of mem_allowed via the read_mems_allowed_retry
    and the cookie returned by xxx_begin.
    
    The issue here is that both begin and retry first check if cpusets are
    enabled via cpusets_enabled() static branch.  This branch can be
    rewritted dynamically (via cpuset_inc) if a new cpuset is created.  The
    x86 jump label code fully synchronizes across all CPUs for every entry
    it rewrites.  If it rewrites only one of the callsites (specifically the
    one in read_mems_allowed_retry) and then waits for the
    smp_call_function(do_sync_core) to complete while a CPU is inside the
    begin/retry section with IRQs off and the mems_allowed value is changed,
    we can hang.
    
    This is because begin() will always return 0 (since it wasn't patched
    yet) while retry() will test the 0 against the actual value of the seq
    counter.
    
    The fix is to use two different static keys: one for begin
    (pre_enable_key) and one for retry (enable_key).  In cpuset_inc(), we
    first bump the pre_enable key to ensure that cpuset_mems_allowed_begin()
    always return a valid seqcount if are enabling cpusets.  Similarly, when
    disabling cpusets via cpuset_dec(), we first ensure that callers of
    cpuset_mems_allowed_retry() will start ignoring the seqcount value
    before we let cpuset_mems_allowed_begin() return 0.
    
    The relevant stack traces of the two stuck threads:
    
      CPU: 1 PID: 1415 Comm: mkdir Tainted: G L  4.9.36-00104-g540c51286237 #4
      Hardware name: Default string Default string/Hardware, BIOS 4.29.1-20170526215256 05/26/2017
      task: ffff8817f9c28000 task.stack: ffffc9000ffa4000
      RIP: smp_call_function_many+0x1f9/0x260
      Call Trace:
        smp_call_function+0x3b/0x70
        on_each_cpu+0x2f/0x90
        text_poke_bp+0x87/0xd0
        arch_jump_label_transform+0x93/0x100
        __jump_label_update+0x77/0x90
        jump_label_update+0xaa/0xc0
        static_key_slow_inc+0x9e/0xb0
        cpuset_css_online+0x70/0x2e0
        online_css+0x2c/0xa0
        cgroup_apply_control_enable+0x27f/0x3d0
        cgroup_mkdir+0x2b7/0x420
        kernfs_iop_mkdir+0x5a/0x80
        vfs_mkdir+0xf6/0x1a0
        SyS_mkdir+0xb7/0xe0
        entry_SYSCALL_64_fastpath+0x18/0xad
    
      ...
    
      CPU: 2 PID: 1 Comm: init Tainted: G L  4.9.36-00104-g540c51286237 #4
      Hardware name: Default string Default string/Hardware, BIOS 4.29.1-20170526215256 05/26/2017
      task: ffff8818087c0000 task.stack: ffffc90000030000
      RIP: int3+0x39/0x70
      Call Trace:
        <#DB> ? ___slab_alloc+0x28b/0x5a0
        <EOE> ? copy_process.part.40+0xf7/0x1de0
        __slab_alloc.isra.80+0x54/0x90
        copy_process.part.40+0xf7/0x1de0
        copy_process.part.40+0xf7/0x1de0
        kmem_cache_alloc_node+0x8a/0x280
        copy_process.part.40+0xf7/0x1de0
        _do_fork+0xe7/0x6c0
        _raw_spin_unlock_irq+0x2d/0x60
        trace_hardirqs_on_caller+0x136/0x1d0
        entry_SYSCALL_64_fastpath+0x5/0xad
        do_syscall_64+0x27/0x350
        SyS_clone+0x19/0x20
        do_syscall_64+0x60/0x350
        entry_SYSCALL64_slow_path+0x25/0x25
    
    Link: http://lkml.kernel.org/r/20170731040113.14197-1-dmitriyz@waymo.com
    Fixes: 46e700abc44c ("mm, page_alloc: remove unnecessary taking of a seqlock when cpusets are disabled")
    Signed-off-by: Dima Zavin <dmitriyz@waymo.com>
    Reported-by: Cliff Spradlin <cspradlin@waymo.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Christopher Lameter <cl@linux.com>
    Cc: Li Zefan <lizefan@huawei.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a1eef71aa2aaa46892a07a0cfc94dd38d24b040
Author: Mel Gorman <mgorman@suse.de>
Date:   Wed Aug 2 13:31:52 2017 -0700

    mm, mprotect: flush TLB if potentially racing with a parallel reclaim leaving stale TLB entries
    
    commit 3ea277194daaeaa84ce75180ec7c7a2075027a68 upstream.
    
    Nadav Amit identified a theoritical race between page reclaim and
    mprotect due to TLB flushes being batched outside of the PTL being held.
    
    He described the race as follows:
    
            CPU0                            CPU1
            ----                            ----
                                            user accesses memory using RW PTE
                                            [PTE now cached in TLB]
            try_to_unmap_one()
            ==> ptep_get_and_clear()
            ==> set_tlb_ubc_flush_pending()
                                            mprotect(addr, PROT_READ)
                                            ==> change_pte_range()
                                            ==> [ PTE non-present - no flush ]
    
                                            user writes using cached RW PTE
            ...
    
            try_to_unmap_flush()
    
    The same type of race exists for reads when protecting for PROT_NONE and
    also exists for operations that can leave an old TLB entry behind such
    as munmap, mremap and madvise.
    
    For some operations like mprotect, it's not necessarily a data integrity
    issue but it is a correctness issue as there is a window where an
    mprotect that limits access still allows access.  For munmap, it's
    potentially a data integrity issue although the race is massive as an
    munmap, mmap and return to userspace must all complete between the
    window when reclaim drops the PTL and flushes the TLB.  However, it's
    theoritically possible so handle this issue by flushing the mm if
    reclaim is potentially currently batching TLB flushes.
    
    Other instances where a flush is required for a present pte should be ok
    as either the page lock is held preventing parallel reclaim or a page
    reference count is elevated preventing a parallel free leading to
    corruption.  In the case of page_mkclean there isn't an obvious path
    that userspace could take advantage of without using the operations that
    are guarded by this patch.  Other users such as gup as a race with
    reclaim looks just at PTEs.  huge page variants should be ok as they
    don't race with reclaim.  mincore only looks at PTEs.  userfault also
    should be ok as if a parallel reclaim takes place, it will either fault
    the page back in or read some of the data before the flush occurs
    triggering a fault.
    
    Note that a variant of this patch was acked by Andy Lutomirski but this
    was for the x86 parts on top of his PCID work which didn't make the 4.13
    merge window as expected.  His ack is dropped from this version and
    there will be a follow-on patch on top of PCID that will include his
    ack.
    
    [akpm@linux-foundation.org: tweak comments]
    [akpm@linux-foundation.org: fix spello]
    Link: http://lkml.kernel.org/r/20170717155523.emckq2esjro6hf3z@suse.de
    Reported-by: Nadav Amit <nadav.amit@gmail.com>
    Signed-off-by: Mel Gorman <mgorman@suse.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 943281eb4ecfd5485abf41338c967d9ebf168ead
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Wed Mar 1 14:11:47 2017 -0800

    mmc: core: Fix access to HS400-ES devices
    
    commit 773dc118756b1f38766063e90e582016be868f09 upstream.
    
    HS400-ES devices fail to initialize with the following error messages.
    
    mmc1: power class selection to bus width 8 ddr 0 failed
    mmc1: error -110 whilst initialising MMC card
    
    This was seen on Samsung Chromebook Plus. Code analysis points to
    commit 3d4ef329757c ("mmc: core: fix multi-bit bus width without
    high-speed mode"), which attempts to set the bus width for all but
    HS200 devices unconditionally. However, for HS400-ES, the bus width
    is already selected.
    
    Cc: Anssi Hannula <anssi.hannula@bitwise.fi>
    Cc: Douglas Anderson <dianders@chromium.org>
    Cc: Brian Norris <briannorris@chromium.org>
    Fixes: 3d4ef329757c ("mmc: core: fix multi-bit bus width ...")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Shawn Lin <shawn.lin@rock-chip.com>
    Tested-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f32e67adac40508e9c8753151effbe0bbf06bdb
Author: Sakari Ailus <sakari.ailus@linux.intel.com>
Date:   Tue Mar 28 10:52:24 2017 +0300

    device property: Make dev_fwnode() public
    
    commit e44bb0cbdc88686c21e2175a990b40bf6db5d005 upstream.
    
    The function to obtain a fwnode related to a struct device is useful for
    drivers that use the fwnode property API: it allows not being aware of the
    underlying firmware implementation.
    
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Chris Metcalf <cmetcalf@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 347be00b56f72a5a6759930dc7269cb3b1fbbad6
Author: Ludovic Desroches <ludovic.desroches@microchip.com>
Date:   Wed Jul 26 16:02:46 2017 +0200

    mmc: sdhci-of-at91: force card detect value for non removable devices
    
    commit 7a1e3f143176e8ebdb2f5a9b3b47abc18b879d90 upstream.
    
    When the device is non removable, the card detect signal is often used
    for another purpose i.e. muxed to another SoC peripheral or used as a
    GPIO. It could lead to wrong behaviors depending the default value of
    this signal if not muxed to the SDHCI controller.
    
    Fixes: bb5f8ea4d514 ("mmc: sdhci-of-at91: introduce driver for the Atmel SDMMC")
    Signed-off-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7d3e54fb40cfc6f829b8f8ad3aab026714f2ffc
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Tue Aug 1 16:02:47 2017 -0400

    NFSv4: Fix EXCHANGE_ID corrupt verifier issue
    
    commit fd40559c8657418385e42f797e0b04bfc0add748 upstream.
    
    The verifier is allocated on the stack, but the EXCHANGE_ID RPC call was
    changed to be asynchronous by commit 8d89bd70bc939. If we interrrupt
    the call to rpc_wait_for_completion_task(), we can therefore end up
    transmitting random stack contents in lieu of the verifier.
    
    Fixes: 8d89bd70bc939 ("NFS setup async exchange_id")
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5214eb4baf87b0134acf98c29150071fa3b815c
Author: Arend Van Spriel <arend.vanspriel@broadcom.com>
Date:   Wed Jul 26 13:09:24 2017 +0100

    brcmfmac: fix memleak due to calling brcmf_sdiod_sgtable_alloc() twice
    
    commit 5f5d03143de5e0c593da4ab18fc6393c2815e108 upstream.
    
    Due to a bugfix in wireless tree and the commit mentioned below a merge
    was needed which went haywire. So the submitted change resulted in the
    function brcmf_sdiod_sgtable_alloc() being called twice during the probe
    thus leaking the memory of the first call.
    
    Fixes: 4d7928959832 ("brcmfmac: switch to new platform data")
    Reported-by: Stefan Wahren <stefan.wahren@i2se.com>
    Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de8c33290f1c8fdd037b6e3d43ea888928f21e8c
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Thu Jun 8 10:55:26 2017 +0300

    iwlwifi: dvm: prevent an out of bounds access
    
    commit 0b0f934e92a8eaed2e6c48a50eae6f84661f74f3 upstream.
    
    iwlagn_check_ratid_empty takes the tid as a parameter, but
    it doesn't check that it is not IWL_TID_NON_QOS.
    Since IWL_TID_NON_QOS = 8 and iwl_priv::tid_data is an array
    with 8 entries, accessing iwl_priv::tid_data[IWL_TID_NON_QOS]
    is a bad idea.
    This happened in iwlagn_rx_reply_tx. Since
    iwlagn_check_ratid_empty is relevant only to check whether
    we can open A-MPDU, this flow is irrelevant if tid is
    IWL_TID_NON_QOS. Call iwlagn_check_ratid_empty only inside
    the
            if (tid != IWL_TID_NON_QOS)
    
    a few lines earlier in the function.
    
    Reported-by: Seraphime Kirkovski <kirkseraph@gmail.com>
    Tested-by: Seraphime Kirkovski <kirkseraph@gmail.com>
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 61a0adbfaad70713c45964e48b72e5e5b6ef30b1
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 804b1a9f0aeabc002b162c5b1861d65e1316a53a
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 445ee6cdd91ea6b2f65653ca05f3e951d8458ebc
Author: Tejun Heo <tj@kernel.org>
Date:   Sun Jul 23 08:14:15 2017 -0400

    cgroup: fix error return value from cgroup_subtree_control()
    
    commit 3c74541777302eec43a0d1327c4d58b8659a776b upstream.
    
    While refactoring, f7b2814bb9b6 ("cgroup: factor out
    cgroup_{apply|finalize}_control() from
    cgroup_subtree_control_write()") broke error return value from the
    function.  The return value from the last operation is always
    overridden to zero.  Fix it.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4a99eac8d2b3f5e45336894ac16caa87f67d2199
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Jul 18 17:57:46 2017 -0400

    cgroup: create dfl_root files on subsys registration
    
    commit 7af608e4f9530372aec6e940552bf76595f2e265 upstream.
    
    On subsystem registration, css_populate_dir() is not called on the new
    root css, so the interface files for the subsystem on cgrp_dfl_root
    aren't created on registration.  This is a residue from the days when
    cgrp_dfl_root was used only as the parking spot for unused subsystems,
    which no longer is true as it's used as the root for cgroup2.
    
    This is often fine as later operations tend to create them as a part
    of mount (cgroup1) or subtree_control operations (cgroup2); however,
    it's not difficult to mount cgroup2 with the controller interface
    files missing as Waiman found out.
    
    Fix it by invoking css_populate_dir() on the root css on subsys
    registration.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-and-tested-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d23e4f3a333639d36723ac9fe027749e96c9844
Author: John David Anglin <dave.anglin@bell.net>
Date:   Sun Jul 30 16:20:19 2017 -0400

    parisc: Handle vma's whose context is not current in flush_cache_range
    
    commit 13d57093c141db2036364d6be35e394fc5b64728 upstream.
    
    In testing James' patch to drivers/parisc/pdc_stable.c, I hit the BUG
    statement in flush_cache_range() during a system shutdown:
    
    kernel BUG at arch/parisc/kernel/cache.c:595!
    CPU: 2 PID: 6532 Comm: kworker/2:0 Not tainted 4.13.0-rc2+ #1
    Workqueue: events free_ioctx
    
     IAOQ[0]: flush_cache_range+0x144/0x148
     IAOQ[1]: flush_cache_page+0x0/0x1a8
     RP(r2): flush_cache_range+0xec/0x148
    Backtrace:
     [<00000000402910ac>] unmap_page_range+0x84/0x880
     [<00000000402918f4>] unmap_single_vma+0x4c/0x60
     [<0000000040291a18>] zap_page_range_single+0x110/0x160
     [<0000000040291c34>] unmap_mapping_range+0x174/0x1a8
     [<000000004026ccd8>] truncate_pagecache+0x50/0xa8
     [<000000004026cd84>] truncate_setsize+0x54/0x70
     [<000000004033d534>] put_aio_ring_file+0x44/0xb0
     [<000000004033d5d8>] aio_free_ring+0x38/0x140
     [<000000004033d714>] free_ioctx+0x34/0xa8
     [<00000000401b0028>] process_one_work+0x1b8/0x4d0
     [<00000000401b04f4>] worker_thread+0x1b4/0x648
     [<00000000401b9128>] kthread+0x1b0/0x208
     [<0000000040150020>] end_fault_vector+0x20/0x28
     [<0000000040639518>] nf_ip_reroute+0x50/0xa8
     [<0000000040638ed0>] nf_ip_route+0x10/0x78
     [<0000000040638c90>] xfrm4_mode_tunnel_input+0x180/0x1f8
    
    CPU: 2 PID: 6532 Comm: kworker/2:0 Not tainted 4.13.0-rc2+ #1
    Workqueue: events free_ioctx
    Backtrace:
     [<0000000040163bf0>] show_stack+0x20/0x38
     [<0000000040688480>] dump_stack+0xa8/0x120
     [<0000000040163dc4>] die_if_kernel+0x19c/0x2b0
     [<0000000040164d0c>] handle_interruption+0xa24/0xa48
    
    This patch modifies flush_cache_range() to handle non current contexts.
    In as much as this occurs infrequently, the simplest approach is to
    flush the entire cache when this happens.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>