commit 65f42a73e55331961153006e902c4fe0bb4a69bb
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 31 08:15:47 2019 +0100

    Linux 4.20.6

commit 4c8e581506abda82392b619b6f38afd9f074eff8
Author: Deepa Dinamani <deepa.kernel@gmail.com>
Date:   Thu Jan 24 00:29:20 2019 -0800

    Input: input_event - fix the CONFIG_SPARC64 mixup
    
    commit 141e5dcaa7356077028b4cd48ec351a38c70e5e5 upstream.
    
    Arnd Bergmann pointed out that CONFIG_* cannot be used in a uapi header.
    Override with an equivalent conditional.
    
    Fixes: 2e746942ebac ("Input: input_event - provide override for sparc64")
    Fixes: 152194fe9c3f ("Input: extend usable life of event timestamps to 2106 on 32 bit systems")
    Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3ff523df8d1c01314a7dc43418c1406eba6fdaca
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Dec 20 17:16:53 2018 +0100

    ide: fix a typo in the settings proc file name
    
    commit f8ff6c732d35904d773043f979b844ef330c701b upstream.
    
    Fixes: ec7d9c9ce8 ("ide: replace ->proc_fops with ->proc_show")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b90547dd898ea47dd7c563ac61fa9b47fbb3227
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Tue Jan 22 13:38:37 2019 +0100

    mt76x0: phy: unify calibration between mt76x0u and mt76x0e
    
    commit 1163bdb636a118b9d7c3c03b9e67e7e799425a9c upstream.
    
    Align phy calibration logic between mt76x0u and mt76x0e drivers
    This patch improves connection stability with low SNR
    
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e39a91e9e282cc02ab9585ca8d3c5b621323e96
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Tue Jan 22 13:38:36 2019 +0100

    mt76x0: antenna select corrections
    
    commit ef442b73b6bc36b5499e1983611abb46e6337975 upstream.
    
    Update mt76x0_phy_ant_select() to conform vendor driver, most notably
    add dual antenna mode support, read configuration from EEPROM and
    move ant select out of channel config to init phase. Plus small MT7630E
    quirk for MT_CMB_CTRL register which vendor driver dedicated to this
    chip do.
    
    This make MT7630E workable with mt76x0e driver and do not cause any
    problems on MT7610U for me.
    
    Acked-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14275ffa9ba5489174d099b1890bf7ef28bde2ed
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Tue Jan 22 13:38:35 2019 +0100

    mt76x0: do not perform MCU calibration for MT7630
    
    commit a83150eaad42769e4d08b6e07956a489e40214ae upstream.
    
    Driver works better for MT7630 without MCU calibration, which
    looks like it can hangs the firmware. Vendor driver do not
    perform it for MT7630 as well.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e15c6c8a835125d4415f7cba865067c227bffa72
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Tue Jan 22 13:38:34 2019 +0100

    mt76x02: assure we update gain after scan
    
    commit 4784a3cc3fffd0ba5ef6c7a23980ae0318fc1369 upstream.
    
    Assure that after we initialize dev->cal.low_gain to -1 this
    will cause update gain calibration. Otherwise this might or
    might not happen depending on value of second bit of low_gain
    and values read from registers in mt76x02_phy_adjust_vga_gain().
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1101ce4ab3c3467246ded46c4eed27fd00bba7a6
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Thu Nov 1 16:35:01 2018 +0100

    mt76x02: run calibration after scanning
    
    commit f1b8ee35fec4a070b7760a99709fc98f237c2b86 upstream.
    
    If we are associated and scanning is performed, sw_scan_complete callback
    is done after we get back to operating channel, so we do not perform
    queue cal work. Fix this queue cal work from sw_scan_complete().
    
    On mt76x0 we have to restore gain in MT_BBP(AGC, 8) register after
    scanning, as it was multiple times modified by channel switch code.
    So queue cal work without any delay to set AGC gain value.
    
    Similar like in mt76x2 init AGC gain only when set operating channel
    and just check before queuing cal work in sw_scan_complete() if
    initialization was already done.
    
    Fixes: bbd10586f0df ("mt76x0: phy: do not run calibration during channel switch")
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee21042f9c6bed1a1ac146b003ef95afb8581904
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Thu Oct 25 18:18:33 2018 +0200

    mt76x0: use band parameter for LC calibration
    
    commit ad3f993a0857ad3b792e7463828eb0d90cdd6f4d upstream.
    
    We use always 1 as band parameter for MCU_CAL_LC, this break 2GHz,
    we should use 0 for this band instead.
    
    Patch fixes problems happened sometimes when try to associate with 2GHz
    AP and manifest by errors like below:
    
    [14680.920823] wlan0: authenticate with 18:31:bf:c0:51:b0
    [14681.109506] wlan0: send auth to 18:31:bf:c0:51:b0 (try 1/3)
    [14681.310454] wlan0: send auth to 18:31:bf:c0:51:b0 (try 2/3)
    [14681.518469] wlan0: send auth to 18:31:bf:c0:51:b0 (try 3/3)
    [14681.726499] wlan0: authentication with 18:31:bf:c0:51:b0 timed out
    
    Fixes: 9aec146d0f6b ("mt76x0: pci: introduce mt76x0_phy_calirate routine")
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3650aa1059275103c7c4516fec360249aa1b1bdf
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Wed Oct 31 08:32:58 2018 +0100

    mt76x0: do not overwrite other MT_BBP(AGC, 8) fields
    
    commit b983a5b900627faa49cf37e101d65b56e941c740 upstream.
    
    MT_BBP(AGC, 8) register has values depend on band in
    mt76x0_bbp_switch_tab, so we should not overwrite other fields
    than MT_BBP_AGC_GAIN when setting gain.
    
    This can fix performance issues when connecting to 2.4GHz AP.
    
    Fixes: 4636a2544c3b ("mt76x0: phy: align channel gain logic to mt76x2 one")
    Acked-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5eaf9833f5be9bb86fcc22c3d879edd929235753
Author: Jack Pham <jackp@codeaurora.org>
Date:   Thu Jan 10 12:39:55 2019 -0800

    usb: dwc3: gadget: Clear req->needs_extra_trb flag on cleanup
    
    commit bd6742249b9ca918565e4e3abaa06665e587f4b5 upstream.
    
    OUT endpoint requests may somtimes have this flag set when
    preparing to be submitted to HW indicating that there is an
    additional TRB chained to the request for alignment purposes.
    If that request is removed before the controller can execute the
    transfer (e.g. ep_dequeue/ep_disable), the request will not go
    through the dwc3_gadget_ep_cleanup_completed_request() handler
    and will not have its needs_extra_trb flag cleared when
    dwc3_gadget_giveback() is called.  This same request could be
    later requeued for a new transfer that does not require an
    extra TRB and if it is successfully completed, the cleanup
    and TRB reclamation will incorrectly process the additional TRB
    which belongs to the next request, and incorrectly advances the
    TRB dequeue pointer, thereby messing up calculation of the next
    requeust's actual/remaining count when it completes.
    
    The right thing to do here is to ensure that the flag is cleared
    before it is given back to the function driver.  A good place
    to do that is in dwc3_gadget_del_and_unmap_request().
    
    Fixes: c6267a51639b ("usb: dwc3: gadget: align transfers to wMaxPacketSize")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    [jackp: backport to <= 4.20: replaced 'needs_extra_trb' with 'unaligned'
            and 'zero' members in patch and reworded commit text]
    Signed-off-by: Jack Pham <jackp@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b2e022c79871a40c33da5cfc119644ac49432b2
Author: Michal Hocko <mhocko@suse.com>
Date:   Fri Jan 25 19:08:58 2019 +0100

    Revert "mm, memory_hotplug: initialize struct pages for the full memory section"
    
    commit 4aa9fc2a435abe95a1e8d7f8c7b3d6356514b37a upstream.
    
    This reverts commit 2830bf6f05fb3e05bc4743274b806c821807a684.
    
    The underlying assumption that one sparse section belongs into a single
    numa node doesn't hold really. Robert Shteynfeld has reported a boot
    failure. The boot log was not captured but his memory layout is as
    follows:
    
      Early memory node ranges
        node   1: [mem 0x0000000000001000-0x0000000000090fff]
        node   1: [mem 0x0000000000100000-0x00000000dbdf8fff]
        node   1: [mem 0x0000000100000000-0x0000001423ffffff]
        node   0: [mem 0x0000001424000000-0x0000002023ffffff]
    
    This means that node0 starts in the middle of a memory section which is
    also in node1.  memmap_init_zone tries to initialize padding of a
    section even when it is outside of the given pfn range because there are
    code paths (e.g.  memory hotplug) which assume that the full worth of
    memory section is always initialized.
    
    In this particular case, though, such a range is already intialized and
    most likely already managed by the page allocator.  Scribbling over
    those pages corrupts the internal state and likely blows up when any of
    those pages gets used.
    
    Reported-by: Robert Shteynfeld <robert.shteynfeld@gmail.com>
    Fixes: 2830bf6f05fb ("mm, memory_hotplug: initialize struct pages for the full memory section")
    Cc: stable@kernel.org
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 601cdaedd2ab8c9f635d1164c0fb52a086b25b8f
Author: Dexuan Cui <decui@microsoft.com>
Date:   Wed Jan 9 20:56:06 2019 +0000

    vmbus: fix subchannel removal
    
    [ Upstream commit b5679cebf780c6f1c2451a73bf1842a4409840e7 ]
    
    The changes to split ring allocation from open/close, broke
    the cleanup of subchannels. This resulted in problems using
    uio on network devices because the subchannel was left behind
    when the network device was unbound.
    
    The cause was in the disconnect logic which used list splice
    to move the subchannel list into a local variable. This won't
    work because the subchannel list is needed later during the
    process of the rescind messages (relid2channel).
    
    The fix is to just leave the subchannel list in place
    which is what the original code did. The list is cleaned
    up later when the host rescind is processed.
    
    Without the fix, we have a lot of "hang" issues in netvsc when we
    try to change the NIC's MTU, set the number of channels, etc.
    
    Fixes: ae6935ed7d42 ("vmbus: split ring buffer allocation from open")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e4266dff05a0803ab0ea3952866a8734e9905739
