commit b058014bd9ee72304191b2d8482f7ea63f34b534
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Oct 12 11:56:20 2017 +0200

    Linux 4.13.6

commit 7fb25f63774848df4b1f32355893f60f82bc9320
Author: Sudeep Holla <sudeep.holla@arm.com>
Date:   Thu Sep 7 15:16:05 2017 +0100

    base: arch_topology: fix section mismatch build warnings
    
    commit 452562abb5b76c14449dead2a7113f641893e8bc upstream.
    
    Commit 2ef7a2953c81 ("arm, arm64: factorize common cpu capacity default code")
    introduced init_cpu_capacity_callback and init_cpu_capacity_notifier
    which are referenced from initcall and are missing __init{,data}
    annotations resulting the below section mismatch build warnings.
    
    "WARNING: vmlinux.o(.text+0xbab790): Section mismatch in reference from
    the function init_cpu_capacity_callback() to the variable .init.text:$x
    The function init_cpu_capacity_callback() references the variable
    __init $x. This is often because init_cpu_capacity_callback lacks a
    __init annotation or the annotation of $x is wrong."
    
    This patch fixes the above build warnings by adding the required annotations.
    
    Fixes: 2ef7a2953c81 ("arm, arm64: factorize common cpu capacity default code")
    Cc: Juri Lelli <juri.lelli@arm.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d3476c1395a39dcb2b78809424344ca7dadbfe2
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Mon Oct 9 14:52:10 2017 +0200

    udp: fix bcast packet reception
    
    commit 996b44fcef8f216ea0b6b6e74468c5a77b5e341f upstream.
    
    The commit bc044e8db796 ("udp: perform source validation for
    mcast early demux") does not take into account that broadcast packets
    lands in the same code path and they need different checks for the
    source address - notably, zero source address are valid for bcast
    and invalid for mcast.
    
    As a result, 2nd and later broadcast packets with 0 source address
    landing to the same socket are dropped. This breaks dhcp servers.
    
    Since we don't have stringent performance requirements for ingress
    broadcast traffic, fix it by disabling UDP early demux such traffic.
    
    Reported-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Fixes: bc044e8db796 ("udp: perform source validation for mcast early demux")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f8a055eadfd437689a6bf8749d5fef37ae242bfe
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Sep 28 15:51:37 2017 +0200

    udp: perform source validation for mcast early demux
    
    
    [ Upstream commit bc044e8db7962e727a75b591b9851ff2ac5cf846 ]
    
    The UDP early demux can leverate the rx dst cache even for
    multicast unconnected sockets.
    
    In such scenario the ipv4 source address is validated only on
    the first packet in the given flow. After that, when we fetch
    the dst entry  from the socket rx cache, we stop enforcing
    the rp_filter and we even start accepting any kind of martian
    addresses.
    
    Disabling the dst cache for unconnected multicast socket will
    cause large performace regression, nearly reducing by half the
    max ingress tput.
    
    Instead we factor out a route helper to completely validate an
    skb source address for multicast packets and we call it from
    the UDP early demux for mcast packets landing on unconnected
    sockets, after successful fetching the related cached dst entry.
    
    This still gives a measurable, but limited performance
    regression:
    
                    rp_filter = 0           rp_filter = 1
    edmux disabled: 1182 Kpps               1127 Kpps
    edmux before:   2238 Kpps               2238 Kpps
    edmux after:    2037 Kpps               2019 Kpps
    
    The above figures are on top of current net tree.
    Applying the net-next commit 6e617de84e87 ("net: avoid a full
    fib lookup when rp_filter is disabled.") the delta with
    rp_filter == 0 will decrease even more.
    
    Fixes: 421b3885bf6d ("udp: ipv4: Add udp early demux")
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efabff1c770e040db48a33491bd7b2307eeb5c53
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Tue Sep 19 12:01:08 2017 +0200

    clk: samsung: exynos4: Enable VPLL and EPLL clocks for suspend/resume cycle
    
    commit 5dcbeca615ef12047a5f4097b91030cbf995b1d2 upstream.
    
    Commit 6edfa11cb396 ("clk: samsung: Add enable/disable operation for
    PLL36XX clocks") added enable/disable operations to PLL clocks. Prior that
    VPLL and EPPL clocks were always enabled because the enable bit was never
    touched. Those clocks have to be enabled during suspend/resume cycle,
    because otherwise board fails to enter sleep mode. This patch enables them
    unconditionally before entering system suspend state. System restore
    function will set them to the previous state saved in the register cache
    done before that unconditional enable.
    
    Fixes: 6edfa11cb396 ("clk: samsung: Add enable/disable operation for PLL36XX clocks")
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3256e3cec91e573f8daccbd3fbfb34fd4dca2f0
Author: Peng Xu <pxu@qti.qualcomm.com>
Date:   Tue Oct 3 23:21:51 2017 +0300

    nl80211: Define policy for packet pattern attributes
    
    commit ad670233c9e1d5feb365d870e30083ef1b889177 upstream.
    
    Define a policy for packet pattern attributes in order to fix a
    potential read over the end of the buffer during nla_get_u32()
    of the NL80211_PKTPAT_OFFSET attribute.
    
    Note that the data there can always be read due to SKB allocation
    (with alignment and struct skb_shared_info at the end), but the
    data might be uninitialized. This could be used to leak some data
    from uninitialized vmalloc() memory, but most drivers don't allow
    an offset (so you'd just get -EINVAL if the data is non-zero) or
    just allow it with a fixed value - 100 or 128 bytes, so anything
    above that would get -EINVAL. With brcmfmac the limit is 1500 so
    (at least) one byte could be obtained.
    
    Signed-off-by: Peng Xu <pxu@qti.qualcomm.com>
    Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
    [rewrite description based on SKB allocation knowledge]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 537222a044437627cb7e4c75684b90c1a678b458
Author: Chanho Min <chanho.min@lge.com>
Date:   Tue Sep 26 09:03:40 2017 +0900

    mmc: core: add driver strength selection when selecting hs400es
    
    commit fb458864d9a78cc433fec7979acbe4078c82d7a8 upstream.
    
    The driver strength selection is missed and required when selecting
    hs400es. So, It is added here.
    
    Fixes: 81ac2af65793ecf ("mmc: core: implement enhanced strobe support")
    Signed-off-by: Hankyung Yu <hankyung.yu@lge.com>
    Signed-off-by: Chanho Min <chanho.min@lge.com>
    Reviewed-by: Adrian Hunter <adrian.hunter@intel.com>
    Reviewed-by: Shawn Lin <shawn.lin@rock-chips.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 598b587120d1364d0d58097dac99f209aaadf917
Author: Christoph Hellwig <hch@lst.de>
Date:   Sun Oct 1 09:37:35 2017 +0200

    nvme-pci: Use PCI bus address for data/queues in CMB
    
    commit 8969f1f8291762c13147c1ba89d46238af01675b upstream.
    
    Currently, NVMe PCI host driver is programming CMB dma address as
    I/O SQs addresses. This results in failures on systems where 1:1
    outbound mapping is not used (example Broadcom iProc SOCs) because
    CMB BAR will be progammed with PCI bus address but NVMe PCI EP will
    try to access CMB using dma address.
    
    To have CMB working on systems without 1:1 outbound mapping, we
    program PCI bus address for I/O SQs instead of dma address. This
    approach will work on systems with/without 1:1 outbound mapping.
    
    Based on a report and previous patch from Abhishek Shah.
    
    Fixes: 8ffaadf7 ("NVMe: Use CMB for the IO SQes if available")
    Reported-by: Abhishek Shah <abhishek.shah@broadcom.com>
    Tested-by: Abhishek Shah <abhishek.shah@broadcom.com>
    Reviewed-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 233538248fe6b0752847afc0ccbb96f9fcd283b6
Author: Benjamin Block <bblock@linux.vnet.ibm.com>
Date:   Tue Oct 3 12:48:37 2017 +0200

    bsg-lib: fix use-after-free under memory-pressure
    
    commit eab40cf336065e8d765e006b81ff48c5c114b365 upstream.
    
    When under memory-pressure it is possible that the mempool which backs
    the 'struct request_queue' will make use of up to BLKDEV_MIN_RQ count
    emergency buffers - in case it can't get a regular allocation. These
    buffers are preallocated and once they are also used, they are
    re-supplied with old finished requests from the same request_queue (see
    mempool_free()).
    
    The bug is, when re-supplying the emergency pool, the old requests are
    not again ran through the callback mempool_t->alloc(), and thus also not
    through the callback bsg_init_rq(). Thus we skip initialization, and
    while the sense-buffer still should be good, scsi_request->cmd might
    have become to be an invalid pointer in the meantime. When the request
    is initialized in bsg.c, and the user's CDB is larger than BLK_MAX_CDB,
    bsg will replace it with a custom allocated buffer, which is freed when
    the user's command is finished, thus it dangles afterwards. When next a
    command is sent by the user that has a smaller/similar CDB as
    BLK_MAX_CDB, bsg will assume that scsi_request->cmd is backed by
    scsi_request->__cmd, will not make a custom allocation, and write into
    undefined memory.
    
    Fix this by splitting bsg_init_rq() into two functions:
     - bsg_init_rq() is changed to only do the allocation of the
       sense-buffer, which is used to back the bsg job's reply buffer. This
       pointer should never change during the lifetime of a scsi_request, so
       it doesn't need re-initialization.
     - bsg_initialize_rq() is a new function that makes use of
       'struct request_queue's initialize_rq_fn callback (which was
       introduced in v4.12). This is always called before the request is
       given out via blk_get_request(). This function does the remaining
       initialization that was previously done in bsg_init_rq(), and will
       also do it when the request is taken from the emergency-pool of the
       backing mempool.
    
    Fixes: 50b4d485528d ("bsg-lib: fix kernel panic resulting from missing allocation of reply-buffer")
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Benjamin Block <bblock@linux.vnet.ibm.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ce9cd8955f624b1cd8af40d760da7da0be2229a
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Thu Sep 21 17:19:20 2017 +0300

    drm/i915/bios: ignore HDMI on port A
    
    commit 2ba7d7e0437127314864238f8bfcb8369d81075c upstream.
    
    The hardware state readout oopses after several warnings when trying to
    use HDMI on port A, if such a combination is configured in VBT. Filter
    the combo out already at the VBT parsing phase.
    
    v2: also ignore DVI (Ville)
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102889
    Cc: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: Daniel Drake <dan@reactivated.net>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170921141920.18172-1-jani.nikula@intel.com
    (cherry picked from commit d27ffc1d00327c29b3aa97f941b42f0949f9e99f)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e47c96fe605775cb0d4ee8391c49f64480643237
Author: Jani Nikula <jani.nikula@intel.com>
Date:   Tue Sep 19 18:38:13 2017 +0300

    drm/i915: always update ELD connector type after get modes
    
    commit 2d8f63297b9f0b430c96329893667c0bfdcbd47e upstream.
    
    drm_edid_to_eld() initializes the connector ELD to zero, overwriting the
    ELD connector type initialized in intel_audio_codec_enable(). If
    userspace does getconnector and thus get_modes after modeset, a
    subsequent audio component i915_audio_component_get_eld() call will
    receive an ELD without the connector type properly set. It's fine for
    HDMI, but screws up audio for DP.
    
    Always set the ELD connector type at intel_connector_update_modes()
    based on the connector type. We can drop the connector type update from
    intel_audio_codec_enable().
    
    Credits to Joseph Nuzman <jnuzman@gmail.com> for figuring this out.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Joseph Nuzman <jnuzman@gmail.com>
    Reported-by: Joseph Nuzman <jnuzman@gmail.com>
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101583
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: Joseph Nuzman <jnuzman@gmail.com>
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20170919153813.29808-1-jani.nikula@intel.com
    (cherry picked from commit d81fb7fd9436e81fda67e5bc8ed0713aa28d3db2)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01b1674227333b22b9d5dc9e96508401c0a1aa93
Author: Arend Van Spriel <arend.vanspriel@broadcom.com>
Date:   Tue Sep 12 10:47:54 2017 +0200

    brcmfmac: setup passive scan if requested by user-space
    
    commit 35f62727df0ed8e5e4857e162d94fd46d861f1cf upstream.
    
    The driver was not properly configuring firmware with regard to the
    type of scan. It always performed an active scan even when user-space
    was requesting for passive scan, ie. the scan request was done without
    any SSIDs specified.
    
    Reported-by: Huang, Jiangyang <Jiangyang.Huang@itron.com>
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@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 1b9fff6661fe217d56c6257515c0effbe41d9ab7
Author: Arend Van Spriel <arend.vanspriel@broadcom.com>
Date:   Tue Sep 12 10:47:53 2017 +0200

    brcmfmac: add length check in brcmf_cfg80211_escan_handler()
    
    commit 17df6453d4be17910456e99c5a85025aa1b7a246 upstream.
    
    Upon handling the firmware notification for scans the length was
    checked properly and may result in corrupting kernel heap memory
    due to buffer overruns. This fix addresses CVE-2017-0786.
    
    Cc: Kevin Cernekee <cernekee@chromium.org>
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@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 e61b476896432d3cbabc83129966d85cf102c0e7
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Wed Sep 27 21:38:59 2017 -0400

    scsi: sd: Do not override max_sectors_kb sysfs setting
    
    commit 77082ca503bed061f7fbda7cfd7c93beda967a41 upstream.
    
    A user may lower the max_sectors_kb setting in sysfs to accommodate
    certain workloads. Previously we would always set the max I/O size to
    either the block layer default or the optional preferred I/O size
    reported by the device.
    
    Keep the current heuristics for the initial setting of max_sectors_kb.
    For subsequent invocations, only update the current queue limit if it
    exceeds the capabilities of the hardware.
    
    Reported-by: Don Brace <don.brace@microsemi.com>
    Reviewed-by: Martin Wilck <mwilck@suse.com>
    Tested-by: Don Brace <don.brace@microsemi.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2942986e538b427c6fa36785be5286607cede892
Author: Martin K. Petersen <martin.petersen@oracle.com>
Date:   Wed Sep 27 21:35:12 2017 -0400

    scsi: sd: Implement blacklist option for WRITE SAME w/ UNMAP
    
    commit 28a0bc4120d38a394499382ba21d6965a67a3703 upstream.
    
    SBC-4 states:
    
      "A MAXIMUM UNMAP LBA COUNT field set to a non-zero value indicates the
       maximum number of LBAs that may be unmapped by an UNMAP command"
    
      "A MAXIMUM WRITE SAME LENGTH field set to a non-zero value indicates
       the maximum number of contiguous logical blocks that the device server
       allows to be unmapped or written in a single WRITE SAME command."
    
    Despite the spec being clear on the topic, some devices incorrectly
    expect WRITE SAME commands with the UNMAP bit set to be limited to the
    value reported in MAXIMUM UNMAP LBA COUNT in the Block Limits VPD.
    
    Implement a blacklist option that can be used to accommodate devices
    with this behavior.
    
    Reported-by: Bill Kuzeja <William.Kuzeja@stratus.com>
    Reported-by: Ewan D. Milne <emilne@redhat.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Tested-by: Laurence Oberman <loberman@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2aca0b55d304a82d9742c7de12c1f12fba77f7b3
Author: Luca Coelho <luciano.coelho@intel.com>
Date:   Fri Sep 1 17:59:15 2017 +0300

    iwlwifi: mvm: use IWL_HCMD_NOCOPY for MCAST_FILTER_CMD
    
    commit 97bce57bd7f96e1218751996f549a6e61f18cc8c upstream.
    
    The MCAST_FILTER_CMD can get quite large when we have many mcast
    addresses to set (we support up to 255).  So the command should be
    send as NOCOPY to prevent a warning caused by too-long commands:
    
    WARNING: CPU: 0 PID: 9700 at /root/iwlwifi/stack-dev/drivers/net/wireless/intel/iwlwifi/pcie/tx.c:1550 iwl_pcie_enqueue_hcmd+0x8c7/0xb40 [iwlwifi]
    Command MCAST_FILTER_CMD (0x1d0) is too large (328 bytes)
    
    This fixes: https://bugzilla.kernel.org/show_bug.cgi?id=196743
    
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c49e1f36ae5f6ee4ccaf09d9575942a4fbf6b034
Author: Boqun Feng <boqun.feng@gmail.com>
Date:   Tue Oct 3 21:36:51 2017 +0800

    kvm/x86: Avoid async PF preempting the kernel incorrectly
    
    commit a2b7861bb33b2538420bb5d8554153484d3f961f upstream.
    
    Currently, in PREEMPT_COUNT=n kernel, kvm_async_pf_task_wait() could call
    schedule() to reschedule in some cases.  This could result in
    accidentally ending the current RCU read-side critical section early,
    causing random memory corruption in the guest, or otherwise preempting
    the currently running task inside between preempt_disable and
    preempt_enable.
    
    The difficulty to handle this well is because we don't know whether an
    async PF delivered in a preemptible section or RCU read-side critical section
    for PREEMPT_COUNT=n, since preempt_disable()/enable() and rcu_read_lock/unlock()
    are both no-ops in that case.
    
    To cure this, we treat any async PF interrupting a kernel context as one
    that cannot be preempted, preventing kvm_async_pf_task_wait() from choosing
    the schedule() path in that case.
    
    To do so, a second parameter for kvm_async_pf_task_wait() is introduced,
    so that we know whether it's called from a context interrupting the
    kernel, and the parameter is set properly in all the callsites.
    
    Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Wanpeng Li <wanpeng.li@hotmail.com>
    Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 45965c122a356bc57d44eabe5cc077e28ff952b9
Author: Sam Bobroff <sam.bobroff@au1.ibm.com>
Date:   Tue Sep 26 16:47:04 2017 +1000

    KVM: PPC: Book3S: Fix server always zero from kvmppc_xive_get_xive()
    
    commit 2fb1e946450a4fef74bb72f360555f7760d816f0 upstream.
    
    In KVM's XICS-on-XIVE emulation, kvmppc_xive_get_xive() returns the
    value of state->guest_server as "server". However, this value is not
    set by it's counterpart kvmppc_xive_set_xive(). When the guest uses
    this interface to migrate interrupts away from a CPU that is going
    offline, it sees all interrupts as belonging to CPU 0, so they are
    left assigned to (now) offline CPUs.
    
    This patch removes the guest_server field from the state, and returns
    act_server in it's place (that is, the CPU actually handling the
    interrupt, which may differ from the one requested).
    
    Fixes: 5af50993850a ("KVM: PPC: Book3S HV: Native usage of the XIVE interrupt controller")
    Signed-off-by: Sam Bobroff <sam.bobroff@au1.ibm.com>
    Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c284a72869fe25a20c214d68c08f92b0f3e4e8ce
Author: Jeffy Chen <jeffy.chen@rock-chips.com>
Date:   Wed Sep 27 20:28:57 2017 +0800

    dm crypt: fix memory leak in crypt_ctr_cipher_old()
    
    commit bd86e32059526e2d0d13ca1e4447dfbbddb6e5cc upstream.
    
    Fix memory leak of cipher_api.
    
    Fixes: 33d2f09fcb35 (dm crypt: introduce new format of cipher with "capi:" prefix)
    Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 666cb84582bc7d7742198beb7dfc22eab4651268
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Sep 20 07:29:49 2017 -0400

    dm ioctl: fix alignment of event number in the device list
    
    commit 62e082430ea4bb5b28909ca4375bb683931e22aa upstream.
    
    The size of struct dm_name_list is different on 32-bit and 64-bit
    kernels (so "(nl + 1)" differs between 32-bit and 64-bit kernels).
    
    This mismatch caused some harmless difference in padding when using 32-bit
    or 64-bit kernel. Commit 23d70c5e52dd ("dm ioctl: report event number in
    DM_LIST_DEVICES") added reporting event number in the output of
    DM_LIST_DEVICES_CMD. This difference in padding makes it impossible for
    userspace to determine the location of the event number (the location
    would be different when running on 32-bit and 64-bit kernels).
    
    Fix the padding by using offsetof(struct dm_name_list, name) instead of
    sizeof(struct dm_name_list) to determine the location of entries.
    
    Also, the ioctl version number is incremented to 37 so that userspace
    can use the version number to determine that the event number is present
    and correctly located.
    
    In addition, a global event is now raised when a DM device is created,
    removed, renamed or when table is swapped, so that the user can monitor
    for device changes.
    
    Reported-by: Eugene Syromiatnikov <esyr@redhat.com>
    Fixes: 23d70c5e52dd ("dm ioctl: report event number in DM_LIST_DEVICES")
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a986ac2486ffcbd577e37b1220237e1fc414672
Author: Milan Broz <gmazyland@gmail.com>
Date:   Wed Sep 13 15:45:56 2017 +0200

    dm crypt: reject sector_size feature if device length is not aligned to it
    
    commit 783874b050768d361239e444ba0fa396bb6d463f upstream.
    
    If a crypt mapping uses optional sector_size feature, additional
    restrictions to mapped device segment size must be applied in
    constructor, otherwise the device activation will fail later.
    
    Fixes: 8f0009a225 ("dm crypt: optionally support larger encryption sector size")
    Signed-off-by: Milan Broz <gmazyland@gmail.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0f42fcbd5606096e1aaccbe9619cc7bf396e77be
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Sep 22 23:29:19 2017 +0200

    netlink: fix nla_put_{u8,u16,u32} for KASAN
    
    commit b4391db42308c9940944b5d7be5ca4b78fb88dd0 upstream.
    
    When CONFIG_KASAN is enabled, the "--param asan-stack=1" causes rather large
    stack frames in some functions. This goes unnoticed normally because
    CONFIG_FRAME_WARN is disabled with CONFIG_KASAN by default as of commit
    3f181b4d8652 ("lib/Kconfig.debug: disable -Wframe-larger-than warnings with
    KASAN=y").
    
    The kernelci.org build bot however has the warning enabled and that led
    me to investigate it a little further, as every build produces these warnings:
    
    net/wireless/nl80211.c:4389:1: warning: the frame size of 2240 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    net/wireless/nl80211.c:1895:1: warning: the frame size of 3776 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    net/wireless/nl80211.c:1410:1: warning: the frame size of 2208 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    net/bridge/br_netlink.c:1282:1: warning: the frame size of 2544 bytes is larger than 2048 bytes [-Wframe-larger-than=]
    
    Most of this problem is now solved in gcc-8, which can consolidate
    the stack slots for the inline function arguments. On older compilers
    we can add a workaround by declaring a local variable in each function
    to pass the inline function argument.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff7c75a664756acec81526ebf6dceb320561de59
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Sep 22 23:29:18 2017 +0200

    rocker: fix rocker_tlv_put_* functions for KASAN
    
    commit 6098d7ddd62f532f80ee2a4b01aca500a8e4e9e4 upstream.
    
    Inlining these functions creates lots of stack variables that each take
    64 bytes when KASAN is enabled, leading to this warning about potential
    stack overflow:
    
    drivers/net/ethernet/rocker/rocker_ofdpa.c: In function 'ofdpa_cmd_flow_tbl_add':
    drivers/net/ethernet/rocker/rocker_ofdpa.c:621:1: error: the frame size of 2752 bytes is larger than 1536 bytes [-Werror=frame-larger-than=]
    
    gcc-8 can now consolidate the stack slots itself, but on older versions
    we get the same behavior by using a temporary variable that holds a
    copy of the inline function argument.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81715
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a535d796c541b1c9bcccacd8a32e16da105ebac0
Author: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Date:   Wed Oct 4 11:05:17 2017 +0900

    Btrfs: fix overlap of fs_info::flags values
    
    commit 69ad59767d094752c23c0fc180a79532fde073d0 upstream.
    
    Because the values of BTRFS_FS_EXCL_OP and BTRFS_FS_QUOTA_OVERRIDE overlap,
    we should change the value.
    
    First, BTRFS_FS_EXCL_OP was set to 14.
    
      commit 171938e52807 ("btrfs: track exclusive filesystem operation in flags")
    
    Next, the value of BTRFS_FS_QUOTA_OVERRIDE was set to 14.
    
      commit f29efe292198 ("btrfs: add quota override flag to enable quota override for CAP_SYS_RESOURCE")
    
    As a result, the value 14 overlapped, by accident.
    This problem is solved by defining the value of BTRFS_FS_EXCL_OP as 16,
    the flags are internal.
    
    Fixes: f29efe292198 ("btrfs: add quota override flag to enable quota override for CAP_SYS_RESOURCE")
    Signed-off-by: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    [ minimize the change, update only BTRFS_FS_EXCL_OP ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d2f69689821725774998aa471fa4f398d5a22ec
Author: Goffredo Baroncelli <kreijack@inwind.it>
Date:   Tue Oct 3 19:31:10 2017 +0200

    btrfs: avoid overflow when sector_t is 32 bit
    
    commit 2d8ce70a08fe033c904115d59276ad86adeaa337 upstream.
    
    Jean-Denis Girard noticed commit c821e7f3 "pass bytes to
    btrfs_bio_alloc" (https://patchwork.kernel.org/patch/9763081/)
    introduces a regression on 32 bit machines.
    When CONFIG_LBDAF is _not_ defined (CONFIG_LBDAF == Support for large
    (2TB+) block devices and files) sector_t is 32 bit on 32bit machines.
    
    In the function submit_extent_page, 'sector' (which is sector_t type) is
    multiplied by 512 to convert it from sectors to bytes, leading to an
    overflow when the disk is bigger than 4GB (!).
    
    I added a cast to u64 to avoid overflow.
    
    Fixes: c821e7f3 ("btrfs: pass bytes to btrfs_bio_alloc")
    Signed-off-by: Goffredo Baroncelli <kreijack@inwind.it>
    Tested-by: Jean-Denis Girard <jd.girard@sysnux.pf>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 301dfc653cac5ee2a96744e2fd4473576bec95d2
Author: Ping Cheng <pinglinux@gmail.com>
Date:   Thu Aug 31 15:50:03 2017 -0700

    HID: wacom: bits shifted too much for 9th and 10th buttons
    
    commit ce06760ba46b66dae50f2519ae76bd15e89b5710 upstream.
    
    Cintiq 12 has 10 expresskey buttons. The bit shift for the last
    two buttons were off by 5.
    
    Fixes: c7f0522 ("HID: wacom: Slim down wacom_intuos_pad processing")
    
    Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
    Tested-by: Matthieu Robin <matthieu@macolu.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Cc: Jason Gerecke <killertofu@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f161ebaef4a852b9fd247afd682283c45031fd5
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Mon Sep 18 09:27:42 2017 -0700

    HID: wacom: Always increment hdev refcount within wacom_get_hdev_data
    
    commit 2a5e597c6bb1b873e473e5f57147e9e5d2755430 upstream.
    
    The wacom_get_hdev_data function is used to find and return a reference to
    the "other half" of a Wacom device (i.e., the touch device associated with
    a pen, or vice-versa). To ensure these references are properly accounted
    for, the function is supposed to automatically increment the refcount before
    returning. This was not done, however, for devices which have pen & touch
    on different interfaces of the same USB device. This can lead to a WARNING
    ("refcount_t: underflow; use-after-free") when removing the module or device
    as we call kref_put() more times than kref_get(). Triggering an "actual" use-
    after-free would be difficult since both devices will disappear nearly-
    simultaneously. To silence this warning and prevent the potential error, we
    need to increment the refcount for all cases within wacom_get_hdev_data.
    
    Fixes: 41372d5d40 ("HID: wacom: Augment 'oVid' and 'oPid' with heuristics for HID_GENERIC")
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b0ad678bc05c817f7145b032b40bf935b1f821c
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Sep 7 17:47:38 2017 -0700

    HID: wacom: generic: Clear ABS_MISC when tool leaves proximity
    
    commit 92380b572d95caf48f8424746aeee63c5a2b1922 upstream.
    
    The tool ID information sent in ABS_MISC is expected to be reset to 0
    when a tool leaves proximity. Not doing this can cause problems if a
    tool is removed and then re-introduced. Kernel event filtering will
    prevent the (identical) ABS_MISC event from being sent when the tool
    re-enters proxmity. This can cause userspace to not properly set the
    tool ID.
    
    Fixes: f85c9dc678 ("HID: wacom: generic: Support tool ID and additional tool types")
    Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bd7c1b0d060dbac733ee314b0b6969cd893ff0ff
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Thu Sep 7 17:44:12 2017 -0700

    HID: wacom: generic: Send MSC_SERIAL and ABS_MISC when leaving prox
    
    commit 993f0d93f8538c15bd5c12a1a9fd74c777efea1b upstream.
    
    The latest generation of pro devices (MobileStudio Pro, 2nd-gen Intuos
    Pro, Cintiq Pro) send a serial number of '0' whenever the pen is too far
    away for reliable communication. Userspace defines that a serial number
    of '0' is invalid, so we need to be careful not to actually forward
    this value. Additionally, since EMR ISDv4 devices do not support serial
    numbers or tool IDs, we'd like to not send these events if they aren't
    necessary.
    
    The existing code achieves these goals by adding a check for a non-zero
    serial number within the wacom_wac_pen_report function. The MSC_SERIAL
    and ABS_MISC events are only sent if the serial number is non-zero. This
    code fails, however when the pen for a pro device leaves proximity. When
    the pen leaves prox and the tablet sends a serial of 0, wacom_wac_pen_event
    dutifully clears the serial number. When wacom_wac_pen_report is called,
    it does not send either the MSC_SERIAL of the exiting tool nor an ABS_MISC
    event.
    
    This patch prevents the wacom_wac_pen_event function from clearing an
    already-set serial number. This ensures that we have the serial number
    handy when exiting proximity, but requires us to manually clear it
    afterwards to ensure the driver does not send stale data (e.g. when
    switching between AES pens that report a serial nubmer of 0 for the
    first few fully in-proximity packets).
    
    Fixes: f85c9dc678 ("HID: wacom: generic: Support tool ID and additional tool types")
    Signed-off-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c04ea16b5390417835bba5680b0f5d77d59fd39
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Wed Aug 30 15:13:26 2017 -0700

    HID: wacom: Correct coordinate system of touchring and pen twist
    
    commit d252f4a10fb9c8f7187c6c936ff530039f8cb799 upstream.
    
    The MobileStudio Pro, Cintiq Pro, and 2nd-gen Intuos Pro devices use a
    different coordinate system for their touchring and pen twist than prior
    devices. Prior devices had zero aligned to the tablet's left and would
    increase clockwise. Userspace expects data from the kernel to be in this
    old coordinate space, so adjustments are necessary.
    
    While the coordinate system for pen twist is formally defined by the HID
    standard, no such definition existed for the touchring at the time these
    tablets were introduced. Future tablets are expected to report touchring
    data using the same "zero-up clockwise-increasing" coordinate system
    defined for twist.
    
    Fixes: 50066a042d ("HID: wacom: generic: Add support for height, tilt, and twist usages")
    Fixes: 4922cd26f0 ("HID: wacom: Support 2nd-gen Intuos Pro's Bluetooth classic interface")
    Fixes: 60a2218698 ("HID: wacom: generic: add support for touchring")
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Reviewed-by: Ping Cheng <ping.cheng@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e78afcceab9ac13750c1e42df7b32d60cf3040d
Author: Jason Gerecke <killertofu@gmail.com>
Date:   Wed Aug 30 15:13:25 2017 -0700

    HID: wacom: Properly report negative values from Intuos Pro 2 Bluetooth
    
    commit b63c4c2718d641ba9bec888994f0cb0c23a1ef45 upstream.
    
    The wacom driver's IRQ handler for Bluetooth reports from the 2nd-gen
    Intuos Pro does not correctly process negative numbers. Values for
    tilt and rotation (which can go negative) are instead interpreted as
    unsigned and so jump to very large values when the data should be
    negative. This commit properly casts the data to ensure we report
    negative numbers when necessary.
    
    Fixes: 4922cd2 ("HID: wacom: Support 2nd-gen Intuos Pro's Bluetooth classic interface")
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b74ac47062a71729349733cd2d325b199bf34d9
Author: Aaron Armstrong Skomra <skomra@gmail.com>
Date:   Mon Aug 28 14:15:39 2017 -0700

    HID: wacom: leds: Don't try to control the EKR's read-only LEDs
    
    commit 74aebed6dc13425233f2224668353cff7a112776 upstream.
    
    Commit a50aac7193f1 introduces 'led.groups' and adds EKR support
    for these groups. However, unlike the other devices with LEDs,
    the EKR's LEDs are read-only and we shouldn't attempt to control
    them in wacom_led_control().
    
    See bug: https://sourceforge.net/p/linuxwacom/bugs/342/
    
    Fixes: a50aac7193f1 ("HID: wacom: leds: dynamically allocate LED groups")
    Signed-off-by: Aaron Armstrong Skomra <aaron.skomra@wacom.com>
    Reviewed-by: Jason Gerecke <jason.gerecke@wacom.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fe23dd3cf44e86bc8e5f4aca75cb51b37356b5a
Author: Adrian Salido <salidoa@google.com>
Date:   Fri Sep 8 10:55:27 2017 -0700

    HID: i2c-hid: allocate hid buffers for real worst case
    
    commit 8320caeeffdefec3b58b9d4a7ed8e1079492fe7b upstream.
    
    The buffer allocation is not currently accounting for an extra byte for
    the report id. This can cause an out of bounds access in function
    i2c_hid_set_or_send_report() with reportID > 15.
    
    Signed-off-by: Adrian Salido <salidoa@google.com>
    Reviewed-by: Benson Leung <bleung@chromium.org>
    Signed-off-by: Guenter Roeck <groeck@chromium.org>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 342cb7161d4d6a7c23bcfd14d3519556203f0618
Author: Lyude <lyude@redhat.com>
Date:   Sat Jul 22 21:15:09 2017 -0400

    HID: rmi: Make sure the HID device is opened on resume
    
    commit cac72b990d34f4c70208998a86f910ba38253c94 upstream.
    
    So it looks like that suspend/resume has actually always been broken on
    hid-rmi. The fact it worked was a rather silly coincidence that was
    relying on the HID device to already be opened upon resume. This means
    that so long as anything was reading the /dev/input/eventX node for for
    an RMI device, it would suspend and resume correctly. As well, if
    nothing happened to be keeping the HID device away it would shut off,
    then the RMI driver would get confused on resume when it stopped
    responding and explode.
    
    So, call hid_hw_open() in rmi_post_resume() so we make sure that the
    device is alive before we try talking to it.
    
    This fixes RMI device suspend/resume over HID.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=196851
    [jkosina@suse.cz: removed useless hunk that was zero-initializing 'ret']
    Signed-off-by: Lyude <lyude@redhat.com>
    Cc: Andrew Duggan <aduggan@synaptics.com>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 07f9d7905eaab778e17d23ec1ea3c7f39f6bc152
Author: Suzuki K Poulose <suzuki.poulose@arm.com>
Date:   Fri Oct 6 14:16:52 2017 +0100

    arm64: Ensure the instruction emulation is ready for userspace
    
    commit c0d8832e78cbfd4a64b7112e34920af4b0b0e60e upstream.
    
    We trap and emulate some instructions (e.g, mrs, deprecated instructions)
    for the userspace. However the handlers for these are registered as
    late_initcalls and the userspace could be up and running from the initramfs
    by that time (with populate_rootfs, which is a rootfs_initcall()). This
    could cause problems for the early applications ending up in failure
    like :
    
    [   11.152061] modprobe[93]: undefined instruction: pc=0000ffff8ca48ff4
    
    This patch promotes the specific calls to core_initcalls, which are
    guaranteed to be completed before we hit userspace.
    
    Cc: Dave Martin <dave.martin@arm.com>
    Cc: Matthias Brugger <mbrugger@suse.com>
    Cc: James Morse <james.morse@arm.com>
    Reported-by: Matwey V. Kornilov <matwey.kornilov@gmail.com>
    Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a075264bbafe43bda0f9ffcacf3f1b2fadae2226
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Fri Sep 15 10:50:07 2017 +0300

    arm64: dt marvell: Fix AP806 system controller size
    
    commit 9e7460fc325dad06d2066abdbc1f4dd49456f9a4 upstream.
    
    Extend the container size to 0x2000 to include the gpio controller at
    offset 0x1040.
    
    While at it, add start address notation to the gpio node name to match
    its 'offset' property.
    
    Fixes: 63dac0f4924b ("arm64: dts: marvell: add gpio support for Armada
    7K/8K")
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea83a3f315c356ca8baf78a3b79cb2bb88b09939
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Fri Sep 29 10:21:21 2017 +0300

    ovl: fix regression caused by exclusive upper/work dir protection
    
    commit 85fdee1eef1a9e48ad5716916677e0c5fbc781e3 upstream.
    
    Enforcing exclusive ownership on upper/work dirs caused a docker
    regression: https://github.com/moby/moby/issues/34672.
    
    Euan spotted the regression and pointed to the offending commit.
    Vivek has brought the regression to my attention and provided this
    reproducer:
    
    Terminal 1:
    
      mount -t overlay -o workdir=work,lowerdir=lower,upperdir=upper none
            merged/
    
    Terminal 2:
    
      unshare -m
    
    Terminal 1:
    
      umount merged
      mount -t overlay -o workdir=work,lowerdir=lower,upperdir=upper none
            merged/
      mount: /root/overlay-testing/merged: none already mounted or mount point
             busy
    
    To fix the regression, I replaced the error with an alarming warning.
    With index feature enabled, mount does fail, but logs a suggestion to
    override exclusive dir protection by disabling index.
    Note that index=off mount does take the inuse locks, so a concurrent
    index=off will issue the warning and a concurrent index=on mount will fail.
    
    Documentation was updated to reflect this change.
    
    Fixes: 2cac0c00a6cd ("ovl: get exclusive ownership on upper/work dirs")
    Reported-by: Euan Kemp <euank@euank.com>
    Reported-by: Vivek Goyal <vgoyal@redhat.com>
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1135139af4bff1f5a42a22cea1f28423184ca76d
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Mon Sep 25 16:39:55 2017 +0300

    ovl: fix missing unlock_rename() in ovl_do_copy_up()
    
    commit 5820dc0888d302ac05f8b91ffdf7e4e53b4fbf53 upstream.
    
    Use the ovl_lock_rename_workdir() helper which requires
    unlock_rename() only on lock success.
    
    Fixes: ("fd210b7d67ee ovl: move copy up lock out")
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caf7d229de07293d882fc9a5caeeee230cf1ddc9
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Sun Sep 24 22:19:10 2017 +0300

    ovl: fix dentry leak in ovl_indexdir_cleanup()
    
    commit dc7ab6773e8171e07f16fd0df0c5eea28c899503 upstream.
    
    index dentry was not released when breaking out of the loop
    due to index verification error.
    
    Fixes: 415543d5c64f ("ovl: cleanup bad and stale index entries on mount")
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a58388ca12212a818d80df1dddf8fca37c5552a7
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Sun Sep 24 17:36:26 2017 +0300

    ovl: fix dput() of ERR_PTR in ovl_cleanup_index()
    
    commit 9f4ec904dbd4eb1a2db10d5e7dc16eae386fe64d upstream.
    
    Fixes: caf70cb2ba5d ("ovl: cleanup orphan index entries")
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6aa5e931da9ab69b5df42ab2a2f9770b9215e6b3
Author: Amir Goldstein <amir73il@gmail.com>
Date:   Sun Sep 24 13:01:35 2017 +0300

    ovl: fix error value printed in ovl_lookup_index()
    
    commit e0082a0f04c432cb6d7128ef60d8e425e45ce025 upstream.
    
    Fixes: 359f392ca53e ("ovl: lookup index entry for copy up origin")
    Signed-off-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30400895a2a4e13dea151c3acb995f180935b118
Author: Shu Wang <shuwang@redhat.com>
Date:   Tue Sep 12 10:14:54 2017 +0800

    ftrace: Fix kmemleak in unregister_ftrace_graph
    
    commit 2b0b8499ae75df91455bbeb7491d45affc384fb0 upstream.
    
    The trampoline allocated by function tracer was overwriten by function_graph
    tracer, and caused a memory leak. The save_global_trampoline should have
    saved the previous trampoline in register_ftrace_graph() and restored it in
    unregister_ftrace_graph(). But as it is implemented, save_global_trampoline was
    only used in unregister_ftrace_graph as default value 0, and it overwrote the
    previous trampoline's value. Causing the previous allocated trampoline to be
    lost.
    
    kmmeleak backtrace:
        kmemleak_vmalloc+0x77/0xc0
        __vmalloc_node_range+0x1b5/0x2c0
        module_alloc+0x7c/0xd0
        arch_ftrace_update_trampoline+0xb5/0x290
        ftrace_startup+0x78/0x210
        register_ftrace_function+0x8b/0xd0
        function_trace_init+0x4f/0x80
        tracing_set_tracer+0xe6/0x170
        tracing_set_trace_write+0x90/0xd0
        __vfs_write+0x37/0x170
        vfs_write+0xb2/0x1b0
        SyS_write+0x55/0xc0
        do_syscall_64+0x67/0x180
        return_from_SYSCALL_64+0x0/0x6a
    
    [
      Looking further into this, I found that this was left over from when the
      function and function graph tracers shared the same ftrace_ops. But in
      commit 5f151b2401 ("ftrace: Fix function_profiler and function tracer
      together"), the two were separated, and the save_global_trampoline no
      longer was necessary (and it may have been broken back then too).
      -- Steven Rostedt
    ]
    
    Link: http://lkml.kernel.org/r/20170912021454.5976-1-shuwang@redhat.com
    
    Fixes: 5f151b2401 ("ftrace: Fix function_profiler and function tracer together")
    Signed-off-by: Shu Wang <shuwang@redhat.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6f5e43f8da773c18f16431a77d2b4fbefb3400a
Author: Willy Tarreau <w@1wt.eu>
Date:   Thu Sep 7 15:37:30 2017 +0200

    auxdisplay: charlcd: properly restore atomic counter on error path
    
    commit 93dc1774d2a4c7a298d5cdf78cc8acdcb7b1428d upstream.
    
    Commit f4757af ("staging: panel: Fix single-open policy race condition")
    introduced in 3.19-rc1 attempted to fix a race condition on the open, but
    failed to properly do it and used to exit without restoring the semaphore.
    
    This results in -EBUSY being returned after the first open error until
    the module is reloaded or the system restarted (ie: consecutive to a
    dual open resulting in -EBUSY or to a permission error).
    
    [ Note for stable maintainers: the code moved from drivers/misc/panel.c
      to drivers/auxdisplay/{charlcd,panel}.c during 4.12. The patch easily
      applies there (modulo the renamed atomic counter) but I can provide a
      tested backport if desired. ]
    
    Fixes: f4757af85 # 3.19-rc1
    Cc: Mariusz Gorski <marius.gorski@gmail.com>
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Cc: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdb46f469e02d4b39bfcbe4c47d1b7913deec4ce
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Tue Sep 19 18:47:40 2017 +0300

    stm class: Fix a use-after-free
    
    commit fd085bb1766d6a598f53af2308374a546a49775a upstream.
    
    For reasons unknown, the stm_source removal path uses device_destroy()
    to kill the underlying device object. Because device_destroy() uses
    devt to look for the device to destroy and the fact that stm_source
    devices don't have one (or all have the same one), it just picks the
    first device in the class, which may well be the wrong one.
    
    That is, loading stm_console and stm_heartbeat and then removing both
    will die in dereferencing a freed object.
    
    Since this should have been device_unregister() in the first place,
    use it instead of device_destroy().
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Fixes: 7bd1d4093c2 ("stm class: Introduce an abstraction for System Trace Module devices")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8b235ab6a3d2818440537cb813cc10af540d28e
Author: Dexuan Cui <decui@microsoft.com>
Date:   Thu Sep 21 23:41:47 2017 -0700

    vmbus: don't acquire the mutex in vmbus_hvsock_device_unregister()
    
    commit 33c150c2ee4a65a59190a124b45d05b1abf9478e upstream.
    
    Due to commit 54a66265d675 ("Drivers: hv: vmbus: Fix rescind handling"),
    we need this patch to resolve the below deadlock:
    
    after we get the mutex in vmbus_hvsock_device_unregister() and call
    vmbus_device_unregister() -> device_unregister() -> ... -> device_release()
    -> vmbus_device_release(), we'll get a deadlock, because
    vmbus_device_release() tries to get the same mutex.
    
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb5c1df09af8fd96480799b532e2c31eecfb5203
Author: Olaf Hering <olaf@aepfle.de>
Date:   Thu Sep 21 23:41:48 2017 -0700

    Drivers: hv: fcopy: restore correct transfer length
    
    commit 549e658a0919e355a2b2144dc380b3729bef7f3e upstream.
    
    Till recently the expected length of bytes read by the
    daemon did depend on the context. It was either hv_start_fcopy or
    hv_do_fcopy. The daemon had a buffer size of two pages, which was much
    larger than needed.
    
    Now the expected length of bytes read by the
    daemon changed slightly. For START_FILE_COPY it is still the size of
    hv_start_fcopy.  But for WRITE_TO_FILE and the other operations it is as
    large as the buffer that arrived via vmbus. In case of WRITE_TO_FILE
    that is slightly larger than a struct hv_do_fcopy. Since the buffer in
    the daemon was still larger everything was fine.
    
    Currently, the daemon reads only what is actually needed.
    The new buffer layout is as large as a struct hv_do_fcopy, for the
    WRITE_TO_FILE operation. Since the kernel expects a slightly larger
    size, hvt_op_read will return -EINVAL because the daemon will read
    slightly less than expected. Address this by restoring the expected
    buffer size in case of WRITE_TO_FILE.
    
    Fixes: 'c7e490fc23eb ("Drivers: hv: fcopy: convert to hv_utils_transport")'
    Fixes: '3f2baa8a7d2e ("Tools: hv: update buffer handling in hv_fcopy_daemon")'
    
    Signed-off-by: Olaf Hering <olaf@aepfle.de>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 073e4e64a22ce661a3ef5b837f92506b6471ef0b
Author: Waiman Long <longman@redhat.com>
Date:   Thu Sep 21 09:54:13 2017 -0400

    cgroup: Reinit cgroup_taskset structure before cgroup_migrate_execute() returns
    
    commit c4fa6c43ce4b427350cfbb659436bfe3d9e09a1d upstream.
    
    The cgroup_taskset structure within the larger cgroup_mgctx structure
    is supposed to be used once and then discarded. That is not really the
    case in the hotplug code path:
    
    cpuset_hotplug_workfn()
     - cgroup_transfer_tasks()
       - cgroup_migrate()
         - cgroup_migrate_add_task()
         - cgroup_migrate_execute()
    
    In this case, the cgroup_migrate() function is called multiple time
    with the same cgroup_mgctx structure to transfer the tasks from
    one cgroup to another one-by-one. The second time cgroup_migrate()
    is called, the cgroup_taskset will be in an incorrect state and so
    may cause the system to panic. For example,
    
      [  150.888410] Faulting instruction address: 0xc0000000001db648
      [  150.888414] Oops: Kernel access of bad area, sig: 11 [#1]
      [  150.888417] SMP NR_CPUS=2048
      [  150.888417] NUMA
      [  150.888419] pSeries
        :
      [  150.888545] NIP [c0000000001db648] cpuset_can_attach+0x58/0x1b0
      [  150.888548] LR [c0000000001db638] cpuset_can_attach+0x48/0x1b0
      [  150.888551] Call Trace:
      [  150.888554] [c0000005f65cb940] [c0000000001db638] cpuset_can_attach+0x48/0x1b 0 (unreliable)
      [  150.888559] [c0000005f65cb9a0] [c0000000001cff04] cgroup_migrate_execute+0xc4/0x4b0
      [  150.888563] [c0000005f65cba20] [c0000000001d7d14] cgroup_transfer_tasks+0x1d4/0x370
      [  150.888568] [c0000005f65cbb70] [c0000000001ddcb0] cpuset_hotplug_workfn+0x710/0x8f0
      [  150.888572] [c0000005f65cbc80] [c00000000012032c] process_one_work+0x1ac/0x4d0
      [  150.888576] [c0000005f65cbd20] [c0000000001206f8] worker_thread+0xa8/0x5b0
      [  150.888580] [c0000005f65cbdc0] [c0000000001293f8] kthread+0x168/0x1b0
      [  150.888584] [c0000005f65cbe30] [c00000000000b368] ret_from_kernel_thread+0x5c/0x74
    
    To allow reuse of the cgroup_mgctx structure, some fields in that
    structure are now re-initialized at the end of cgroup_migrate_execute()
    function call so that the structure can be reused again in a later
    iteration without causing problem.
    
    This bug was introduced in the commit e595cd706982 ("group: track
    migration context in cgroup_mgctx") in 4.11. This commit moves the
    cgroup_taskset initialization out of cgroup_migrate(). The commit
    10467270fb3 ("cgroup: don't call migration methods if there are no
    tasks to migrate") helped, but did not completely resolve the problem.
    
    Fixes: e595cd706982bff0211e6fafe5a108421e747fbc ("group: track migration context in cgroup_mgctx")
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa3f94eaf0eac8c7f7d1bf8c6f09245a9713871b
Author: Nicolai Stange <nstange@suse.de>
Date:   Mon Sep 11 09:45:42 2017 +0200

    driver core: platform: Don't read past the end of "driver_override" buffer
    
    commit bf563b01c2895a4bfd1a29cc5abc67fe706ecffd upstream.
    
    When printing the driver_override parameter when it is 4095 and 4094 bytes
    long, the printing code would access invalid memory because we need count+1
    bytes for printing.
    
    Reject driver_override values of these lengths in driver_override_store().
    
    This is in close analogy to commit 4efe874aace5 ("PCI: Don't read past the
    end of sysfs "driver_override" buffer") from Sasha Levin.
    
    Fixes: 3d713e0e382e ("driver core: platform: add device binding path 'driver_override'")
    Signed-off-by: Nicolai Stange <nstange@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85b56e5dc4f56c7edccf27ad749a2b63f7a409b5
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Tue Sep 19 18:47:42 2017 +0300

    intel_th: pci: Add Lewisburg PCH support
    
    commit 24600840c74112ad04a9ddd99d7d7f731dcaa1cb upstream.
    
    This adds Intel(R) Trace Hub PCI ID for Lewisburg PCH.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14e8c53a706d9d473151e1e77d9f3c78008638d4
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Tue Sep 26 12:41:52 2017 +0100

    percpu: make this_cpu_generic_read() atomic w.r.t. interrupts
    
    commit e88d62cd4b2f0b1ae55e9008e79c2794b1fc914d upstream.
    
    As raw_cpu_generic_read() is a plain read from a raw_cpu_ptr() address,
    it's possible (albeit unlikely) that the compiler will split the access
    across multiple instructions.
    
    In this_cpu_generic_read() we disable preemption but not interrupts
    before calling raw_cpu_generic_read(). Thus, an interrupt could be taken
    in the middle of the split load instructions. If a this_cpu_write() or
    RMW this_cpu_*() op is made to the same variable in the interrupt
    handling path, this_cpu_read() will return a torn value.
    
    For native word types, we can avoid tearing using READ_ONCE(), but this
    won't work in all cases (e.g. 64-bit types on most 32-bit platforms).
    This patch reworks this_cpu_generic_read() to use READ_ONCE() where
    possible, otherwise falling back to disabling interrupts.
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Pranith Kumar <bobby.prani@gmail.com>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-arch@vger.kernel.org
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe7ae641d68aadd0e5540cadad073c07fe4489da
Author: Gustavo Romero <gromero@linux.vnet.ibm.com>
Date:   Tue Aug 22 17:20:09 2017 -0400

    powerpc/tm: Fix illegal TM state in signal handler
    
    commit 044215d145a7a8a60ffa8fdc859d110a795fa6ea upstream.
    
    Currently it's possible that on returning from the signal handler
    through the restore_tm_sigcontexts() code path (e.g. from a signal
    caught due to a `trap` instruction executed in the middle of an HTM
    block, or a deliberately constructed sigframe) an illegal TM state
    (like TS=10 TM=0, i.e. "T0") is set in SRR1 and when `rfid` sets
    implicitly the MSR register from SRR1 register on return to userspace
    it causes a TM Bad Thing exception.
    
    That illegal state can be set (a) by a malicious user that disables
    the TM bit by tweaking the bits in uc_mcontext before returning from
    the signal handler or (b) by a sufficient number of context switches
    occurring such that the load_tm counter overflows and TM is disabled
    whilst in the signal handler.
    
    This commit fixes the illegal TM state by ensuring that TM bit is
    always enabled before we return from restore_tm_sigcontexts(). A small
    comment correction is made as well.
    
    Fixes: 5d176f751ee3 ("powerpc: tm: Enable transactional memory (TM) lazily for userspace")
    Signed-off-by: Gustavo Romero <gromero@linux.vnet.ibm.com>
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Signed-off-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 c654b8387692160ced6e4dcbb3eed888d6ce10cd
Author: Cyril Bur <cyrilbur@gmail.com>
Date:   Thu Aug 17 20:42:26 2017 +1000

    powerpc/64s: Use emergency stack for kernel TM Bad Thing program checks
    
    commit 265e60a170d0a0ecfc2d20490134ed2c48dd45ab upstream.
    
    When using transactional memory (TM), the CPU can be in one of six
    states as far as TM is concerned, encoded in the Machine State
    Register (MSR). Certain state transitions are illegal and if attempted
    trigger a "TM Bad Thing" type program check exception.
    
    If we ever hit one of these exceptions it's treated as a bug, ie. we
    oops, and kill the process and/or panic, depending on configuration.
    
    One case where we can trigger a TM Bad Thing, is when returning to
    userspace after a system call or interrupt, using RFID. When this
    happens the CPU first restores the user register state, in particular
    r1 (the stack pointer) and then attempts to update the MSR. However
    the MSR update is not allowed and so we take the program check with
    the user register state, but the kernel MSR.
    
    This tricks the exception entry code into thinking we have a bad
    kernel stack pointer, because the MSR says we're coming from the
    kernel, but r1 is pointing to userspace.
    
    To avoid this we instead always switch to the emergency stack if we
    take a TM Bad Thing from the kernel. That way none of the user
    register values are used, other than for printing in the oops message.
    
    This is the fix for CVE-2017-1000255.
    
    Fixes: 5d176f751ee3 ("powerpc: tm: Enable transactional memory (TM) lazily for userspace")
    Signed-off-by: Cyril Bur <cyrilbur@gmail.com>
    [mpe: Rewrite change log & comments, tweak asm slightly]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb080d888a1e87cfd9e7cef4d5531b8ab4ed610d
Author: Jeremy Kerr <jk@ozlabs.org>
Date:   Wed Sep 27 12:55:51 2017 +0800

    powerpc: Fix action argument for cpufeatures-based TLB flush
    
    commit 3b7af5c0fd9631762d1c4d7b4cee76f571dd3c2c upstream.
    
    Commit 41d0c2ecde19 ("powerpc/powernv: Fix local TLB flush for boot
    and MCE on POWER9") introduced calls to __flush_tlb_power[89] from the
    cpufeatures code, specifying the number of sets to flush.
    
    However, these functions take an action argument, not a number of
    sets. This means we hit the BUG() in __flush_tlb_{206,300} when using
    cpufeatures-style configuration.
    
    This change passes TLB_INVAL_SCOPE_GLOBAL instead.
    
    Fixes: 41d0c2ecde19 ("powerpc/powernv: Fix local TLB flush for boot and MCE on POWER9")
    Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
    Reviewed-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 5a33625b5cbaee945cc4adbf68d4b2e7083c509e
Author: Anton Blanchard <anton@samba.org>
Date:   Thu Sep 7 15:05:51 2017 +1000

    powerpc/powernv: Increase memory block size to 1GB on radix
    
    commit 53ecde0b9126ff140abe3aefd7f0ec64d6fa36b0 upstream.
    
    Memory hot unplug on PowerNV radix hosts is broken. Our memory block
    size is 256MB but since we map the linear region with very large
    pages, each pte we tear down maps 1GB.
    
    A hot unplug of one 256MB memory block results in 768MB of memory
    getting unintentionally unmapped. At this point we are likely to oops.
    
    Fix this by increasing our memory block size to 1GB on PowerNV radix
    hosts.
    
    Fixes: 4b5d62ca17a1 ("powerpc/mm: add radix__remove_section_mapping()")
    Signed-off-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c054568279ef13b73dc3ad25c89f7e0018be2a24
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Oct 2 14:06:43 2017 +0200

    ALSA: usx2y: Suppress kernel warning at page allocation failures
    
    commit 7682e399485fe19622b6fd82510b1f4551e48a25 upstream.
    
    The usx2y driver allocates the stream read/write buffers in continuous
    pages depending on the stream setup, and this may spew the kernel
    warning messages with a stack trace like:
      WARNING: CPU: 1 PID: 1846 at mm/page_alloc.c:3883
      __alloc_pages_slowpath+0x1ef2/0x2d70
      Modules linked in:
      CPU: 1 PID: 1846 Comm: kworker/1:2 Not tainted
      ....
    
    It may confuse user as if it were any serious error, although this is
    no fatal error and the driver handles the error case gracefully.
    Since the driver has already some sanity check of the given size (128
    and 256 pages), it can't pass any crazy value.  So it's merely page
    fragmentation.
    
    This patch adds __GFP_NOWARN to each caller for suppressing such
    kernel warnings.  The original issue was spotted by syzkaller.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f858541923de7e4374fad930f8ba4e8aede6575
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Tue Sep 26 09:11:49 2017 +0900

    Revert "ALSA: echoaudio: purge contradictions between dimension matrix members and total number of members"
    
    commit 51db452df07bb4c5754b73789253ba21681d9dc2 upstream.
    
    This reverts commit 275353bb684e to fix a regression which can abort
    'alsactl' program in alsa-utils due to assertion in alsa-lib.
    
    alsactl: control.c:2513: snd_ctl_elem_value_get_integer: Assertion `idx < sizeof(obj->value.integer.value) / sizeof(obj->value.integer.value[0])' failed.
    
    alsactl: control.c:2976: snd_ctl_elem_value_get_integer: Assertion `idx < ARRAY_SIZE(obj->value.integer.value)' failed.
    
    This commit is a band-aid. In a point of usage of ALSA control interface,
    the drivers still bring an issue that they prevent userspace applications
    to have a consistent way to parse each levels of the dimension information
    via ALSA control interface.
    
    Let me investigate this issue. Current implementation of the drivers
    have three control element sets with dimension information:
     * 'Monitor Mixer Volume' (type: integer)
     * 'VMixer Volume' (type: integer)
     * 'VU-meters' (type: boolean)
    
    Although the number of elements named as 'Monitor Mixer Volume' differs
    depending on drivers in this group, it can be calculated by macros
    defined by each driver (= (BX_NUM - BX_ANALOG_IN) * BX_ANALOG_IN). Each
    of the elements has one member for value and has dimension information
    with 2 levels (= BX_ANALOG_IN * (BX_NUM - BX_ANALOG_IN)). For these
    elements, userspace applications are expected to handle the dimension
    information so that all of the elements construct a matrix where the
    number of rows and columns are represented by the dimension information.
    
    The same way is applied to elements named as 'VMixer Volume'. The number
    of these elements can also be calculated by macros defined by each
    drivers (= PX_ANALOG_IN * BX_ANALOG_IN). Each of the element has one
    member for value and has dimension information with 2 levels
    (= BX_ANALOG_IN * PX_ANALOG_IN). All of the elements construct a matrix
    with the dimension information.
    
    An element named as 'VU-meters' gets a different way in a point of
    dimension information. The element includes 96 members for value. The
    element has dimension information with 3 levels (= 3 or 2 * 16 * 2). For
    this element, userspace applications are expected to handle the dimension
    information so that all of the members for value construct a matrix
    where the number of rows and columns are represented by the dimension
    information. This is different from the way for the former.
    
    As a summary, the drivers were not designed to produce a consistent way to
    parse the dimension information. This makes it hard for general userspace
    applications such as amixer to parse the information by a consistent way,
    and actually no userspace applications except for 'echomixer' utilize the
    dimension information. Additionally, no drivers excluding this group use
    the information.
    
    The reverted commit was written based on the latter way. A commit
    860c1994a70a ('ALSA: control: add dimension validator for userspace
    elements') is written based on the latter way, too. The patch should be
    reconsider too in the same time to re-define a consistent way to parse the
    dimension information.
    
    Reported-by: Mark Hills <mark@xwax.org>
    Reported-by: S. Christian Collins <s.chriscollins@gmail.com>
    Fixes: 275353bb684e ('ALSA: echoaudio: purge contradictions between dimension matrix members and total number of members')
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f67063bfa01e25543d1d5780ef0ce9d071c2a64
Author: Guneshwor Singh <guneshwor.o.singh@intel.com>
Date:   Thu Sep 14 17:49:40 2017 +0530

    ALSA: compress: Remove unused variable
    
    commit a931b9ce93841a5b66b709ba5a244276e345e63b upstream.
    
    Commit 04c5d5a430fc ("ALSA: compress: Embed struct device") removed
    the statement that used 'str' but didn't remove the variable itself.
    So remove it.
    
    [Adding stable to Cc since pr_debug() may refer to the uninitialized
     buffer -- tiwai]
    
    Fixes: 04c5d5a430fc ("ALSA: compress: Embed struct device")
    Signed-off-by: Guneshwor Singh <guneshwor.o.singh@intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c43960d699932f6f70b3eabdc9f94afe86412a33
Author: Casey Schaufler <casey@schaufler-ca.com>
Date:   Tue Sep 19 09:39:08 2017 -0700

    lsm: fix smack_inode_removexattr and xattr_getsecurity memleak
    
    commit 57e7ba04d422c3d41c8426380303ec9b7533ded9 upstream.
    
    security_inode_getsecurity() provides the text string value
    of a security attribute. It does not provide a "secctx".
    The code in xattr_getsecurity() that calls security_inode_getsecurity()
    and then calls security_release_secctx() happened to work because
    SElinux and Smack treat the attribute and the secctx the same way.
    It fails for cap_inode_getsecurity(), because that module has no
    secctx that ever needs releasing. It turns out that Smack is the
    one that's doing things wrong by not allocating memory when instructed
    to do so by the "alloc" parameter.
    
    The fix is simple enough. Change the security_release_secctx() to
    kfree() because it isn't a secctx being returned by
    security_inode_getsecurity(). Change Smack to allocate the string when
    told to do so.
    
    Note: this also fixes memory leaks for LSMs which implement
    inode_getsecurity but not release_secctx, such as capabilities.
    
    Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
    Reported-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: James Morris <james.l.morris@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efb397b8e61b3c01f17480eaf0b6d7c72489a281
Author: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Date:   Tue Oct 3 16:16:45 2017 -0700

    lib/ratelimit.c: use deferred printk() version
    
    commit 656d61ce9666209c4c4a13c71902d3ee70d1ff6f upstream.
    
    printk_ratelimit() invokes ___ratelimit() which may invoke a normal
    printk() (pr_warn() in this particular case) to warn about suppressed
    output.  Given that printk_ratelimit() may be called from anywhere, that
    pr_warn() is dangerous - it may end up deadlocking the system.  Fix
    ___ratelimit() by using deferred printk().
    
    Sasha reported the following lockdep error:
    
     : Unregister pv shared memory for cpu 8
     : select_fallback_rq: 3 callbacks suppressed
     : process 8583 (trinity-c78) no longer affine to cpu8
     :
     : ======================================================
     : WARNING: possible circular locking dependency detected
     : 4.14.0-rc2-next-20170927+ #252 Not tainted
     : ------------------------------------------------------
     : migration/8/62 is trying to acquire lock:
     : (&port_lock_key){-.-.}, at: serial8250_console_write()
     :
     : but task is already holding lock:
     : (&rq->lock){-.-.}, at: sched_cpu_dying()
     :
     : which lock already depends on the new lock.
     :
     :
     : the existing dependency chain (in reverse order) is:
     :
     : -> #3 (&rq->lock){-.-.}:
     : __lock_acquire()
     : lock_acquire()
     : _raw_spin_lock()
     : task_fork_fair()
     : sched_fork()
     : copy_process.part.31()
     : _do_fork()
     : kernel_thread()
     : rest_init()
     : start_kernel()
     : x86_64_start_reservations()
     : x86_64_start_kernel()
     : verify_cpu()
     :
     : -> #2 (&p->pi_lock){-.-.}:
     : __lock_acquire()
     : lock_acquire()
     : _raw_spin_lock_irqsave()
     : try_to_wake_up()
     : default_wake_function()
     : woken_wake_function()
     : __wake_up_common()
     : __wake_up_common_lock()
     : __wake_up()
     : tty_wakeup()
     : tty_port_default_wakeup()
     : tty_port_tty_wakeup()
     : uart_write_wakeup()
     : serial8250_tx_chars()
     : serial8250_handle_irq.part.25()
     : serial8250_default_handle_irq()
     : serial8250_interrupt()
     : __handle_irq_event_percpu()
     : handle_irq_event_percpu()
     : handle_irq_event()
     : handle_level_irq()
     : handle_irq()
     : do_IRQ()
     : ret_from_intr()
     : native_safe_halt()
     : default_idle()
     : arch_cpu_idle()
     : default_idle_call()
     : do_idle()
     : cpu_startup_entry()
     : rest_init()
     : start_kernel()
     : x86_64_start_reservations()
     : x86_64_start_kernel()
     : verify_cpu()
     :
     : -> #1 (&tty->write_wait){-.-.}:
     : __lock_acquire()
     : lock_acquire()
     : _raw_spin_lock_irqsave()
     : __wake_up_common_lock()
     : __wake_up()
     : tty_wakeup()
     : tty_port_default_wakeup()
     : tty_port_tty_wakeup()
     : uart_write_wakeup()
     : serial8250_tx_chars()
     : serial8250_handle_irq.part.25()
     : serial8250_default_handle_irq()
     : serial8250_interrupt()
     : __handle_irq_event_percpu()
     : handle_irq_event_percpu()
     : handle_irq_event()
     : handle_level_irq()
     : handle_irq()
     : do_IRQ()
     : ret_from_intr()
     : native_safe_halt()
     : default_idle()
     : arch_cpu_idle()
     : default_idle_call()
     : do_idle()
     : cpu_startup_entry()
     : rest_init()
     : start_kernel()
     : x86_64_start_reservations()
     : x86_64_start_kernel()
     : verify_cpu()
     :
     : -> #0 (&port_lock_key){-.-.}:
     : check_prev_add()
     : __lock_acquire()
     : lock_acquire()
     : _raw_spin_lock_irqsave()
     : serial8250_console_write()
     : univ8250_console_write()
     : console_unlock()
     : vprintk_emit()
     : vprintk_default()
     : vprintk_func()
     : printk()
     : ___ratelimit()
     : __printk_ratelimit()
     : select_fallback_rq()
     : sched_cpu_dying()
     : cpuhp_invoke_callback()
     : take_cpu_down()
     : multi_cpu_stop()
     : cpu_stopper_thread()
     : smpboot_thread_fn()
     : kthread()
     : ret_from_fork()
     :
     : other info that might help us debug this:
     :
     : Chain exists of:
     :   &port_lock_key --> &p->pi_lock --> &rq->lock
     :
     :  Possible unsafe locking scenario:
     :
     :        CPU0                    CPU1
     :        ----                    ----
     :   lock(&rq->lock);
     :                                lock(&p->pi_lock);
     :                                lock(&rq->lock);
     :   lock(&port_lock_key);
     :
     :  *** DEADLOCK ***
     :
     : 4 locks held by migration/8/62:
     : #0: (&p->pi_lock){-.-.}, at: sched_cpu_dying()
     : #1: (&rq->lock){-.-.}, at: sched_cpu_dying()
     : #2: (printk_ratelimit_state.lock){....}, at: ___ratelimit()
     : #3: (console_lock){+.+.}, at: vprintk_emit()
     :
     : stack backtrace:
     : CPU: 8 PID: 62 Comm: migration/8 Not tainted 4.14.0-rc2-next-20170927+ #252
     : Call Trace:
     : dump_stack()
     : print_circular_bug()
     : check_prev_add()
     : ? add_lock_to_list.isra.26()
     : ? check_usage()
     : ? kvm_clock_read()
     : ? kvm_sched_clock_read()
     : ? sched_clock()
     : ? check_preemption_disabled()
     : __lock_acquire()
     : ? __lock_acquire()
     : ? add_lock_to_list.isra.26()
     : ? debug_check_no_locks_freed()
     : ? memcpy()
     : lock_acquire()
     : ? serial8250_console_write()
     : _raw_spin_lock_irqsave()
     : ? serial8250_console_write()
     : serial8250_console_write()
     : ? serial8250_start_tx()
     : ? lock_acquire()
     : ? memcpy()
     : univ8250_console_write()
     : console_unlock()
     : ? __down_trylock_console_sem()
     : vprintk_emit()
     : vprintk_default()
     : vprintk_func()
     : printk()
     : ? show_regs_print_info()
     : ? lock_acquire()
     : ___ratelimit()
     : __printk_ratelimit()
     : select_fallback_rq()
     : sched_cpu_dying()
     : ? sched_cpu_starting()
     : ? rcutree_dying_cpu()
     : ? sched_cpu_starting()
     : cpuhp_invoke_callback()
     : ? cpu_disable_common()
     : take_cpu_down()
     : ? trace_hardirqs_off_caller()
     : ? cpuhp_invoke_callback()
     : multi_cpu_stop()
     : ? __this_cpu_preempt_check()
     : ? cpu_stop_queue_work()
     : cpu_stopper_thread()
     : ? cpu_stop_create()
     : smpboot_thread_fn()
     : ? sort_range()
     : ? schedule()
     : ? __kthread_parkme()
     : kthread()
     : ? sort_range()
     : ? kthread_create_on_node()
     : ret_from_fork()
     : process 9121 (trinity-c78) no longer affine to cpu8
     : smpboot: CPU 8 is now offline
    
    Link: http://lkml.kernel.org/r/20170928120405.18273-1-sergey.senozhatsky@gmail.com
    Fixes: 6b1d174b0c27b ("ratelimit: extend to print suppressed messages on release")
    Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Reported-by: Sasha Levin <levinsasha928@gmail.com>
    Reviewed-by: Petr Mladek <pmladek@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Steven Rostedt <rostedt@goodmis.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 8919b6a762bace82c4c7c04471561b1347c17a33
Author: Andrea Arcangeli <aarcange@redhat.com>
Date:   Tue Oct 3 16:15:38 2017 -0700

    userfaultfd: non-cooperative: fix fork use after free
    
    commit 384632e67e0829deb8015ee6ad916b180049d252 upstream.
    
    When reading the event from the uffd, we put it on a temporary
    fork_event list to detect if we can still access it after releasing and
    retaking the event_wqh.lock.
    
    If fork aborts and removes the event from the fork_event all is fine as
    long as we're still in the userfault read context and fork_event head is
    still alive.
    
    We've to put the event allocated in the fork kernel stack, back from
    fork_event list-head to the event_wqh head, before returning from
    userfaultfd_ctx_read, because the fork_event head lifetime is limited to
    the userfaultfd_ctx_read stack lifetime.
    
    Forgetting to move the event back to its event_wqh place then results in
    __remove_wait_queue(&ctx->event_wqh, &ewq->wq); in
    userfaultfd_event_wait_completion to remove it from a head that has been
    already freed from the reader stack.
    
    This could only happen if resolve_userfault_fork failed (for example if
    there are no file descriptors available to allocate the fork uffd).  If
    it succeeded it was put back correctly.
    
    Furthermore, after find_userfault_evt receives a fork event, the forked
    userfault context in fork_nctx and uwq->msg.arg.reserved.reserved1 can
    be released by the fork thread as soon as the event_wqh.lock is
    released.  Taking a reference on the fork_nctx before dropping the lock
    prevents an use after free in resolve_userfault_fork().
    
    If the fork side aborted and it already released everything, we still
    try to succeed resolve_userfault_fork(), if possible.
    
    Fixes: 893e26e61d04eac9 ("userfaultfd: non-cooperative: Add fork() event")
    Link: http://lkml.kernel.org/r/20170920180413.26713-1-aarcange@redhat.com
    Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
    Reported-by: Mark Rutland <mark.rutland@arm.com>
    Tested-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Pavel Emelyanov <xemul@virtuozzo.com>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2810c6fe36638331c4997258ea143869a961ed1
Author: Shaohua Li <shli@fb.com>
Date:   Tue Oct 3 16:15:32 2017 -0700

    mm: fix data corruption caused by lazyfree page
    
    commit 9625456cc76391b7f3f2809579126542a8ed4d39 upstream.
    
    MADV_FREE clears pte dirty bit and then marks the page lazyfree (clear
    SwapBacked).  There is no lock to prevent the page is added to swap
    cache between these two steps by page reclaim.  If page reclaim finds
    such page, it will simply add the page to swap cache without pageout the
    page to swap because the page is marked as clean.  Next time, page fault
    will read data from the swap slot which doesn't have the original data,
    so we have a data corruption.  To fix issue, we mark the page dirty and
    pageout the page.
    
    However, we shouldn't dirty all pages which is clean and in swap cache.
    swapin page is swap cache and clean too.  So we only dirty page which is
    added into swap cache in page reclaim, which shouldn't be swapin page.
    As Minchan suggested, simply dirty the page in add_to_swap can do the
    job.
    
    Fixes: 802a3a92ad7a ("mm: reclaim MADV_FREE pages")
    Link: http://lkml.kernel.org/r/08c84256b007bf3f63c91d94383bd9eb6fee2daa.1506446061.git.shli@fb.com
    Signed-off-by: Shaohua Li <shli@fb.com>
    Reported-by: Artem Savkov <asavkov@redhat.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Minchan Kim <minchan@kernel.org>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Rik van Riel <riel@redhat.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 ee8587db086c7b03d06cf674ae38afe25a335db6
Author: Shaohua Li <shli@fb.com>
Date:   Tue Oct 3 16:15:29 2017 -0700

    mm: avoid marking swap cached page as lazyfree
    
    commit 24c92eb7dce0a299b8e1a8c5fa585844a53bf7f0 upstream.
    
    MADV_FREE clears pte dirty bit and then marks the page lazyfree (clear
    SwapBacked).  There is no lock to prevent the page is added to swap
    cache between these two steps by page reclaim.  Page reclaim could add
    the page to swap cache and unmap the page.  After page reclaim, the page
    is added back to lru.  At that time, we probably start draining per-cpu
    pagevec and mark the page lazyfree.  So the page could be in a state
    with SwapBacked cleared and PG_swapcache set.  Next time there is a
    refault in the virtual address, do_swap_page can find the page from swap
    cache but the page has PageSwapCache false because SwapBacked isn't set,
    so do_swap_page will bail out and do nothing.  The task will keep
    running into fault handler.
    
    Fixes: 802a3a92ad7a ("mm: reclaim MADV_FREE pages")
    Link: http://lkml.kernel.org/r/6537ef3814398c0073630b03f176263bc81f0902.1506446061.git.shli@fb.com
    Signed-off-by: Shaohua Li <shli@fb.com>
    Reported-by: Artem Savkov <asavkov@redhat.com>
    Tested-by: Artem Savkov <asavkov@redhat.com>
    Reviewed-by: Rik van Riel <riel@redhat.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Minchan Kim <minchan@kernel.org>
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: Hugh Dickins <hughd@google.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 e549c12069b2f263d26d19642f097f9690db521e
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue Oct 3 16:15:16 2017 -0700

    mm: fix RODATA_TEST failure "rodata_test: test data was not read only"
    
    commit a872eb2131e91ce7c89a8888974a5e22a272b12f upstream.
    
    On powerpc, RODATA_TEST fails with message the following messages:
    
      Freeing unused kernel memory: 528K
      rodata_test: test data was not read only
    
    This is because GCC allocates it to .data section:
    
      c0695034 g     O .data        00000004 rodata_test_data
    
    Since commit 056b9d8a7692 ("mm: remove rodata_test_data export, add
    pr_fmt"), rodata_test_data is used only inside rodata_test.c By
    declaring it static, it gets properly allocated into .rodata section
    instead of .data:
    
      c04df710 l     O .rodata      00000004 rodata_test_data
    
    Fixes: 056b9d8a7692 ("mm: remove rodata_test_data export, add pr_fmt")
    Link: http://lkml.kernel.org/r/20170921093729.1080368AC1@po15668-vm-win7.idsi0.si.c-s.fr
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Jinbum Park <jinb.park7@gmail.com>
    Cc: Segher Boessenkool <segher@kernel.crashing.org>
    Cc: David Laight <David.Laight@ACULAB.COM>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99ea856753424f739964ed982c69c4107c7b293c
Author: Michal Hocko <mhocko@suse.com>
Date:   Tue Oct 3 16:14:50 2017 -0700

    mm, oom_reaper: skip mm structs with mmu notifiers
    
    commit 4d4bbd8526a8fbeb2c090ea360211fceff952383 upstream.
    
    Andrea has noticed that the oom_reaper doesn't invalidate the range via
    mmu notifiers (mmu_notifier_invalidate_range_start/end) and that can
    corrupt the memory of the kvm guest for example.
    
    tlb_flush_mmu_tlbonly already invokes mmu notifiers but that is not
    sufficient as per Andrea:
    
     "mmu_notifier_invalidate_range cannot be used in replacement of
      mmu_notifier_invalidate_range_start/end. For KVM
      mmu_notifier_invalidate_range is a noop and rightfully so. A MMU
      notifier implementation has to implement either ->invalidate_range
      method or the invalidate_range_start/end methods, not both. And if you
      implement invalidate_range_start/end like KVM is forced to do, calling
      mmu_notifier_invalidate_range in common code is a noop for KVM.
    
      For those MMU notifiers that can get away only implementing
      ->invalidate_range, the ->invalidate_range is implicitly called by
      mmu_notifier_invalidate_range_end(). And only those secondary MMUs
      that share the same pagetable with the primary MMU (like AMD iommuv2)
      can get away only implementing ->invalidate_range"
    
    As the callback is allowed to sleep and the implementation is out of
    hand of the MM it is safer to simply bail out if there is an mmu
    notifier registered.  In order to not fail too early make the
    mm_has_notifiers check under the oom_lock and have a little nap before
    failing to give the current oom victim some more time to exit.
    
    [akpm@linux-foundation.org: coding-style fixes]
    Link: http://lkml.kernel.org/r/20170913113427.2291-1-mhocko@kernel.org
    Fixes: aac453635549 ("mm, oom: introduce oom reaper")
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reported-by: Andrea Arcangeli <aarcange@redhat.com>
    Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 67109577bb95105cebc55b6323ec016f6f5d0e34
Author: Alexandru Moise <00moses.alexander00@gmail.com>
Date:   Tue Oct 3 16:14:31 2017 -0700

    mm, hugetlb, soft_offline: save compound page order before page migration
    
    commit 19bfbe22f59a207417b2679e7e83c180419c9ec5 upstream.
    
    This fixes a bug in madvise() where if you'd try to soft offline a
    hugepage via madvise(), while walking the address range you'd end up,
    using the wrong page offset due to attempting to get the compound order
    of a former but presently not compound page, due to dissolving the huge
    page (since commit c3114a84f7f9: "mm: hugetlb: soft-offline: dissolve
    source hugepage after successful migration").
    
    As a result I ended up with all my free pages except one being offlined.
    
    Link: http://lkml.kernel.org/r/20170912204306.GA12053@gmail.com
    Fixes: c3114a84f7f9 ("mm: hugetlb: soft-offline: dissolve source hugepage after successful migration")
    Signed-off-by: Alexandru Moise <00moses.alexander00@gmail.com>
    Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: Shaohua Li <shli@fb.com>
    Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d288d663393f17d9b0c1c1e82274be594bbaa187
Author: Kirill Tkhai <ktkhai@virtuozzo.com>
Date:   Tue Oct 3 16:14:27 2017 -0700

    ksm: fix unlocked iteration over vmas in cmp_and_merge_page()
    
    commit 4b22927f0cbd58303aac689e378d20bf56267a39 upstream.
    
    In this place mm is unlocked, so vmas or list may change.  Down read
    mmap_sem to protect them from modifications.
    
    Link: http://lkml.kernel.org/r/150512788393.10691.8868381099691121308.stgit@localhost.localdomain
    Fixes: e86c59b1b12d ("mm/ksm: improve deduplication of zero pages with colouring")
    Signed-off-by: Kirill Tkhai <ktkhai@virtuozzo.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Reviewed-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: zhong jiang <zhongjiang@huawei.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a6c9a3c6e218e9860eb7a972c2e73f45ce8d482
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Sun Sep 3 19:06:31 2017 +0200

    staging: vchiq_2835_arm: Fix NULL ptr dereference in free_pagelist
    
    commit 974d4d03fc020af4fa4e9e72a86f0fefa37803c5 upstream.
    
    This fixes a NULL pointer dereference on RPi 2 with multi_v7_defconfig.
    The function page_address() could return NULL with enabled CONFIG_HIGHMEM.
    So fix this by using kmap() instead.
    
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Fixes: 71bad7f08641 ("staging: add bcm2708 vchiq driver")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ddd9d1ac6a723dacabcff3afa5156a3bbc843aa9
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Thu Sep 14 16:52:59 2017 +0200

    uwb: ensure that endpoint is interrupt
    
    commit 70e743e4cec3733dc13559f6184b35d358b9ef3f upstream.
    
    hwarc_neep_init() assumes that endpoint 0 is interrupt, but there's no
    check for that, which results in a WARNING in USB core code, when a bad
    USB descriptor is provided from a device:
    
    usb 1-1: BOGUS urb xfer, pipe 1 != type 3
    ------------[ cut here ]------------
    WARNING: CPU: 0 PID: 3 at drivers/usb/core/urb.c:449 usb_submit_urb+0xf8a/0x11d0
    Modules linked in:
    CPU: 0 PID: 3 Comm: kworker/0:0 Not tainted 4.13.0+ #111
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Workqueue: usb_hub_wq hub_event
    task: ffff88006bdc1a00 task.stack: ffff88006bde8000
    RIP: 0010:usb_submit_urb+0xf8a/0x11d0 drivers/usb/core/urb.c:448
    RSP: 0018:ffff88006bdee3c0 EFLAGS: 00010282
    RAX: 0000000000000029 RBX: ffff8800672a7200 RCX: 0000000000000000
    RDX: 0000000000000029 RSI: ffff88006c815c78 RDI: ffffed000d7bdc6a
    RBP: ffff88006bdee4c0 R08: fffffbfff0fe00ff R09: fffffbfff0fe00ff
    R10: 0000000000000018 R11: fffffbfff0fe00fe R12: 1ffff1000d7bdc7f
    R13: 0000000000000003 R14: 0000000000000001 R15: ffff88006b02cc90
    FS:  0000000000000000(0000) GS:ffff88006c800000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fe4daddf000 CR3: 000000006add6000 CR4: 00000000000006f0
    Call Trace:
     hwarc_neep_init+0x4ce/0x9c0 drivers/uwb/hwa-rc.c:710
     uwb_rc_add+0x2fb/0x730 drivers/uwb/lc-rc.c:361
     hwarc_probe+0x34e/0x9b0 drivers/uwb/hwa-rc.c:858
     usb_probe_interface+0x351/0x8d0 drivers/usb/core/driver.c:361
     really_probe drivers/base/dd.c:385
     driver_probe_device+0x610/0xa00 drivers/base/dd.c:529
     __device_attach_driver+0x230/0x290 drivers/base/dd.c:625
     bus_for_each_drv+0x15e/0x210 drivers/base/bus.c:463
     __device_attach+0x269/0x3c0 drivers/base/dd.c:682
     device_initial_probe+0x1f/0x30 drivers/base/dd.c:729
     bus_probe_device+0x1da/0x280 drivers/base/bus.c:523
     device_add+0xcf9/0x1640 drivers/base/core.c:1703
     usb_set_configuration+0x1064/0x1890 drivers/usb/core/message.c:1932
     generic_probe+0x73/0xe0 drivers/usb/core/generic.c:174
     usb_probe_device+0xaf/0xe0 drivers/usb/core/driver.c:266
     really_probe drivers/base/dd.c:385
     driver_probe_device+0x610/0xa00 drivers/base/dd.c:529
     __device_attach_driver+0x230/0x290 drivers/base/dd.c:625
     bus_for_each_drv+0x15e/0x210 drivers/base/bus.c:463
     __device_attach+0x269/0x3c0 drivers/base/dd.c:682
     device_initial_probe+0x1f/0x30 drivers/base/dd.c:729
     bus_probe_device+0x1da/0x280 drivers/base/bus.c:523
     device_add+0xcf9/0x1640 drivers/base/core.c:1703
     usb_new_device+0x7b8/0x1020 drivers/usb/core/hub.c:2457
     hub_port_connect drivers/usb/core/hub.c:4890
     hub_port_connect_change drivers/usb/core/hub.c:4996
     port_event drivers/usb/core/hub.c:5102
     hub_event+0x23c8/0x37c0 drivers/usb/core/hub.c:5182
     process_one_work+0x9fb/0x1570 kernel/workqueue.c:2097
     worker_thread+0x1e4/0x1350 kernel/workqueue.c:2231
     kthread+0x324/0x3f0 kernel/kthread.c:231
     ret_from_fork+0x25/0x30 arch/x86/entry/entry_64.S:425
    Code: 48 8b 85 30 ff ff ff 48 8d b8 98 00 00 00 e8 8e 93 07 ff 45 89
    e8 44 89 f1 4c 89 fa 48 89 c6 48 c7 c7 a0 e5 55 86 e8 20 08 8f fd <0f>
    ff e9 9b f7 ff ff e8 4a 04 d6 fd e9 80 f7 ff ff e8 60 11 a6
    ---[ end trace 55d741234124cfc3 ]---
    
    Check that endpoint is interrupt.
    
    Found by syzkaller.
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fd9ba4251e3ce1f6f69c60e4c13539b745a0f8a
Author: Andrey Konovalov <andreyknvl@google.com>
Date:   Thu Sep 14 14:30:55 2017 +0200

    uwb: properly check kthread_run return value
    
    commit bbf26183b7a6236ba602f4d6a2f7cade35bba043 upstream.
    
    uwbd_start() calls kthread_run() and checks that the return value is
    not NULL. But the return value is not NULL in case kthread_run() fails,
    it takes the form of ERR_PTR(-EINTR).
    
    Use IS_ERR() instead.
    
    Also add a check to uwbd_stop().
    
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c1a48628ca064938425b063314778a4ffa467b03
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Aug 22 15:33:00 2017 +0200

    iio: adc: mcp320x: Fix oops on module unload
    
    commit 0964e40947a630a2a6f724e968246992f97bcf1c upstream.
    
    The driver calls spi_get_drvdata() in its ->remove hook even though it
    has never called spi_set_drvdata().  Stack trace for posterity:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000220
    Internal error: Oops: 5 [#1] SMP ARM
    [<8072f564>] (mutex_lock) from [<7f1400d0>] (iio_device_unregister+0x24/0x7c [industrialio])
    [<7f1400d0>] (iio_device_unregister [industrialio]) from [<7f15e020>] (mcp320x_remove+0x20/0x30 [mcp320x])
    [<7f15e020>] (mcp320x_remove [mcp320x]) from [<8055a8cc>] (spi_drv_remove+0x2c/0x44)
    [<8055a8cc>] (spi_drv_remove) from [<805087bc>] (__device_release_driver+0x98/0x134)
    [<805087bc>] (__device_release_driver) from [<80509180>] (driver_detach+0xdc/0xe0)
    [<80509180>] (driver_detach) from [<8050823c>] (bus_remove_driver+0x5c/0xb0)
    [<8050823c>] (bus_remove_driver) from [<80509ab0>] (driver_unregister+0x38/0x58)
    [<80509ab0>] (driver_unregister) from [<7f15e69c>] (mcp320x_driver_exit+0x14/0x1c [mcp320x])
    [<7f15e69c>] (mcp320x_driver_exit [mcp320x]) from [<801a78d0>] (SyS_delete_module+0x184/0x1d0)
    [<801a78d0>] (SyS_delete_module) from [<80108100>] (ret_fast_syscall+0x0/0x1c)
    
    Fixes: f5ce4a7a9291 ("iio: adc: add driver for MCP3204/08 12-bit ADC")
    Cc: Oskar Andero <oskar.andero@gmail.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d91dc0183e1427ff8cd50747dcdfb1e4c37bc402
Author: Lukas Wunner <lukas@wunner.de>
Date:   Tue Aug 22 15:33:00 2017 +0200

    iio: adc: mcp320x: Fix readout of negative voltages
    
    commit e6f4794371ee7cce1339e7ca9542f1e703c5f84a upstream.
    
    Commit f686a36b4b79 ("iio: adc: mcp320x: Add support for mcp3301")
    returns a signed voltage from mcp320x_adc_conversion() but neglects that
    the caller interprets a negative return value as failure.  Only mcp3301
    (and the upcoming mcp3550/1/3) is affected as the other chips are
    incapable of measuring negative voltages.
    
    Fix and while at it, add mcp3301 to the list of supported chips at the
    top of the file.
    
    Fixes: f686a36b4b79 ("iio: adc: mcp320x: Add support for mcp3301")
    Cc: Andrea Galbusera <gizero@gmail.com>
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff24f487dd3ae03324d0c802161824e6a5554ac7
Author: Fabrice Gasnier <fabrice.gasnier@st.com>
Date:   Mon Sep 18 18:24:15 2017 +0200

    iio: adc: stm32: fix bad error check on max_channels
    
    commit 4fb840c95f82652cece7352be9080884cafb92a0 upstream.
    
    Fix a bad error check when counting 'st,adc-channels' array elements.
    This is seen when all channels are in use simultaneously.
    
    Fixes: 64ad7f643 ("iio: adc: stm32: introduce compatible data cfg")
    Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df1ff9f352edc10e29ce8fbea49fa7fa05f247ca
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Sep 5 15:16:13 2017 +0300

    iio: ad7793: Fix the serial interface reset
    
    commit 7ee3b7ebcb74714df6d94c8f500f307e1ee5dda5 upstream.
    
    The serial interface can be reset by writing 32 consecutive 1s to the device.
    'ret' was initialized correctly but its value was overwritten when
    ad7793_check_platform_data() was called. Since a dedicated reset function
    is present now, it should be used instead.
    
    Fixes: 2edb769d246e ("iio:ad7793: Add support for the ad7798 and ad7799")
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2fbaf4bc9da3af4e15a68cb0b35a1d95667bdb4d
Author: Fabrice Gasnier <fabrice.gasnier@st.com>
Date:   Mon Sep 18 12:05:31 2017 +0200

    iio: trigger: stm32-timer: fix a corner case to write preset
    
    commit b7a9776c1f9443326632486fcbd82dca82f8511e upstream.
    
    Balance timer start routine that sets ARPE: clear it in stop routine.
    This fixes a corner case, when timer is used successively as trigger
    (with sampling_frequency start/stop routines), then as a counter
    (with preset).
    
    Fixes: 93fbe91b5521 ("iio: Add STM32 timer trigger driver")
    Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5340b04493ab495b8a854d041887300cf6525fe5
Author: Fabrice Gasnier <fabrice.gasnier@st.com>
Date:   Mon Sep 18 12:05:30 2017 +0200

    iio: trigger: stm32-timer: preset shouldn't be buffered
    
    commit 0a56eabc4e3f730782e4a9f3af4f60aa03a8a849 upstream.
    
    Currently, setting preset value (ARR) will update directly 'Auto reload
    value' only on 1st write access. But then, ARPE is set. This makes
    ARR a shadow register. Preset value should be updated upon each
    write request: ensure ARPE is 0. This fixes successive writes to
    preset attribute.
    
    Fixes: 4adec7da0536 ("iio: stm32 trigger: Add quadrature encoder device")
    Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd16f9a41367ae8cd17922c390082c82e30b8ab4
Author: Colin Parker <colin.parker@aclima.io>
Date:   Mon Aug 28 16:21:39 2017 -0700

    IIO: BME280: Updates to Humidity readings need ctrl_reg write!
    
    commit 4b1f0c31f96c45e8521dd84aae50f2aa4aecfb7b upstream.
    
    The ctrl_reg register needs to be written after any write to
    the humidity registers. The value written to the ctrl_reg register
    does not necessarily need to change, but a write operation must
    occur.
    
    The regmap_update_bits functions will not write to a register
    if the register value matches the value to be written. This saves
    unnecessary bus operations.  The change in this patch forces a bus
    write during the chip_config operation by switching to
    regmap_write_bits.
    
    This will fix issues where the Humidity Sensor Oversampling bits
    are not updated after initialization.
    
    Signed-off-by: Colin Parker <colin.parker@aclima.io>
    Acked-by: Andreas Klinger <ak@it-klinger.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af8f40ca1027607ad238e1094c3de8a626be178f
Author: Matt Fornero <matt.fornero@mathworks.com>
Date:   Tue Sep 5 16:34:10 2017 +0200

    iio: core: Return error for failed read_reg
    
    commit 3d62c78a6eb9a7d67bace9622b66ad51e81c5f9b upstream.
    
    If an IIO device returns an error code for a read access via debugfs, it
    is currently ignored by the IIO core (other than emitting an error
    message). Instead, return this error code to user space, so upper layers
    can detect it correctly.
    
    Signed-off-by: Matt Fornero <matt.fornero@mathworks.com>
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b898d67f5f5dc84d07d214840b2bc2e256347a2d
Author: Stefan Popa <stefan.popa@analog.com>
Date:   Thu Sep 14 16:50:28 2017 +0300

    staging: iio: ad7192: Fix - use the dedicated reset function avoiding dma from stack.
    
    commit f790923f146140a261ad211e5baf75d169f16fb2 upstream.
    
    Depends on: 691c4b95d1 ("iio: ad_sigma_delta: Implement a dedicated reset function")
    
    SPI host drivers can use DMA to transfer data, so the buffer should be properly allocated.
    Keeping it on the stack could cause an undefined behavior.
    
    The dedicated reset function solves this issue.
    
    Signed-off-by: Stefan Popa <stefan.popa@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Michael Hennerich <michael.hennerich@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f095f85f204c2d4348efd52ab4dd9eee8d6c5caa
Author: Dragos Bogdan <dragos.bogdan@analog.com>
Date:   Tue Sep 5 15:14:45 2017 +0300

    iio: ad_sigma_delta: Implement a dedicated reset function
    
    commit 7fc10de8d49a748c476532c9d8e8fe19e548dd67 upstream.
    
    Since most of the SD ADCs have the option of reseting the serial
    interface by sending a number of SCLKs with CS = 0 and DIN = 1,
    a dedicated function that can do this is usefull.
    
    Needed for the patch:  iio: ad7793: Fix the serial interface reset
    Signed-off-by: Dragos Bogdan <dragos.bogdan@analog.com>
    Acked-by: Lars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53f11858c9bf439206bb27b4afbbb617d5e70c93
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Sep 23 08:06:19 2017 +0200

    iio: adc: twl4030: Disable the vusb3v1 rugulator in the error handling path of 'twl4030_madc_probe()'
    
    commit 7f70be6e4025db0551e6863e7eb9cca07122695c upstream.
    
    Commit 7cc97d77ee8a has introduced a call to 'regulator_disable()' in the
    .remove function.
    So we should also have such a call in the .probe function in case of
    error after a successful 'regulator_enable()' call.
    
    Add a new label for that and use it.
    
    Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c912c51c4f1ad54c3633aea7af00c4bdf70ac5d
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Sat Sep 23 08:06:18 2017 +0200

    iio: adc: twl4030: Fix an error handling path in 'twl4030_madc_probe()'
    
    commit 245a396a9b1a67ac5c3228737c261b3e48708a2a upstream.
    
    If 'devm_regulator_get()' fails, we should go through the existing error
    handling path instead of returning directly, as done is all the other
    error handling paths in this function.
    
    Fixes: 7cc97d77ee8a ("iio: adc: twl4030: Fix ADC[3:6] readings")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36e695f8a0e593c0da0069049d842dd47d60863b
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Mon Sep 18 17:39:19 2017 +0300

    Revert "xhci: Limit USB2 port wake support for AMD Promontory hosts"
    
    commit bcd6a7aa13800afc1418e6b29d944d882214939a upstream.
    
    This reverts commit dec08194ffeccfa1cf085906b53d301930eae18f.
    
    Commit dec08194ffec ("xhci: Limit USB2 port wake support for AMD Promontory
    hosts") makes all high speed USB ports on ASUS PRIME B350M-A cease to
    function after enabling runtime PM.
    
    All boards with this chipsets will be affected, so revert the commit.
    
    The original patch was added to stable 4.9, 4.11 and 4.12 and needs
    to reverted from there as well
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c752d12dde7c598f917d074a2ab4e3ead160e57c
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 18 17:39:18 2017 +0300

    xhci: set missing SuperSpeedPlus Link Protocol bit in roothub descriptor
    
    commit 7bea22b124d77845c85a62eaa29a85ba6cc2f899 upstream.
    
    A SuperSpeedPlus roothub needs to have the Link Protocol (LP) bit set in
    the bmSublinkSpeedAttr[] entry of a SuperSpeedPlus descriptor.
    
    If the xhci controller has an optional Protocol Speed ID (PSI) table then
    that will be used as a base to create the roothub SuperSpeedPlus
    descriptor.
    The PSI table does not however necessary contain the LP bit so we need
    to set it manually.
    
    Check the psi speed and set LP bit if speed is 10Gbps or higher.
    We're not setting it for 5 to 10Gbps as USB 3.1 specification always
    mention SuperSpeedPlus for 10Gbps or higher, and some SSIC USB 3.0 speeds
    can be over 5Gbps, such as SSIC-G3B-L1 at 5830 Mbps
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82352ede0952fb789b61d200e26ab9970ef20747
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 18 17:39:17 2017 +0300

    xhci: Fix sleeping with spin_lock_irq() held in ASmedia 1042A workaround
    
    commit 4ec1cd3eeeee7ccc35681270da028dbc29ca7bbd upstream.
    
    The flow control workaround for ASM1042A xHC hosts sleeps between
    register polling. The workaround gets called in several places, among
    them with spin_lock_irq() held when xHC host is resumed or hoplug removed.
    
    This was noticed as kernel panics at resume on a Dell XPS15 9550 with
    TB16 thunderbolt dock.
    
    Avoid sleeping with spin_lock_irq() held, use udelay() instead
    
    The original workaround was added to 4.9 and 4.12 stable releases,
    this patch needs to be applied to those as well.
    
    Fixes: 9da5a1092b13 ("xhci: Bad Ethernet performance plugged in ASM1042A host")
    Reported-by: Jose Marino <marinoj@nso.edu>
    Tested-by: Jose Marino <marinoj@nso.edu>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fd00ed9e6b5e66982db60d7f3643caa8bfaf7e7
Author: Adam Wallis <awallis@codeaurora.org>
Date:   Mon Sep 18 17:39:16 2017 +0300

    usb: host: xhci-plat: allow sysdev to inherit from ACPI
    
    commit c6b8e79306f515b5483eb11076e0fbfc140434a8 upstream.
    
    Commit 4c39d4b949d3 ("usb: xhci: use bus->sysdev for DMA configuration")
    updated the method determining DMA for XHCI from sysdev. However, this
    patch broke the ability to enumerate the FWNODE from parent ACPI devices
    from the child plat XHCI device.
    
    Currently, xhci_plat is not set up properly when the parent device is an
    ACPI node. The conditions that xhci_plat_probe should satisfy are
    
    1. xhci_plat comes from firmware
    2. xhci_plat is child of a device from firmware (dwc3-plat)
    3. xhci_plat is grandchild of a pci device (dwc3-pci)
    
    Case 2 is covered when the child is an OF node (by checking
    sysdev->parent->of_node), however, an ACPI parent will return NULL in
    the of_node check and will thus not result in sysdev being set to
    sysdev->parent
    
    [   17.591549] xhci-hcd: probe of xhci-hcd.6.auto failed with error -5
    
    This change adds a check for ACPI to completely allow for condition 2.
    This is done by first checking if the parent node is of type ACPI (e.g.,
    dwc3-plat) and set sysdev to sysdev->parent if either of the two
    following conditions are met:
    
    1: If fwnode is empty (in the case that platform_device_add_properties
    was not called on the allocated platform device)
    2: fwnode exists but is not of type ACPI (this would happen if
    platform_device_add_properties was called on the allocated device.
    Instead of type FWNODE_ACPI, you would end up with FWNODE_PDATA)
    
    Fixes: 4c39d4b949d3 ("usb: xhci: use bus->sysdev for DMA configuration")
    Tested-by: Thang Q. Nguyen <tqnguyen@apm.com>
    Signed-off-by: Adam Wallis <awallis@codeaurora.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5239ada17e16c91725ddc99ae9ae4a28de9e046c
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 18 17:39:15 2017 +0300

    xhci: fix wrong endpoint ESIT value shown in tracing
    
    commit 76a14d7bf92960aac2f5450bfd23783bfa618be9 upstream.
    
    Read the endpiont ESIT from endpiont context using correct macro.
    Add a macro for reading the high bits of ESIT for Large ESIT Payload
    Capable hosts (LEC=1)
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 569c2804d048d0e4bfc38ce6b739db36fd805cf4
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Mon Sep 18 17:39:13 2017 +0300

    xhci: fix finding correct bus_state structure for USB 3.1 hosts
    
    commit 5a838a13c9b4e5dd188b7a6eaeb894e9358ead0c upstream.
    
    xhci driver keeps a bus_state structure for each hcd (usb2 and usb3)
    
    The structure is picked based on hcd speed, but driver only compared
    for HCD_USB3 speed, returning the wrong bus_state for HCD_USB31 hosts.
    
    This caused null pointer dereference errors in bus_resume function.
    
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7282898c6eeff27b9298bc36ff10fd9ca2a931ea
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Mon Sep 18 17:39:12 2017 +0300

    usb: xhci: Free the right ring in xhci_add_endpoint()
    
    commit 9821786d7c90eee2f6852261893d9703801aae47 upstream.
    
    In the xhci_add_endpoint(), a new ring was allocated and saved at
    xhci_virt_ep->new_ring. Hence, when error happens, we need to free
    the allocated ring before returning error.
    
    Current code frees xhci_virt_ep->ring instead of the new_ring. This
    patch fixes this.
    
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31991559f483b33eb30b7fdb1219b3f78b616a27
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Sep 19 15:07:17 2017 +0200

    USB: fix out-of-bounds in usb_set_configuration
    
    commit bd7a3fe770ebd8391d1c7d072ff88e9e76d063eb upstream.
    
    Andrey Konovalov reported a possible out-of-bounds problem for a USB interface
    association descriptor.  He writes:
            It seems there's no proper size check of a USB_DT_INTERFACE_ASSOCIATION
            descriptor. It's only checked that the size is >= 2 in
            usb_parse_configuration(), so find_iad() might do out-of-bounds access
            to intf_assoc->bInterfaceCount.
    
    And he's right, we don't check for crazy descriptors of this type very well, so
    resolve this problem.  Yet another issue found by syzkaller...
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d71ffc955fc034e90a0277a5101bffa0d1dfd2cd
Author: Dmitry Fleytman <dmitry@daynix.com>
Date:   Tue Sep 5 11:40:56 2017 +0300

    usb: Increase quirk delay for USB devices
    
    commit b2a542bbb3081dbd64acc8929c140d196664c406 upstream.
    
    Commit e0429362ab15
    ("usb: Add device quirk for Logitech HD Pro Webcams C920 and C930e")
    introduced quirk to workaround an issue with some Logitech webcams.
    
    The workaround is introducing delay for some USB operations.
    
    According to our testing, delay introduced by original commit
    is not long enough and in rare cases we still see issues described
    by the aforementioned commit.
    
    This patch increases delays introduced by original commit.
    Having this patch applied we do not see those problems anymore.
    
    Signed-off-by: Dmitry Fleytman <dmitry@daynix.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7dddbeaf504434f37e041479af997b14b0f9ea0d
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Sep 21 16:58:48 2017 +0200

    USB: core: harden cdc_parse_cdc_header
    
    commit 2e1c42391ff2556387b3cb6308b24f6f65619feb upstream.
    
    Andrey Konovalov reported a possible out-of-bounds problem for the
    cdc_parse_cdc_header function.  He writes:
            It looks like cdc_parse_cdc_header() doesn't validate buflen
            before accessing buffer[1], buffer[2] and so on. The only check
            present is while (buflen > 0).
    
    So fix this issue up by properly validating the buffer length matches
    what the descriptor says it is.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 468f2bf8e0d546479a935e67b4091cdb3c4a11e8
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Sep 22 11:56:49 2017 -0400

    USB: uas: fix bug in handling of alternate settings
    
    commit 786de92b3cb26012d3d0f00ee37adf14527f35c4 upstream.
    
    The uas driver has a subtle bug in the way it handles alternate
    settings.  The uas_find_uas_alt_setting() routine returns an
    altsetting value (the bAlternateSetting number in the descriptor), but
    uas_use_uas_driver() then treats that value as an index to the
    intf->altsetting array, which it isn't.
    
    Normally this doesn't cause any problems because the various
    alternate settings have bAlternateSetting values 0, 1, 2, ..., so the
    value is equal to the index in the array.  But this is not guaranteed,
    and Andrey Konovalov used the syzkaller fuzzer with KASAN to get a
    slab-out-of-bounds error by violating this assumption.
    
    This patch fixes the bug by making uas_find_uas_alt_setting() return a
    pointer to the altsetting entry rather than either the value or the
    index.  Pointers are less subject to misinterpretation.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    CC: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f47ee01eec1f520e571fc7be28c362a2242034f
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 13:22:00 2017 -0400

    USB: g_mass_storage: Fix deadlock when driver is unbound
    
    commit 1fbbb78f25d1291274f320462bf6908906f538db upstream.
    
    As a holdover from the old g_file_storage gadget, the g_mass_storage
    legacy gadget driver attempts to unregister itself when its main
    operating thread terminates (if it hasn't been unregistered already).
    This is not strictly necessary; it was never more than an attempt to
    have the gadget fail cleanly if something went wrong and the main
    thread was killed.
    
    However, now that the UDC core manages gadget drivers independently of
    UDC drivers, this scheme doesn't work any more.  A simple test:
    
            modprobe dummy-hcd
            modprobe g-mass-storage file=...
            rmmod dummy-hcd
    
    ends up in a deadlock with the following backtrace:
    
     sysrq: SysRq : Show Blocked State
       task                PC stack   pid father
     file-storage    D    0  1130      2 0x00000000
     Call Trace:
      __schedule+0x53e/0x58c
      schedule+0x6e/0x77
      schedule_preempt_disabled+0xd/0xf
      __mutex_lock.isra.1+0x129/0x224
      ? _raw_spin_unlock_irqrestore+0x12/0x14
      __mutex_lock_slowpath+0x12/0x14
      mutex_lock+0x28/0x2b
      usb_gadget_unregister_driver+0x29/0x9b [udc_core]
      usb_composite_unregister+0x10/0x12 [libcomposite]
      msg_cleanup+0x1d/0x20 [g_mass_storage]
      msg_thread_exits+0xd/0xdd7 [g_mass_storage]
      fsg_main_thread+0x1395/0x13d6 [usb_f_mass_storage]
      ? __schedule+0x573/0x58c
      kthread+0xd9/0xdb
      ? do_set_interface+0x25c/0x25c [usb_f_mass_storage]
      ? init_completion+0x1e/0x1e
      ret_from_fork+0x19/0x24
     rmmod           D    0  1155    683 0x00000000
     Call Trace:
      __schedule+0x53e/0x58c
      schedule+0x6e/0x77
      schedule_timeout+0x26/0xbc
      ? __schedule+0x573/0x58c
      do_wait_for_common+0xb3/0x128
      ? usleep_range+0x81/0x81
      ? wake_up_q+0x3f/0x3f
      wait_for_common+0x2e/0x45
      wait_for_completion+0x17/0x19
      fsg_common_put+0x34/0x81 [usb_f_mass_storage]
      fsg_free_inst+0x13/0x1e [usb_f_mass_storage]
      usb_put_function_instance+0x1a/0x25 [libcomposite]
      msg_unbind+0x2a/0x42 [g_mass_storage]
      __composite_unbind+0x4a/0x6f [libcomposite]
      composite_unbind+0x12/0x14 [libcomposite]
      usb_gadget_remove_driver+0x4f/0x77 [udc_core]
      usb_del_gadget_udc+0x52/0xcc [udc_core]
      dummy_udc_remove+0x27/0x2c [dummy_hcd]
      platform_drv_remove+0x1d/0x31
      device_release_driver_internal+0xe9/0x16d
      device_release_driver+0x11/0x13
      bus_remove_device+0xd2/0xe2
      device_del+0x19f/0x221
      ? selinux_capable+0x22/0x27
      platform_device_del+0x21/0x63
      platform_device_unregister+0x10/0x1a
      cleanup+0x20/0x817 [dummy_hcd]
      SyS_delete_module+0x10c/0x197
      ? ____fput+0xd/0xf
      ? task_work_run+0x55/0x62
      ? prepare_exit_to_usermode+0x65/0x75
      do_fast_syscall_32+0x86/0xc3
      entry_SYSENTER_32+0x4e/0x7c
    
    What happens is that removing the dummy-hcd driver causes the UDC core
    to unbind the gadget driver, which it does while holding the udc_lock
    mutex.  The unbind routine in g_mass_storage tells the main thread to
    exit and waits for it to terminate.
    
    But as mentioned above, when the main thread exits it tries to
    unregister the mass-storage function driver.  Via the composite
    framework this ends up calling usb_gadget_unregister_driver(), which
    tries to acquire the udc_lock mutex.  The result is deadlock.
    
    The simplest way to fix the problem is not to be so clever: The main
    thread doesn't have to unregister the function driver.  The side
    effects won't be so terrible; if the gadget is still attached to a USB
    host when the main thread is killed, it will appear to the host as
    though the gadget's firmware has crashed -- a reasonably accurate
    interpretation, and an all-too-common occurrence for USB mass-storage
    devices.
    
    In fact, the code to unregister the driver when the main thread exits
    is specific to g-mass-storage; it is not used when f-mass-storage is
    included as a function in a larger composite device.  Therefore the
    entire mechanism responsible for this (the fsg_operations structure
    with its ->thread_exits method, the fsg_common_set_ops() routine, and
    the msg_thread_exits() callback routine) can all be eliminated.  Even
    the msg_registered bitflag can be removed, because now the driver is
    unregistered in only one place rather than in two places.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Acked-by: Michal Nazarewicz <mina86@mina86.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d328df9085b05f4f3ccdbe2ca1f980d72844641f
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Sep 22 23:43:46 2017 +0300

    USB: devio: Don't corrupt user memory
    
    commit fa1ed74eb1c233be6131ec92df21ab46499a15b6 upstream.
    
    The user buffer has "uurb->buffer_length" bytes.  If the kernel has more
    information than that, we should truncate it instead of writing past
    the end of the user's buffer.  I added a WARN_ONCE() to help the user
    debug the issue.
    
    Reported-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1c918512a86de78b4f6c70ee6b7824eae5a3ee2d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Sep 22 23:43:25 2017 +0300

    USB: devio: Prevent integer overflow in proc_do_submiturb()
    
    commit 57999d1107c1e60c2ca7088f2ac0f819e2f554b3 upstream.
    
    There used to be an integer overflow check in proc_do_submiturb() but
    we removed it.  It turns out that it's still required.  The
    uurb->buffer_length variable is a signed integer and it's controlled by
    the user.  It can lead to an integer overflow when we do:
    
            num_sgs = DIV_ROUND_UP(uurb->buffer_length, USB_SG_SIZE);
    
    If we strip away the macro then that line looks like this:
    
            num_sgs = (uurb->buffer_length + USB_SG_SIZE - 1) / USB_SG_SIZE;
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    It's the first addition which can overflow.
    
    Fixes: 1129d270cbfb ("USB: Increase usbfs transfer limit")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f8ae1fcb0dfbb72a7678f81bf01fb7fc85c6715
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:49 2017 -0400

    USB: dummy-hcd: Fix erroneous synchronization change
    
    commit 7dbd8f4cabd96db5a50513de9d83a8105a5ffc81 upstream.
    
    A recent change to the synchronization in dummy-hcd was incorrect.
    The issue was that dummy_udc_stop() contained no locking and therefore
    could race with various gadget driver callbacks, and the fix was to
    add locking and issue the callbacks with the private spinlock held.
    
    UDC drivers aren't supposed to do this.  Gadget driver callback
    routines are allowed to invoke functions in the UDC driver, and these
    functions will generally try to acquire the private spinlock.  This
    would deadlock the driver.
    
    The correct solution is to drop the spinlock before issuing callbacks,
    and avoid races by emulating the synchronize_irq() call that all real
    UDC drivers must perform in their ->udc_stop() routines after
    disabling interrupts.  This involves adding a flag to dummy-hcd's
    private structure to keep track of whether interrupts are supposed to
    be enabled, and adding a counter to keep track of ongoing callbacks so
    that dummy_udc_stop() can wait for them all to finish.
    
    A real UDC driver won't receive disconnect, reset, suspend, resume, or
    setup events once it has disabled interrupts.  dummy-hcd will receive
    them but won't try to issue any gadget driver callbacks, which should
    be just as good.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Fixes: f16443a034c7 ("USB: gadgetfs, dummy-hcd, net2280: fix locking for callbacks")
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 475ddf720986542cb5144997a57395ec56c3cf49
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:40 2017 -0400

    USB: dummy-hcd: fix infinite-loop resubmission bug
    
    commit 0173a68bfb0ad1c72a6ee39cc485aa2c97540b98 upstream.
    
    The dummy-hcd HCD/UDC emulator tries not to do too much work during
    each timer interrupt.  But it doesn't try very hard; currently all
    it does is limit the total amount of bulk data transferred.  Other
    transfer types aren't limited, and URBs that transfer no data (because
    of an error, perhaps) don't count toward the limit, even though on a
    real USB bus they would consume at least a minimum overhead.
    
    This means it's possible to get the driver stuck in an infinite loop,
    for example, if the host class driver resubmits an URB every time it
    completes (which is common for interrupt URBs).  Each time the URB is
    resubmitted it gets added to the end of the pending-URBs list, and
    dummy-hcd doesn't stop until that list is empty.  Andrey Konovalov was
    able to trigger this failure mode using the syzkaller fuzzer.
    
    This patch fixes the infinite-loop problem by restricting the URBs
    handled during each timer interrupt to those that were already on the
    pending list when the interrupt routine started.  Newly added URBs
    won't be processed until the next timer interrupt.  The problem of
    properly accounting for non-bulk bandwidth (as well as packet and
    transaction overhead) is not addressed here.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7f0feb0d4c42353ff1222daeb9a8ec0d08e330a
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Sep 26 15:15:22 2017 -0400

    USB: dummy-hcd: fix connection failures (wrong speed)
    
    commit fe659bcc9b173bcfdd958ce2aec75e47651e74e1 upstream.
    
    The dummy-hcd UDC driver is not careful about the way it handles
    connection speeds.  It ignores the module parameter that is supposed
    to govern the maximum connection speed and it doesn't set the HCD
    flags properly for the case where it ends up running at full speed.
    
    The result is that in many cases, gadget enumeration over dummy-hcd
    fails because the bMaxPacketSize byte in the device descriptor is set
    incorrectly.  For example, the default settings call for a high-speed
    connection, but the maxpacket value for ep0 ends up being set for a
    Super-Speed connection.
    
    This patch fixes the problem by initializing the gadget's max_speed
    and the HCD flags correctly.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28a4b4e6a958e16f38641c9070eda8940c00fc2e
Author: Bjørn Mork <bjorn@mork.no>
Date:   Fri Sep 22 22:18:18 2017 +0200

    USB: cdc-wdm: ignore -EPIPE from GetEncapsulatedResponse
    
    commit 8fec9355a968ad240f3a2e9ad55b823cf1cc52ff upstream.
    
    The driver will forward errors to userspace after turning most of them
    into -EIO. But all status codes are not equal. The -EPIPE (stall) in
    particular can be seen more as a result of normal USB signaling than
    an actual error. The state is automatically cleared by the USB core
    without intervention from either driver or userspace.
    
    And most devices and firmwares will never trigger a stall as a result
    of GetEncapsulatedResponse. This is in fact a requirement for CDC WDM
    devices. Quoting from section 7.1 of the CDC WMC spec revision 1.1:
    
      The function shall not return STALL in response to
      GetEncapsulatedResponse.
    
    But this driver is also handling GetEncapsulatedResponse on behalf of
    the qmi_wwan and cdc_mbim drivers. Unfortunately the relevant specs
    are not as clear wrt stall. So some QMI and MBIM devices *will*
    occasionally stall, causing the GetEncapsulatedResponse to return an
    -EPIPE status. Translating this into -EIO for userspace has proven to
    be harmful. Treating it as an empty read is safer, making the driver
    behave as if the device was conforming to the CDC WDM spec.
    
    There have been numerous reports of issues related to -EPIPE errors
    from some newer CDC MBIM devices in particular, like for example the
    Fibocom L831-EAU.  Testing on this device has shown that the issues
    go away if we simply ignore the -EPIPE status.  Similar handling of
    -EPIPE is already known from e.g. usb_get_string()
    
    The -EPIPE log message is still kept to let us track devices with this
    unexpected behaviour, hoping that it attracts attention from firmware
    developers.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100938
    Reported-and-tested-by: Christian Ehrig <christian.ehrig@mediamarktsaturn-bt.com>
    Reported-and-tested-by: Patrick Chilton <chpatrick@gmail.com>
    Reported-and-tested-by: Andreas Böhler <news@aboehler.at>
    Signed-off-by: Bjørn Mork <bjorn@mork.no>
    Acked-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dac85f51d8143fefe4db7808a95cb81eb5435ed1
Author: Jim Dickerson <jim.dickerson@hpe.com>
Date:   Mon Sep 18 17:39:14 2017 +0300

    usb: pci-quirks.c: Corrected timeout values used in handshake
    
    commit 114ec3a6f9096d211a4aff4277793ba969a62c73 upstream.
    
    Servers were emitting failed handoff messages but were not
    waiting the full 1 second as designated in section 4.22.1 of
    the eXtensible Host Controller Interface specifications. The
    handshake was using wrong units so calls were made with milliseconds
    not microseconds. Comments referenced 5 seconds not 1 second as
    in specs.
    
    The wrong units were also corrected in a second handshake call.
    
    Signed-off-by: Jim Dickerson <jim.dickerson@hpe.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee93eb98bc606a6c6dc37a04f6264ebb514117ab
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Sep 22 16:18:53 2017 +0200

    ALSA: usb-audio: Check out-of-bounds access by corrupted buffer descriptor
    
    commit bfc81a8bc18e3c4ba0cbaa7666ff76be2f998991 upstream.
    
    When a USB-audio device receives a maliciously adjusted or corrupted
    buffer descriptor, the USB-audio driver may access an out-of-bounce
    value at its parser.  This was detected by syzkaller, something like:
    
      BUG: KASAN: slab-out-of-bounds in usb_audio_probe+0x27b2/0x2ab0
      Read of size 1 at addr ffff88006b83a9e8 by task kworker/0:1/24
      CPU: 0 PID: 24 Comm: kworker/0:1 Not tainted 4.14.0-rc1-42251-gebb2c2437d80 #224
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
      Workqueue: usb_hub_wq hub_event
      Call Trace:
       __dump_stack lib/dump_stack.c:16
       dump_stack+0x292/0x395 lib/dump_stack.c:52
       print_address_description+0x78/0x280 mm/kasan/report.c:252
       kasan_report_error mm/kasan/report.c:351
       kasan_report+0x22f/0x340 mm/kasan/report.c:409
       __asan_report_load1_noabort+0x19/0x20 mm/kasan/report.c:427
       snd_usb_create_streams sound/usb/card.c:248
       usb_audio_probe+0x27b2/0x2ab0 sound/usb/card.c:605
       usb_probe_interface+0x35d/0x8e0 drivers/usb/core/driver.c:361
       really_probe drivers/base/dd.c:413
       driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
       __device_attach_driver+0x230/0x290 drivers/base/dd.c:653
       bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
       __device_attach+0x26e/0x3d0 drivers/base/dd.c:710
       device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
       bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
       device_add+0xd0b/0x1660 drivers/base/core.c:1835
       usb_set_configuration+0x104e/0x1870 drivers/usb/core/message.c:1932
       generic_probe+0x73/0xe0 drivers/usb/core/generic.c:174
       usb_probe_device+0xaf/0xe0 drivers/usb/core/driver.c:266
       really_probe drivers/base/dd.c:413
       driver_probe_device+0x610/0xa00 drivers/base/dd.c:557
       __device_attach_driver+0x230/0x290 drivers/base/dd.c:653
       bus_for_each_drv+0x161/0x210 drivers/base/bus.c:463
       __device_attach+0x26e/0x3d0 drivers/base/dd.c:710
       device_initial_probe+0x1f/0x30 drivers/base/dd.c:757
       bus_probe_device+0x1eb/0x290 drivers/base/bus.c:523
       device_add+0xd0b/0x1660 drivers/base/core.c:1835
       usb_new_device+0x7b8/0x1020 drivers/usb/core/hub.c:2457
       hub_port_connect drivers/usb/core/hub.c:4903
       hub_port_connect_change drivers/usb/core/hub.c:5009
       port_event drivers/usb/core/hub.c:5115
       hub_event+0x194d/0x3740 drivers/usb/core/hub.c:5195
       process_one_work+0xc7f/0x1db0 kernel/workqueue.c:2119
       worker_thread+0x221/0x1850 kernel/workqueue.c:2253
       kthread+0x3a1/0x470 kernel/kthread.c:231
       ret_from_fork+0x2a/0x40 arch/x86/entry/entry_64.S:431
    
    This patch adds the checks of out-of-bounce accesses at appropriate
    places and bails out when it goes out of the given buffer.
    
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a7edaee9ac2f277261ef7dfef513d3b07405998
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Sep 27 18:47:13 2017 +0900

    usb: renesas_usbhs: fix usbhsf_fifo_clear() for RX direction
    
    commit 0a2ce62b61f2c76d0213edf4e37aaf54a8ddf295 upstream.
    
    This patch fixes an issue that the usbhsf_fifo_clear() is possible
    to cause 10 msec delay if the pipe is RX direction and empty because
    the FRDY bit will never be set to 1 in such case.
    
    Fixes: e8d548d54968 ("usb: renesas_usbhs: fifo became independent from pipe.")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1309b63f5a6d1f7c8c4500a06286dce32c188a9a
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Sep 27 18:47:12 2017 +0900

    usb: renesas_usbhs: fix the BCLR setting condition for non-DCP pipe
    
    commit 6124607acc88fffeaadf3aacfeb3cc1304c87387 upstream.
    
    This patch fixes an issue that the driver sets the BCLR bit of
    {C,Dn}FIFOCTR register to 1 even when it's non-DCP pipe and
    the FRDY bit of {C,Dn}FIFOCTR register is set to 1.
    
    Fixes: e8d548d54968 ("usb: renesas_usbhs: fifo became independent from pipe.")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21f74fce291db6ca686e85136a70fee9c782ce7e
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 16:02:05 2017 -0400

    usb-storage: fix bogus hardware error messages for ATA pass-thru devices
    
    commit a4fd4a724d6c30ad671046d83be2e9be2f11d275 upstream.
    
    Ever since commit a621bac3044e ("scsi_lib: correctly retry failed zero
    length REQ_TYPE_FS commands"), people have been getting bogus error
    messages for USB disk drives using ATA pass-thru.  For example:
    
    [ 1344.880193] sd 6:0:0:0: [sdb] Attached SCSI disk
    [ 1345.069152] sd 6:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
    [ 1345.069159] sd 6:0:0:0: [sdb] tag#0 Sense Key : Hardware Error [current] [descriptor]
    [ 1345.069162] sd 6:0:0:0: [sdb] tag#0 Add. Sense: No additional sense information
    [ 1345.069168] sd 6:0:0:0: [sdb] tag#0 CDB: ATA command pass through(16) 85 06 20 00 00 00 00 00 00 00 00 00 00 00 e5 00
    [ 1345.172252] sd 6:0:0:0: [sdb] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_SENSE
    [ 1345.172258] sd 6:0:0:0: [sdb] tag#0 Sense Key : Hardware Error [current] [descriptor]
    [ 1345.172261] sd 6:0:0:0: [sdb] tag#0 Add. Sense: No additional sense information
    [ 1345.172266] sd 6:0:0:0: [sdb] tag#0 CDB: ATA command pass through(12)/Blank a1 06 20 da 00 00 4f c2 00 b0 00 00
    
    These messages can be quite annoying, because programs like udisks2
    provoke them every 10 minutes or so.  Other programs can also have
    this effect, such as those in smartmontools.
    
    I don't fully understand how that commit induced the SCSI core to log
    these error messages, but the underlying cause for them is code added
    to usb-storage by commit f1a0743bc0e7 ("USB: storage: When a device
    returns no sense data, call it a Hardware Error").  At the time it was
    necessary to do this, in order to prevent an infinite retry loop with
    some not-so-great mass storage devices.
    
    However, the ATA pass-thru protocol uses SCSI sense data to return
    command status values, and some devices always report Check Condition
    status for ATA pass-thru commands to ensure that the host retrieves
    the sense data, even if the command succeeded.  This violates the USB
    mass-storage protocol (Check Condition status is supposed to mean the
    command failed), but we can't help that.
    
    This patch attempts to mitigate the problem of these bogus error
    reports by changing usb-storage.  The HARDWARE ERROR sense key will be
    inserted only for commands that aren't ATA pass-thru.
    
    Thanks to Ewan Milne for pointing out that this mechanism was present
    in usb-storage.  8 years after writing it, I had completely forgotten
    its existence.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Tested-by: Kris Lindgren <kris.lindgren@gmail.com>
    Ref: https://bugzilla.redhat.com/show_bug.cgi?id=1351305
    CC: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6c3ec1de5b8ca25d73946b6c1bd8b502bb123a6a
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 15:59:30 2017 -0400

    usb-storage: unusual_devs entry to fix write-access regression for Seagate external drives
    
    commit 113f6eb6d50cfa5e2a1cdcf1678b12661fa272ab upstream.
    
    Kris Lindgren reports that without the NO_WP_DETECT flag, his Seagate
    external disk drive fails all write accesses.  This regresssion dates
    back approximately to the start of the 4.x kernel releases.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Kris Lindgren <kris.lindgren@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5cba2d0244077c159524cc07470e45a2d4c331e9
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Mon Sep 25 17:01:25 2017 +0900

    usb: gadget: udc: renesas_usb3: Fix return value of usb3_write_pipe()
    
    commit 447b8a01b84f048d93d43bfe1fcaa4fcc56595cc upstream.
    
    This patch fixes an issue that this driver cannot go status stage
    in control read when the req.zero is set to 1 and the len in
    usb3_write_pipe() is set to 0. Otherwise, if we use g_ncm driver,
    usb enumeration takes long time (5 seconds or more).
    
    Fixes: 746bfe63bba3 ("usb: gadget: renesas_usb3: add support for Renesas USB3.0 peripheral controller")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a86eb002d151932f55206f4e3b587805dc916093
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Mon Sep 25 17:01:24 2017 +0900

    usb: gadget: udc: renesas_usb3: fix Pn_RAMMAP.Pn_MPKT value
    
    commit 73f2f5745f18b4ccfe9484deac4e84a1378d19fd upstream.
    
    According to the datasheet of R-Car Gen3, the Pn_RAMMAP.Pn_MPKT should
    be set to one of 8, 16, 32, 64, 512 and 1024. Otherwise, when a gadget
    driver uses an interrupt endpoint, unexpected behavior happens. So,
    this patch fixes it.
    
    Fixes: 746bfe63bba3 ("usb: gadget: renesas_usb3: add support for Renesas USB3.0 peripheral controller")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b8b6bb4b842d2ffdb03e1fbebb467ae8ace848b
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Mon Sep 25 17:01:23 2017 +0900

    usb: gadget: udc: renesas_usb3: fix for no-data control transfer
    
    commit 4dcf4bab4a409e81284b8202137e4a85b96b34de upstream.
    
    When bRequestType & USB_DIR_IN is false and req.length is 0 in control
    transfer, since it means non-data, this driver should not set the mode
    as control write. So, this patch fixes it.
    
    Fixes: 746bfe63bba3 ("usb: gadget: renesas_usb3: add support for Renesas USB3.0 peripheral controller")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13d60a7ddf87ff612aff84628e9b1722839781ec
Author: Nicolas Ferre <nicolas.ferre@microchip.com>
Date:   Thu Aug 31 14:51:40 2017 +0200

    usb: gadget: udc: atmel: set vbus irqflags explicitly
    
    commit 6baeda120d90aa637b08f7604de104ab00ce9126 upstream.
    
    The driver triggers actions on both edges of the vbus signal.
    
    The former PIO controller was triggering IRQs on both falling and rising edges
    by default. Newer PIO controller don't, so it's better to set it explicitly to
    IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING.
    
    Without this patch we may trigger the connection with host but only on some
    bouncing signal conditions and thus lose connecting events.
    
    Acked-by: Ludovic Desroches <ludovic.desroches@microchip.com>
    Signed-off-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a3bdf0a29bd13da53b3372c4587c2a8d0318170
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 16:12:01 2017 -0400

    USB: gadgetfs: fix copy_to_user while holding spinlock
    
    commit 6e76c01e71551cb221c1f3deacb9dcd9a7346784 upstream.
    
    The gadgetfs driver as a long-outstanding FIXME, regarding a call of
    copy_to_user() made while holding a spinlock.  This patch fixes the
    issue by dropping the spinlock and using the dev->udc_usage mechanism
    introduced by another recent patch to guard against status changes
    while the lock isn't held.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b8bdd567735c761ebf24af6d5ebb29d5aadbc09
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Thu Sep 21 13:23:58 2017 -0400

    USB: gadgetfs: Fix crash caused by inadequate synchronization
    
    commit 520b72fc64debf8a86c3853b8e486aa5982188f0 upstream.
    
    The gadgetfs driver (drivers/usb/gadget/legacy/inode.c) was written
    before the UDC and composite frameworks were adopted; it is a legacy
    driver.  As such, it expects that once bound to a UDC controller, it
    will not be unbound until it unregisters itself.
    
    However, the UDC framework does unbind function drivers while they are
    still registered.  When this happens, it can cause the gadgetfs driver
    to misbehave or crash.  For example, userspace can cause a crash by
    opening the device file and doing an ioctl call before setting up a
    configuration (found by Andrey Konovalov using the syzkaller fuzzer).
    
    This patch adds checks and synchronization to prevent these bad
    behaviors.  It adds a udc_usage counter that the driver increments at
    times when it is using a gadget interface without holding the private
    spinlock.  The unbind routine waits for this counter to go to 0 before
    returning, thereby ensuring that the UDC is no longer in use.
    
    The patch also adds a check in the dev_ioctl() routine to make sure
    the driver is bound to a UDC before dereferencing the gadget pointer,
    and it makes destroy_ep_files() synchronize with the endpoint I/O
    routines, to prevent the user from accessing an endpoint data
    structure after it has been removed.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef8bc352b98f16223f8cbc9956d46786d9990d7a
Author: Roger Quadros <rogerq@ti.com>
Date:   Tue Sep 19 11:46:16 2017 +0300

    usb: gadget: core: fix ->udc_set_speed() logic
    
    commit 97e133d54c1ca8948b191e5721a145a76c4db33d upstream.
    
    Consider the following case: udc controller supports SuperSpeed.  If we
    first load a HighSpeed gadget followed by a SuperSpeed gadget, the
    SuperSpeed gadget will be limited to HighSpeed as UDC core driver
    doesn't call ->udc_set_speed() in the second case.
    
    Call ->udc_set_speed() unconditionally to fix this issue.
    
    This will also fix the case for dwc3 controller driver when SuperSpeed
    gadget is loaded first and works in HighSpeed only as udc_set_speed()
    was never being called.
    
    Fixes: 6099eca796ae ("usb: gadget: core: introduce ->udc_set_speed() method")
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e79bc75755072df2358a5fcda8f12dcdf7bfbd4
Author: Alexei Starovoitov <ast@fb.com>
Date:   Tue Oct 3 15:37:20 2017 -0700

    bpf: fix bpf_tail_call() x64 JIT
    
    
    [ Upstream commit 90caccdd8cc0215705f18b92771b449b01e2474a ]
    
    - bpf prog_array just like all other types of bpf array accepts 32-bit index.
      Clarify that in the comment.
    - fix x64 JIT of bpf_tail_call which was incorrectly loading 8 instead of 4 bytes
    - tighten corresponding check in the interpreter to stay consistent
    
    The JIT bug can be triggered after introduction of BPF_F_NUMA_NODE flag
    in commit 96eabe7a40aa in 4.14. Before that the map_flags would stay zero and
    though JIT code is wrong it will check bounds correctly.
    Hence two fixes tags. All other JITs don't have this problem.
    
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Fixes: 96eabe7a40aa ("bpf: Allow selecting numa node during map creation")
    Fixes: b52f00e6a715 ("x86: bpf_jit: implement bpf_tail_call() helper")
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Reviewed-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 952277e58967b59412292b4e2107f2f0033b6bc7
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Tue Oct 3 13:20:48 2017 +0300

    net: rtnetlink: fix info leak in RTM_GETSTATS call
    
    
    [ Upstream commit ce024f42c2e28b6bce4ecc1e891b42f57f753892 ]
    
    When RTM_GETSTATS was added the fields of its header struct were not all
    initialized when returning the result thus leaking 4 bytes of information
    to user-space per rtnl_fill_statsinfo call, so initialize them now. Thanks
    to Alexander Potapenko for the detailed report and bisection.
    
    Reported-by: Alexander Potapenko <glider@google.com>
    Fixes: 10c9ead9f3c6 ("rtnetlink: add new RTM_GETSTATS message to dump link stats")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Acked-by: Roopa Prabhu <roopa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83c46af1d5e92d188649891f86d6c12219f45f91
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Oct 2 12:20:51 2017 -0700

    socket, bpf: fix possible use after free
    
    
    [ Upstream commit eefca20eb20c66b06cf5ed09b49b1a7caaa27b7b ]
    
    Starting from linux-4.4, 3WHS no longer takes the listener lock.
    
    Since this time, we might hit a use-after-free in sk_filter_charge(),
    if the filter we got in the memcpy() of the listener content
    just happened to be replaced by a thread changing listener BPF filter.
    
    To fix this, we need to make sure the filter refcount is not already
    zero before incrementing it again.
    
    Fixes: e994b2f0fb92 ("tcp: do not lock listener to process SYN packets")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7a268ea8624115cd4b1ddd29fc410965e4b0950
Author: Guillaume Nault <g.nault@alphalink.fr>
Date:   Thu Sep 28 15:44:38 2017 +0200

    l2tp: fix l2tp_eth module loading
    
    
    [ Upstream commit 9f775ead5e570e7e19015b9e4e2f3dd6e71a5935 ]
    
    The l2tp_eth module crashes if its netlink callbacks are run when the
    pernet data aren't initialised.
    
    We should normally register_pernet_device() before the genl callbacks.
    However, the pernet data only maintain a list of l2tpeth interfaces,
    and this list is never used. So let's just drop pernet handling
    instead.
    
    Fixes: d9e31d17ceba ("l2tp: Add L2TP ethernet pseudowire support")
    Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd6d6bd72cc19117c79a229a44094b007b0fd369
Author: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
Date:   Fri Sep 29 10:02:54 2017 +0200

    tipc: use only positive error codes in messages
    
    
    [ Upstream commit aad06212d36cf34859428a0a279e5c14ee5c9e26 ]
    
    In commit e3a77561e7d32 ("tipc: split up function tipc_msg_eval()"),
    we have updated the function tipc_msg_lookup_dest() to set the error
    codes to negative values at destination lookup failures. Thus when
    the function sets the error code to -TIPC_ERR_NO_NAME, its inserted
    into the 4 bit error field of the message header as 0xf instead of
    TIPC_ERR_NO_NAME (1). The value 0xf is an unknown error code.
    
    In this commit, we set only positive error code.
    
    Fixes: e3a77561e7d32 ("tipc: split up function tipc_msg_eval()")
    Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@ericsson.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7059b304902b1fb45df29b5d1d5e1ea3f5fa4efa
Author: Paolo Abeni <pabeni@redhat.com>
Date:   Thu Sep 28 15:51:36 2017 +0200

    IPv4: early demux can return an error code
    
    
    [ Upstream commit 7487449c86c65202b3b725c4524cb48dd65e4e6f ]
    
    Currently no error is emitted, but this infrastructure will
    used by the next patch to allow source address validation
    for mcast sockets.
    Since early demux can do a route lookup and an ipv4 route
    lookup can return an error code this is consistent with the
    current ipv4 route infrastructure.
    
    Signed-off-by: Paolo Abeni <pabeni@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1186e0435f14f023b047d982831daf32a24eae7a
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Sep 28 13:24:07 2017 +0800

    ip6_tunnel: update mtu properly for ARPHRD_ETHER tunnel device in tx path
    
    
    [ Upstream commit d41bb33ba33b8f8debe54ed36be6925eb496e354 ]
    
    Now when updating mtu in tx path, it doesn't consider ARPHRD_ETHER tunnel
    device, like ip6gre_tap tunnel, for which it should also subtract ether
    header to get the correct mtu.
    
    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 662bfc43ccc8886ffaae4360d41c4ba62bca48bd
Author: Xin Long <lucien.xin@gmail.com>
Date:   Thu Sep 28 13:23:50 2017 +0800

    ip6_gre: ip6gre_tap device should keep dst
    
    
    [ Upstream commit 2d40557cc702ed8e5edd9bd422233f86652d932e ]
    
    The patch 'ip_gre: ipgre_tap device should keep dst' fixed
    a issue that ipgre_tap mtu couldn't be updated in tx path.
    
    The same fix is needed for ip6gre_tap as well.
    
    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 8d303d40ee5736fd5468639994d9f6a5dc00948b
Author: Jason A. Donenfeld <Jason@zx2c4.com>
Date:   Thu Sep 28 00:41:44 2017 +0200

    netlink: do not proceed if dump's start() errs
    
    
    [ Upstream commit fef0035c0f31322d417d1954bba5ab959bf91183 ]
    
    Drivers that use the start method for netlink dumping rely on dumpit not
    being called if start fails. For example, ila_xlat.c allocates memory
    and assigns it to cb->args[0] in its start() function. It might fail to
    do that and return -ENOMEM instead. However, even when returning an
    error, dumpit will be called, which, in the example above, quickly
    dereferences the memory in cb->args[0], which will OOPS the kernel. This
    is but one example of how this goes wrong.
    
    Since start() has always been a function with an int return type, it
    therefore makes sense to use it properly, rather than ignoring it. This
    patch thus returns early and does not call dumpit() when start() fails.
    
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9de182964e0a6bbc1bb7935c6f9dc4f82fcf785d
Author: Roi Dayan <roid@mellanox.com>
Date:   Mon Aug 21 12:04:50 2017 +0300

    net/mlx5e: IPoIB, Fix access to invalid memory address
    
    
    [ Upstream commit 38e8a5c040d3ec99a8351c688dcdf0f549611565 ]
    
    When cleaning rdma netdevice we need to save the mdev pointer
    because priv is released when we release netdev.
    
    This bug was found using the kernel address sanitizer (KASAN).
    use-after-free in mlx5_rdma_netdev_free+0xe3/0x100 [mlx5_core]
    
    Fixes: 48935bbb7ae8 ("net/mlx5e: IPoIB, Add netdevice profile skeleton")
    Signed-off-by: Roi Dayan <roid@mellanox.com>
    Reviewed-by: Or Gerlitz <ogerlitz@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 401dfb4850a485e504a151a55e84836de77ac27b
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Tue Sep 26 17:38:50 2017 -0700

    net: Set sk_prot_creator when cloning sockets to the right proto
    
    
    [ Upstream commit 9d538fa60bad4f7b23193c89e843797a1cf71ef3 ]
    
    sk->sk_prot and sk->sk_prot_creator can differ when the app uses
    IPV6_ADDRFORM (transforming an IPv6-socket to an IPv4-one).
    Which is why sk_prot_creator is there to make sure that sk_prot_free()
    does the kmem_cache_free() on the right kmem_cache slab.
    
    Now, if such a socket gets transformed back to a listening socket (using
    connect() with AF_UNSPEC) we will allocate an IPv4 tcp_sock through
    sk_clone_lock() when a new connection comes in. But sk_prot_creator will
    still point to the IPv6 kmem_cache (as everything got copied in
    sk_clone_lock()). When freeing, we will thus put this
    memory back into the IPv6 kmem_cache although it was allocated in the
    IPv4 cache. I have seen memory corruption happening because of this.
    
    With slub-debugging and MEMCG_KMEM enabled this gives the warning
            "cache_from_obj: Wrong slab cache. TCPv6 but object is from TCP"
    
    A C-program to trigger this:
    
    void main(void)
    {
            int fd = socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP);
            int new_fd, newest_fd, client_fd;
            struct sockaddr_in6 bind_addr;
            struct sockaddr_in bind_addr4, client_addr1, client_addr2;
            struct sockaddr unsp;
            int val;
    
            memset(&bind_addr, 0, sizeof(bind_addr));
            bind_addr.sin6_family = AF_INET6;
            bind_addr.sin6_port = ntohs(42424);
    
            memset(&client_addr1, 0, sizeof(client_addr1));
            client_addr1.sin_family = AF_INET;
            client_addr1.sin_port = ntohs(42424);
            client_addr1.sin_addr.s_addr = inet_addr("127.0.0.1");
    
            memset(&client_addr2, 0, sizeof(client_addr2));
            client_addr2.sin_family = AF_INET;
            client_addr2.sin_port = ntohs(42421);
            client_addr2.sin_addr.s_addr = inet_addr("127.0.0.1");
    
            memset(&unsp, 0, sizeof(unsp));
            unsp.sa_family = AF_UNSPEC;
    
            bind(fd, (struct sockaddr *)&bind_addr, sizeof(bind_addr));
    
            listen(fd, 5);
    
            client_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
            connect(client_fd, (struct sockaddr *)&client_addr1, sizeof(client_addr1));
            new_fd = accept(fd, NULL, NULL);
            close(fd);
    
            val = AF_INET;
            setsockopt(new_fd, SOL_IPV6, IPV6_ADDRFORM, &val, sizeof(val));
    
            connect(new_fd, &unsp, sizeof(unsp));
    
            memset(&bind_addr4, 0, sizeof(bind_addr4));
            bind_addr4.sin_family = AF_INET;
            bind_addr4.sin_port = ntohs(42421);
            bind(new_fd, (struct sockaddr *)&bind_addr4, sizeof(bind_addr4));
    
            listen(new_fd, 5);
    
            client_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
            connect(client_fd, (struct sockaddr *)&client_addr2, sizeof(client_addr2));
    
            newest_fd = accept(new_fd, NULL, NULL);
            close(new_fd);
    
            close(client_fd);
            close(new_fd);
    }
    
    As far as I can see, this bug has been there since the beginning of the
    git-days.
    
    Signed-off-by: Christoph Paasch <cpaasch@apple.com>
    Reviewed-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 c2d86cecc510ba347fa7fdee4c0292b2f3ced772
Author: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
Date:   Tue Sep 26 14:57:21 2017 -0400

    net: dsa: mv88e6xxx: lock mutex when freeing IRQs
    
    
    [ Upstream commit b32ca44a88def4bf92626d8777494c6f14638c42 ]
    
    mv88e6xxx_g2_irq_free locks the registers mutex, but not
    mv88e6xxx_g1_irq_free, which results in a stack trace from
    assert_reg_lock when unloading the mv88e6xxx module. Fix this.
    
    Fixes: 3460a5770ce9 ("net: dsa: mv88e6xxx: Mask g1 interrupts and free interrupt")
    Signed-off-by: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b37fd765a4ef807725c403976e7f402480030c01
Author: Willem de Bruijn <willemb@google.com>
Date:   Tue Sep 26 12:20:17 2017 -0400

    packet: only test po->has_vnet_hdr once in packet_snd
    
    
    [ Upstream commit da7c9561015e93d10fe6aab73e9288e0d09d65a6 ]
    
    Packet socket option po->has_vnet_hdr can be updated concurrently with
    other operations if no ring is attached.
    
    Do not test the option twice in packet_snd, as the value may change in
    between calls. A race on setsockopt disable may cause a packet > mtu
    to be sent without having GSO options set.
    
    Fixes: bfd5f4a3d605 ("packet: Add GSO/csum offload support.")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-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 a5d0f35d810a531c971394b0ea5d8de417acfea5
Author: Willem de Bruijn <willemb@google.com>
Date:   Tue Sep 26 12:19:37 2017 -0400

    packet: in packet_do_bind, test fanout with bind_lock held
    
    
    [ Upstream commit 4971613c1639d8e5f102c4e797c3bf8f83a5a69e ]
    
    Once a socket has po->fanout set, it remains a member of the group
    until it is destroyed. The prot_hook must be constant and identical
    across sockets in the group.
    
    If fanout_add races with packet_do_bind between the test of po->fanout
    and taking the lock, the bind call may make type or dev inconsistent
    with that of the fanout group.
    
    Hold po->bind_lock when testing po->fanout to avoid this race.
    
    I had to introduce artificial delay (local_bh_enable) to actually
    observe the race.
    
    Fixes: dc99f600698d ("packet: Add fanout support.")
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Reviewed-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 0265e1449bc0765103eec176232d2bbc070a991a
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Sep 25 15:55:53 2017 -0700

    net: dsa: Fix network device registration order
    
    
    [ Upstream commit e804441cfe0b60f6c430901946a69c01eac09df1 ]
    
    We cannot be registering the network device first, then setting its
    carrier off and finally connecting it to a PHY, doing that leaves a
    window during which the carrier is at best inconsistent, and at worse
    the device is not usable without a down/up sequence since the network
    device is visible to user space with possibly no PHY device attached.
    
    Re-order steps so that they make logical sense. This fixes some devices
    where the port was not usable after e.g: an unbind then bind of the
    driver.
    
    Fixes: 0071f56e46da ("dsa: Register netdev before phy")
    Fixes: 91da11f870f0 ("net: Distributed Switch Architecture protocol support")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87cd7f3356a17c49808a8a0ba344b9f2dbe30793
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Mon Sep 25 23:32:20 2017 +0200

    net: dsa: mv88e6xxx: Allow dsa and cpu ports in multiple vlans
    
    
    [ Upstream commit db06ae41945b14feb7f696dcafe8048cc37e8a20 ]
    
    Ports with the same VLAN must all be in the same bridge. However the
    CPU and DSA ports need to be in multiple VLANs spread over multiple
    bridges. So exclude them when performing this test.
    
    Fixes: b2f81d304cee ("net: dsa: add CPU and DSA ports as VLAN members")
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    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 bfc1c7a08bd58c7eb86361eb3d85184d7d5ab84c
Author: Alexander Potapenko <glider@google.com>
Date:   Thu Sep 28 11:32:37 2017 +0200

    tun: bail out from tun_get_user() if the skb is empty
    
    
    [ Upstream commit 2580c4c17aee3ad58e9751012bad278dd074ccae ]
    
    KMSAN (https://github.com/google/kmsan) reported accessing uninitialized
    skb->data[0] in the case the skb is empty (i.e. skb->len is 0):
    
    ================================================
    BUG: KMSAN: use of uninitialized memory in tun_get_user+0x19ba/0x3770
    CPU: 0 PID: 3051 Comm: probe Not tainted 4.13.0+ #3140
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Call Trace:
    ...
     __msan_warning_32+0x66/0xb0 mm/kmsan/kmsan_instr.c:477
     tun_get_user+0x19ba/0x3770 drivers/net/tun.c:1301
     tun_chr_write_iter+0x19f/0x300 drivers/net/tun.c:1365
     call_write_iter ./include/linux/fs.h:1743
     new_sync_write fs/read_write.c:457
     __vfs_write+0x6c3/0x7f0 fs/read_write.c:470
     vfs_write+0x3e4/0x770 fs/read_write.c:518
     SYSC_write+0x12f/0x2b0 fs/read_write.c:565
     SyS_write+0x55/0x80 fs/read_write.c:557
     do_syscall_64+0x242/0x330 arch/x86/entry/common.c:284
     entry_SYSCALL64_slow_path+0x25/0x25 arch/x86/entry/entry_64.S:245
    ...
    origin:
    ...
     kmsan_poison_shadow+0x6e/0xc0 mm/kmsan/kmsan.c:211
     slab_alloc_node mm/slub.c:2732
     __kmalloc_node_track_caller+0x351/0x370 mm/slub.c:4351
     __kmalloc_reserve net/core/skbuff.c:138
     __alloc_skb+0x26a/0x810 net/core/skbuff.c:231
     alloc_skb ./include/linux/skbuff.h:903
     alloc_skb_with_frags+0x1d7/0xc80 net/core/skbuff.c:4756
     sock_alloc_send_pskb+0xabf/0xfe0 net/core/sock.c:2037
     tun_alloc_skb drivers/net/tun.c:1144
     tun_get_user+0x9a8/0x3770 drivers/net/tun.c:1274
     tun_chr_write_iter+0x19f/0x300 drivers/net/tun.c:1365
     call_write_iter ./include/linux/fs.h:1743
     new_sync_write fs/read_write.c:457
     __vfs_write+0x6c3/0x7f0 fs/read_write.c:470
     vfs_write+0x3e4/0x770 fs/read_write.c:518
     SYSC_write+0x12f/0x2b0 fs/read_write.c:565
     SyS_write+0x55/0x80 fs/read_write.c:557
     do_syscall_64+0x242/0x330 arch/x86/entry/common.c:284
     return_from_SYSCALL_64+0x0/0x6a arch/x86/entry/entry_64.S:245
    ================================================
    
    Make sure tun_get_user() doesn't touch skb->data[0] unless there is
    actual data.
    
    C reproducer below:
    ==========================
        // autogenerated by syzkaller (http://github.com/google/syzkaller)
    
        #define _GNU_SOURCE
    
        #include <fcntl.h>
        #include <linux/if_tun.h>
        #include <netinet/ip.h>
        #include <net/if.h>
        #include <string.h>
        #include <sys/ioctl.h>
    
        int main()
        {
          int sock = socket(PF_INET, SOCK_STREAM, IPPROTO_IP);
          int tun_fd = open("/dev/net/tun", O_RDWR);
          struct ifreq req;
          memset(&req, 0, sizeof(struct ifreq));
          strcpy((char*)&req.ifr_name, "gre0");
          req.ifr_flags = IFF_UP | IFF_MULTICAST;
          ioctl(tun_fd, TUNSETIFF, &req);
          ioctl(sock, SIOCSIFFLAGS, "gre0");
          write(tun_fd, "hi", 0);
          return 0;
        }
    ==========================
    
    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 3cdc1b7da059e854c1be28f4c0732b1420793574
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Tue Sep 26 16:16:43 2017 +0200

    l2tp: fix race condition in l2tp_tunnel_delete
    
    
    [ Upstream commit 62b982eeb4589b2e6d7c01a90590e3a4c2b2ca19 ]
    
    If we try to delete the same tunnel twice, the first delete operation
    does a lookup (l2tp_tunnel_get), finds the tunnel, calls
    l2tp_tunnel_delete, which queues it for deletion by
    l2tp_tunnel_del_work.
    
    The second delete operation also finds the tunnel and calls
    l2tp_tunnel_delete. If the workqueue has already fired and started
    running l2tp_tunnel_del_work, then l2tp_tunnel_delete will queue the
    same tunnel a second time, and try to free the socket again.
    
    Add a dead flag to prevent firing the workqueue twice. Then we can
    remove the check of queue_work's result that was meant to prevent that
    race but doesn't.
    
    Reproducer:
    
        ip l2tp add tunnel tunnel_id 3000 peer_tunnel_id 4000 local 192.168.0.2 remote 192.168.0.1 encap udp udp_sport 5000 udp_dport 6000
        ip l2tp add session name l2tp1 tunnel_id 3000 session_id 1000 peer_session_id 2000
        ip link set l2tp1 up
        ip l2tp del tunnel tunnel_id 3000
        ip l2tp del tunnel tunnel_id 3000
    
    Fixes: f8ccac0e4493 ("l2tp: put tunnel socket release on a workqueue")
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Acked-by: Guillaume Nault <g.nault@alphalink.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05344b2035c7fb3a323c1ecc79b45f79f1eb3db6
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Tue Sep 26 15:14:29 2017 +0300

    vti: fix use after free in vti_tunnel_xmit/vti6_tnl_xmit
    
    
    [ Upstream commit 36f6ee22d2d66046e369757ec6bbe1c482957ba6 ]
    
    When running LTP IPsec tests, KASan might report:
    
    BUG: KASAN: use-after-free in vti_tunnel_xmit+0xeee/0xff0 [ip_vti]
    Read of size 4 at addr ffff880dc6ad1980 by task swapper/0/0
    ...
    Call Trace:
      <IRQ>
      dump_stack+0x63/0x89
      print_address_description+0x7c/0x290
      kasan_report+0x28d/0x370
      ? vti_tunnel_xmit+0xeee/0xff0 [ip_vti]
      __asan_report_load4_noabort+0x19/0x20
      vti_tunnel_xmit+0xeee/0xff0 [ip_vti]
      ? vti_init_net+0x190/0x190 [ip_vti]
      ? save_stack_trace+0x1b/0x20
      ? save_stack+0x46/0xd0
      dev_hard_start_xmit+0x147/0x510
      ? icmp_echo.part.24+0x1f0/0x210
      __dev_queue_xmit+0x1394/0x1c60
    ...
    Freed by task 0:
      save_stack_trace+0x1b/0x20
      save_stack+0x46/0xd0
      kasan_slab_free+0x70/0xc0
      kmem_cache_free+0x81/0x1e0
      kfree_skbmem+0xb1/0xe0
      kfree_skb+0x75/0x170
      kfree_skb_list+0x3e/0x60
      __dev_queue_xmit+0x1298/0x1c60
      dev_queue_xmit+0x10/0x20
      neigh_resolve_output+0x3a8/0x740
      ip_finish_output2+0x5c0/0xe70
      ip_finish_output+0x4ba/0x680
      ip_output+0x1c1/0x3a0
      xfrm_output_resume+0xc65/0x13d0
      xfrm_output+0x1e4/0x380
      xfrm4_output_finish+0x5c/0x70
    
    Can be fixed if we get skb->len before dst_output().
    
    Fixes: b9959fd3b0fa ("vti: switch to new ip tunnel code")
    Fixes: 22e1b23dafa8 ("vti6: Support inter address family tunneling.")
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5e4038e83d88b36ad913b4e3cfd35c5337d30535
Author: Timur Tabi <timur@codeaurora.org>
Date:   Fri Sep 22 15:32:44 2017 -0500

    net: qcom/emac: specify the correct size when mapping a DMA buffer
    
    
    [ Upstream commit a93ad944f4ff9a797abff17c73fc4b1e4a1d9141 ]
    
    When mapping the RX DMA buffers, the driver was accidentally specifying
    zero for the buffer length.  Under normal circumstances, SWIOTLB does not
    need to allocate a bounce buffer, so the address is just mapped without
    checking the size field.  This is why the error was not detected earlier.
    
    Fixes: b9b17debc69d ("net: emac: emac gigabit ethernet controller driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Timur Tabi <timur@codeaurora.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0476f91d987466884ba8c529aa29a839c4df3380
Author: Thomas Meyer <thomas@m3y3r.de>
Date:   Thu Sep 21 08:24:27 2017 +0200

    net: stmmac: Cocci spatch "of_table"
    
    
    [ Upstream commit f0ef1f4f2b772c0a1c8b35a6ae3edf974cc110dd ]
    
    Make sure (of/i2c/platform)_device_id tables are NULL terminated.
    Found by coccinelle spatch "misc/of_table.cocci"
    
    Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0012f8957130ceaebe7dbfed60558408a9ba9a1f
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Wed Sep 20 15:45:36 2017 +0300

    net_sched: always reset qdisc backlog in qdisc_reset()
    
    
    [ Upstream commit c8e1812960eeae42e2183154927028511c4bc566 ]
    
    SKB stored in qdisc->gso_skb also counted into backlog.
    
    Some qdiscs don't reset backlog to zero in ->reset(),
    for example sfq just dequeue and free all queued skb.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Fixes: 2ccccf5fb43f ("net_sched: update hierarchical backlog too")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 516047d387f189f464f393174fc29df1a1007dce
Author: Meng Xu <mengxu.gatech@gmail.com>
Date:   Tue Sep 19 21:49:55 2017 -0400

    isdn/i4l: fetch the ppp_write buffer in one shot
    
    
    [ Upstream commit 02388bf87f72e1d47174cd8f81c34443920eb5a0 ]
    
    In isdn_ppp_write(), the header (i.e., protobuf) of the buffer is
    fetched twice from userspace. The first fetch is used to peek at the
    protocol of the message and reset the huptimer if necessary; while the
    second fetch copies in the whole buffer. However, given that buf resides
    in userspace memory, a user process can race to change its memory content
    across fetches. By doing so, we can either avoid resetting the huptimer
    for any type of packets (by first setting proto to PPP_LCP and later
    change to the actual type) or force resetting the huptimer for LCP
    packets.
    
    This patch changes this double-fetch behavior into two single fetches
    decided by condition (lp->isdn_device < 0 || lp->isdn_channel <0).
    A more detailed discussion can be found at
    https://marc.info/?l=linux-kernel&m=150586376926123&w=2
    
    Signed-off-by: Meng Xu <mengxu.gatech@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf324b4822c9a2419d00b273ba8a5d36298203be
Author: Edward Cree <ecree@solarflare.com>
Date:   Tue Sep 19 18:45:56 2017 +0100

    net: change skb->mac_header when Generic XDP calls adjust_head
    
    
    [ Upstream commit 92dd5452c1be873a1193561f4f691763103d22ac ]
    
    Since XDP's view of the packet includes the MAC header, moving the start-
     of-packet with bpf_xdp_adjust_head needs to also update the offset of the
     MAC header (which is relative to skb->head, not to the skb->data that was
     changed).
    Without this, tcpdump sees packets starting from the old MAC header rather
     than the new one, at least in my tests on the loopback device.
    
    Fixes: b5cdae3291f7 ("net: Generic XDP")
    Signed-off-by: Edward Cree <ecree@solarflare.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcc738d393156dd29ed961ecefe13d96ed5f782f
Author: Yonghong Song <yhs@fb.com>
Date:   Mon Sep 18 16:38:36 2017 -0700

    bpf: one perf event close won't free bpf program attached by another perf event
    
    
    [ Upstream commit ec9dd352d591f0c90402ec67a317c1ed4fb2e638 ]
    
    This patch fixes a bug exhibited by the following scenario:
      1. fd1 = perf_event_open with attr.config = ID1
      2. attach bpf program prog1 to fd1
      3. fd2 = perf_event_open with attr.config = ID1
         <this will be successful>
      4. user program closes fd2 and prog1 is detached from the tracepoint.
      5. user program with fd1 does not work properly as tracepoint
         no output any more.
    
    The issue happens at step 4. Multiple perf_event_open can be called
    successfully, but only one bpf prog pointer in the tp_event. In the
    current logic, any fd release for the same tp_event will free
    the tp_event->prog.
    
    The fix is to free tp_event->prog only when the closing fd
    corresponds to the one which registered the program.
    
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19c4b6fe0fc333ab57f9aa2f5d3f55b7e0a8d640
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Sep 14 17:14:41 2017 -0400

    packet: hold bind lock when rebinding to fanout hook
    
    
    [ Upstream commit 008ba2a13f2d04c947adc536d19debb8fe66f110 ]
    
    Packet socket bind operations must hold the po->bind_lock. This keeps
    po->running consistent with whether the socket is actually on a ptype
    list to receive packets.
    
    fanout_add unbinds a socket and its packet_rcv/tpacket_rcv call, then
    binds the fanout object to receive through packet_rcv_fanout.
    
    Make it hold the po->bind_lock when testing po->running and rebinding.
    Else, it can race with other rebind operations, such as that in
    packet_set_ring from packet_rcv to tpacket_rcv. Concurrent updates
    can result in a socket being added to a fanout group twice, causing
    use-after-free KASAN bug reports, among others.
    
    Reported independently by both trinity and syzkaller.
    Verified that the syzkaller reproducer passes after this patch.
    
    Fixes: dc99f600698d ("packet: Add fanout support.")
    Reported-by: nixioaming <nixiaoming@huawei.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e13e9b4bdb653d9f281792e2cfaa9d22ff5eb969
Author: Mike Manning <mmanning@brocade.com>
Date:   Mon Sep 4 15:52:55 2017 +0100

    net: ipv6: fix regression of no RTM_DELADDR sent after DAD failure
    
    
    [ Upstream commit 6819a14ecbe2e089e5c5bb74edecafdde2028a00 ]
    
    Commit f784ad3d79e5 ("ipv6: do not send RTM_DELADDR for tentative
    addresses") incorrectly assumes that no RTM_NEWADDR are sent for
    addresses in tentative state, as this does happen for the standard
    IPv6 use-case of DAD failure, see the call to ipv6_ifa_notify() in
    addconf_dad_stop(). So as a result of this change, no RTM_DELADDR is
    sent after DAD failure for a link-local when strict DAD (accept_dad=2)
    is configured, or on the next admin down in other cases. The absence
    of this notification breaks backwards compatibility and causes problems
    after DAD failure if this notification was being relied on. The
    solution is to allow RTM_DELADDR to still be sent after DAD failure.
    
    Fixes: f784ad3d79e5 ("ipv6: do not send RTM_DELADDR for tentative addresses")
    Signed-off-by: Mike Manning <mmanning@brocade.com>
    Cc: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0711571683d3d7723b6e302ac16129d6a3967c76
Author: Christian Lamparter <chunkeey@googlemail.com>
Date:   Tue Sep 19 19:35:18 2017 +0200

    net: emac: Fix napi poll list corruption
    
    
    [ Upstream commit f55956065ec94e3e9371463d693a1029c4cc3007 ]
    
    This patch is pretty much a carbon copy of
    commit 3079c652141f ("caif: Fix napi poll list corruption")
    with "caif" replaced by "emac".
    
    The commit d75b1ade567f ("net: less interrupt masking in NAPI")
    breaks emac.
    
    It is now required that if the entire budget is consumed when poll
    returns, the napi poll_list must remain empty.  However, like some
    other drivers emac tries to do a last-ditch check and if there is
    more work it will call napi_reschedule and then immediately process
    some of this new work.  Should the entire budget be consumed while
    processing such new work then we will violate the new caller
    contract.
    
    This patch fixes this by not touching any work when we reschedule
    in emac.
    
    Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e88bf8bf17401684f4b7e4f16b228b1992bd549
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 19 10:05:57 2017 -0700

    tcp: fastopen: fix on syn-data transmit failure
    
    
    [ Upstream commit b5b7db8d680464b1d631fd016f5e093419f0bfd9 ]
    
    Our recent change exposed a bug in TCP Fastopen Client that syzkaller
    found right away [1]
    
    When we prepare skb with SYN+DATA, we attempt to transmit it,
    and we update socket state as if the transmit was a success.
    
    In socket RTX queue we have two skbs, one with the SYN alone,
    and a second one containing the DATA.
    
    When (malicious) ACK comes in, we now complain that second one had no
    skb_mstamp.
    
    The proper fix is to make sure that if the transmit failed, we do not
    pretend we sent the DATA skb, and make it our send_head.
    
    When 3WHS completes, we can now send the DATA right away, without having
    to wait for a timeout.
    
    [1]
    WARNING: CPU: 0 PID: 100189 at net/ipv4/tcp_input.c:3117 tcp_clean_rtx_queue+0x2057/0x2ab0 net/ipv4/tcp_input.c:3117()
    
     WARN_ON_ONCE(last_ackt == 0);
    
    Modules linked in:
    CPU: 0 PID: 100189 Comm: syz-executor1 Not tainted
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
     0000000000000000 ffff8800b35cb1d8 ffffffff81cad00d 0000000000000000
     ffffffff828a4347 ffff88009f86c080 ffffffff8316eb20 0000000000000d7f
     ffff8800b35cb220 ffffffff812c33c2 ffff8800baad2440 00000009d46575c0
    Call Trace:
     [<ffffffff81cad00d>] __dump_stack
     [<ffffffff81cad00d>] dump_stack+0xc1/0x124
     [<ffffffff812c33c2>] warn_slowpath_common+0xe2/0x150
     [<ffffffff812c361e>] warn_slowpath_null+0x2e/0x40
     [<ffffffff828a4347>] tcp_clean_rtx_queue+0x2057/0x2ab0 n
     [<ffffffff828ae6fd>] tcp_ack+0x151d/0x3930
     [<ffffffff828baa09>] tcp_rcv_state_process+0x1c69/0x4fd0
     [<ffffffff828efb7f>] tcp_v4_do_rcv+0x54f/0x7c0
     [<ffffffff8258aacb>] sk_backlog_rcv
     [<ffffffff8258aacb>] __release_sock+0x12b/0x3a0
     [<ffffffff8258ad9e>] release_sock+0x5e/0x1c0
     [<ffffffff8294a785>] inet_wait_for_connect
     [<ffffffff8294a785>] __inet_stream_connect+0x545/0xc50
     [<ffffffff82886f08>] tcp_sendmsg_fastopen
     [<ffffffff82886f08>] tcp_sendmsg+0x2298/0x35a0
     [<ffffffff82952515>] inet_sendmsg+0xe5/0x520
     [<ffffffff8257152f>] sock_sendmsg_nosec
     [<ffffffff8257152f>] sock_sendmsg+0xcf/0x110
    
    Fixes: 8c72c65b426b ("tcp: update skb->skb_mstamp more carefully")
    Fixes: 783237e8daf1 ("net-tcp: Fast Open client - sending SYN-data")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Cc: Neal Cardwell <ncardwell@google.com>
    Cc: Yuchung Cheng <ycheng@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 003cbd230adc38c991be2ca9db052976e224e4e8
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Sep 19 09:15:59 2017 -0700

    bpf: do not disable/enable BH in bpf_map_free_id()
    
    
    [ Upstream commit 930651a75bf1ba6893a8b8475270664ebdb6cf4a ]
    
    syzkaller reported following splat [1]
    
    Since hard irq are disabled by the caller, bpf_map_free_id()
    should not try to enable/disable BH.
    
    Another solution would be to change htab_map_delete_elem() to
    defer the free_htab_elem() call after
    raw_spin_unlock_irqrestore(&b->lock, flags), but this might be not
    enough to cover other code paths.
    
    [1]
    WARNING: CPU: 1 PID: 8052 at kernel/softirq.c:161 __local_bh_enable_ip
    +0x1e/0x160 kernel/softirq.c:161
    Kernel panic - not syncing: panic_on_warn set ...
    
    CPU: 1 PID: 8052 Comm: syz-executor1 Not tainted 4.13.0-next-20170915+
    #23
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:16 [inline]
     dump_stack+0x194/0x257 lib/dump_stack.c:52
     panic+0x1e4/0x417 kernel/panic.c:181
     __warn+0x1c4/0x1d9 kernel/panic.c:542
     report_bug+0x211/0x2d0 lib/bug.c:183
     fixup_bug+0x40/0x90 arch/x86/kernel/traps.c:178
     do_trap_no_signal arch/x86/kernel/traps.c:212 [inline]
     do_trap+0x260/0x390 arch/x86/kernel/traps.c:261
     do_error_trap+0x120/0x390 arch/x86/kernel/traps.c:298
     do_invalid_op+0x1b/0x20 arch/x86/kernel/traps.c:311
     invalid_op+0x18/0x20 arch/x86/entry/entry_64.S:905
    RIP: 0010:__local_bh_enable_ip+0x1e/0x160 kernel/softirq.c:161
    RSP: 0018:ffff8801cdcd7748 EFLAGS: 00010046
    RAX: 0000000000000082 RBX: 0000000000000201 RCX: 0000000000000000
    RDX: 1ffffffff0b5933c RSI: 0000000000000201 RDI: ffffffff85ac99e0
    RBP: ffff8801cdcd7758 R08: ffffffff85b87158 R09: 1ffff10039b9aec6
    R10: ffff8801c99f24c0 R11: 0000000000000002 R12: ffffffff817b0b47
    R13: dffffc0000000000 R14: ffff8801cdcd77e8 R15: 0000000000000001
     __raw_spin_unlock_bh include/linux/spinlock_api_smp.h:176 [inline]
     _raw_spin_unlock_bh+0x30/0x40 kernel/locking/spinlock.c:207
     spin_unlock_bh include/linux/spinlock.h:361 [inline]
     bpf_map_free_id kernel/bpf/syscall.c:197 [inline]
     __bpf_map_put+0x267/0x320 kernel/bpf/syscall.c:227
     bpf_map_put+0x1a/0x20 kernel/bpf/syscall.c:235
     bpf_map_fd_put_ptr+0x15/0x20 kernel/bpf/map_in_map.c:96
     free_htab_elem+0xc3/0x1b0 kernel/bpf/hashtab.c:658
     htab_map_delete_elem+0x74d/0x970 kernel/bpf/hashtab.c:1063
     map_delete_elem kernel/bpf/syscall.c:633 [inline]
     SYSC_bpf kernel/bpf/syscall.c:1479 [inline]
     SyS_bpf+0x2188/0x46a0 kernel/bpf/syscall.c:1451
     entry_SYSCALL_64_fastpath+0x1f/0xbe
    
    Fixes: f3f1c054c288 ("bpf: Introduce bpf_map ID")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd7e604ae80dc15cbabd278b1c8a0da4403233f1
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Sep 18 13:03:43 2017 -0700

    8139too: revisit napi_complete_done() usage
    
    
    [ Upstream commit 129c6cda2de2a8ac44fab096152469999b727faf ]
    
    It seems we have to be more careful in napi_complete_done()
    use. This patch is not a revert, as it seems we can
    avoid bug that Ville reported by moving the napi_complete_done()
    test in the spinlock section.
    
    Many thanks to Ville for detective work and all tests.
    
    Fixes: 617f01211baf ("8139too: use napi_complete_done()")
    Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46b75a3199e8e486b73aee050aaf96e01c4c8bac
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Sat Sep 16 14:02:21 2017 +0200

    net/sched: cls_matchall: fix crash when used with classful qdisc
    
    
    [ Upstream commit 3ff4cbec87da48b0ec1f7b6196607b034de0c680 ]
    
    this script, edited from Linux Advanced Routing and Traffic Control guide
    
    tc q a dev en0 root handle 1: htb default a
    tc c a dev en0 parent 1:  classid 1:1 htb rate 6mbit burst 15k
    tc c a dev en0 parent 1:1 classid 1:a htb rate 5mbit ceil 6mbit burst 15k
    tc c a dev en0 parent 1:1 classid 1:b htb rate 1mbit ceil 6mbit burst 15k
    tc f a dev en0 parent 1:0 prio 1 $clsname $clsargs classid 1:b
    ping $address -c1
    tc -s c s dev en0
    
    classifies traffic to 1:b or 1:a, depending on whether the packet matches
    or not the pattern $clsargs of filter $clsname. However, when $clsname is
    'matchall', a systematic crash can be observed in htb_classify(). HTB and
    classful qdiscs don't assign initial value to struct tcf_result, but then
    they expect it to contain valid values after filters have been run. Thus,
    current 'matchall' ignores the TCA_MATCHALL_CLASSID attribute, configured
    by user, and makes HTB (and classful qdiscs) dereference random pointers.
    
    By assigning head->res to *res in mall_classify(), before the actions are
    invoked, we fix this crash and enable TCA_MATCHALL_CLASSID functionality,
    that had no effect on 'matchall' classifier since its first introduction.
    
    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1460213
    Reported-by: Jiri Benc <jbenc@redhat.com>
    Fixes: b87f7936a932 ("net/sched: introduce Match-all classifier")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Yotam Gigi <yotamg@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 646343de630aa3788d6f1f460e0476a41ce73002
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Sep 15 15:58:33 2017 +0800

    ip6_tunnel: do not allow loading ip6_tunnel if ipv6 is disabled in cmdline
    
    
    [ Upstream commit 8c22dab03ad072e45060c299c70d02a4f6fc4aab ]
    
    If ipv6 has been disabled from cmdline since kernel started, it makes
    no sense to allow users to create any ip6 tunnel. Otherwise, it could
    some potential problem.
    
    Jianlin found a kernel crash caused by this in ip6_gre when he set
    ipv6.disable=1 in grub:
    
    [  209.588865] Unable to handle kernel paging request for data at address 0x00000080
    [  209.588872] Faulting instruction address: 0xc000000000a3aa6c
    [  209.588879] Oops: Kernel access of bad area, sig: 11 [#1]
    [  209.589062] NIP [c000000000a3aa6c] fib_rules_lookup+0x4c/0x260
    [  209.589071] LR [c000000000b9ad90] fib6_rule_lookup+0x50/0xb0
    [  209.589076] Call Trace:
    [  209.589097] fib6_rule_lookup+0x50/0xb0
    [  209.589106] rt6_lookup+0xc4/0x110
    [  209.589116] ip6gre_tnl_link_config+0x214/0x2f0 [ip6_gre]
    [  209.589125] ip6gre_newlink+0x138/0x3a0 [ip6_gre]
    [  209.589134] rtnl_newlink+0x798/0xb80
    [  209.589142] rtnetlink_rcv_msg+0xec/0x390
    [  209.589151] netlink_rcv_skb+0x138/0x150
    [  209.589159] rtnetlink_rcv+0x48/0x70
    [  209.589169] netlink_unicast+0x538/0x640
    [  209.589175] netlink_sendmsg+0x40c/0x480
    [  209.589184] ___sys_sendmsg+0x384/0x4e0
    [  209.589194] SyS_sendmsg+0xd4/0x140
    [  209.589201] SyS_socketcall+0x3e0/0x4f0
    [  209.589209] system_call+0x38/0xe0
    
    This patch is to return -EOPNOTSUPP in ip6_tunnel_init if ipv6 has been
    disabled from cmdline.
    
    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 8b5b26ab8cbd3b266a4c32314de979a07dea3684
Author: Fahad Kunnathadi <fahad.kunnathadi@dexceldesigns.com>
Date:   Fri Sep 15 12:01:58 2017 +0530

    net: phy: Fix mask value write on gmii2rgmii converter speed register
    
    
    [ Upstream commit f2654a4781318dc7ab8d6cde66f1fa39eab980a9 ]
    
    To clear Speed Selection in MDIO control register(0x10),
    ie, clear bits 6 and 13 to zero while keeping other bits same.
    Before AND operation,The Mask value has to be perform with bitwise NOT
    operation (ie, ~ operator)
    
    This patch clears current speed selection before writing the
    new speed settings to gmii2rgmii converter
    
    Fixes: f411a6160bd4 ("net: phy: Add gmiitorgmii converter support")
    
    Signed-off-by: Fahad Kunnathadi <fahad.kunnathadi@dexceldesigns.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8b802da80b63e4410b6ef07f5a54323c618c3eba
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Sep 15 12:00:07 2017 +0800

    ip6_gre: skb_push ipv6hdr before packing the header in ip6gre_header
    
    
    [ Upstream commit 76cc0d3282d4b933fa144fa41fbc5318e0fdca24 ]
    
    Now in ip6gre_header before packing the ipv6 header, it skb_push t->hlen
    which only includes encap_hlen + tun_hlen. It means greh and inner header
    would be over written by ipv6 stuff and ipv6h might have no chance to set
    up.
    
    Jianlin found this issue when using remote any on ip6_gre, the packets he
    captured on gre dev are truncated:
    
    22:50:26.210866 Out ethertype IPv6 (0x86dd), length 120: truncated-ip6 -\
    8128 bytes missing!(flowlabel 0x92f40, hlim 0, next-header Options (0)  \
    payload length: 8192) ::1:2000:0 > ::1:0:86dd: HBH [trunc] ip-proto-128 \
    8184
    
    It should also skb_push ipv6hdr so that ipv6h points to the right position
    to set ipv6 stuff up.
    
    This patch is to skb_push hlen + sizeof(*ipv6h) and also fix some indents
    in ip6gre_header.
    
    Fixes: c12b395a4664 ("gre: Support GRE over IPv6")
    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 9276fee73c2d2874d734fa8fe7266c2433c0c6bf
Author: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Date:   Wed Sep 13 19:30:51 2017 -0600

    udpv6: Fix the checksum computation when HW checksum does not apply
    
    
    [ Upstream commit 63ecc3d9436f8012e49dc846d6cb0a85a3433517 ]
    
    While trying an ESP transport mode encryption for UDPv6 packets of
    datagram size 1436 with MTU 1500, checksum error was observed in
    the secondary fragment.
    
    This error occurs due to the UDP payload checksum being missed out
    when computing the full checksum for these packets in
    udp6_hwcsum_outgoing().
    
    Fixes: d39d938c8228 ("ipv6: Introduce udpv6_send_skb()")
    Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db755cf143a576a04a6c7af66e9e15ae8fcd97da
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Sep 15 16:47:42 2017 -0700

    tcp: fix data delivery rate
    
    
    [ Upstream commit fc22579917eb7e13433448a342f1cb1592920940 ]
    
    Now skb->mstamp_skb is updated later, we also need to call
    tcp_rate_skb_sent() after the update is done.
    
    Fixes: 8c72c65b426b ("tcp: update skb->skb_mstamp more carefully")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Acked-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 4dfd8d60544612978293dce358d040f71a3209cd
Author: Edward Cree <ecree@solarflare.com>
Date:   Fri Sep 15 14:37:38 2017 +0100

    bpf/verifier: reject BPF_ALU64|BPF_END
    
    
    [ Upstream commit e67b8a685c7c984e834e3181ef4619cd7025a136 ]
    
    Neither ___bpf_prog_run nor the JITs accept it.
    Also adds a new test case.
    
    Fixes: 17a5267067f3 ("bpf: verifier (add verifier core)")
    Signed-off-by: Edward Cree <ecree@solarflare.com>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Acked-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 250e0f0406e4650133e54a915cf64b7670073576
Author: Eric Dumazet <edumazet@googl.com>
Date:   Wed Sep 13 20:30:39 2017 -0700

    tcp: update skb->skb_mstamp more carefully
    
    
    [ Upstream commit 8c72c65b426b47b3c166a8fef0d8927fe5e8a28d ]
    
    liujian reported a problem in TCP_USER_TIMEOUT processing with a patch
    in tcp_probe_timer() :
          https://www.spinics.net/lists/netdev/msg454496.html
    
    After investigations, the root cause of the problem is that we update
    skb->skb_mstamp of skbs in write queue, even if the attempt to send a
    clone or copy of it failed. One reason being a routing problem.
    
    This patch prevents this, solving liujian issue.
    
    It also removes a potential RTT miscalculation, since
    __tcp_retransmit_skb() is not OR-ing TCP_SKB_CB(skb)->sacked with
    TCPCB_EVER_RETRANS if a failure happens, but skb->skb_mstamp has
    been changed.
    
    A future ACK would then lead to a very small RTT sample and min_rtt
    would then be lowered to this too small value.
    
    Tested:
    
    # cat user_timeout.pkt
    --local_ip=192.168.102.64
    
        0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
       +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
       +0 bind(3, ..., ...) = 0
       +0 listen(3, 1) = 0
    
       +0 `ifconfig tun0 192.168.102.64/16; ip ro add 192.0.2.1 dev tun0`
    
       +0 < S 0:0(0) win 0 <mss 1460>
       +0 > S. 0:0(0) ack 1 <mss 1460>
    
      +.1 < . 1:1(0) ack 1 win 65530
       +0 accept(3, ..., ...) = 4
    
       +0 setsockopt(4, SOL_TCP, TCP_USER_TIMEOUT, [3000], 4) = 0
       +0 write(4, ..., 24) = 24
       +0 > P. 1:25(24) ack 1 win 29200
       +.1 < . 1:1(0) ack 25 win 65530
    
    //change the ipaddress
       +1 `ifconfig tun0 192.168.0.10/16`
    
       +1 write(4, ..., 24) = 24
       +1 write(4, ..., 24) = 24
       +1 write(4, ..., 24) = 24
       +1 write(4, ..., 24) = 24
    
       +0 `ifconfig tun0 192.168.102.64/16`
       +0 < . 1:2(1) ack 25 win 65530
       +0 `ifconfig tun0 192.168.0.10/16`
    
       +3 write(4, ..., 24) = -1
    
    # ./packetdrill user_timeout.pkt
    
    Signed-off-by: Eric Dumazet <edumazet@googl.com>
    Reported-by: liujian <liujian56@huawei.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Acked-by: Yuchung Cheng <ycheng@google.com>
    Acked-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 ec725e6dc8b29353bd1faed744156f16b3322fd2
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Sep 14 02:00:54 2017 +0300

    sctp: potential read out of bounds in sctp_ulpevent_type_enabled()
    
    
    [ Upstream commit fa5f7b51fc3080c2b195fa87c7eca7c05e56f673 ]
    
    This code causes a static checker warning because Smatch doesn't trust
    anything that comes from skb->data.  I've reviewed this code and I do
    think skb->data can be controlled by the user here.
    
    The sctp_event_subscribe struct has 13 __u8 fields and we want to see
    if ours is non-zero.  sn_type can be any value in the 0-USHRT_MAX range.
    We're subtracting SCTP_SN_TYPE_BASE which is 1 << 15 so we could read
    either before the start of the struct or after the end.
    
    This is a very old bug and it's surprising that it would go undetected
    for so long but my theory is that it just doesn't have a big impact so
    it would be hard to notice.
    
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 52bf37469dfe3ee800882fe7e5b25d744f8ab242
Author: Jiri Pirko <jiri@mellanox.com>
Date:   Wed Sep 13 17:32:37 2017 +0200

    net: sched: fix use-after-free in tcf_action_destroy and tcf_del_walker
    
    
    [ Upstream commit 255cd50f207ae8ec7b22663246c833407744e634 ]
    
    Recent commit d7fb60b9cafb ("net_sched: get rid of tcfa_rcu") removed
    freeing in call_rcu, which changed already existing hard-to-hit
    race condition into 100% hit:
    
    [  598.599825] BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
    [  598.607782] IP: tcf_action_destroy+0xc0/0x140
    
    Or:
    
    [   40.858924] BUG: unable to handle kernel NULL pointer dereference at 0000000000000030
    [   40.862840] IP: tcf_generic_walker+0x534/0x820
    
    Fix this by storing the ops and use them directly for module_put call.
    
    Fixes: a85a970af265 ("net_sched: move tc_action into tcf_common")
    Signed-off-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 953ec9c15dc134ef501a49d201a8e20c655926ef
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Sep 13 11:16:45 2017 -0700

    net_sched: gen_estimator: fix scaling error in bytes/packets samples
    
    
    [ Upstream commit ca558e185972d8ecd308760abf972f5d408bcff0 ]
    
    Denys reported wrong rate estimations with HTB classes.
    
    It appears the bug was added in linux-4.10, since my tests
    where using intervals of one second only.
    
    HTB using 4 sec default rate estimators, reported rates
    were 4x higher.
    
    We need to properly scale the bytes/packets samples before
    integrating them in EWMA.
    
    Tested:
     echo 1 >/sys/module/sch_htb/parameters/htb_rate_est
    
     Setup HTB with one class with a rate/cail of 5Gbit
    
     Generate traffic on this class
    
     tc -s -d cl sh dev eth0 classid 7002:11
    class htb 7002:11 parent 7002:1 prio 5 quantum 200000 rate 5Gbit ceil
    5Gbit linklayer ethernet burst 80000b/1 mpu 0b cburst 80000b/1 mpu 0b
    level 0 rate_handle 1
     Sent 1488215421648 bytes 982969243 pkt (dropped 0, overlimits 0
    requeues 0)
     rate 5Gbit 412814pps backlog 136260b 2p requeues 0
     TCP pkts/rtx 982969327/45 bytes 1488215557414/68130
     lended: 22732826 borrowed: 0 giants: 0
     tokens: -1684 ctokens: -1684
    
    Fixes: 1c0d32fde5bd ("net_sched: gen_estimator: complete rewrite of rate estimators")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Denys Fedoryshchenko <nuclearcat@nuclearcat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 334abe7a782c0888e02cbe752a3d79644d1cbf42
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Tue Sep 12 15:10:05 2017 +0300

    net: bonding: fix tlb_dynamic_lb default value
    
    
    [ Upstream commit f13ad104b4e886a03e75f130daf579ef9bf33dfc ]
    
    Commit 8b426dc54cf4 ("bonding: remove hardcoded value") changed the
    default value for tlb_dynamic_lb which lead to either broken ALB mode
    (since tlb_dynamic_lb can be changed only in TLB) or setting TLB mode
    with tlb_dynamic_lb equal to 0.
    The first issue was recently fixed by setting tlb_dynamic_lb to 1 always
    when switching to ALB mode, but the default value is still wrong and
    we'll enter TLB mode with tlb_dynamic_lb equal to 0 if the mode is
    changed via netlink or sysfs. In order to restore the previous behaviour
    and default value simply remove the mode check around the default param
    initialization for tlb_dynamic_lb which will always set it to 1 as
    before.
    
    Fixes: 8b426dc54cf4 ("bonding: remove hardcoded value")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Acked-by: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36a9b3cc5c63563a5bd92216742d6b833561559e
Author: Yuval Mintz <yuvalm@mellanox.com>
Date:   Tue Sep 12 08:50:53 2017 +0200

    mlxsw: spectrum: Prevent mirred-related crash on removal
    
    
    [ Upstream commit 6399ebcccffa12e65bc15eda039d37673264ebce ]
    
    When removing the offloading of mirred actions under
    matchall classifiers, mlxsw would find the destination port
    associated with the offloaded action and utilize it for undoing
    the configuration.
    
    Depending on the order by which ports are removed, it's possible that
    the destination port would get removed before the source port.
    In such a scenario, when actions would be flushed for the source port
    mlxsw would perform an illegal dereference as the destination port is
    no longer listed.
    
    Since the only item necessary for undoing the configuration on the
    destination side is the port-id and that in turn is already maintained
    by mlxsw on the source-port, simply stop trying to access the
    destination port and use the port-id directly instead.
    
    Fixes: 763b4b70af ("mlxsw: spectrum: Add support in matchall mirror TC offloading")
    Signed-off-by: Yuval Mintz <yuvalm@mellanox.com>
    Signed-off-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ff70afba46961d071c0f6bdfdffe745870d01ba4
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Sep 11 21:56:20 2017 +0200

    openvswitch: Fix an error handling path in 'ovs_nla_init_match_and_action()'
    
    
    [ Upstream commit 5829e62ac17a40ab08c1b905565604a4b5fa7af6 ]
    
    All other error handling paths in this function go through the 'error'
    label. This one should do the same.
    
    Fixes: 9cc9a5cb176c ("datapath: Avoid using stack larger than 1024.")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    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 02b456a3d5fe3d666d6a0aa6d99bb1831cfcdfaf
Author: Kosuke Tatsukawa <tatsu@ab.jp.nec.com>
Date:   Wed Sep 6 22:47:59 2017 +0000

    net: bonding: Fix transmit load balancing in balance-alb mode if specified by sysfs
    
    
    [ Upstream commit c6644d07eff6588b2dedf881279fb0d1c7783970 ]
    
    Commit cbf5ecb30560 ("net: bonding: Fix transmit load balancing in
    balance-alb mode") tried to fix transmit dynamic load balancing in
    balance-alb mode, which wasn't working after commit 8b426dc54cf4
    ("bonding: remove hardcoded value").
    
    It turned out that my previous patch only fixed the case when
    balance-alb was specified as bonding module parameter, and not when
    balance-alb mode was set using /sys/class/net/*/bonding/mode (the most
    common usage).  In the latter case, tlb_dynamic_lb was set up according
    to the default mode of the bonding interface, which happens to be
    balance-rr.
    
    This additional patch addresses this issue by setting up tlb_dynamic_lb
    to 1 if "mode" is set to balance-alb through the sysfs interface.
    
    I didn't add code to change tlb_balance_lb back to the default value for
    other modes, because "mode" is usually set up only once during
    initialization, and it's not worthwhile to change the static variable
    bonding_defaults in bond_main.c to a global variable just for this
    purpose.
    
    Commit 8b426dc54cf4 also changes the value of tlb_dynamic_lb for
    balance-tlb mode if it is set up using the sysfs interface.  I didn't
    change that behavior, because the value of tlb_balance_lb can be changed
    using the sysfs interface for balance-tlb, and I didn't like changing
    the default value back and forth for balance-tlb.
    
    As for balance-alb, /sys/class/net/*/bonding/tlb_balance_lb cannot be
    written to.  However, I think balance-alb with tlb_dynamic_lb set to 0
    is not an intended usage, so there is little use making it writable at
    this moment.
    
    Fixes: 8b426dc54cf4 ("bonding: remove hardcoded value")
    Reported-by: Reinis Rozitis <r@roze.lv>
    Signed-off-by: Kosuke Tatsukawa <tatsu@ab.jp.nec.com>
    Cc: stable@vger.kernel.org  # v4.12+
    Acked-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Acked-by: Mahesh Bandewar <maheshb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ec58e18e6e5e493646dd151a9096d3f14b4169e
Author: Arkadi Sharshevsky <arkadis@mellanox.com>
Date:   Mon Sep 11 09:42:26 2017 +0200

    mlxsw: spectrum: Fix EEPROM access in case of SFP/SFP+
    
    
    [ Upstream commit 4400081b631af69abc63cea3352680e3d85e0c39 ]
    
    The current code does not handle correctly the access to the upper page
    in case of SFP/SFP+ EEPROM. In that case the offset should be local
    and the I2C address should be changed.
    
    Fixes: 2ea109039cd3 ("mlxsw: spectrum: Add support for access cable info via ethtool")
    Reported-by: Florian Klink <flokli@flokli.de>
    Signed-off-by: Arkadi Sharshevsky <arkadis@mellanox.com>
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6bcb6a2f55955c2cd1398745ff7ed41368c8660b
Author: Felipe Balbi <felipe.balbi@linux.intel.com>
Date:   Mon Sep 11 10:45:12 2017 +0300

    usb: dwc3: ep0: fix DMA starvation by assigning req->trb on ep0
    
    commit 55168470835688e5da5828cdcf1b1498d7baadb1 upstream.
    
    If we don't assign a TRB to ep0 requests, we won't be able to unmap
    the request later on resulting in starvation of DMA resources.
    
    Fixes: 4a71fcb8ac5f ("usb: dwc3: gadget: only unmap requests from DMA if mapped")
    Reported-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Tested-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f169d0276839cd81fc3a539ffdd7cad90fb112e4
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Oct 4 15:34:55 2017 +0200

    imx-media-of: avoid uninitialized variable warning
    
    Replaces upstream commit 0b2e9e7947e7 ("media: staging/imx: remove
    confusing IS_ERR_OR_NULL usage")
    
    We get a harmless warning about a potential uninitialized variable
    use in the driver:
    
    drivers/staging/media/imx/imx-media-of.c: In function 'of_parse_subdev':
    drivers/staging/media/imx/imx-media-of.c:216:4: warning: 'remote_np' may be used uninitialized in this function [-Wmaybe-uninitialized]
    
    I reworked that code to be easier to understand by gcc in mainline,
    but that commit is too large to backport. This is a much simpler
    workaround, avoiding the warning by adding a fake initialization
    to the variable. The driver was only introduced in linux-4.13,
    so the workaround is not needed for earlier stable kernels.
    
    Fixes: e130291212df ("[media] media: Add i.MX media core driver")
    Cc: stable@vger.kernel.org
    Cc: Philipp Zabel <p.zabel@pengutronix.de>
    Cc: Steve Longerbeam <steve_longerbeam@mentor.com>
    Cc: Hans Verkuil <hans.verkuil@cisco.com>
    Cc: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>