Author: Dexuan Cui <decui@microsoft.com>
Date:   Mon Nov 26 02:17:56 2018 +0000

    Drivers: hv: vmbus: Remove the useless API vmbus_get_outgoing_channel()
    
    [ Upstream commit 4d3c5c69191f98c7f7e699ff08d2fd96d7070ddb ]
    
    Commit d86adf482b84 ("scsi: storvsc: Enable multi-queue support") removed
    the usage of the API in Jan 2017, and the API is not used since then.
    
    netvsc and storvsc have their own algorithms to determine the outgoing
    channel, so this API is useless.
    
    And the API is potentially unsafe, because it reads primary->num_sc without
    any lock held. This can be risky considering the RESCIND-OFFER message.
    
    Let's remove the API.
    
    Cc: Long Li <longli@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a79c57d1118dd19c5109be962f31e78edd07837f
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:30 2019 +0100

    bpf: fix inner map masking to prevent oob under speculation
    
    [ commit 9d5564ddcf2a0f5ba3fa1c3a1f8a1b59ad309553 upstream ]
    
    During review I noticed that inner meta map setup for map in
    map is buggy in that it does not propagate all needed data
    from the reference map which the verifier is later accessing.
    
    In particular one such case is index masking to prevent out of
    bounds access under speculative execution due to missing the
    map's unpriv_array/index_mask field propagation. Fix this such
    that the verifier is generating the correct code for inlined
    lookups in case of unpriviledged use.
    
    Before patch (test_verifier's 'map in map access' dump):
    
      # bpftool prog dump xla id 3
         0: (62) *(u32 *)(r10 -4) = 0
         1: (bf) r2 = r10
         2: (07) r2 += -4
         3: (18) r1 = map[id:4]
         5: (07) r1 += 272                |
         6: (61) r0 = *(u32 *)(r2 +0)     |
         7: (35) if r0 >= 0x1 goto pc+6   | Inlined map in map lookup
         8: (54) (u32) r0 &= (u32) 0      | with index masking for
         9: (67) r0 <<= 3                 | map->unpriv_array.
        10: (0f) r0 += r1                 |
        11: (79) r0 = *(u64 *)(r0 +0)     |
        12: (15) if r0 == 0x0 goto pc+1   |
        13: (05) goto pc+1                |
        14: (b7) r0 = 0                   |
        15: (15) if r0 == 0x0 goto pc+11
        16: (62) *(u32 *)(r10 -4) = 0
        17: (bf) r2 = r10
        18: (07) r2 += -4
        19: (bf) r1 = r0
        20: (07) r1 += 272                |
        21: (61) r0 = *(u32 *)(r2 +0)     | Index masking missing (!)
        22: (35) if r0 >= 0x1 goto pc+3   | for inner map despite
        23: (67) r0 <<= 3                 | map->unpriv_array set.
        24: (0f) r0 += r1                 |
        25: (05) goto pc+1                |
        26: (b7) r0 = 0                   |
        27: (b7) r0 = 0
        28: (95) exit
    
    After patch:
    
      # bpftool prog dump xla id 1
         0: (62) *(u32 *)(r10 -4) = 0
         1: (bf) r2 = r10
         2: (07) r2 += -4
         3: (18) r1 = map[id:2]
         5: (07) r1 += 272                |
         6: (61) r0 = *(u32 *)(r2 +0)     |
         7: (35) if r0 >= 0x1 goto pc+6   | Same inlined map in map lookup
         8: (54) (u32) r0 &= (u32) 0      | with index masking due to
         9: (67) r0 <<= 3                 | map->unpriv_array.
        10: (0f) r0 += r1                 |
        11: (79) r0 = *(u64 *)(r0 +0)     |
        12: (15) if r0 == 0x0 goto pc+1   |
        13: (05) goto pc+1                |
        14: (b7) r0 = 0                   |
        15: (15) if r0 == 0x0 goto pc+12
        16: (62) *(u32 *)(r10 -4) = 0
        17: (bf) r2 = r10
        18: (07) r2 += -4
        19: (bf) r1 = r0
        20: (07) r1 += 272                |
        21: (61) r0 = *(u32 *)(r2 +0)     |
        22: (35) if r0 >= 0x1 goto pc+4   | Now fixed inlined inner map
        23: (54) (u32) r0 &= (u32) 0      | lookup with proper index masking
        24: (67) r0 <<= 3                 | for map->unpriv_array.
        25: (0f) r0 += r1                 |
        26: (05) goto pc+1                |
        27: (b7) r0 = 0                   |
        28: (b7) r0 = 0
        29: (95) exit
    
    Fixes: b2157399cc98 ("bpf: prevent out-of-bounds speculation")
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Martin KaFai Lau <kafai@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4bce22c3646d0895ba68e0761bce91d3b2d1ad46
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:29 2019 +0100

    bpf: fix sanitation of alu op with pointer / scalar type from different paths
    
    [ commit d3bd7413e0ca40b60cf60d4003246d067cafdeda upstream ]
    
    While 979d63d50c0c ("bpf: prevent out of bounds speculation on pointer
    arithmetic") took care of rejecting alu op on pointer when e.g. pointer
    came from two different map values with different map properties such as
    value size, Jann reported that a case was not covered yet when a given
    alu op is used in both "ptr_reg += reg" and "numeric_reg += reg" from
    different branches where we would incorrectly try to sanitize based
    on the pointer's limit. Catch this corner case and reject the program
    instead.
    
    Fixes: 979d63d50c0c ("bpf: prevent out of bounds speculation on pointer arithmetic")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 078da99d449f64ca04d459cdbdcce513b64173cd
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:28 2019 +0100

    bpf: prevent out of bounds speculation on pointer arithmetic
    
    [ commit 979d63d50c0c0f7bc537bf821e056cc9fe5abd38 upstream ]
    
    Jann reported that the original commit back in b2157399cc98
    ("bpf: prevent out-of-bounds speculation") was not sufficient
    to stop CPU from speculating out of bounds memory access:
    While b2157399cc98 only focussed on masking array map access
    for unprivileged users for tail calls and data access such
    that the user provided index gets sanitized from BPF program
    and syscall side, there is still a more generic form affected
    from BPF programs that applies to most maps that hold user
    data in relation to dynamic map access when dealing with
    unknown scalars or "slow" known scalars as access offset, for
    example:
    
      - Load a map value pointer into R6
      - Load an index into R7
      - Do a slow computation (e.g. with a memory dependency) that
        loads a limit into R8 (e.g. load the limit from a map for
        high latency, then mask it to make the verifier happy)
      - Exit if R7 >= R8 (mispredicted branch)
      - Load R0 = R6[R7]
      - Load R0 = R6[R0]
    
    For unknown scalars there are two options in the BPF verifier
    where we could derive knowledge from in order to guarantee
    safe access to the memory: i) While </>/<=/>= variants won't
    allow to derive any lower or upper bounds from the unknown
    scalar where it would be safe to add it to the map value
    pointer, it is possible through ==/!= test however. ii) another
    option is to transform the unknown scalar into a known scalar,
    for example, through ALU ops combination such as R &= <imm>
    followed by R |= <imm> or any similar combination where the
    original information from the unknown scalar would be destroyed
    entirely leaving R with a constant. The initial slow load still
    precedes the latter ALU ops on that register, so the CPU
    executes speculatively from that point. Once we have the known
    scalar, any compare operation would work then. A third option
    only involving registers with known scalars could be crafted
    as described in [0] where a CPU port (e.g. Slow Int unit)
    would be filled with many dependent computations such that
    the subsequent condition depending on its outcome has to wait
    for evaluation on its execution port and thereby executing
    speculatively if the speculated code can be scheduled on a
    different execution port, or any other form of mistraining
    as described in [1], for example. Given this is not limited
    to only unknown scalars, not only map but also stack access
    is affected since both is accessible for unprivileged users
    and could potentially be used for out of bounds access under
    speculation.
    
    In order to prevent any of these cases, the verifier is now
    sanitizing pointer arithmetic on the offset such that any
    out of bounds speculation would be masked in a way where the
    pointer arithmetic result in the destination register will
    stay unchanged, meaning offset masked into zero similar as
    in array_index_nospec() case. With regards to implementation,
    there are three options that were considered: i) new insn
    for sanitation, ii) push/pop insn and sanitation as inlined
    BPF, iii) reuse of ax register and sanitation as inlined BPF.
    
    Option i) has the downside that we end up using from reserved
    bits in the opcode space, but also that we would require
    each JIT to emit masking as native arch opcodes meaning
    mitigation would have slow adoption till everyone implements
    it eventually which is counter-productive. Option ii) and iii)
    have both in common that a temporary register is needed in
    order to implement the sanitation as inlined BPF since we
    are not allowed to modify the source register. While a push /
    pop insn in ii) would be useful to have in any case, it
    requires once again that every JIT needs to implement it
    first. While possible, amount of changes needed would also
    be unsuitable for a -stable patch. Therefore, the path which
    has fewer changes, less BPF instructions for the mitigation
    and does not require anything to be changed in the JITs is
    option iii) which this work is pursuing. The ax register is
    already mapped to a register in all JITs (modulo arm32 where
    it's mapped to stack as various other BPF registers there)
    and used in constant blinding for JITs-only so far. It can
    be reused for verifier rewrites under certain constraints.
    The interpreter's tmp "register" has therefore been remapped
    into extending the register set with hidden ax register and
    reusing that for a number of instructions that needed the
    prior temporary variable internally (e.g. div, mod). This
    allows for zero increase in stack space usage in the interpreter,
    and enables (restricted) generic use in rewrites otherwise as
    long as such a patchlet does not make use of these instructions.
    The sanitation mask is dynamic and relative to the offset the
    map value or stack pointer currently holds.
    
    There are various cases that need to be taken under consideration
    for the masking, e.g. such operation could look as follows:
    ptr += val or val += ptr or ptr -= val. Thus, the value to be
    sanitized could reside either in source or in destination
    register, and the limit is different depending on whether
    the ALU op is addition or subtraction and depending on the
    current known and bounded offset. The limit is derived as
    follows: limit := max_value_size - (smin_value + off). For
    subtraction: limit := umax_value + off. This holds because
    we do not allow any pointer arithmetic that would
    temporarily go out of bounds or would have an unknown
    value with mixed signed bounds where it is unclear at
    verification time whether the actual runtime value would
    be either negative or positive. For example, we have a
    derived map pointer value with constant offset and bounded
    one, so limit based on smin_value works because the verifier
    requires that statically analyzed arithmetic on the pointer
    must be in bounds, and thus it checks if resulting
    smin_value + off and umax_value + off is still within map
    value bounds at time of arithmetic in addition to time of
    access. Similarly, for the case of stack access we derive
    the limit as follows: MAX_BPF_STACK + off for subtraction
    and -off for the case of addition where off := ptr_reg->off +
    ptr_reg->var_off.value. Subtraction is a special case for
    the masking which can be in form of ptr += -val, ptr -= -val,
    or ptr -= val. In the first two cases where we know that
    the value is negative, we need to temporarily negate the
    value in order to do the sanitation on a positive value
    where we later swap the ALU op, and restore original source
    register if the value was in source.
    
    The sanitation of pointer arithmetic alone is still not fully
    sufficient as is, since a scenario like the following could
    happen ...
    
      PTR += 0x1000 (e.g. K-based imm)
      PTR -= BIG_NUMBER_WITH_SLOW_COMPARISON
      PTR += 0x1000
      PTR -= BIG_NUMBER_WITH_SLOW_COMPARISON
      [...]
    
    ... which under speculation could end up as ...
    
      PTR += 0x1000
      PTR -= 0 [ truncated by mitigation ]
      PTR += 0x1000
      PTR -= 0 [ truncated by mitigation ]
      [...]
    
    ... and therefore still access out of bounds. To prevent such
    case, the verifier is also analyzing safety for potential out
    of bounds access under speculative execution. Meaning, it is
    also simulating pointer access under truncation. We therefore
    "branch off" and push the current verification state after the
    ALU operation with known 0 to the verification stack for later
    analysis. Given the current path analysis succeeded it is
    likely that the one under speculation can be pruned. In any
    case, it is also subject to existing complexity limits and
    therefore anything beyond this point will be rejected. In
    terms of pruning, it needs to be ensured that the verification
    state from speculative execution simulation must never prune
    a non-speculative execution path, therefore, we mark verifier
    state accordingly at the time of push_stack(). If verifier
    detects out of bounds access under speculative execution from
    one of the possible paths that includes a truncation, it will
    reject such program.
    
    Given we mask every reg-based pointer arithmetic for
    unprivileged programs, we've been looking into how it could
    affect real-world programs in terms of size increase. As the
    majority of programs are targeted for privileged-only use
    case, we've unconditionally enabled masking (with its alu
    restrictions on top of it) for privileged programs for the
    sake of testing in order to check i) whether they get rejected
    in its current form, and ii) by how much the number of
    instructions and size will increase. We've tested this by
    using Katran, Cilium and test_l4lb from the kernel selftests.
    For Katran we've evaluated balancer_kern.o, Cilium bpf_lxc.o
    and an older test object bpf_lxc_opt_-DUNKNOWN.o and l4lb
    we've used test_l4lb.o as well as test_l4lb_noinline.o. We
    found that none of the programs got rejected by the verifier
    with this change, and that impact is rather minimal to none.
    balancer_kern.o had 13,904 bytes (1,738 insns) xlated and
    7,797 bytes JITed before and after the change. Most complex
    program in bpf_lxc.o had 30,544 bytes (3,817 insns) xlated
    and 18,538 bytes JITed before and after and none of the other
    tail call programs in bpf_lxc.o had any changes either. For
    the older bpf_lxc_opt_-DUNKNOWN.o object we found a small
    increase from 20,616 bytes (2,576 insns) and 12,536 bytes JITed
    before to 20,664 bytes (2,582 insns) and 12,558 bytes JITed
    after the change. Other programs from that object file had
    similar small increase. Both test_l4lb.o had no change and
    remained at 6,544 bytes (817 insns) xlated and 3,401 bytes
    JITed and for test_l4lb_noinline.o constant at 5,080 bytes
    (634 insns) xlated and 3,313 bytes JITed. This can be explained
    in that LLVM typically optimizes stack based pointer arithmetic
    by using K-based operations and that use of dynamic map access
    is not overly frequent. However, in future we may decide to
    optimize the algorithm further under known guarantees from
    branch and value speculation. Latter seems also unclear in
    terms of prediction heuristics that today's CPUs apply as well
    as whether there could be collisions in e.g. the predictor's
    Value History/Pattern Table for triggering out of bounds access,
    thus masking is performed unconditionally at this point but could
    be subject to relaxation later on. We were generally also
    brainstorming various other approaches for mitigation, but the
    blocker was always lack of available registers at runtime and/or
    overhead for runtime tracking of limits belonging to a specific
    pointer. Thus, we found this to be minimally intrusive under
    given constraints.
    
    With that in place, a simple example with sanitized access on
    unprivileged load at post-verification time looks as follows:
    
      # bpftool prog dump xlated id 282
      [...]
      28: (79) r1 = *(u64 *)(r7 +0)
      29: (79) r2 = *(u64 *)(r7 +8)
      30: (57) r1 &= 15
      31: (79) r3 = *(u64 *)(r0 +4608)
      32: (57) r3 &= 1
      33: (47) r3 |= 1
      34: (2d) if r2 > r3 goto pc+19
      35: (b4) (u32) r11 = (u32) 20479  |
      36: (1f) r11 -= r2                | Dynamic sanitation for pointer
      37: (4f) r11 |= r2                | arithmetic with registers
      38: (87) r11 = -r11               | containing bounded or known
      39: (c7) r11 s>>= 63              | scalars in order to prevent
      40: (5f) r11 &= r2                | out of bounds speculation.
      41: (0f) r4 += r11                |
      42: (71) r4 = *(u8 *)(r4 +0)
      43: (6f) r4 <<= r1
      [...]
    
    For the case where the scalar sits in the destination register
    as opposed to the source register, the following code is emitted
    for the above example:
    
      [...]
      16: (b4) (u32) r11 = (u32) 20479
      17: (1f) r11 -= r2
      18: (4f) r11 |= r2
      19: (87) r11 = -r11
      20: (c7) r11 s>>= 63
      21: (5f) r2 &= r11
      22: (0f) r2 += r0
      23: (61) r0 = *(u32 *)(r2 +0)
      [...]
    
    JIT blinding example with non-conflicting use of r10:
    
      [...]
       d5:  je     0x0000000000000106    _
       d7:  mov    0x0(%rax),%edi       |
       da:  mov    $0xf153246,%r10d     | Index load from map value and
       e0:  xor    $0xf153259,%r10      | (const blinded) mask with 0x1f.
       e7:  and    %r10,%rdi            |_
       ea:  mov    $0x2f,%r10d          |
       f0:  sub    %rdi,%r10            | Sanitized addition. Both use r10
       f3:  or     %rdi,%r10            | but do not interfere with each
       f6:  neg    %r10                 | other. (Neither do these instructions
       f9:  sar    $0x3f,%r10           | interfere with the use of ax as temp
       fd:  and    %r10,%rdi            | in interpreter.)
      100:  add    %rax,%rdi            |_
      103:  mov    0x0(%rdi),%eax
     [...]
    
    Tested that it fixes Jann's reproducer, and also checked that test_verifier
    and test_progs suite with interpreter, JIT and JIT with hardening enabled
    on x86-64 and arm64 runs successfully.
    
      [0] Speculose: Analyzing the Security Implications of Speculative
          Execution in CPUs, Giorgi Maisuradze and Christian Rossow,
          https://arxiv.org/pdf/1801.04084.pdf
    
      [1] A Systematic Evaluation of Transient Execution Attacks and
          Defenses, Claudio Canella, Jo Van Bulck, Michael Schwarz,
          Moritz Lipp, Benjamin von Berg, Philipp Ortner, Frank Piessens,
          Dmitry Evtyushkin, Daniel Gruss,
          https://arxiv.org/pdf/1811.05441.pdf
    
    Fixes: b2157399cc98 ("bpf: prevent out-of-bounds speculation")
    Reported-by: Jann Horn <jannh@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae474b62a9165fdc5341bb55283b4a3fc3705ae7
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:27 2019 +0100

    bpf: fix check_map_access smin_value test when pointer contains offset
    
    [ commit b7137c4eab85c1cf3d46acdde90ce1163b28c873 upstream ]
    
    In check_map_access() we probe actual bounds through __check_map_access()
    with offset of reg->smin_value + off for lower bound and offset of
    reg->umax_value + off for the upper bound. However, even though the
    reg->smin_value could have a negative value, the final result of the
    sum with off could be positive when pointer arithmetic with known and
    unknown scalars is combined. In this case we reject the program with
    an error such as "R<x> min value is negative, either use unsigned index
    or do a if (index >=0) check." even though the access itself would be
    fine. Therefore extend the check to probe whether the actual resulting
    reg->smin_value + off is less than zero.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab474ba0d2f67a4d98c384a72f39065ecfeee939
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:26 2019 +0100

    bpf: restrict unknown scalars of mixed signed bounds for unprivileged
    
    [ commit 9d7eceede769f90b66cfa06ad5b357140d5141ed upstream ]
    
    For unknown scalars of mixed signed bounds, meaning their smin_value is
    negative and their smax_value is positive, we need to reject arithmetic
    with pointer to map value. For unprivileged the goal is to mask every
    map pointer arithmetic and this cannot reliably be done when it is
    unknown at verification time whether the scalar value is negative or
    positive. Given this is a corner case, the likelihood of breaking should
    be very small.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2508a491c1a52df946ed965e06d8a5b0125cf281
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:25 2019 +0100

    bpf: restrict stack pointer arithmetic for unprivileged
    
    [ commit e4298d25830a866cc0f427d4bccb858e76715859 upstream ]
    
    Restrict stack pointer arithmetic for unprivileged users in that
    arithmetic itself must not go out of bounds as opposed to the actual
    access later on. Therefore after each adjust_ptr_min_max_vals() with
    a stack pointer as a destination we simulate a check_stack_access()
    of 1 byte on the destination and once that fails the program is
    rejected for unprivileged program loads. This is analog to map
    value pointer arithmetic and needed for masking later on.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ec2af91633fc0b507eb3fe375dcc624a99cef17
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:24 2019 +0100

    bpf: restrict map value pointer arithmetic for unprivileged
    
    [ commit 0d6303db7970e6f56ae700fa07e11eb510cda125 upstream ]
    
    Restrict map value pointer arithmetic for unprivileged users in that
    arithmetic itself must not go out of bounds as opposed to the actual
    access later on. Therefore after each adjust_ptr_min_max_vals() with a
    map value pointer as a destination it will simulate a check_map_access()
    of 1 byte on the destination and once that fails the program is rejected
    for unprivileged program loads. We use this later on for masking any
    pointer arithmetic with the remainder of the map value space. The
    likelihood of breaking any existing real-world unprivileged eBPF
    program is very small for this corner case.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 74d3c0442d9c260bf72d99a554d03200a077c4da
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:23 2019 +0100

    bpf: enable access to ax register also from verifier rewrite
    
    [ commit 9b73bfdd08e73231d6a90ae6db4b46b3fbf56c30 upstream ]
    
    Right now we are using BPF ax register in JIT for constant blinding as
    well as in interpreter as temporary variable. Verifier will not be able
    to use it simply because its use will get overridden from the former in
    bpf_jit_blind_insn(). However, it can be made to work in that blinding
    will be skipped if there is prior use in either source or destination
    register on the instruction. Taking constraints of ax into account, the
    verifier is then open to use it in rewrites under some constraints. Note,
    ax register already has mappings in every eBPF JIT.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bab8056a3537acc097bf02f16219d45aa0842f46
Author: Raju Rangoju <rajur@chelsio.com>
Date:   Thu Jan 3 23:05:31 2019 +0530

    nvmet-rdma: fix null dereference under heavy load
    
    commit 5cbab6303b4791a3e6713dfe2c5fda6a867f9adc upstream.
    
    Under heavy load if we don't have any pre-allocated rsps left, we
    dynamically allocate a rsp, but we are not actually allocating memory
    for nvme_completion (rsp->req.rsp). In such a case, accessing pointer
    fields (req->rsp->status) in nvmet_req_init() will result in crash.
    
    To fix this, allocate the memory for nvme_completion by calling
    nvmet_rdma_alloc_rsp()
    
    Fixes: 8407879c("nvmet-rdma:fix possible bogus dereference under heavy load")
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Raju Rangoju <rajur@chelsio.com>
    Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8134ef8f6431e285bdc2f4be01d7fedd9e386fe1
Author: Israel Rukshin <israelr@mellanox.com>
Date:   Mon Nov 19 10:58:51 2018 +0000

    nvmet-rdma: Add unlikely for response allocated check
    
    commit ad1f824948e4ed886529219cf7cd717d078c630d upstream.
    
    Signed-off-by: Israel Rukshin <israelr@mellanox.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Cc: Raju  Rangoju <rajur@chelsio.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 433303ac92e55585095be37c7272e3beecae8fbf
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:22 2019 +0100

    bpf: move tmp variable into ax register in interpreter
    
    [ commit 144cd91c4c2bced6eb8a7e25e590f6618a11e854 upstream ]
    
    This change moves the on-stack 64 bit tmp variable in ___bpf_prog_run()
    into the hidden ax register. The latter is currently only used in JITs
    for constant blinding as a temporary scratch register, meaning the BPF
    interpreter will never see the use of ax. Therefore it is safe to use
    it for the cases where tmp has been used earlier. This is needed to later
    on allow restricted hidden use of ax in both interpreter and JITs.
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 629b8af182e103042aea3970e9d8e7c0e8dc5d79
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Mon Jan 28 21:23:21 2019 +0100

    bpf: move {prev_,}insn_idx into verifier env
    
    [ commit c08435ec7f2bc8f4109401f696fd55159b4b40cb upstream ]
    
    Move prev_insn_idx and insn_idx from the do_check() function into
    the verifier environment, so they can be read inside the various
    helper functions for handling the instructions. It's easier to put
    this into the environment rather than changing all call-sites only
    to pass it along. insn_idx is useful in particular since this later
    on allows to hold state in env->insn_aux_data[env->insn_idx].
    
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ecb4e06baf40803ac063b54f2e9d88da5e9843f3
Author: Neil Armstrong <narmstrong@baylibre.com>
Date:   Mon Jan 14 16:31:18 2019 +0100

    drm/meson: Fix atomic mode switching regression
    
    commit ce0210c12433031aba3bbacd75f4c02ab77f2004 upstream.
    
    Since commit 2bcd3ecab773 when switching mode from X11 (ubuntu mate for
    example) the display gets blurry, looking like an invalid framebuffer width.
    
    This commit fixed atomic crtc modesetting in a totally wrong way and
    introduced a local unnecessary ->enabled crtc state.
    
    This commit reverts the crctc _begin() and _enable() changes and simply
    adds drm_atomic_helper_commit_tail_rpm as helper.
    
    Reported-by: Tony McKahan <tonymckahan@gmail.com>
    Suggested-by: Daniel Vetter <daniel@ffwll.ch>
    Fixes: 2bcd3ecab773 ("drm/meson: Fixes for drm_crtc_vblank_on/off support")
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    [narmstrong: fixed blank line issue from checkpatch]
    Link: https://patchwork.freedesktop.org/patch/msgid/20190114153118.8024-1-narmstrong@baylibre.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f85be7e0d7a05dc2b649cbf3be01afe403d6899a
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Tue Jan 8 22:55:01 2019 -0500

    vt: invoke notifier on screen size change
    
    commit 0c9b1965faddad7534b6974b5b36c4ad37998f8e upstream.
    
    User space using poll() on /dev/vcs devices are not awaken when a
    screen size change occurs. Let's fix that.
    
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 641b7da5b372eedf8bf26c2062479e2151059936
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Tue Jan 8 22:55:00 2019 -0500

    vt: always call notifier with the console lock held
    
    commit 7e1d226345f89ad5d0216a9092c81386c89b4983 upstream.
    
    Every invocation of notify_write() and notify_update() is performed
    under the console lock, except for one case. Let's fix that.
    
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 082ea9f687d037b96e31fe1d588486663d59e0e2
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Tue Jan 8 22:54:59 2019 -0500

    vt: make vt_console_print() compatible with the unicode screen buffer
    
    commit 6609cff65c5b184ab889880ef5d41189611ea05f upstream.
    
    When kernel messages are printed to the console, they appear blank on
    the unicode screen. This is because vt_console_print() is lacking a call
    to vc_uniscr_putc(). However the later function assumes vc->vc_x is
    always up to date when called, which is not the case here as
    vt_console_print() uses it to mark the beginning of the display update.
    
    This patch reworks (and simplifies) vt_console_print() so that vc->vc_x
    is always valid and keeps the start of display update in a local variable
    instead, which finally allows for adding the missing vc_uniscr_putc()
    call.
    
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44486b29b8764e333012eefa1c671d3a76bce8f7
Author: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Date:   Fri Jan 11 12:20:41 2019 +0100

    can: flexcan: fix NULL pointer exception during bringup
    
    commit a55234dabe1f72cf22f9197980751d37e38ba020 upstream.
    
    Commit cbffaf7aa09e ("can: flexcan: Always use last mailbox for TX")
    introduced a loop letting i run up to (including) ARRAY_SIZE(regs->mb)
    and in the body accessed regs->mb[i] which is an out-of-bounds array
    access that then resulted in an access to an reserved register area.
    
    Later this was changed by commit 0517961ccdf1 ("can: flexcan: Add
    provision for variable payload size") to iterate a bit differently but
    still runs one iteration too much resulting to call
    
            flexcan_get_mb(priv, priv->mb_count)
    
    which results in a WARN_ON and then a NULL pointer exception. This
    only affects devices compatible with "fsl,p1010-flexcan",
    "fsl,imx53-flexcan", "fsl,imx35-flexcan", "fsl,imx25-flexcan",
    "fsl,imx28-flexcan", so newer i.MX SoCs are not affected.
    
    Fixes: cbffaf7aa09e ("can: flexcan: Always use last mailbox for TX")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Cc: linux-stable <stable@vger.kernel.org> # >= 4.20
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5305c33f73db7548ca33191c6cc5ded4ec79ddf9
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Sun Jan 13 19:31:43 2019 +0100

    can: bcm: check timer values before ktime conversion
    
    commit 93171ba6f1deffd82f381d36cb13177872d023f6 upstream.
    
    Kyungtae Kim detected a potential integer overflow in bcm_[rx|tx]_setup()
    when the conversion into ktime multiplies the given value with NSEC_PER_USEC
    (1000).
    
    Reference: https://marc.info/?l=linux-can&m=154732118819828&w=2
    
    Add a check for the given tv_usec, so that the value stays below one second.
    Additionally limit the tv_sec value to a reasonable value for CAN related
    use-cases of 400 days and ensure all values to be positive.
    
    Reported-by: Kyungtae Kim <kt0755@gmail.com>
    Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Cc: linux-stable <stable@vger.kernel.org> # >= 2.6.26
    Tested-by: Kyungtae Kim <kt0755@gmail.com>
    Acked-by: Andre Naujoks <nautsch2@gmail.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0bb30468985cfe5783bfb57a9a1282515c8d37d
Author: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Date:   Wed Dec 19 19:39:58 2018 +0100

    can: dev: __can_get_echo_skb(): fix bogous check for non-existing skb by removing it
    
    commit 7b12c8189a3dc50638e7d53714c88007268d47ef upstream.
    
    This patch revert commit 7da11ba5c506
    ("can: dev: __can_get_echo_skb(): print error message, if trying to echo non existing skb")
    
    After introduction of this change we encountered following new error
    message on various i.MX plattforms (flexcan):
    
    | flexcan 53fc8000.can can0: __can_get_echo_skb: BUG! Trying to echo non
    | existing skb: can_priv::echo_skb[0]
    
    The introduction of the message was a mistake because
    priv->echo_skb[idx] = NULL is a perfectly valid in following case: If
    CAN_RAW_LOOPBACK is disabled (setsockopt) in applications, the pkt_type
    of the tx skb's given to can_put_echo_skb is set to PACKET_LOOPBACK. In
    this case can_put_echo_skb will not set priv->echo_skb[idx]. It is
    therefore kept NULL.
    
    As additional argument for revert: The order of check and usage of idx
    was changed. idx is used to access an array element before checking it's
    boundaries.
    
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Fixes: 7da11ba5c506 ("can: dev: __can_get_echo_skb(): print error message, if trying to echo non existing skb")
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e44876cfc7c0f1f959f57b96d880fe902c4c2db
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Fri Jan 18 14:08:59 2019 +0000

    irqchip/gic-v3-its: Align PCI Multi-MSI allocation on their size
    
    commit 8208d1708b88b412ca97f50a6d951242c88cbbac upstream.
    
    The way we allocate events works fine in most cases, except
    when multiple PCI devices share an ITS-visible DevID, and that
    one of them is trying to use MultiMSI allocation.
    
    In that case, our allocation is not guaranteed to be zero-based
    anymore, and we have to make sure we allocate it on a boundary
    that is compatible with the PCI Multi-MSI constraints.
    
    Fix this by allocating the full region upfront instead of iterating
    over the number of MSIs. MSI-X are always allocated one by one,
    so this shouldn't change anything on that front.
    
    Fixes: b48ac83d6bbc2 ("irqchip: GICv3: ITS: MSI support")
    Cc: stable@vger.kernel.org
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d90c4856d5e842035a45bb1f500de0ae54c03f4
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jan 18 11:49:58 2019 +0100

    net: sun: cassini: Cleanup license conflict
    
    commit 56cb4e5034998b5522a657957321ca64ca2ea0a0 upstream.
    
    The recent addition of SPDX license identifiers to the files in
    drivers/net/ethernet/sun created a licensing conflict.
    
    The cassini driver files contain a proper license notice:
    
      * This program is free software; you can redistribute it and/or
      * modify it under the terms of the GNU General Public License as
      * published by the Free Software Foundation; either version 2 of the
      * License, or (at your option) any later version.
    
    but the SPDX change added:
    
       SPDX-License-Identifier: GPL-2.0
    
    So the file got tagged GPL v2 only while in fact it is licensed under GPL
    v2 or later.
    
    It's nice that people care about the SPDX tags, but they need to be more
    careful about it. Not everything under (the) sun belongs to ...
    
    Fix up the SPDX identifier and remove the boiler plate text as it is
    redundant.
    
    Fixes: c861ef83d771 ("sun: Add SPDX license tags to Sun network drivers")
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Shannon Nelson <shannon.nelson@oracle.com>
    Cc: Zhu Yanjun <yanjun.zhu@oracle.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: netdev@vger.kernel.org
    Cc: stable@vger.kernel.org
    Acked-by: Shannon Nelson <shannon.lee.nelson@gmail.com>
    Reviewed-by: Zhu Yanjun <yanjun.zhu@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2630035274d259e1ac62543f207ceb67d0bff92
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Jan 11 14:33:16 2019 +0100

    posix-cpu-timers: Unbreak timer rearming
    
    commit 93ad0fc088c5b4631f796c995bdd27a082ef33a6 upstream.
    
    The recent commit which prevented a division by 0 issue in the alarm timer
    code broke posix CPU timers as an unwanted side effect.
    
    The reason is that the common rearm code checks for timer->it_interval
    being 0 now. What went unnoticed is that the posix cpu timer setup does not
    initialize timer->it_interval as it stores the interval in CPU timer
    specific storage. The reason for the separate storage is historical as the
    posix CPU timers always had a 64bit nanoseconds representation internally
    while timer->it_interval is type ktime_t which used to be a modified
    timespec representation on 32bit machines.
    
    Instead of reverting the offending commit and fixing the alarmtimer issue
    in the alarmtimer code, store the interval in timer->it_interval at CPU
    timer setup time so the common code check works. This also repairs the
    existing inconistency of the posix CPU timer code which kept a single shot
    timer armed despite of the interval being 0.
    
    The separate storage can be removed in mainline, but that needs to be a
    separate commit as the current one has to be backported to stable kernels.
    
    Fixes: 0e334db6bb4b ("posix-timers: Fix division by zero bug")
    Reported-by: H.J. Lu <hjl.tools@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190111133500.840117406@linutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 75775e211e5fe72eedecbc8873a05fb70b820556
Author: Jan Beulich <JBeulich@suse.com>
Date:   Tue Jan 15 09:58:16 2019 -0700

    x86/entry/64/compat: Fix stack switching for XEN PV
    
    commit fc24d75a7f91837d7918e40719575951820b2b8f upstream.
    
    While in the native case entry into the kernel happens on the trampoline
    stack, PV Xen kernels get entered with the current thread stack right
    away. Hence source and destination stacks are identical in that case,
    and special care is needed.
    
    Other than in sync_regs() the copying done on the INT80 path isn't
    NMI / #MC safe, as either of these events occurring in the middle of the
    stack copying would clobber data on the (source) stack.
    
    There is similar code in interrupt_entry() and nmi(), but there is no fixup
    required because those code paths are unreachable in XEN PV guests.
    
    [ tglx: Sanitized subject, changelog, Fixes tag and stable mail address. Sigh ]
    
    Fixes: 7f2590a110b8 ("x86/entry/64: Use a per-CPU trampoline stack for IDT entries")
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Andy Lutomirski <luto@kernel.org>
    Cc: Peter Anvin <hpa@zytor.com>
    Cc: xen-devel@lists.xenproject.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/5C3E1128020000780020DFAD@prv1-mh.provo.novell.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eec170d830d85d0a9930802b1ad76e0126681073
Author: Daniel Drake <drake@endlessm.com>
Date:   Mon Jan 7 11:40:24 2019 +0800

    x86/kaslr: Fix incorrect i8254 outb() parameters
    
    commit 7e6fc2f50a3197d0e82d1c0e86282976c9e6c8a4 upstream.
    
    The outb() function takes parameters value and port, in that order.  Fix
    the parameters used in the kalsr i8254 fallback code.
    
    Fixes: 5bfce5ef55cb ("x86, kaslr: Provide randomness functions")
    Signed-off-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: linux@endlessm.com
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190107034024.15005-1-drake@endlessm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 940343c76237a1aa6b1f8a1b134dd6480af2b421
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Wed Jan 2 13:56:57 2019 -0800

    x86/selftests/pkeys: Fork() to check for state being preserved
    
    commit e1812933b17be7814f51b6c310c5d1ced7a9a5f5 upstream.
    
    There was a bug where the per-mm pkey state was not being preserved across
    fork() in the child.  fork() is performed in the pkey selftests, but all of
    the pkey activity is performed in the parent.  The child does not perform
    any actions sensitive to pkey state.
    
    To make the test more sensitive to these kinds of bugs, add a fork() where
    the parent exits, and execution continues in the child.
    
    To achieve this let the key exhaustion test not terminate at the first
    allocation failure and fork after 2*NR_PKEYS loops and continue in the
    child.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: peterz@infradead.org
    Cc: mpe@ellerman.id.au
    Cc: will.deacon@arm.com
    Cc: luto@kernel.org
    Cc: jroedel@suse.de
    Cc: stable@vger.kernel.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Joerg Roedel <jroedel@suse.de>
    Link: https://lkml.kernel.org/r/20190102215657.585704B7@viggo.jf.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 992c4f69c496f079ade163525474219e87029d97
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Wed Jan 2 13:56:55 2019 -0800

    x86/pkeys: Properly copy pkey state at fork()
    
    commit a31e184e4f69965c99c04cc5eb8a4920e0c63737 upstream.
    
    Memory protection key behavior should be the same in a child as it was
    in the parent before a fork.  But, there is a bug that resets the
    state in the child at fork instead of preserving it.
    
    The creation of new mm's is a bit convoluted.  At fork(), the code
    does:
    
      1. memcpy() the parent mm to initialize child
      2. mm_init() to initalize some select stuff stuff
      3. dup_mmap() to create true copies that memcpy() did not do right
    
    For pkeys two bits of state need to be preserved across a fork:
    'execute_only_pkey' and 'pkey_allocation_map'.
    
    Those are preserved by the memcpy(), but mm_init() invokes
    init_new_context() which overwrites 'execute_only_pkey' and
    'pkey_allocation_map' with "new" values.
    
    The author of the code erroneously believed that init_new_context is *only*
    called at execve()-time.  But, alas, init_new_context() is used at execve()
    and fork().
    
    The result is that, after a fork(), the child's pkey state ends up looking
    like it does after an execve(), which is totally wrong.  pkeys that are
    already allocated can be allocated again, for instance.
    
    To fix this, add code called by dup_mmap() to copy the pkey state from
    parent to child explicitly.  Also add a comment above init_new_context() to
    make it more clear to the next poor sod what this code is used for.
    
    Fixes: e8c24d3a23a ("x86/pkeys: Allocation/free syscalls")
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: bp@alien8.de
    Cc: hpa@zytor.com
    Cc: peterz@infradead.org
    Cc: mpe@ellerman.id.au
    Cc: will.deacon@arm.com
    Cc: luto@kernel.org
    Cc: jroedel@suse.de
    Cc: stable@vger.kernel.org
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Joerg Roedel <jroedel@suse.de>
    Link: https://lkml.kernel.org/r/20190102215655.7A69518C@viggo.jf.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcc1097e511f7b66e9beba63443408c86b2f3ee2
Author: Tom Roeder <tmroeder@google.com>
Date:   Thu Jan 24 13:48:20 2019 -0800

    kvm: x86/vmx: Use kzalloc for cached_vmcs12
    
    commit 3a33d030daaa7c507e1c12d5adcf828248429593 upstream.
    
    This changes the allocation of cached_vmcs12 to use kzalloc instead of
    kmalloc. This removes the information leak found by Syzkaller (see
    Reported-by) in this case and prevents similar leaks from happening
    based on cached_vmcs12.
    
    It also changes vmx_get_nested_state to copy out the full 4k VMCS12_SIZE
    in copy_to_user rather than only the size of the struct.
    
    Tested: rebuilt against head, booted, and ran the syszkaller repro
      https://syzkaller.appspot.com/text?tag=ReproC&x=174efca3400000 without
      observing any problems.
    
    Reported-by: syzbot+ded1696f6b50b615b630@syzkaller.appspotmail.com
    Fixes: 8fcc4b5923af5de58b80b53a069453b135693304
    Cc: stable@vger.kernel.org
    Signed-off-by: Tom Roeder <tmroeder@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56b6631bd63b59993295babf2fc12d8cfbc6a07e
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Wed Jan 23 09:22:40 2019 -0800

    KVM: x86: WARN_ONCE if sending a PV IPI returns a fatal error
    
    commit de81c2f912ef57917bdc6d63b410c534c3e07982 upstream.
    
    KVM hypercalls return a negative value error code in case of a fatal
    error, e.g. when the hypercall isn't supported or was made with invalid
    parameters.  WARN_ONCE on fatal errors when sending PV IPIs as any such
    error all but guarantees an SMP system will hang due to a missing IPI.
    
    Fixes: aaffcfd1e82d ("KVM: X86: Implement PV IPIs in linux guest")
    Cc: stable@vger.kernel.org
    Cc: Wanpeng Li <wanpengli@tencent.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39493bce6aee92eecaf85863776909fc2967fc45
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Wed Jan 23 09:22:39 2019 -0800

    KVM: x86: Fix PV IPIs for 32-bit KVM host
    
    commit 1ed199a41c70ad7bfaee8b14f78e791fcf43b278 upstream.
    
    The recognition of the KVM_HC_SEND_IPI hypercall was unintentionally
    wrapped in "#ifdef CONFIG_X86_64", causing 32-bit KVM hosts to reject
    any and all PV IPI requests despite advertising the feature.  This
    results in all KVM paravirtualized guests hanging during SMP boot due
    to IPIs never being delivered.
    
    Fixes: 4180bf1b655a ("KVM: X86: Implement "send IPI" hypercall")
    Cc: stable@vger.kernel.org
    Cc: Wanpeng Li <wanpengli@tencent.com>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 87bcdeacd41f1d143288391e475293c8b3a6f244
Author: Alexander Popov <alex.popov@linux.com>
Date:   Mon Jan 21 15:48:40 2019 +0300

    KVM: x86: Fix single-step debugging
    
    commit 5cc244a20b86090c087073c124284381cdf47234 upstream.
    
    The single-step debugging of KVM guests on x86 is broken: if we run
    gdb 'stepi' command at the breakpoint when the guest interrupts are
    enabled, RIP always jumps to native_apic_mem_write(). Then other
    nasty effects follow.
    
    Long investigation showed that on Jun 7, 2017 the
    commit c8401dda2f0a00cd25c0 ("KVM: x86: fix singlestepping over syscall")
    introduced the kvm_run.debug corruption: kvm_vcpu_do_singlestep() can
    be called without X86_EFLAGS_TF set.
    
    Let's fix it. Please consider that for -stable.
    
    Signed-off-by: Alexander Popov <alex.popov@linux.com>
    Cc: stable@vger.kernel.org
    Fixes: c8401dda2f0a00cd25c0 ("KVM: x86: fix singlestepping over syscall")
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 687dd9c6a8943012ec7ed7e9b9d6cb73dd304046
Author: Thor Thayer <thor.thayer@linux.intel.com>
Date:   Tue Jan 22 11:48:04 2019 -0600

    EDAC, altera: Fix S10 persistent register offset
    
    commit 245b6c6558128327d330549b23d09594c46f58df upstream.
    
    Correct the persistent register offset where address and status are
    stored.
    
    Fixes: 08f08bfb7b4c ("EDAC, altera: Merge Stratix10 into the Arria10 SDRAM probe routine")
    Signed-off-by: Thor Thayer <thor.thayer@linux.intel.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: James Morse <james.morse@arm.com>
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: devicetree@vger.kernel.org
    Cc: dinguyen@kernel.org
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Cc: mark.rutland@arm.com
    Cc: robh+dt@kernel.org
    Cc: stable <stable@vger.kernel.org>
    Link: https://lkml.kernel.org/r/1548179287-21760-2-git-send-email-thor.thayer@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a4984cd67541e093d6d82dec282a69eb9cb27857
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Tue Jan 15 12:09:09 2019 -0500

    drm/amdgpu: Add APTX quirk for Lenovo laptop
    
    commit f15f3eb26e8d9d25ea2330ed1273473df2f039df upstream.
    
    Needs ATPX rather than _PR3 for dGPU power control.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=202263
    Reviewed-by: Jim Qu <Jim.Qu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4efd3184d9a63a7923e5c62fa236254f03c6bf8
Author: Milan Broz <gmazyland@gmail.com>
Date:   Wed Jan 9 11:57:14 2019 +0100

    dm crypt: fix parsing of extended IV arguments
    
    commit 1856b9f7bcc8e9bdcccc360aabb56fbd4dd6c565 upstream.
    
    The dm-crypt cipher specification in a mapping table is defined as:
      cipher[:keycount]-chainmode-ivmode[:ivopts]
    or (new crypt API format):
      capi:cipher_api_spec-ivmode[:ivopts]
    
    For ESSIV, the parameter includes hash specification, for example:
    aes-cbc-essiv:sha256
    
    The implementation expected that additional IV option to never include
    another dash '-' character.
    
    But, with SHA3, there are names like sha3-256; so the mapping table
    parser fails:
    
    dmsetup create test --table "0 8 crypt aes-cbc-essiv:sha3-256 9c1185a5c5e9fc54612808977ee8f5b9e 0 /dev/sdb 0"
      or (new crypt API format)
    dmsetup create test --table "0 8 crypt capi:cbc(aes)-essiv:sha3-256 9c1185a5c5e9fc54612808977ee8f5b9e 0 /dev/sdb 0"
    
      device-mapper: crypt: Ignoring unexpected additional cipher options
      device-mapper: table: 253:0: crypt: Error creating IV
      device-mapper: ioctl: error adding target to table
    
    Fix the dm-crypt constructor to ignore additional dash in IV options and
    also remove a bogus warning (that is ignored anyway).
    
    Cc: stable@vger.kernel.org # 4.12+
    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 e723ef4b04c3900b55df9e8d737449f5832edfd0
Author: Joe Thornber <ejt@redhat.com>
Date:   Tue Jan 15 13:27:01 2019 -0500

    dm thin: fix passdown_double_checking_shared_status()
    
    commit d445bd9cec1a850c2100fcf53684c13b3fd934f2 upstream.
    
    Commit 00a0ea33b495 ("dm thin: do not queue freed thin mapping for next
    stage processing") changed process_prepared_discard_passdown_pt1() to
    increment all the blocks being discarded until after the passdown had
    completed to avoid them being prematurely reused.
    
    IO issued to a thin device that breaks sharing with a snapshot, followed
    by a discard issued to snapshot(s) that previously shared the block(s),
    results in passdown_double_checking_shared_status() being called to
    iterate through the blocks double checking their reference count is zero
    and issuing the passdown if so.  So a side effect of commit 00a0ea33b495
    is passdown_double_checking_shared_status() was broken.
    
    Fix this by checking if the block reference count is greater than 1.
    Also, rename dm_pool_block_is_used() to dm_pool_block_is_shared().
    
    Fixes: 00a0ea33b495 ("dm thin: do not queue freed thin mapping for next stage processing")
    Cc: stable@vger.kernel.org # 4.9+
    Reported-by: ryan.p.norwood@gmail.com
    Signed-off-by: Joe Thornber <ejt@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 74df0f0e124f6100382057b36a967a4806399ff6
Author: Marc Gonzalez <marc.w.gonzalez@free.fr>
Date:   Tue Jan 22 18:29:22 2019 +0100

    scsi: ufs: Use explicit access size in ufshcd_dump_regs
    
    commit d67247566450cf89a693307c9bc9f05a32d96cea upstream.
    
    memcpy_fromio() doesn't provide any control over access size.  For example,
    on arm64, it is implemented using readb and readq.  This may trigger a
    synchronous external abort:
    
    [    3.729943] Internal error: synchronous external abort: 96000210 [#1] PREEMPT SMP
    [    3.737000] Modules linked in:
    [    3.744371] CPU: 2 PID: 1 Comm: swapper/0 Tainted: G S                4.20.0-rc4 #16
    [    3.747413] Hardware name: Qualcomm Technologies, Inc. MSM8998 v1 MTP (DT)
    [    3.755295] pstate: 00000005 (nzcv daif -PAN -UAO)
    [    3.761978] pc : __memcpy_fromio+0x68/0x80
    [    3.766718] lr : ufshcd_dump_regs+0x50/0xb0
    [    3.770767] sp : ffff00000807ba00
    [    3.774830] x29: ffff00000807ba00 x28: 00000000fffffffb
    [    3.778344] x27: ffff0000089db068 x26: ffff8000f6e58000
    [    3.783728] x25: 000000000000000e x24: 0000000000000800
    [    3.789023] x23: ffff8000f6e587c8 x22: 0000000000000800
    [    3.794319] x21: ffff000008908368 x20: ffff8000f6e1ab80
    [    3.799615] x19: 000000000000006c x18: ffffffffffffffff
    [    3.804910] x17: 0000000000000000 x16: 0000000000000000
    [    3.810206] x15: ffff000009199648 x14: ffff000089244187
    [    3.815502] x13: ffff000009244195 x12: ffff0000091ab000
    [    3.820797] x11: 0000000005f5e0ff x10: ffff0000091998a0
    [    3.826093] x9 : 0000000000000000 x8 : ffff8000f6e1ac00
    [    3.831389] x7 : 0000000000000000 x6 : 0000000000000068
    [    3.836676] x5 : ffff8000f6e1abe8 x4 : 0000000000000000
    [    3.841971] x3 : ffff00000928c868 x2 : ffff8000f6e1abec
    [    3.847267] x1 : ffff00000928c868 x0 : ffff8000f6e1abe8
    [    3.852567] Process swapper/0 (pid: 1, stack limit = 0x(____ptrval____))
    [    3.857900] Call trace:
    [    3.864473]  __memcpy_fromio+0x68/0x80
    [    3.866683]  ufs_qcom_dump_dbg_regs+0x1c0/0x370
    [    3.870522]  ufshcd_print_host_regs+0x168/0x190
    [    3.874946]  ufshcd_init+0xd4c/0xde0
    [    3.879459]  ufshcd_pltfrm_init+0x3c8/0x550
    [    3.883264]  ufs_qcom_probe+0x24/0x60
    [    3.887188]  platform_drv_probe+0x50/0xa0
    
    Assuming aligned 32-bit registers, let's use readl, after making sure
    that 'offset' and 'len' are indeed multiples of 4.
    
    Fixes: ba80917d9932d ("scsi: ufs: ufshcd_dump_regs to use memcpy_fromio")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr>
    Acked-by: Tomas Winkler <tomas.winkler@intel.com>
    Reviewed-by: Jeffrey Hugo <jhugo@codeaurora.org>
    Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Tested-by: Evan Green <evgreen@chromium.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d7e6d4715c89106bd665986c93b6f1955209620
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Sat Jan 19 10:55:04 2019 -0800

    acpi/nfit: Fix command-supported detection
    
    commit 11189c1089da413aa4b5fd6be4c4d47c78968819 upstream.
    
    The _DSM function number validation only happens to succeed when the
    generic Linux command number translation corresponds with a
    DSM-family-specific function number. This breaks NVDIMM-N
    implementations that correctly implement _LSR, _LSW, and _LSI, but do
    not happen to publish support for DSM function numbers 4, 5, and 6.
    
    Recall that the support for _LS{I,R,W} family of methods results in the
    DIMM being marked as supporting those command numbers at
    acpi_nfit_register_dimms() time. The DSM function mask is only used for
    ND_CMD_CALL support of non-NVDIMM_FAMILY_INTEL devices.
    
    Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command...")
    Cc: <stable@vger.kernel.org>
    Link: https://github.com/pmem/ndctl/issues/78
    Reported-by: Sujith Pandel <sujith_pandel@dell.com>
    Tested-by: Sujith Pandel <sujith_pandel@dell.com>
    Reviewed-by: Vishal Verma <vishal.l.verma@intel.com>
    Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 101485f038cf4b15c2bb9b93fbe22c81654a1b02
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Mon Jan 14 14:07:19 2019 -0800

    acpi/nfit: Block function zero DSMs
    
    commit 5e9e38d0db1d29efed1dd4cf9a70115d33521be7 upstream.
    
    In preparation for using function number 0 as an error value, prevent it
    from being considered a valid function value by acpi_nfit_ctl().
    
    Cc: <stable@vger.kernel.org>
    Cc: stuart hayes <stuart.w.hayes@gmail.com>
    Fixes: e02fb7264d8a ("nfit: add Microsoft NVDIMM DSM command set...")
    Reported-by: Jeff Moyer <jmoyer@redhat.com>
    Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50b4046732dc0ea0a55161cd993b8847e3d64f3f
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Mon Jan 14 13:54:55 2019 -0800

    Input: uinput - fix undefined behavior in uinput_validate_absinfo()
    
    commit d77651a227f8920dd7ec179b84e400cce844eeb3 upstream.
    
    An integer overflow may arise in uinput_validate_absinfo() if "max - min"
    can't be represented by an "int". We should check for overflow before
    trying to use the result.
    
    Reported-by: Kyungtae Kim <kt0755@gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16669bbbd650b48a13c76885c7a53f8a61865c66
Author: Deepa Dinamani <deepa.kernel@gmail.com>
Date:   Sun Jan 13 22:28:05 2019 -0800

    Input: input_event - provide override for sparc64
    
    commit 2e746942ebacf1565caa72cf980745e5ce297c48 upstream.
    
    The usec part of the timeval is defined as
    __kernel_suseconds_t    tv_usec; /* microseconds */
    
    Arnd noticed that sparc64 is the only architecture that defines
    __kernel_suseconds_t as int rather than long.
    
    This breaks the current y2038 fix for kernel as we only access and define
    the timeval struct for non-kernel use cases.  But, this was hidden by an
    another typo in the use of __KERNEL__ qualifier.
    
    Fix the typo, and provide an override for sparc64.
    
    Fixes: 152194fe9c3f ("Input: extend usable life of event timestamps to 2106 on 32 bit systems")
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2418ff5fae77e98a36eac7927a213fc6ca15b0a8
Author: Tom Panfil <tom@steelseries.com>
Date:   Fri Jan 11 17:49:40 2019 -0800

    Input: xpad - add support for SteelSeries Stratus Duo
    
    commit fe2bfd0d40c935763812973ce15f5764f1c12833 upstream.
    
    Add support for the SteelSeries Stratus Duo, a wireless Xbox 360
    controller. The Stratus Duo ships with a USB dongle to enable wireless
    connectivity, but it can also function as a wired controller by connecting
    it directly to a PC via USB, hence the need for two USD PIDs. 0x1430 is the
    dongle, and 0x1431 is the controller.
    
    Signed-off-by: Tom Panfil <tom@steelseries.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 95aacb7a18d8614a8e34d255bba123759fd11066
Author: Ronnie Sahlberg <lsahlber@redhat.com>
Date:   Wed Jan 23 16:20:38 2019 +1000

    smb3: add credits we receive from oplock/break PDUs
    
    commit 2e5700bdde438ed708b36d8acd0398dc73cbf759 upstream.
    
    Otherwise we gradually leak credits leading to potential
    hung session.
    
    Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
    CC: Stable <stable@vger.kernel.org>
    Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6cd821848b9ee481480c34834ce59e35ba5d65fd
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Fri Jan 18 17:25:36 2019 -0800

    CIFS: Do not reconnect TCP session in add_credits()
    
    commit ef68e831840c40c7d01b328b3c0f5d8c4796c232 upstream.
    
    When executing add_credits() we currently call cifs_reconnect()
    if the number of credits is zero and there are no requests in
    flight. In this case we may call cifs_reconnect() recursively
    twice and cause memory corruption given the following sequence
    of functions:
    
    mid1.callback() -> add_credits() -> cifs_reconnect() ->
    -> mid2.callback() -> add_credits() -> cifs_reconnect().
    
    Fix this by avoiding to call cifs_reconnect() in add_credits()
    and checking for zero credits in the demultiplex thread.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 207dea8d8369d44d30ec91b26ca438b6b5453710
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Fri Jan 18 15:38:11 2019 -0800

    CIFS: Fix credit calculation for encrypted reads with errors
    
    commit ec678eae746dd25766a61c4095e2b649d3b20b09 upstream.
    
    We do need to account for credits received in error responses
    to read requests on encrypted sessions.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4caf43f9376c751a59f3fe11b7f951c0d1a39feb
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Jan 17 15:29:26 2019 -0800

    CIFS: Fix credits calculations for reads with errors
    
    commit 8004c78c68e894e4fd5ac3c22cc22eb7dc24cabc upstream.
    
    Currently we mark MID as malformed if we get an error from server
    in a read response. This leads to not properly processing credits
    in the readv callback. Fix this by marking such a response as
    normal received response and process it appropriately.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 527a2de063f1db4c33c0bf4da5fefa76a650bf3e
Author: Pavel Shilovsky <pshilov@microsoft.com>
Date:   Thu Jan 17 08:21:24 2019 -0800

    CIFS: Fix possible hang during async MTU reads and writes
    
    commit acc58d0bab55a50e02c25f00bd6a210ee121595f upstream.
    
    When doing MTU i/o we need to leave some credits for
    possible reopen requests and other operations happening
    in parallel. Currently we leave 1 credit which is not
    enough even for reopen only: we need at least 2 credits
    if durable handle reconnect fails. Also there may be
    other operations at the same time including compounding
    ones which require 3 credits at a time each. Fix this
    by leaving 8 credits which is big enough to cover most
    scenarios.
    
    Was able to reproduce this when server was configured
    to give out fewer credits than usual.
    
    The proper fix would be to reconnect a file handle first
    and then obtain credits for an MTU request but this leads
    to bigger code changes and should happen in other patches.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f42d170e5fc3584f2e41aff13d13fe177656f68
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Thu Jan 10 16:33:55 2019 -0500

    vgacon: unconfuse vc_origin when using soft scrollback
    
    commit bfd8d8fe98b8792f362cd210a7873969f8d2fc04 upstream.
    
    When CONFIG_VGACON_SOFT_SCROLLBACK is selected, the VGA display memory
    index and vc_visible_origin don't change when scrollback is activated.
    The actual screen content is saved away and the scrollbackdata is copied
    over it. However the vt code, and /dev/vcs devices in particular, still
    expect vc_origin to always point at the actual screen content not the
    displayed scrollback content.
    
    So adjust vc_origin to point at the saved screen content when scrollback
    is active and set it back to vc_visible_origin when restoring the screen.
    
    This fixes /dev/vcsa<n> that return scrollback content when they
    shouldn't (onli /dev/vcsa without a number should), and also fixes
    /dev/vcsu that should return scrollback content when scrollback is
    active but currently doesn't.
    
    An unnecessary call to vga_set_mem_top() is also removed.
    
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Cc: stable@vger.kernel.org # v4.19+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e66208d9ec99289325f84cc13b37feaf5fc163c
Author: Dexuan Cui <decui@microsoft.com>
Date:   Mon Dec 17 20:16:09 2018 +0000

    Drivers: hv: vmbus: Check for ring when getting debug info
    
    commit ba50bf1ce9a51fc97db58b96d01306aa70bc3979 upstream.
    
    fc96df16a1ce is good and can already fix the "return stack garbage" issue,
    but let's also improve hv_ringbuffer_get_debuginfo(), which would silently
    return stack garbage, if people forget to check channel->state or
    ring_info->ring_buffer, when using the function in the future.
    
    Having an error check in the function would eliminate the potential risk.
    
    Add a Fixes tag to indicate the patch depdendency.
    
    Fixes: fc96df16a1ce ("Drivers: hv: vmbus: Return -EINVAL for the sys files for unopened channels")
    Cc: stable@vger.kernel.org
    Cc: K. Y. Srinivasan <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdc5dc5b718a263ec52d4fc4f285788c3ad80f09
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Jan 4 15:19:42 2019 +0100

    hv_balloon: avoid touching uninitialized struct page during tail onlining
    
    commit da8ced360ca8ad72d8f41f5c8fcd5b0e63e1555f upstream.
    
    Hyper-V memory hotplug protocol has 2M granularity and in Linux x86 we use
    128M. To deal with it we implement partial section onlining by registering
    custom page onlining callback (hv_online_page()). Later, when more memory
    arrives we try to online the 'tail' (see hv_bring_pgs_online()).
    
    It was found that in some cases this 'tail' onlining causes issues:
    
     BUG: Bad page state in process kworker/0:2  pfn:109e3a
     page:ffffe08344278e80 count:0 mapcount:1 mapping:0000000000000000 index:0x0
     flags: 0xfffff80000000()
     raw: 000fffff80000000 dead000000000100 dead000000000200 0000000000000000
     raw: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
     page dumped because: nonzero mapcount
     ...
     Workqueue: events hot_add_req [hv_balloon]
     Call Trace:
      dump_stack+0x5c/0x80
      bad_page.cold.112+0x7f/0xb2
      free_pcppages_bulk+0x4b8/0x690
      free_unref_page+0x54/0x70
      hv_page_online_one+0x5c/0x80 [hv_balloon]
      hot_add_req.cold.24+0x182/0x835 [hv_balloon]
      ...
    
    Turns out that we now have deferred struct page initialization for memory
    hotplug so e.g. memory_block_action() in drivers/base/memory.c does
    pages_correctly_probed() check and in that check it avoids inspecting
    struct pages and checks sections instead. But in Hyper-V balloon driver we
    do PageReserved(pfn_to_page()) check and this is now wrong.
    
    Switch to checking online_section_nr() instead.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: stable@kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aefa51adb3f19be27b0a251833c2105e96058d0d
Author: Paul Fulghum <paulkf@microgate.com>
Date:   Tue Jan 1 12:28:53 2019 -0800

    tty/n_hdlc: fix __might_sleep warning
    
    commit fc01d8c61ce02c034e67378cd3e645734bc18c8c upstream.
    
    Fix __might_sleep warning[1] in tty/n_hdlc.c read due to copy_to_user
    call while current is TASK_INTERRUPTIBLE.  This is a false positive
    since the code path does not depend on current state remaining
    TASK_INTERRUPTIBLE.  The loop breaks out and sets TASK_RUNNING after
    calling copy_to_user.
    
    This patch supresses the warning by setting TASK_RUNNING before calling
    copy_to_user.
    
    [1] https://syzkaller.appspot.com/bug?id=17d5de7f1fcab794cb8c40032f893f52de899324
    
    Signed-off-by: Paul Fulghum <paulkf@microgate.com>
    Reported-by: syzbot <syzbot+c244af085a0159d22879@syzkaller.appspotmail.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25c75e9a859323c1dcf15f766e77abdae9e04d40
Author: Samir Virmani <samir@embedur.com>
Date:   Wed Jan 16 10:28:07 2019 -0800

    uart: Fix crash in uart_write and uart_put_char
    
    commit aff9cf5955185d1f183227e46c5f8673fa483813 upstream.
    
    We were experiencing a crash similar to the one reported as part of
    commit:a5ba1d95e46e ("uart: fix race between uart_put_char() and
    uart_shutdown()") in our testbed as well. We continue to observe the same
    crash after integrating the commit a5ba1d95e46e ("uart: fix race between
    uart_put_char() and uart_shutdown()")
    
    On reviewing the change, the port lock should be taken prior to checking for
    if (!circ->buf) in fn. __uart_put_char and other fns. that update the buffer
    uart_state->xmit.
    
    Traceback:
    
    [11/27/2018 06:24:32.4870] Unable to handle kernel NULL pointer dereference
                               at virtual address 0000003b
    
    [11/27/2018 06:24:32.4950] PC is at memcpy+0x48/0x180
    [11/27/2018 06:24:32.4950] LR is at uart_write+0x74/0x120
    [11/27/2018 06:24:32.4950] pc : [<ffffffc0002e6808>]
                               lr : [<ffffffc0003747cc>] pstate: 000001c5
    [11/27/2018 06:24:32.4950] sp : ffffffc076433d30
    [11/27/2018 06:24:32.4950] x29: ffffffc076433d30 x28: 0000000000000140
    [11/27/2018 06:24:32.4950] x27: ffffffc0009b9d5e x26: ffffffc07ce36580
    [11/27/2018 06:24:32.4950] x25: 0000000000000000 x24: 0000000000000140
    [11/27/2018 06:24:32.4950] x23: ffffffc000891200 x22: ffffffc01fc34000
    [11/27/2018 06:24:32.4950] x21: 0000000000000fff x20: 0000000000000076
    [11/27/2018 06:24:32.4950] x19: 0000000000000076 x18: 0000000000000000
    [11/27/2018 06:24:32.4950] x17: 000000000047cf08 x16: ffffffc000099e68
    [11/27/2018 06:24:32.4950] x15: 0000000000000018 x14: 776d726966205948
    [11/27/2018 06:24:32.4950] x13: 50203a6c6974755f x12: 74647075205d3333
    [11/27/2018 06:24:32.4950] x11: 3a35323a36203831 x10: 30322f37322f3131
    [11/27/2018 06:24:32.4950] x9 : 5b205d303638342e x8 : 746164206f742070
    [11/27/2018 06:24:32.4950] x7 : 7520736920657261 x6 : 000000000000003b
    [11/27/2018 06:24:32.4950] x5 : 000000000000817a x4 : 0000000000000008
    [11/27/2018 06:24:32.4950] x3 : 2f37322f31312a5b x2 : 000000000000006e
    [11/27/2018 06:24:32.4950] x1 : ffffffc0009b9cf0 x0 : 000000000000003b
    
    [11/27/2018 06:24:32.4950] CPU2: stopping
    [11/27/2018 06:24:32.4950] CPU: 2 PID: 0 Comm: swapper/2 Tainted: P      D    O    4.1.51 #3
    [11/27/2018 06:24:32.4950] Hardware name: Broadcom-v8A (DT)
    [11/27/2018 06:24:32.4950] Call trace:
    [11/27/2018 06:24:32.4950] [<ffffffc0000883b8>] dump_backtrace+0x0/0x150
    [11/27/2018 06:24:32.4950] [<ffffffc00008851c>] show_stack+0x14/0x20
    [11/27/2018 06:24:32.4950] [<ffffffc0005ee810>] dump_stack+0x90/0xb0
    [11/27/2018 06:24:32.4950] [<ffffffc00008e844>] handle_IPI+0x18c/0x1a0
    [11/27/2018 06:24:32.4950] [<ffffffc000080c68>] gic_handle_irq+0x88/0x90
    
    Fixes: a5ba1d95e46e ("uart: fix race between uart_put_char() and uart_shutdown()")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Samir Virmani <samir@embedur.com>
    Acked-by: Tycho Andersen <tycho@tycho.ws>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcbf6a13146c7f1b58feb07f23c6edf80f655e2f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Jan 20 10:46:58 2019 +0100

    tty: Handle problem if line discipline does not have receive_buf
    
    commit 27cfb3a53be46a54ec5e0bd04e51995b74c90343 upstream.
    
    Some tty line disciplines do not have a receive buf callback, so
    properly check for that before calling it.  If they do not have this
    callback, just eat the character quietly, as we can't fail this call.
    
    Reported-by: Jann Horn <jannh@google.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65295fb9335266472e76cd8155eebaf1f1967489
Author: Michael Straube <straube.linux@gmail.com>
Date:   Mon Jan 7 18:28:58 2019 +0100

    staging: rtl8188eu: Add device code for D-Link DWA-121 rev B1
    
    commit 5f74a8cbb38d10615ed46bc3e37d9a4c9af8045a upstream.
    
    This device was added to the stand-alone driver on github.
    Add it to the staging driver as well.
    
    Link: https://github.com/lwfinger/rtl8188eu/commit/a0619a07cd1e
    Signed-off-by: Michael Straube <straube.linux@gmail.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c2088e9bb17bebcad7f2bc5adac552dd7fe80a9
Author: Remi Pommarel <repk@triplefau.lt>
Date:   Fri Jan 11 00:01:35 2019 +0100

    mmc: meson-gx: Free irq in release() callback
    
    commit bb364890323cca6e43f13e86d190ebf34a7d8cea upstream.
    
    Because the irq was requested through device managed resources API
    (devm_request_threaded_irq()) it was freed after meson_mmc_remove()
    completion, thus after mmc_free_host() has reclaimed meson_host memory.
    As this irq is IRQF_SHARED, while using CONFIG_DEBUG_SHIRQ, its handler
    get called by free_irq(). So meson_mmc_irq() was called after the
    meson_host memory reclamation and was using invalid memory.
    
    We ended up with the following scenario:
    device_release_driver()
            meson_mmc_remove()
                    mmc_free_host() /* Freeing host memory */
            ...
            devres_release_all()
                    devm_irq_release()
                            __free_irq()
                                    meson_mmc_irq() /* Uses freed memory */
    
    To avoid this, the irq is released in meson_mmc_remove() and in
    mseon_mmc_probe() error path before mmc_free_host() gets called.
    
    Reported-by: Elie Roudninski <xademax@gmail.com>
    Signed-off-by: Remi Pommarel <repk@triplefau.lt>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f72f790e59ce1a76e0a16e6f4668d63ce225d63
Author: Liming Sun <lsun@mellanox.com>
Date:   Fri Jan 18 13:12:06 2019 -0500

    mmc: dw_mmc-bluefield: : Fix the license information
    
    commit f3716b8ae9347797b73896725f192c3a7b0069b5 upstream.
    
    The SPDX license identifier and the boiler plate text are
    contradicting. Only the SPDX license identifier is needed. The
    other one is removed.
    
    Fixes: 86958dcc5ad7 ("mmc: dw_mmc-bluefield: Add driver extension")
    Cc: stable@vger.kernel.org
    Reviewed-by: David Woods <dwoods@mellanox.com>
    Signed-off-by: Liming Sun <lsun@mellanox.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eec03573cafd5b15c1a2c6de0aea2ee161c7a6c2
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Sun Dec 23 21:59:17 2018 +0100

    mmc: sdhci-iproc: handle mmc_of_parse() errors during probe
    
    commit 2bd44dadd5bfb4135162322fd0b45a174d4ad5bf upstream.
    
    We need to handle mmc_of_parse() errors during probe.
    
    This finally fixes the wifi regression on Raspberry Pi 3 series.
    In error case the wifi chip was permanently in reset because of
    the power sequence depending on the deferred probe of the GPIO expander.
    
    Fixes: b580c52d58d9 ("mmc: sdhci-iproc: add IPROC SDHCI driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bd8e01efb423438bd02c84e572025e67a556a93
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Jan 9 13:02:36 2019 -0600

    char/mwave: fix potential Spectre v1 vulnerability
    
    commit 701956d4018e5d5438570e39e8bda47edd32c489 upstream.
    
    ipcnum is indirectly controlled by user-space, hence leading to
    a potential exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
    drivers/char/mwave/mwavedd.c:299 mwave_ioctl() warn: potential spectre issue 'pDrvData->IPCs' [w] (local cap)
    
    Fix this by sanitizing ipcnum before using it to index pDrvData->IPCs.
    
    Notice that given that speculation windows are large, the policy is
    to kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fa50a998f17ee4fb1650b013d8b529e010ef8b3
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Jan 16 10:46:16 2019 -0600

    misc: ibmvsm: Fix potential NULL pointer dereference
    
    commit e25df7812c91f62581301f9a7ac102acf92e4937 upstream.
    
    There is a potential NULL pointer dereference in case kzalloc()
    fails and returns NULL.
    
    Fix this by adding a NULL check on *session*
    
    Also, update the function header with information about the
    expected return on failure and remove unnecessary variable rc.
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: 0eca353e7ae7 ("misc: IBM Virtual Management Channel Driver (VMC)")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae108579558ed637b8634a31b4e5af2e64e9d32d
Author: David Hildenbrand <david@redhat.com>
Date:   Fri Jan 11 15:18:22 2019 +0100

    s390/smp: Fix calling smp_call_ipl_cpu() from ipl CPU
    
    commit 60f1bf29c0b2519989927cae640cd1f50f59dc7f upstream.
    
    When calling smp_call_ipl_cpu() from the IPL CPU, we will try to read
    from pcpu_devices->lowcore. However, due to prefixing, that will result
    in reading from absolute address 0 on that CPU. We have to go via the
    actual lowcore instead.
    
    This means that right now, we will read lc->nodat_stack == 0 and
    therfore work on a very wrong stack.
    
    This BUG essentially broke rebooting under QEMU TCG (which will report
    a low address protection exception). And checking under KVM, it is
    also broken under KVM. With 1 VCPU it can be easily triggered.
    
    :/# echo 1 > /proc/sys/kernel/sysrq
    :/# echo b > /proc/sysrq-trigger
    [   28.476745] sysrq: SysRq : Resetting
    [   28.476793] Kernel stack overflow.
    [   28.476817] CPU: 0 PID: 424 Comm: sh Not tainted 5.0.0-rc1+ #13
    [   28.476820] Hardware name: IBM 2964 NE1 716 (KVM/Linux)
    [   28.476826] Krnl PSW : 0400c00180000000 0000000000115c0c (pcpu_delegate+0x12c/0x140)
    [   28.476861]            R:0 T:1 IO:0 EX:0 Key:0 M:0 W:0 P:0 AS:3 CC:0 PM:0 RI:0 EA:3
    [   28.476863] Krnl GPRS: ffffffffffffffff 0000000000000000 000000000010dff8 0000000000000000
    [   28.476864]            0000000000000000 0000000000000000 0000000000ab7090 000003e0006efbf0
    [   28.476864]            000000000010dff8 0000000000000000 0000000000000000 0000000000000000
    [   28.476865]            000000007fffc000 0000000000730408 000003e0006efc58 0000000000000000
    [   28.476887] Krnl Code: 0000000000115bfe: 4170f000            la      %r7,0(%r15)
    [   28.476887]            0000000000115c02: 41f0a000            la      %r15,0(%r10)
    [   28.476887]           #0000000000115c06: e370f0980024        stg     %r7,152(%r15)
    [   28.476887]           >0000000000115c0c: c0e5fffff86e        brasl   %r14,114ce8
    [   28.476887]            0000000000115c12: 41f07000            la      %r15,0(%r7)
    [   28.476887]            0000000000115c16: a7f4ffa8            brc     15,115b66
    [   28.476887]            0000000000115c1a: 0707                bcr     0,%r7
    [   28.476887]            0000000000115c1c: 0707                bcr     0,%r7
    [   28.476901] Call Trace:
    [   28.476902] Last Breaking-Event-Address:
    [   28.476920]  [<0000000000a01c4a>] arch_call_rest_init+0x22/0x80
    [   28.476927] Kernel panic - not syncing: Corrupt kernel stack, can't continue.
    [   28.476930] CPU: 0 PID: 424 Comm: sh Not tainted 5.0.0-rc1+ #13
    [   28.476932] Hardware name: IBM 2964 NE1 716 (KVM/Linux)
    [   28.476932] Call Trace:
    
    Fixes: 2f859d0dad81 ("s390/smp: reduce size of struct pcpu")
    Cc: stable@vger.kernel.org # 4.0+
    Reported-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 90814f0a3e4cd27e7dc765a768e38789f9d367fe
Author: Gerald Schaefer <gerald.schaefer@de.ibm.com>
Date:   Wed Jan 9 13:00:03 2019 +0100

    s390/smp: fix CPU hotplug deadlock with CPU rescan
    
    commit b7cb707c373094ce4008d4a6ac9b6b366ec52da5 upstream.
    
    smp_rescan_cpus() is called without the device_hotplug_lock, which can lead
    to a dedlock when a new CPU is found and immediately set online by a udev
    rule.
    
    This was observed on an older kernel version, where the cpu_hotplug_begin()
    loop was still present, and it resulted in hanging chcpu and systemd-udev
    processes. This specific deadlock will not show on current kernels. However,
    there may be other possible deadlocks, and since smp_rescan_cpus() can still
    trigger a CPU hotplug operation, the device_hotplug_lock should be held.
    
    For reference, this was the deadlock with the old cpu_hotplug_begin() loop:
    
            chcpu (rescan)                       systemd-udevd
    
     echo 1 > /sys/../rescan
     -> smp_rescan_cpus()
     -> (*) get_online_cpus()
        (increases refcount)
     -> smp_add_present_cpu()
        (new CPU found)
     -> register_cpu()
     -> device_add()
     -> udev "add" event triggered -----------> udev rule sets CPU online
                                             -> echo 1 > /sys/.../online
                                             -> lock_device_hotplug_sysfs()
                                                (this is missing in rescan path)
                                             -> device_online()
                                             -> (**) device_lock(new CPU dev)
                                             -> cpu_up()
                                             -> cpu_hotplug_begin()
                                                (loops until refcount == 0)
                                                -> deadlock with (*)
     -> bus_probe_device()
     -> device_attach()
     -> device_lock(new CPU dev)
        -> deadlock with (**)
    
    Fix this by taking the device_hotplug_lock in the CPU rescan path.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65c0011c88c362dc609d138a8a561da193db0cf6
Author: Christian Borntraeger <borntraeger@de.ibm.com>
Date:   Fri Nov 9 09:21:47 2018 +0100

    s390/early: improve machine detection
    
    commit 03aa047ef2db4985e444af6ee1c1dd084ad9fb4c upstream.
    
    Right now the early machine detection code check stsi 3.2.2 for "KVM"
    and set MACHINE_IS_VM if this is different. As the console detection
    uses diagnose 8 if MACHINE_IS_VM returns true this will crash Linux
    early for any non z/VM system that sets a different value than KVM.
    So instead of assuming z/VM, do not set any of MACHINE_IS_LPAR,
    MACHINE_IS_VM, or MACHINE_IS_KVM.
    
    CC: stable@vger.kernel.org
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94b2a080827296cade0c5a02694122ae34740506
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Tue Jan 8 12:44:57 2019 +0100

    s390/mm: always force a load of the primary ASCE on context switch
    
    commit a38662084c8bdb829ff486468c7ea801c13fcc34 upstream.
    
    The ASCE of an mm_struct can be modified after a task has been created,
    e.g. via crst_table_downgrade for a compat process. The active_mm logic
    to avoid the switch_mm call if the next task is a kernel thread can
    lead to a situation where switch_mm is called where 'prev == next' is
    true but 'prev->context.asce == next->context.asce' is not.
    
    This can lead to a situation where a CPU uses the outdated ASCE to run
    a task. The result can be a crash, endless loops and really subtle
    problem due to TLBs being created with an invalid ASCE.
    
    Cc: stable@kernel.org # v3.15+
    Fixes: 53e857f30867 ("s390/mm,tlb: race of lazy TLB flush vs. recreation")
    Reported-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7e56986361dcd3d6f5f6871ece17a011789bcd8
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Wed Jan 2 13:43:22 2019 +0100

    s390/vdso: correct vdso mapping for compat tasks
    
    commit 190f056fba230abee80712eb810939ef9a8c462f upstream.
    
    While "s390/vdso: avoid 64-bit vdso mapping for compat tasks" fixed
    64-bit vdso mapping for compat tasks under gdb it introduced another
    problem. "compat_mm" flag is not inherited during fork and when
    31-bit process forks a child (but does not perform exec) it ends up
    with 64-bit vdso. To address that, init_new_context (which is called
    during fork and exec) now initialize compat_mm based on thread TIF_31BIT
    flag. Later compat_mm is adjusted in arch_setup_additional_pages, which
    is called during exec.
    
    Fixes: d1befa65823e ("s390/vdso: avoid 64-bit vdso mapping for compat tasks")
    Reported-by: Stefan Liebler <stli@linux.ibm.com>
    Reviewed-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: <stable@vger.kernel.org> # v4.20+
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6348dd38b7d74de0cb00e5f7c05cbbe8b914a70
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Mon Dec 17 12:54:23 2018 +0300

    ARC: perf: map generic branches to correct hardware condition
    
    commit 3affbf0e154ee351add6fcc254c59c3f3947fa8f upstream.
    
    So far we've mapped branches to "ijmp" which also counts conditional
    branches NOT taken. This makes us different from other architectures
    such as ARM which seem to be counting only taken branches.
    
    So use "ijmptak" hardware condition which only counts (all jump
    instructions that are taken)
    
    'ijmptak' event is available on both ARCompact and ARCv2 ISA based
    cores.
    
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [vgupta: reworked changelog]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f978c1e4a13e0b71c1b26ee8554e054db55b3627
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Wed Dec 19 19:16:16 2018 +0300

    ARC: adjust memblock_reserve of kernel memory
    
    commit a3010a0465383300f909f62b8a83f83ffa7b2517 upstream.
    
    In setup_arch_memory we reserve the memory area wherein the kernel
    is located. Current implementation may reserve more memory than
    it actually required in case of CONFIG_LINUX_LINK_BASE is not
    equal to CONFIG_LINUX_RAM_BASE. This happens because we calculate
    start of the reserved region relatively to the CONFIG_LINUX_RAM_BASE
    and end of the region relatively to the CONFIG_LINUX_RAM_BASE.
    
    For example in case of HSDK board we wasted 256MiB of physical memory:
    ------------------->8------------------------------
    Memory: 770416K/1048576K available (5496K kernel code,
        240K rwdata, 1064K rodata, 2200K init, 275K bss,
        278160K reserved, 0K cma-reserved)
    ------------------->8------------------------------
    
    Fix that.
    
    Fixes: 9ed68785f7f2b ("ARC: mm: Decouple RAM base address from kernel link addr")
    Cc: stable@vger.kernel.org      #4.14+
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f08ffa8e8bc3c14b7f661cff4feb2240c117efb6
Author: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Date:   Mon Jan 14 18:16:48 2019 +0300

    ARCv2: lib: memeset: fix doing prefetchw outside of buffer
    
    commit e6a72b7daeeb521753803550f0ed711152bb2555 upstream.
    
    ARCv2 optimized memset uses PREFETCHW instruction for prefetching the
    next cache line but doesn't ensure that the line is not past the end of
    the buffer. PRETECHW changes the line ownership and marks it dirty,
    which can cause issues in SMP config when next line was already owned by
    other core. Fix the issue by avoiding the PREFETCHW
    
    Some more details:
    
    The current code has 3 logical loops (ignroing the unaligned part)
      (a) Big loop for doing aligned 64 bytes per iteration with PREALLOC
      (b) Loop for 32 x 2 bytes with PREFETCHW
      (c) any left over bytes
    
    loop (a) was already eliding the last 64 bytes, so PREALLOC was
    safe. The fix was removing PREFETCW from (b).
    
    Another potential issue (applicable to configs with 32 or 128 byte L1
    cache line) is that PREALLOC assumes 64 byte cache line and may not do
    the right thing specially for 32b. While it would be easy to adapt,
    there are no known configs with those lie sizes, so for now, just
    compile out PREALLOC in such cases.
    
    Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
    Cc: stable@vger.kernel.org #4.4+
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    [vgupta: rewrote changelog, used asm .macro vs. "C" macro]
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b305f0d26bffc627dfa9bb8e4cdd16b9ea4394d
Author: Anthony Wong <anthony.wong@canonical.com>
Date:   Sat Jan 19 12:22:31 2019 +0800

    ALSA: hda - Add mute LED support for HP ProBook 470 G5
    
    commit 699390381a7bae2fab01a22f742a17235c44ed8a upstream.
    
    Support speaker and mic mute LEDs on HP ProBook 470 G5.
    
    BugLink: https://bugs.launchpad.net/bugs/1811254
    Signed-off-by: Anthony Wong <anthony.wong@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd7a42cff6aab59b2ae1cd3d16f400d9ee0b0dd6
Author: Kailang Yang <kailang@realtek.com>
Date:   Fri Jan 11 17:15:53 2019 +0800

    ALSA: hda/realtek - Fix typo for ALC225 model
    
    commit 82aa0d7e09840704d9a37434fef1770179d663fb upstream.
    
    Fix typo for model alc255-dell1 to alc225-dell1.
    
    Enable headset mode support for new WYSE NB platform.
    
    Fixes: a26d96c7802e ("ALSA: hda/realtek - Comprehensive model list for ALC259 & co")
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1a01b3b60400f4cad9072b991ef007af00fda6a1
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Tue Jan 1 18:54:26 2019 +0900

    inotify: Fix fd refcount leak in inotify_add_watch().
    
    commit 125892edfe69915a227d8d125ff0e1cd713178f4 upstream.
    
    Commit 4d97f7d53da7dc83 ("inotify: Add flag IN_MASK_CREATE for
    inotify_add_watch()") forgot to call fdput() before bailing out.
    
    Fixes: 4d97f7d53da7dc83 ("inotify: Add flag IN_MASK_CREATE for inotify_add_watch()")
    CC: stable@vger.kernel.org
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reviewed-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f12f3407727a868580e91b79ac1db3443a6ae709
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Wed Jan 2 08:59:31 2019 -0600

    clk: socfpga: stratix10: fix naming convention for the fixed-clocks
    
    commit b488517b28a47d16b228ce8dcf07f5cb8e5b3dc5 upstream.
    
    The fixed clocks in the DTS file have a hyphen, but the clock driver has
    the fixed clocks using underbar. Thus the clock driver cannot detect the
    other fixed clocks correctly. Change the fixed clock names to a hyphen.
    
    Fixes: 07afb8db7340 ("clk: socfpga: stratix10: add clock driver for
    Stratix10 platform")
    Cc: linux-stable@vger.kernel.org
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2736004e148f67dacc975253ac09fd6c4d989e4c
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Mon Dec 17 18:06:14 2018 -0600

    clk: socfpga: stratix10: fix rate calculation for pll clocks
    
    commit c0a636e4cc2eb39244d23c0417c117be4c96a7fe upstream.
    
    The main PLL calculation has a mistake. We should be using the
    multiplying the VCO frequency, not the parent clock frequency.
    
    Fixes: 07afb8db7340 ("clk: socfpga: stratix10: add clock driver for
    Stratix10 platform")
    Cc: linux-stable@vger.kernel.org
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e91ffd2cf5a0834d64d301fbe1aaa9cc0449a4fa
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Sun Dec 23 23:50:58 2018 -0600

    clk: zynqmp: Fix memory allocation in zynqmp_clk_setup
    
    commit 4f340efcb21220b7a0afcea3884e66f79e6f2306 upstream.
    
    Fix memory allocation and use struct_size() in kzalloc(). This also
    fixes the allocation size to be correct, and smaller, because before we
    were allocating a bunch of sizeof(struct clk_hw_onecell_data) structures
    for each struct clk_hw we needed.
    
    Fixes: 3fde0e16d016 ("drivers: clk: Add ZynqMP clock driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Acked-by: Michal Simek <michal.simek@xilinx.com>
    [sboyd@kernel.org: Expand commit text]
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 853ed8895a2d9198260c1c23dc12f59d8bd0ee40
Author: b-ak <anur.bhargav@gmail.com>
Date:   Mon Jan 7 22:30:22 2019 +0530

    ASoC: tlv320aic32x4: Kernel OOPS while entering DAPM standby mode
    
    commit 667e9334fa64da2273e36ce131b05ac9e47c5769 upstream.
    
    During the bootup of the kernel, the DAPM bias level is in the OFF
    state. As soon as the DAPM framework kicks in it pushes the codec
    into STANDBY state.
    
    The probe function doesn't prepare the clock, and STANDBY state
    does a clk_disable_unprepare() without checking the previous state.
    This leads to an OOPS.
    
    Not transitioning from an OFF state to the STANDBY state fixes the
    problem.
    
    Signed-off-by: b-ak <anur.bhargav@gmail.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fead3ecedcd462e870bf9bc32f9d3662061ec92
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jan 15 11:57:23 2019 -0600

    ASoC: rt5514-spi: Fix potential NULL pointer dereference
    
    commit 060d0bf491874daece47053c4e1fb0489eb867d2 upstream.
    
    There is a potential NULL pointer dereference in case devm_kzalloc()
    fails and returns NULL.
    
    Fix this by adding a NULL check on rt5514_dsp.
    
    This issue was detected with the help of Coccinelle.
    
    Fixes: 6eebf35b0e4a ("ASoC: rt5514: add rt5514 SPI driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfca4e001c0b19527f7a402313174aa4785bf738
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Tue Dec 25 20:29:48 2018 -0600

    ASoC: atom: fix a missing check of snd_pcm_lib_malloc_pages
    
    commit 44fabd8cdaaa3acb80ad2bb3b5c61ae2136af661 upstream.
    
    snd_pcm_lib_malloc_pages() may fail, so let's check its status and
    return its error code upstream.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c561373f445d99bde6c24dd7aa4dbefd11e1cfd8
Author: Yan, Zheng <zyan@redhat.com>
Date:   Thu Jan 10 15:41:09 2019 +0800

    ceph: clear inode pointer when snap realm gets dropped by its inode
    
    commit d95e674c01cfb5461e8b9fdeebf6d878c9b80b2f upstream.
    
    snap realm and corresponding inode have pointers to each other.
    The two pointer should get clear at the same time. Otherwise,
    snap realm's pointer may reference freed inode.
    
    Cc: stable@vger.kernel.org # 4.17+
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Reviewed-by: Luis Henriques <lhenriques@suse.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fc2e57392ad6b3660c64a3590a4b2b67da6a220
Author: Charles Yeh <charlesyeh522@gmail.com>
Date:   Tue Jan 15 23:13:56 2019 +0800

    USB: serial: pl2303: add new PID to support PL2303TB
    
    commit 4dcf9ddc9ad5ab649abafa98c5a4d54b1a33dabb upstream.
    
    Add new PID to support PL2303TB (TYPE_HX)
    
    Signed-off-by: Charles Yeh <charlesyeh522@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5b427cdc3b30777c870cf997de4767eaee779d5
Author: Max Schulze <max.schulze@posteo.de>
Date:   Mon Jan 7 08:31:49 2019 +0100

    USB: serial: simple: add Motorola Tetra TPG2200 device id
    
    commit b81c2c33eab79dfd3650293b2227ee5c6036585c upstream.
    
    Add new Motorola Tetra device id for Motorola Solutions TETRA PEI device
    
    T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
    D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
    P:  Vendor=0cad ProdID=9016 Rev=24.16
    S:  Manufacturer=Motorola Solutions, Inc.
    S:  Product=TETRA PEI interface
    C:  #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
    I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb_serial_simple
    I:  If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=00 Driver=usb_serial_simple
    
    Signed-off-by: Max Schulze <max.schulze@posteo.de>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d99be59504760692913c40bd7c7e36117e5020b1
Author: Karoly Pados <pados@pados.hu>
Date:   Mon Jan 14 13:30:03 2019 +0100

    USB: serial: ftdi_sio: fix GPIO not working in autosuspend
    
    commit a8eda9fa1bd84065b75bfa81bf675a7af9055478 upstream.
    
    There is a bug in the current GPIO code for ftdi_sio: it failed to take USB
    autosuspend into account. If the device is in autosuspend, calls to
    usb_control_msg() fail with -EHOSTUNREACH. Because the standard value for
    autosuspend timeout is usually 2-5 seconds, this made it almost impossible
    to use the GPIOs on machines that have USB autosuspend enabled. This patch
    fixes the issue by acquiring a PM lock on the device for the duration of
    the USB transfers. Tested on an FT231X device.
    
    Signed-off-by: Karoly Pados <pados@pados.hu>
    [ johan: simplify code somewhat ]
    Fixes: ba93cc7da896 ("USB: serial: ftdi_sio: implement GPIO support for FT-X devices")
    Cc: stable <stable@vger.kernel.org>     # 4.20
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f720afc41dcbc606e37e4d663d318ed86788e95
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Mon Jan 14 21:16:08 2019 +0100

    USB: EHCI: ehci-mv: add MODULE_DEVICE_TABLE
    
    commit 70d0ba4cf79a0e73485b22d955991c6f27257376 upstream.
    
    This fixes autoloading the module by the OF compatible string.
    
    Fixes: 813e18b18a87 ("USB: EHCI: ehci-mv: add DT support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f15b66e8c2d269f224a25ff5877c5a4bfbca7f7f
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Fri Jan 11 17:29:45 2019 +0100

    USB: leds: fix regression in usbport led trigger
    
    commit 91f7d2e89868fcac0e750a28230fdb1ad4512137 upstream.
    
    The patch "usb: simplify usbport trigger" together with "leds: triggers:
    add device attribute support" caused an regression for the usbport
    trigger. it will no longer enumerate any active usb hub ports under the
    "ports" directory in the sysfs class directory, if the usb host drivers
    are fully initialized before the usbport trigger was loaded.
    
    The reason is that the usbport driver tries to register the sysfs
    entries during the activate() callback. And this will fail with -2 /
    ENOENT because the patch "leds: triggers: add device attribute support"
    made it so that the sysfs "ports" group was only being added after the
    activate() callback succeeded.
    
    This version of the patch reverts parts of the "usb: simplify usbport
    trigger" patch and restores usbport trigger's functionality.
    
    Fixes: 6f7b0bad8839 ("usb: simplify usbport trigger")
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 443c064587640badfcf654da80c62276ba0c0659
Author: Tomas Winkler <tomas.winkler@intel.com>
Date:   Sun Jan 13 14:24:48 2019 +0200

    mei: me: add denverton innovation engine device IDs
    
    commit f7ee8ead151f9d0b8dac6ab6c3ff49bbe809c564 upstream.
    
    Add the Denverton innovation engine (IE) device ids.
    The IE is an ME-like device which provides HW security
    offloading.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0458e11cf156697c830e89c71f2bef372d920b32
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Sun Jan 13 14:24:47 2019 +0200

    mei: me: mark LBG devices as having dma support
    
    commit 173436ba800d01178a8b19e5de4a8cb02c0db760 upstream.
    
    The LBG server platform sports DMA support.
    
    Cc: <stable@vger.kernel.org> #v5.0+
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 237563f7d004f806d92cdda55f96e36ed97ce1b1
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Wed Jan 9 10:04:57 2019 -0500

    SUNRPC: Address Kerberos performance/behavior regression
    
    [ Upstream commit deaa5c96c2f7e8b934088a1e70a0fe8797bd1149 ]
    
    When using Kerberos with v4.20, I've observed frequent connection
    loss on heavy workloads. I traced it down to the client underrunning
    the GSS sequence number window -- NFS servers are required to drop
    the RPC with the low sequence number, and also drop the connection
    to signal that an RPC was dropped.
    
    Bisected to commit 918f3c1fe83c ("SUNRPC: Improve latency for
    interactive tasks").
    
    I've got a one-line workaround for this issue, which is easy to
    backport to v4.20 while a more permanent solution is being derived.
    Essentially, tk_owner-based sorting is disabled for RPCs that carry
    a GSS sequence number.
    
    Fixes: 918f3c1fe83c ("SUNRPC: Improve latency for interactive ... ")
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1c7a6fea7a81dec9fcc5346bf3b879feedebba9
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Fri Jan 25 17:40:37 2019 -0500

    ARM: fix the cockup in the previous patch
    
    Commit d6951f582cc50ba0ad22ef46b599740966599b14 upstream.
    
    The intention in the previous patch was to only place the processor
    tables in the .rodata section if big.Little was being built and we
    wanted the branch target hardening, but instead (due to the way it
    was tested) it ended up always placing the tables into the .rodata
    section.
    
    Although harmless, let's correct this anyway.
    
    Fixes: 3a4d0c2172bc ("ARM: ensure that processor vtables is not lost after boot")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David A. Long <dave.long@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54ff278ad4a9b6494f2c6e7381c73cd71fdf2318
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Jan 10 14:40:33 2019 -0500

    tcp: allow MSG_ZEROCOPY transmission also in CLOSE_WAIT state
    
    [ Upstream commit 13d7f46386e060df31b727c9975e38306fa51e7a ]
    
    TCP transmission with MSG_ZEROCOPY fails if the peer closes its end of
    the connection and so transitions this socket to CLOSE_WAIT state.
    
    Transmission in close wait state is acceptable. Other similar tests in
    the stack (e.g., in FastOpen) accept both states. Relax this test, too.
    
    Link: https://www.mail-archive.com/netdev@vger.kernel.org/msg276886.html
    Link: https://www.mail-archive.com/netdev@vger.kernel.org/msg227390.html
    Fixes: f214f915e7db ("tcp: enable MSG_ZEROCOPY")
    Reported-by: Marek Majkowski <marek@cloudflare.com>
    Signed-off-by: Willem de Bruijn <willemb@google.com>
    CC: Yuchung Cheng <ycheng@google.com>
    CC: Neal Cardwell <ncardwell@google.com>
    CC: Soheil Hassas Yeganeh <soheil@google.com>
    CC: Alexey Kodanev <alexey.kodanev@oracle.com>
    Acked-by: Soheil Hassas Yeganeh <soheil@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 f18557ee2256ec7f953705e3cfdbb15e89dfd6c3
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu Jan 10 11:17:42 2019 +0800

    ip6_gre: update version related info when changing link
    
    [ Upstream commit 80b3671e9377916bf2b02e56113fa7377ce5705a ]
    
    We forgot to update ip6erspan version related info when changing link,
    which will cause setting new hwid failed.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Fixes: 94d7d8f292870 ("ip6_gre: add erspan v2 support")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0799807f91665ad25312b9e61d0d22cf8bebac76
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Fri Jan 11 00:15:21 2019 +0100

    net: phy: marvell: Fix deadlock from wrong locking
    
    [ Upstream commit e0a7328fad9979104f73e19bedca821ef3262ae1 ]
    
    m88e1318_set_wol() takes the lock as part of phy_select_page(). Don't
    take the lock again with phy_read(), use the unlocked __phy_read().
    
    Fixes: 424ca4c55121 ("net: phy: marvell: fix paged access races")
    Reported-by: Ã…ke Rehnman <ake.rehnman@gmail.com>
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e0a44cc57d3937b84ba7c1e82d08665d46662c5
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Jan 14 18:10:06 2019 +0800

    erspan: build the header with the right proto according to erspan_ver
    
    [ Upstream commit 20704bd1633dd5afb29a321d3a615c9c8e9c9d05 ]
    
    As said in draft-foschiano-erspan-03#section4:
    
       Different frame variants known as "ERSPAN Types" can be
       distinguished based on the GRE "Protocol Type" field value: Type I
       and II's value is 0x88BE while Type III's is 0x22EB [ETYPES].
    
    So set it properly in erspan_xmit() according to erspan_ver. While at
    it, also remove the unused parameter 'proto' in erspan_fb_xmit().
    
    Fixes: 94d7d8f29287 ("ip6_gre: add erspan v2 support")
    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 97521b30c1da70c146a5d9a124261a408d4a3b73
Author: Olivier Matz <olivier.matz@6wind.com>
Date:   Wed Jan 9 10:57:21 2019 +0100

    ip6_gre: fix tunnel list corruption for x-netns
    
    [ Upstream commit ab5098fa25b91cb6fe0a0676f17abb64f2bbf024 ]
    
    In changelink ops, the ip6gre_net pointer is retrieved from
    dev_net(dev), which is wrong in case of x-netns. Thus, the tunnel is not
    unlinked from its current list and is relinked into another net
    namespace. This corrupts the tunnel lists and can later trigger a kernel
    oops.
    
    Fix this by retrieving the netns from device private area.
    
    Fixes: c8632fc30bb0 ("net: ip6_gre: Split up ip6gre_changelink()")
    Cc: Petr Machata <petrm@mellanox.com>
    Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
    Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2a4e0498db7123a0b46d0c48231a5b27ab9d421
Author: Willem de Bruijn <willemb@google.com>
Date:   Tue Jan 15 11:40:02 2019 -0500

    udp: with udp_segment release on error path
    
    [ Upstream commit 0f149c9fec3cd720628ecde83bfc6f64c1e7dcb6 ]
    
    Failure __ip_append_data triggers udp_flush_pending_frames, but these
    tests happen later. The skb must be freed directly.
    
    Fixes: bec1f6f697362 ("udp: generate gso with UDP_SEGMENT")
    Reported-by: Eric Dumazet <edumazet@google.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 f10de3ed30728f86d98a0597d6a1a1fe4c5848f4
Author: Ivan Vecera <ivecera@redhat.com>
Date:   Wed Jan 16 16:53:52 2019 +0100

    net/sched: cls_flower: allocate mask dynamically in fl_change()
    
    [ Upstream commit 2cddd20147826aef283115abb00012d4dafe3cdb ]
    
    Recent changes (especially 05cd271fd61a ("cls_flower: Support multiple
    masks per priority")) in the fl_flow_mask structure grow it and its
    current size e.g. on x86_64 with defconfig is 760 bytes and more than
    1024 bytes with some debug options enabled. Prior the mentioned commit
    its size was 176 bytes (using defconfig on x86_64).
    With regard to this fact it's reasonable to allocate this structure
    dynamically in fl_change() to reduce its stack size.
    
    v2:
    - use kzalloc() instead of kcalloc()
    
    Fixes: 05cd271fd61a ("cls_flower: Support multiple masks per priority")
    Cc: Jiri Pirko <jiri@resnulli.us>
    Cc: Paul Blakey <paulb@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: Ivan Vecera <ivecera@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb97cf20597ce5b2400a9e035a4c92bb33dd7827
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Fri Jan 18 15:57:55 2019 +0000

    mlxsw: pci: Ring CQ's doorbell before RDQ's
    
    When a packet should be trapped to the CPU the device consumes a WQE
    (work queue element) from an RDQ (receive descriptor queue) and copies
    the packet to the address specified in the WQE. The device then tries to
    post a CQE (completion queue element) that contains various metadata
    (e.g., ingress port) about the packet to a CQ (completion queue).
    
    In case the device managed to consume a WQE, but did not manage to post
    the corresponding CQE, it will get stuck. This unlikely situation can be
    triggered due to the scheme the driver is currently using to process
    CQEs.
    
    The driver will consume up to 512 CQEs at a time and after processing
    each corresponding WQE it will ring the RDQ's doorbell, letting the
    device know that a new WQE was posted for it to consume. Only after
    processing all the CQEs (up to 512), the driver will ring the CQ's
    doorbell, letting the device know that new ones can be posted.
    
    Fix this by having the driver ring the CQ's doorbell for every processed
    CQE, but before ringing the RDQ's doorbell. This guarantees that
    whenever we post a new WQE, there is a corresponding CQE available. Copy
    the currently processed CQE to prevent the device from overwriting it
    with a new CQE after ringing the doorbell.
    
    Note that the driver still arms the CQ only after processing all the
    pending CQEs, so that interrupts for this CQ will only be delivered
    after the driver finished its processing.
    
    Before commit 8404f6f2e8ed ("mlxsw: pci: Allow to use CQEs of version 1
    and version 2") the issue was virtually impossible to trigger since the
    number of CQEs was twice the number of WQEs and the number of CQEs
    processed at a time was equal to the number of available WQEs.
    
    Fixes: 8404f6f2e8ed ("mlxsw: pci: Allow to use CQEs of version 1 and version 2")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reported-by: Semion Lisyansky <semionl@mellanox.com>
    Tested-by: Semion Lisyansky <semionl@mellanox.com>
    Acked-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 db6b4b3854d67a61ad397d6bf8aa55715fae4c51
Author: Nir Dotan <nird@mellanox.com>
Date:   Fri Jan 18 15:57:59 2019 +0000

    mlxsw: spectrum_fid: Update dummy FID index
    
    [ Upstream commit a11dcd6497915ba79d95ef4fe2541aaac27f6201 ]
    
    When using a tc flower action of egress mirred redirect, the driver adds
    an implicit FID setting action. This implicit action sets a dummy FID to
    the packet and is used as part of a design for trapping unmatched flows
    in OVS.  While this implicit FID setting action is supposed to be a NOP
    when a redirect action is added, in Spectrum-2 the FID record is
    consulted as the dummy FID index is an 802.1D FID index and the packet
    is dropped instead of being redirected.
    
    Set the dummy FID index value to be within 802.1Q range. This satisfies
    both Spectrum-1 which ignores the FID and Spectrum-2 which identifies it
    as an 802.1Q FID and will then follow the redirect action.
    
    Fixes: c3ab435466d5 ("mlxsw: spectrum: Extend to support Spectrum-2 ASIC")
    Signed-off-by: Nir Dotan <nird@mellanox.com>
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c05bd0be91063c0d5623cd392f6787c7de285178
Author: Ido Schimmel <idosch@mellanox.com>
Date:   Wed Jan 9 09:57:39 2019 +0000

    net: ipv4: Fix memory leak in network namespace dismantle
    
    [ Upstream commit f97f4dd8b3bb9d0993d2491e0f22024c68109184 ]
    
    IPv4 routing tables are flushed in two cases:
    
    1. In response to events in the netdev and inetaddr notification chains
    2. When a network namespace is being dismantled
    
    In both cases only routes associated with a dead nexthop group are
    flushed. However, a nexthop group will only be marked as dead in case it
    is populated with actual nexthops using a nexthop device. This is not
    the case when the route in question is an error route (e.g.,
    'blackhole', 'unreachable').
    
    Therefore, when a network namespace is being dismantled such routes are
    not flushed and leaked [1].
    
    To reproduce:
    # ip netns add blue
    # ip -n blue route add unreachable 192.0.2.0/24
    # ip netns del blue
    
    Fix this by not skipping error routes that are not marked with
    RTNH_F_DEAD when flushing the routing tables.
    
    To prevent the flushing of such routes in case #1, add a parameter to
    fib_table_flush() that indicates if the table is flushed as part of
    namespace dismantle or not.
    
    Note that this problem does not exist in IPv6 since error routes are
    associated with the loopback device.
    
    [1]
    unreferenced object 0xffff888066650338 (size 56):
      comm "ip", pid 1206, jiffies 4294786063 (age 26.235s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 b0 1c 62 61 80 88 ff ff  ..........ba....
        e8 8b a1 64 80 88 ff ff 00 07 00 08 fe 00 00 00  ...d............
      backtrace:
        [<00000000856ed27d>] inet_rtm_newroute+0x129/0x220
        [<00000000fcdfc00a>] rtnetlink_rcv_msg+0x397/0xa20
        [<00000000cb85801a>] netlink_rcv_skb+0x132/0x380
        [<00000000ebc991d2>] netlink_unicast+0x4c0/0x690
        [<0000000014f62875>] netlink_sendmsg+0x929/0xe10
        [<00000000bac9d967>] sock_sendmsg+0xc8/0x110
        [<00000000223e6485>] ___sys_sendmsg+0x77a/0x8f0
        [<000000002e94f880>] __sys_sendmsg+0xf7/0x250
        [<00000000ccb1fa72>] do_syscall_64+0x14d/0x610
        [<00000000ffbe3dae>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
        [<000000003a8b605b>] 0xffffffffffffffff
    unreferenced object 0xffff888061621c88 (size 48):
      comm "ip", pid 1206, jiffies 4294786063 (age 26.235s)
      hex dump (first 32 bytes):
        6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkkkkkkkkk
        6b 6b 6b 6b 6b 6b 6b 6b d8 8e 26 5f 80 88 ff ff  kkkkkkkk..&_....
      backtrace:
        [<00000000733609e3>] fib_table_insert+0x978/0x1500
        [<00000000856ed27d>] inet_rtm_newroute+0x129/0x220
        [<00000000fcdfc00a>] rtnetlink_rcv_msg+0x397/0xa20
        [<00000000cb85801a>] netlink_rcv_skb+0x132/0x380
        [<00000000ebc991d2>] netlink_unicast+0x4c0/0x690
        [<0000000014f62875>] netlink_sendmsg+0x929/0xe10
        [<00000000bac9d967>] sock_sendmsg+0xc8/0x110
        [<00000000223e6485>] ___sys_sendmsg+0x77a/0x8f0
        [<000000002e94f880>] __sys_sendmsg+0xf7/0x250
        [<00000000ccb1fa72>] do_syscall_64+0x14d/0x610
        [<00000000ffbe3dae>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
        [<000000003a8b605b>] 0xffffffffffffffff
    
    Fixes: 8cced9eff1d4 ("[NETNS]: Enable routing configuration in non-initial namespace.")
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Reviewed-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8685cf4aca611e7148b31a0226481bbce22b5f09
Author: Nir Dotan <nird@mellanox.com>
Date:   Fri Jan 18 15:57:56 2019 +0000

    mlxsw: pci: Increase PCI SW reset timeout
    
    [ Upstream commit d2f372ba0914e5722ac28e15f2ed2db61bcf0e44 ]
    
    Spectrum-2 PHY layer introduces a calibration period which is a part of the
    Spectrum-2 firmware boot process. Hence increase the SW timeout waiting for
    the firmware to come out of boot. This does not increase system boot time
    in cases where the firmware PHY calibration process is done quickly.
    
    Fixes: c3ab435466d5 ("mlxsw: spectrum: Extend to support Spectrum-2 ASIC")
    Signed-off-by: Nir Dotan <nird@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44df799e619844bd6f81fdece1e4e172c8bf024b
Author: Jason Wang <jasowang@redhat.com>
Date:   Wed Jan 16 16:54:42 2019 +0800

    vhost: log dirty page correctly
    
    [ Upstream commit cc5e710759470bc7f3c61d11fd54586f15fdbdf4 ]
    
    Vhost dirty page logging API is designed to sync through GPA. But we
    try to log GIOVA when device IOTLB is enabled. This is wrong and may
    lead to missing data after migration.
    
    To solve this issue, when logging with device IOTLB enabled, we will:
    
    1) reuse the device IOTLB translation result of GIOVA->HVA mapping to
       get HVA, for writable descriptor, get HVA through iovec. For used
       ring update, translate its GIOVA to HVA
    2) traverse the GPA->HVA mapping to get the possible GPA and log
       through GPA. Pay attention this reverse mapping is not guaranteed
       to be unique, so we should log each possible GPA in this case.
    
    This fix the failure of scp to guest during migration. In -next, we
    will probably support passing GIOVA->GPA instead of GIOVA->HVA.
    
    Fixes: 6b1e6cc7855b ("vhost: new device IOTLB API")
    Reported-by: Jintack Lim <jintack@cs.columbia.edu>
    Cc: Jintack Lim <jintack@cs.columbia.edu>
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 971bf1b09350b6ff343ec92c41d10cf3ff2aee45
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Mon Jan 14 09:16:56 2019 +0000

    openvswitch: Avoid OOB read when parsing flow nlattrs
    
    [ Upstream commit 04a4af334b971814eedf4e4a413343ad3287d9a9 ]
    
    For nested and variable attributes, the expected length of an attribute
    is not known and marked by a negative number.  This results in an OOB
    read when the expected length is later used to check if the attribute is
    all zeros. Fix this by using the actual length of the attribute rather
    than the expected length.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00258ab1cf041dda6df63c458da0f37bcdf684d0
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Jan 11 18:55:42 2019 -0800

    net_sched: refetch skb protocol for each filter
    
    [ Upstream commit cd0c4e70fc0ccfa705cdf55efb27519ce9337a26 ]
    
    Martin reported a set of filters don't work after changing
    from reclassify to continue. Looking into the code, it
    looks like skb protocol is not always fetched for each
    iteration of the filters. But, as demonstrated by Martin,
    TC actions could modify skb->protocol, for example act_vlan,
    this means we have to refetch skb protocol in each iteration,
    rather than using the one we fetch in the beginning of the loop.
    
    This bug is _not_ introduced by commit 3b3ae880266d
    ("net: sched: consolidate tc_classify{,_compat}"), technically,
    if act_vlan is the only action that modifies skb protocol, then
    it is commit c7e2b9689ef8 ("sched: introduce vlan action") which
    introduced this bug.
    
    Reported-by: Martin Olsson <martin.olsson+netdev@sentorsecurity.com>
    Cc: Jamal Hadi Salim <jhs@mojatatu.com>
    Cc: Jiri Pirko <jiri@resnulli.us>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: Jamal Hadi Salim <jhs@mojatatu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca9b7a65a2c97579fcdd509d454d48e3a5c49af8
Author: Davide Caratti <dcaratti@redhat.com>
Date:   Thu Jan 10 20:21:02 2019 +0100

    net/sched: act_tunnel_key: fix memory leak in case of action replace
    
    [ Upstream commit 9174c3df1cd181c14913138d50ccbe539bb08335 ]
    
    running the following TDC test cases:
    
     7afc - Replace tunnel_key set action with all parameters
     364d - Replace tunnel_key set action with all parameters and cookie
    
    it's possible to trigger kmemleak warnings like:
    
      unreferenced object 0xffff94797127ab40 (size 192):
      comm "tc", pid 3248, jiffies 4300565293 (age 1006.862s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 c0 93 f9 8a ff ff ff ff  ................
        41 84 ee 89 ff ff ff ff 00 00 00 00 00 00 00 00  A...............
      backtrace:
        [<000000001e85b61c>] tunnel_key_init+0x31d/0x820 [act_tunnel_key]
        [<000000007f3f6ee7>] tcf_action_init_1+0x384/0x4c0
        [<00000000e89e3ded>] tcf_action_init+0x12b/0x1a0
        [<00000000c1c8c0f8>] tcf_action_add+0x73/0x170
        [<0000000095a9fc28>] tc_ctl_action+0x122/0x160
        [<000000004bebeac5>] rtnetlink_rcv_msg+0x263/0x2d0
        [<000000009fd862dd>] netlink_rcv_skb+0x4a/0x110
        [<00000000b55199e7>] netlink_unicast+0x1a0/0x250
        [<000000004996cd21>] netlink_sendmsg+0x2c1/0x3c0
        [<000000004d6a94b4>] sock_sendmsg+0x36/0x40
        [<000000005d9f0208>] ___sys_sendmsg+0x280/0x2f0
        [<00000000dec19023>] __sys_sendmsg+0x5e/0xa0
        [<000000004b82ac81>] do_syscall_64+0x5b/0x180
        [<00000000a0f1209a>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
        [<000000002926b2ab>] 0xffffffffffffffff
    
    when the tunnel_key action is replaced, the kernel forgets to release the
    dst metadata: ensure they are released by tunnel_key_init(), the same way
    it's done in tunnel_key_release().
    
    Fixes: d0f6dd8a914f4 ("net/sched: Introduce act_tunnel_key")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 850d84830a6716b190ab44bcbcee15b34a41cc80
Author: Camelia Groza <camelia.groza@nxp.com>
Date:   Thu Jan 17 14:22:36 2019 +0200

    net: phy: phy driver features are mandatory
    
    [ Upstream commit 3e64cf7a435ed0500e3adaa8aada2272d3ae8abc ]
    
    Since phy driver features became a link_mode bitmap, phy drivers that
    don't have a list of features configured will cause the kernel to crash
    when probed.
    
    Prevent the phy driver from registering if the features field is missing.
    
    Fixes: 719655a14971 ("net: phy: Replace phy driver features u32 with link_mode bitmap")
    Reported-by: Scott Wood <oss@buserror.net>
    Signed-off-by: Camelia Groza <camelia.groza@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bd1595be7b0f07b0c33840eded0eb4db3f400a2
Author: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date:   Wed Jan 16 10:53:58 2019 +0100

    net: phy: mdio_bus: add missing device_del() in mdiobus_register() error handling
    
    [ Upstream commit e40e2a2e78664fa90ea4b9bdf4a84efce2fea9d9 ]
    
    The current code in __mdiobus_register() doesn't properly handle
    failures returned by the devm_gpiod_get_optional() call: it returns
    immediately, without unregistering the device that was added by the
    call to device_register() earlier in the function.
    
    This leaves a stale device, which then causes a NULL pointer
    dereference in the code that handles deferred probing:
    
    [    1.489982] Unable to handle kernel NULL pointer dereference at virtual address 00000074
    [    1.498110] pgd = (ptrval)
    [    1.500838] [00000074] *pgd=00000000
    [    1.504432] Internal error: Oops: 17 [#1] SMP ARM
    [    1.509133] Modules linked in:
    [    1.512192] CPU: 1 PID: 51 Comm: kworker/1:3 Not tainted 4.20.0-00039-g3b73a4cc8b3e-dirty #99
    [    1.520708] Hardware name: Xilinx Zynq Platform
    [    1.525261] Workqueue: events deferred_probe_work_func
    [    1.530403] PC is at klist_next+0x10/0xfc
    [    1.534403] LR is at device_for_each_child+0x40/0x94
    [    1.539361] pc : [<c0683fbc>]    lr : [<c0455d90>]    psr: 200e0013
    [    1.545628] sp : ceeefe68  ip : 00000001  fp : ffffe000
    [    1.550863] r10: 00000000  r9 : c0c66790  r8 : 00000000
    [    1.556079] r7 : c0457d44  r6 : 00000000  r5 : ceeefe8c  r4 : cfa2ec78
    [    1.562604] r3 : 00000064  r2 : c0457d44  r1 : ceeefe8c  r0 : 00000064
    [    1.569129] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
    [    1.576263] Control: 18c5387d  Table: 0ed7804a  DAC: 00000051
    [    1.582013] Process kworker/1:3 (pid: 51, stack limit = 0x(ptrval))
    [    1.588280] Stack: (0xceeefe68 to 0xceef0000)
    [    1.592630] fe60:                   cfa2ec78 c0c03c08 00000000 c0457d44 00000000 c0c66790
    [    1.600814] fe80: 00000000 c0455d90 ceeefeac 00000064 00000000 0d7a542e cee9d494 cfa2ec78
    [    1.608998] fea0: cfa2ec78 00000000 c0457d44 c0457d7c cee9d494 c0c03c08 00000000 c0455dac
    [    1.617182] fec0: cf98ba44 cf926a00 cee9d494 0d7a542e 00000000 cf935a10 cf935a10 cf935a10
    [    1.625366] fee0: c0c4e9b8 c0457d7c c0c4e80c 00000001 cf935a10 c0457df4 cf935a10 c0c4e99c
    [    1.633550] ff00: c0c4e99c c045a27c c0c4e9c4 ced63f80 cfde8a80 cfdebc00 00000000 c013893c
    [    1.641734] ff20: cfde8a80 cfde8a80 c07bd354 ced63f80 ced63f94 cfde8a80 00000008 c0c02d00
    [    1.649936] ff40: cfde8a98 cfde8a80 ffffe000 c0139a30 ffffe000 c0c6624a c07bd354 00000000
    [    1.658120] ff60: ffffe000 cee9e780 ceebfe00 00000000 ceeee000 ced63f80 c0139788 cf8cdea4
    [    1.666304] ff80: cee9e79c c013e598 00000001 ceebfe00 c013e44c 00000000 00000000 00000000
    [    1.674488] ffa0: 00000000 00000000 00000000 c01010e8 00000000 00000000 00000000 00000000
    [    1.682671] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.690855] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
    [    1.699058] [<c0683fbc>] (klist_next) from [<c0455d90>] (device_for_each_child+0x40/0x94)
    [    1.707241] [<c0455d90>] (device_for_each_child) from [<c0457d7c>] (device_reorder_to_tail+0x38/0x88)
    [    1.716476] [<c0457d7c>] (device_reorder_to_tail) from [<c0455dac>] (device_for_each_child+0x5c/0x94)
    [    1.725692] [<c0455dac>] (device_for_each_child) from [<c0457d7c>] (device_reorder_to_tail+0x38/0x88)
    [    1.734927] [<c0457d7c>] (device_reorder_to_tail) from [<c0457df4>] (device_pm_move_to_tail+0x28/0x40)
    [    1.744235] [<c0457df4>] (device_pm_move_to_tail) from [<c045a27c>] (deferred_probe_work_func+0x58/0x8c)
    [    1.753746] [<c045a27c>] (deferred_probe_work_func) from [<c013893c>] (process_one_work+0x210/0x4fc)
    [    1.762888] [<c013893c>] (process_one_work) from [<c0139a30>] (worker_thread+0x2a8/0x5c0)
    [    1.771072] [<c0139a30>] (worker_thread) from [<c013e598>] (kthread+0x14c/0x154)
    [    1.778482] [<c013e598>] (kthread) from [<c01010e8>] (ret_from_fork+0x14/0x2c)
    [    1.785689] Exception stack(0xceeeffb0 to 0xceeefff8)
    [    1.790739] ffa0:                                     00000000 00000000 00000000 00000000
    [    1.798923] ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    1.807107] ffe0: 00000000 00000000 00000000 00000000 00000013 00000000
    [    1.813724] Code: e92d47f0 e1a05000 e8900048 e1a00003 (e5937010)
    [    1.819844] ---[ end trace 3c2c0c8b65399ec9 ]---
    
    The actual error that we had from devm_gpiod_get_optional() was
    -EPROBE_DEFER, due to the GPIO being provided by a driver that is
    probed later than the Ethernet controller driver.
    
    To fix this, we simply add the missing device_del() invocation in the
    error path.
    
    Fixes: 69226896ad636 ("mdio_bus: Issue GPIO RESET to PHYs")
    Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.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 59b38830c277ea7d2af05908a713dcde30882b30
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Thu Jan 10 22:48:36 2019 +0100

    net: phy: marvell: Errata for mv88e6390 internal PHYs
    
    [ Upstream commit 8cbcdc1a51999ca81db2956608b917aacd28d837 ]
    
    The VOD can be out of spec, unless some magic value is poked into an
    undocumented register in an undocumented page.
    
    Fixes: e4cf8a38fc0d ("net: phy: Marvell: Add mv88e6390 internal PHY")
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38c00a1831e3608c5578a5e2f04f882aaaa63f4d
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Thu Jan 17 15:34:38 2019 +0000

    net: Fix usage of pskb_trim_rcsum
    
    [ Upstream commit 6c57f0458022298e4da1729c67bd33ce41c14e7a ]
    
    In certain cases, pskb_trim_rcsum() may change skb pointers.
    Reinitialize header pointers afterwards to avoid potential
    use-after-frees. Add a note in the documentation of
    pskb_trim_rcsum(). Found by KASAN.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21ac645beeb2a758c9b7bf1ff9d887ea30a3f27c
Author: Yunjian Wang <wangyunjian@huawei.com>
Date:   Thu Jan 17 09:46:41 2019 +0800

    net: bridge: Fix ethernet header pointer before check skb forwardable
    
    [ Upstream commit 28c1382fa28f2e2d9d0d6f25ae879b5af2ecbd03 ]
    
    The skb header should be set to ethernet header before using
    is_skb_forwardable. Because the ethernet header length has been
    considered in is_skb_forwardable(including dev->hard_header_len
    length).
    
    To reproduce the issue:
    1, add 2 ports on linux bridge br using following commands:
    $ brctl addbr br
    $ brctl addif br eth0
    $ brctl addif br eth1
    2, the MTU of eth0 and eth1 is 1500
    3, send a packet(Data 1480, UDP 8, IP 20, Ethernet 14, VLAN 4)
    from eth0 to eth1
    
    So the expect result is packet larger than 1500 cannot pass through
    eth0 and eth1. But currently, the packet passes through success, it
    means eth1's MTU limit doesn't take effect.
    
    Fixes: f6367b4660dd ("bridge: use is_skb_forwardable in forward path")
    Cc: bridge@lists.linux-foundation.org
    Cc: Nkolay Aleksandrov <nikolay@cumulusnetworks.com>
    Cc: Roopa Prabhu <roopa@cumulusnetworks.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Signed-off-by: Yunjian Wang <wangyunjian@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3175d4bc6f1457eea11b02e8c61d7af99c4fbcc6
Author: Lendacky, Thomas <Thomas.Lendacky@amd.com>
Date:   Thu Jan 17 14:20:14 2019 +0000

    amd-xgbe: Fix mdio access for non-zero ports and clause 45 PHYs
    
    [ Upstream commit 5ab3121beeb76aa6090195b67d237115860dd9ec ]
    
    The XGBE hardware has support for performing MDIO operations using an
    MDIO command request. The driver mistakenly uses the mdio port address
    as the MDIO command request device address instead of the MDIO command
    request port address. Additionally, the driver does not properly check
    for and create a clause 45 MDIO command.
    
    Check the supplied MDIO register to determine if the request is a clause
    45 operation (MII_ADDR_C45). For a clause 45 operation, extract the device
    address and register number from the supplied MDIO register and use them
    to set the MDIO command request device address and register number fields.
    For a clause 22 operation, the MDIO request device address is set to zero
    and the MDIO command request register number is set to the supplied MDIO
    register. In either case, the supplied MDIO port address is used as the
    MDIO command request port address.
    
    Fixes: 732f2ab7afb9 ("amd-xgbe: Add support for MDIO attached PHYs")
    Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
    Tested-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>