commit 08c15ad2e6278a5fe1b209e8fcdbd2d235c48f34
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Nov 30 08:37:28 2017 +0000

    Linux 4.4.103

commit 3d7214a338d72a66739e83b32fe6e78688051ecc
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Nov 28 12:29:45 2017 +0100

    Revert "sctp: do not peel off an assoc from one netns to another one"
    
    This reverts commit 2a0e60907e54dad75e9b3568d02bec11d6e74f6b which is
    commit df80cd9b28b9ebaa284a41df611dbf3a2d05ca74 upstream as I messed up
    by applying it to the tree twice.
    
    Reported-by: Michal Kubecek <mkubecek@suse.cz>
    Cc: ChunYu Wang <chunwang@redhat.com>
    Cc: Xin Long <lucien.xin@gmail.com>
    Cc: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Cc: Neil Horman <nhorman@tuxdriver.com>
    Cc: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c73eb1e0cc5675ebb584b3824b71f5c20ca33fc9
Author: Juergen Gross <jgross@suse.com>
Date:   Thu Dec 22 08:19:46 2016 +0100

    xen: xenbus driver must not accept invalid transaction ids
    
    
    [ Upstream commit 639b08810d6ad74ded2c5f6e233c4fcb9d147168 ]
    
    When accessing Xenstore in a transaction the user is specifying a
    transaction id which he normally obtained from Xenstore when starting
    the transaction. Xenstore is validating a transaction id against all
    known transaction ids of the connection the request came in. As all
    requests of a domain not being the one where Xenstore lives share
    one connection, validation of transaction ids of different users of
    Xenstore in that domain should be done by the kernel of that domain
    being the multiplexer between the Xenstore users in that domain and
    Xenstore.
    
    In order to prohibit one Xenstore user "hijacking" a transaction from
    another user the xenbus driver has to verify a given transaction id
    against all known transaction ids of the user before forwarding it to
    Xenstore.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eedd29f51078395ce8db909cf1130bd468d70ec8
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Tue Dec 20 12:58:10 2016 +0100

    s390/kbuild: enable modversions for symbols exported from asm
    
    
    [ Upstream commit cabab3f9f5ca077535080b3252e6168935b914af ]
    
    s390 version of commit 334bb7738764 ("x86/kbuild: enable modversions
    for symbols exported from asm") so we get also rid of all these
    warnings:
    
    WARNING: EXPORT symbol "_mcount" [vmlinux] version generation failed, symbol will not be versioned.
    WARNING: EXPORT symbol "memcpy" [vmlinux] version generation failed, symbol will not be versioned.
    WARNING: EXPORT symbol "memmove" [vmlinux] version generation failed, symbol will not be versioned.
    WARNING: EXPORT symbol "memset" [vmlinux] version generation failed, symbol will not be versioned.
    WARNING: EXPORT symbol "save_fpu_regs" [vmlinux] version generation failed, symbol will not be versioned.
    WARNING: EXPORT symbol "sie64a" [vmlinux] version generation failed, symbol will not be versioned.
    WARNING: EXPORT symbol "sie_exit" [vmlinux] version generation failed, symbol will not be versioned.
    
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 681b2239862dd88abf28b73e17e4f48af443f72e
Author: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
Date:   Tue Dec 20 10:29:12 2016 +0000

    ASoC: wm_adsp: Don't overrun firmware file buffer when reading region data
    
    
    [ Upstream commit 1cab2a84f470e15ecc8e5143bfe9398c6e888032 ]
    
    Protect against corrupt firmware files by ensuring that the length we
    get for the data in a region actually lies within the available firmware
    file data buffer.
    
    Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b63209c78f9ec90b1cb43e458918b89f53e0db1b
Author: Pan Bian <bianpan2016@163.com>
Date:   Sun Dec 4 12:51:53 2016 +0800

    btrfs: return the actual error value from from btrfs_uuid_tree_iterate
    
    
    [ Upstream commit 73ba39ab9307340dc98ec3622891314bbc09cc2e ]
    
    In function btrfs_uuid_tree_iterate(), errno is assigned to variable ret
    on errors. However, it directly returns 0. It may be better to return
    ret. This patch also removes the warning, because the caller already
    prints a warning.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188731
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Reviewed-by: Omar Sandoval <osandov@fb.com>
    [ edited subject ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e88f3fb0e34059c6d697802dc385c756129c17a1
Author: Colin Ian King <colin.king@canonical.com>
Date:   Thu Dec 8 13:05:43 2016 +0000

    ASoC: rsnd: don't double free kctrl
    
    
    [ Upstream commit 0ea617a298dcdc2251b4e10f83ac3f3e627b66e3 ]
    
    On an error, snd_ctl_add already free's kctrl, so calling snd_ctl_free_one
    to free it again leads to a double free error.  Fix this by removing
    the extraneous snd_ctl_free_one call.
    
    Issue found using static analysis with CoverityScan, CID 1372908
    
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47b99a3306d08c03467b0efe13fc1bc1721afa15
Author: Florian Westphal <fw@strlen.de>
Date:   Tue Dec 13 13:59:33 2016 +0100

    netfilter: nf_tables: fix oob access
    
    
    [ Upstream commit 3e38df136e453aa69eb4472108ebce2fb00b1ba6 ]
    
    BUG: KASAN: slab-out-of-bounds in nf_tables_rule_destroy+0xf1/0x130 at addr ffff88006a4c35c8
    Read of size 8 by task nft/1607
    
    When we've destroyed last valid expr, nft_expr_next() returns an invalid expr.
    We must not dereference it unless it passes != nft_expr_last() check.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a1e4f6a151035a549d1192c03ff82c3d81da18ce
Author: Pablo Neira Ayuso <pablo@netfilter.org>
Date:   Sun Dec 11 20:46:51 2016 +0100

    netfilter: nft_queue: use raw_smp_processor_id()
    
    
    [ Upstream commit c2e756ff9e699865d294cdc112acfc36419cf5cc ]
    
    Using smp_processor_id() causes splats with PREEMPT_RCU:
    
    [19379.552780] BUG: using smp_processor_id() in preemptible [00000000] code: ping/32389
    [19379.552793] caller is debug_smp_processor_id+0x17/0x19
    [...]
    [19379.552823] Call Trace:
    [19379.552832]  [<ffffffff81274e9e>] dump_stack+0x67/0x90
    [19379.552837]  [<ffffffff8129a4d4>] check_preemption_disabled+0xe5/0xf5
    [19379.552842]  [<ffffffff8129a4fb>] debug_smp_processor_id+0x17/0x19
    [19379.552849]  [<ffffffffa07c42dd>] nft_queue_eval+0x35/0x20c [nft_queue]
    
    No need to disable preemption since we only fetch the numeric value, so
    let's use raw_smp_processor_id() instead.
    
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85f286d6f8cddb199d40fbf6a0dfba2eb4f94bd5
Author: Geert Uytterhoeven <geert@linux-m68k.org>
Date:   Wed Dec 14 13:28:05 2016 +0100

    spi: SPI_FSL_DSPI should depend on HAS_DMA
    
    
    [ Upstream commit dadab2d4e3cf708ceba22ecddd94aedfecb39199 ]
    
    If NO_DMA=y:
    
        ERROR: "bad_dma_ops" [drivers/spi/spi-fsl-dspi.ko] undefined!
    
    Add a dependency on HAS_DMA to fix this.
    
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8537e96e4351dc80efe1b713c058da488b3afd29
Author: Pan Bian <bianpan2016@163.com>
Date:   Sat Dec 3 21:44:30 2016 +0800

    staging: iio: cdc: fix improper return value
    
    
    [ Upstream commit 91ca1a8c584f55857b1f6ab20a1d3a1ce7a559bb ]
    
    At the end of function ad7150_write_event_config(), directly returns 0.
    As a result, the errors will be ignored by the callers. It may be better
    to return variable "ret".
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 266913b390c38f101971dfc6c1a5084e37fd41a7
Author: Pan Bian <bianpan2016@163.com>
Date:   Sat Dec 3 17:24:17 2016 +0800

    iio: light: fix improper return value
    
    
    [ Upstream commit db4e5376d058af8924fafd0520a0942d92538d0e ]
    
    In function cm3232_reg_init(), it returns 0 even if the last call to
    i2c_smbus_write_byte_data() returns a negative value (indicates error).
    As a result, the return value may be inconsistent with the execution
    status, and the caller of cm3232_reg_init() will not be able to detect
    the error. This patch fixes the bug.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188641
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Jonathan Cameron <jic23@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e927748d4db4d248e919e44f4dd4891ba6b4d42
Author: Masashi Honma <masashi.honma@gmail.com>
Date:   Wed Nov 30 09:06:04 2016 +0900

    mac80211: Suppress NEW_PEER_CANDIDATE event if no room
    
    
    [ Upstream commit 11197d006bcfabf0173a7820a163fcaac420d10e ]
    
    Previously, kernel sends NEW_PEER_CANDIDATE event to user land even if
    the found peer does not have any room to accept other peer. This causes
    continuous connection trials.
    
    Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9825826ed7bd7ab22e835b88508f00057b2848c0
Author: Masashi Honma <masashi.honma@gmail.com>
Date:   Thu Dec 8 10:15:50 2016 +0900

    mac80211: Remove invalid flag operations in mesh TSF synchronization
    
    
    [ Upstream commit 76f43b4c0a9337af22827d78de4f2b8fd5328489 ]
    
    mesh_sync_offset_adjust_tbtt() implements Extensible synchronization
    framework ([1] 13.13.2 Extensible synchronization framework). It shall
    not operate the flag "TBTT Adjusting subfield" ([1] 8.4.2.100.8 Mesh
    Capability), since it is used only for MBCA ([1] 13.13.4 Mesh beacon
    collision avoidance, see 13.13.4.4.3 TBTT scanning and adjustment
    procedures for detail). So this patch remove the flag operations.
    
    [1] IEEE Std 802.11 2012
    
    Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
    [remove adjusting_tbtt entirely, since it's now unused]
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f0d8fb74479b25ad56d25530ea5efc2881b02ad9
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Thu Dec 22 08:36:38 2016 +0000

    drm: Apply range restriction after color adjustment when allocation
    
    
    [ Upstream commit 3db93756b501e5f0a3951c79cfa9ed43c26d3455 ]
    
    mm->color_adjust() compares the hole with its neighbouring nodes. They
    only abutt before we restrict the hole, so we have to apply color_adjust
    before we apply the range restriction.
    
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: http://patchwork.freedesktop.org/patch/msgid/20161222083641.2691-36-chris@chris-wilson.co.uk
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31447ebb1a863b611676e2787db7160e19bd7e3c
Author: Gabriele Mazzotta <gabriele.mzt@gmail.com>
Date:   Sat Dec 24 19:50:00 2016 +0100

    ALSA: hda - Apply ALC269_FIXUP_NO_SHUTUP on HDA_FIXUP_ACT_PROBE
    
    
    [ Upstream commit 972aa2c708703c21f14eb958b37e82aae2530e44 ]
    
    Setting shutup when the action is HDA_FIXUP_ACT_PRE_PROBE might
    not have the desired effect since it could be overridden by
    another more generic shutup function. Prevent this by setting
    the more specific shutup function on HDA_FIXUP_ACT_PROBE.
    
    Signed-off-by: Gabriele Mazzotta <gabriele.mzt@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e920566c352c9434010cbaf6a5ccd82c3ce73cf
Author: Bartosz Markowski <bartosz.markowski@tieto.com>
Date:   Thu Dec 15 11:23:24 2016 +0200

    ath10k: set CTS protection VDEV param only if VDEV is up
    
    
    [ Upstream commit 7cfe0455ee1218add152e986b89b4bb8dbeafcdd ]
    
    The cts protection vdev parameter, in new QCA9377 TF2.0 firmware,
    requires bss peer to be created for the STATION vdev type.
    bss peer is being allocated by the firmware after vdev_start/_up commands.
    mac80211 may call the cts protection setup at any time, so the
    we needs to track the situation and defer the cts configuration
    to prevent firmware asserts, like below:
    
    [00]: 0x05020001 0x000015B3 0x0099ACE2 0x00955B31
    [04]: 0x0099ACE2 0x00060730 0x00000004 0x00000000
    [08]: 0x0044C754 0x00412C10 0x00000000 0x00409C54
    [12]: 0x00000009 0x00000000 0x00952F6C 0x00952F77
    [16]: 0x00952CC4 0x00910712 0x00000000 0x00000000
    [20]: 0x4099ACE2 0x0040E858 0x00421254 0x004127F4
    [24]: 0x8099B9B2 0x0040E8B8 0x00000000 0xC099ACE2
    [28]: 0x800B75CB 0x0040E8F8 0x00000007 0x00005008
    [32]: 0x809B048A 0x0040E958 0x00000010 0x00433B10
    [36]: 0x809AFBBC 0x0040E9A8 0x0042BB74 0x0042BBBC
    [40]: 0x8091D252 0x0040E9C8 0x0042BBBC 0x00000001
    [44]: 0x809FFA45 0x0040EA78 0x0043D3E4 0x0042C2C8
    [48]: 0x809FCEF4 0x0040EA98 0x0043D3E4 0x00000001
    [52]: 0x80911210 0x0040EAE8 0x00000010 0x004041D0
    [56]: 0x80911154 0x0040EB28 0x00400000 0x00000000
    
    Signed-off-by: Bartosz Markowski <bartosz.markowski@tieto.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef751ca54602d380873b33580eb1f1da19c6b592
Author: Christian Lamparter <chunkeey@googlemail.com>
Date:   Thu Dec 29 16:12:09 2016 +0200

    ath10k: fix potential memory leak in ath10k_wmi_tlv_op_pull_fw_stats()
    
    
    [ Upstream commit 097e46d2ae90265d1afe141ba6208ba598b79e01 ]
    
    ath10k_wmi_tlv_op_pull_fw_stats() uses tb = ath10k_wmi_tlv_parse_alloc(...)
    function, which allocates memory. If any of the three error-paths are
    taken, this tb needs to be freed.
    
    Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b24769300a00453fb4d12a319c70516fe030354e
Author: Ryan Hsu <ryanhsu@qca.qualcomm.com>
Date:   Thu Dec 22 15:02:37 2016 -0800

    ath10k: ignore configuring the incorrect board_id
    
    
    [ Upstream commit d2e202c06ca42d353d95df12437740921a6d05b5 ]
    
    With command to get board_id from otp, in the case of following
    
      boot get otp board id result 0x00000000 board_id 0 chip_id 0
      boot using board name 'bus=pci,bmi-chip-id=0,bmi-board-id=0"
      ...
      failed to fetch board data for bus=pci,bmi-chip-id=0,bmi-board-id=0 from
      ath10k/QCA6174/hw3.0/board-2.bin
    
    The invalid board_id=0 will be used as index to search in the board-2.bin.
    
    Ignore the case with board_id=0, as it means the otp is not carrying
    the board id information.
    
    Signed-off-by: Ryan Hsu <ryanhsu@qca.qualcomm.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64b22ee723eed2e35265b9431db0e7587c53141f
Author: Ryan Hsu <ryanhsu@qca.qualcomm.com>
Date:   Tue Dec 13 14:55:19 2016 -0800

    ath10k: fix incorrect txpower set by P2P_DEVICE interface
    
    
    [ Upstream commit 88407beb1b1462f706a1950a355fd086e1c450b6 ]
    
    Ath10k reports the phy capability that supports P2P_DEVICE interface.
    
    When we use the P2P supported wpa_supplicant to start connection, it'll
    create two interfaces, one is wlan0 (vdev_id=0) and one is P2P_DEVICE
    p2p-dev-wlan0 which is for p2p control channel (vdev_id=1).
    
            ath10k_pci mac vdev create 0 (add interface) type 2 subtype 0
            ath10k_add_interface: vdev_id: 0, txpower: 0, bss_power: 0
            ...
            ath10k_pci mac vdev create 1 (add interface) type 2 subtype 1
            ath10k_add_interface: vdev_id: 1, txpower: 0, bss_power: 0
    
    And the txpower in per vif bss_conf will only be set to valid tx power when
    the interface is assigned with channel_ctx.
    
    But this P2P_DEVICE interface will never be used for any connection, so
    that the uninitialized bss_conf.txpower=0 is assinged to the
    arvif->txpower when interface created.
    
    Since the txpower configuration is firmware per physical interface.
    So the smallest txpower of all vifs will be the one limit the tx power
    of the physical device, that causing the low txpower issue on other
    active interfaces.
    
            wlan0: Limiting TX power to 21 (24 - 3) dBm
            ath10k_pci mac vdev_id 0 txpower 21
            ath10k_mac_txpower_recalc: vdev_id: 1, txpower: 0
            ath10k_mac_txpower_recalc: vdev_id: 0, txpower: 21
            ath10k_pci mac txpower 0
    
    This issue only happens when we use the wpa_supplicant that supports
    P2P or if we use the iw tool to create the control P2P_DEVICE interface.
    
    Signed-off-by: Ryan Hsu <ryanhsu@qca.qualcomm.com>
    Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c4cf731af838706523c3746fafe49afaa323887c
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Fri Dec 30 17:38:52 2016 +0100

    drm/armada: Fix compile fail
    
    
    [ Upstream commit 7357f89954b6d005df6ab8929759e78d7d9a80f9 ]
    
    I reported the include issue for tracepoints a while ago, but nothing
    seems to have happened. Now it bit us, since the drm_mm_print
    conversion was broken for armada. Fix it, so I can re-enable armada
    in the drm-misc build configs.
    
    v2: Rebase just the compile fix on top of Chris' build fix.
    
    Cc: Russell King <rmk+kernel@armlinux.org.uk>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Acked: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1483115932-19584-1-git-send-email-daniel.vetter@ffwll.ch
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f69dc100400482425c108a0dc0102101e192a21
Author: Thomas Preisner <thomas.preisner+linux@fau.de>
Date:   Fri Dec 30 03:37:53 2016 +0100

    net: 3com: typhoon: typhoon_init_one: fix incorrect return values
    
    
    [ Upstream commit 107fded7bf616ad6f46823d98b8ed6405d7adf2d ]
    
    In a few cases the err-variable is not set to a negative error code if a
    function call in typhoon_init_one() fails and thus 0 is returned
    instead.
    It may be better to set err to the appropriate negative error
    code before returning.
    
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=188841
    
    Reported-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Thomas Preisner <thomas.preisner+linux@fau.de>
    Signed-off-by: Milan Stephan <milan.stephan+linux@fau.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 609797646f9b1fbfa6817aec31ca1d0ea64efa19
Author: Thomas Preisner <thomas.preisner+linux@fau.de>
Date:   Fri Dec 30 03:37:54 2016 +0100

    net: 3com: typhoon: typhoon_init_one: make return values more specific
    
    
    [ Upstream commit 6b6bbb5922a4b1d4b58125a572da91010295fba3 ]
    
    In some cases the return value of a failing function is not being used
    and the function typhoon_init_one() returns another negative error code
    instead.
    
    Signed-off-by: Thomas Preisner <thomas.preisner+linux@fau.de>
    Signed-off-by: Milan Stephan <milan.stephan+linux@fau.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7c3d5333e39a3089ad259222b767a965963a693
Author: David Ahern <dsa@cumulusnetworks.com>
Date:   Thu Dec 29 15:39:37 2016 -0800

    net: Allow IP_MULTICAST_IF to set index to L3 slave
    
    
    [ Upstream commit 7bb387c5ab12aeac3d5eea28686489ff46b53ca9 ]
    
    IP_MULTICAST_IF fails if sk_bound_dev_if is already set and the new index
    does not match it. e.g.,
    
        ntpd[15381]: setsockopt IP_MULTICAST_IF 192.168.1.23 fails: Invalid argument
    
    Relax the check in setsockopt to allow setting mc_index to an L3 slave if
    sk_bound_dev_if points to an L3 master.
    
    Make a similar change for IPv6. In this case change the device lookup to
    take the rcu_read_lock avoiding a refcnt. The rcu lock is also needed for
    the lookup of a potential L3 master device.
    
    This really only silences a setsockopt failure since uses of mc_index are
    secondary to sk_bound_dev_if if it is set. In both cases, if either index
    is an L3 slave or master, lookups are directed to the same FIB table so
    relaxing the check at setsockopt time causes no harm.
    
    Patch is based on a suggested change by Darwin for a problem noted in
    their code base.
    
    Suggested-by: Darwin Dingel <darwin.dingel@alliedtelesis.co.nz>
    Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 778395506a7f5744dce0cc14876c2f45ac779dea
Author: Shawn Guo <shawn.guo@linaro.org>
Date:   Thu Dec 15 22:03:36 2016 +0800

    dmaengine: zx: set DMA_CYCLIC cap_mask bit
    
    
    [ Upstream commit fc318d64f3d91e15babac00e08354b1beb650b57 ]
    
    The zx_dma driver supports cyclic transfer mode.  Let's set DMA_CYCLIC
    cap_mask bit to make that clear, and avoid unnecessary failure when
    clients request channel via dma_request_chan_by_mask() with DMA_CYCLIC
    bit set in mask.
    
    Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
    Reviewed-by: Jun Nie <jun.nie@linaro.org>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37a48e6d83f513c0edabe4f12a80cb9fc4b8286b
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Mon Jan 2 14:04:24 2017 -0600

    PCI: Apply _HPX settings only to relevant devices
    
    
    [ Upstream commit 977509f7c5c6fb992ffcdf4291051af343b91645 ]
    
    Previously we didn't check the type of device before trying to apply Type 1
    (PCI-X) or Type 2 (PCIe) Setting Records from _HPX.
    
    We don't support PCI-X Setting Records, so this was harmless, but the
    warning was useless.
    
    We do support PCIe Setting Records, and we didn't check whether a device
    was PCIe before applying settings.  I don't think anything bad happened on
    non-PCIe devices because pcie_capability_clear_and_set_word(),
    pcie_cap_has_lnkctl(), etc., would fail before doing any harm.  But it's
    ugly to depend on those internals.
    
    Check the device type before attempting to apply Type 1 and Type 2 Setting
    Records (Type 0 records are applicable to PCI, PCI-X, and PCIe devices).
    
    A side benefit is that this prevents useless "not supported" warnings when
    a BIOS supplies a Type 1 (PCI-X) Setting Record and we try to apply it to
    every single device:
    
      pci 0000:00:00.0: PCI-X settings not supported
    
    After this patch, we'll get the warning only when a BIOS supplies a Type 1
    record and we have a PCI-X device to which it should be applied.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=187731
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57d2ce1603101ce3f30d0ccdc35b98af08d2ed88
Author: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Date:   Mon Jul 4 17:04:37 2016 -0700

    RDS: RDMA: return appropriate error on rdma map failures
    
    
    [ Upstream commit 584a8279a44a800dea5a5c1e9d53a002e03016b4 ]
    
    The first message to a remote node should prompt a new
    connection even if it is RDMA operation. For RDMA operation
    the MR mapping can fail because connections is not yet up.
    
    Since the connection establishment is asynchronous,
    we make sure the map failure because of unavailable
    connection reach to the user by appropriate error code.
    Before returning to the user, lets trigger the connection
    so that its ready for the next retry.
    
    Signed-off-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbb1fc744894bdba5a94b46b3e178cfb2330831d
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Fri Jul 21 11:36:26 2017 -0700

    e1000e: Separate signaling for link check/link up
    
    commit 19110cfbb34d4af0cdfe14cd243f3b09dc95b013 upstream.
    
    Lennart reported the following race condition:
    
    \ e1000_watchdog_task
        \ e1000e_has_link
            \ hw->mac.ops.check_for_link() === e1000e_check_for_copper_link
                /* link is up */
                mac->get_link_status = false;
    
                                /* interrupt */
                                \ e1000_msix_other
                                    hw->mac.get_link_status = true;
    
            link_active = !hw->mac.get_link_status
            /* link_active is false, wrongly */
    
    This problem arises because the single flag get_link_status is used to
    signal two different states: link status needs checking and link status is
    down.
    
    Avoid the problem by using the return value of .check_for_link to signal
    the link status to e1000e_has_link().
    
    Reported-by: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5df4097cfc7049f64cc0896ede59e94087abaefe
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Fri Jul 21 11:36:25 2017 -0700

    e1000e: Fix return value test
    
    commit d3509f8bc7b0560044c15f0e3ecfde1d9af757a6 upstream.
    
    All the helpers return -E1000_ERR_PHY.
    
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbb2d8000a8f2a257f33ecb2d1fc346dcfe2e09f
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Fri Jul 21 11:36:23 2017 -0700

    e1000e: Fix error path in link detection
    
    commit c4c40e51f9c32c6dd8adf606624c930a1c4d9bbb upstream.
    
    In case of error from e1e_rphy(), the loop will exit early and "success"
    will be set to true erroneously.
    
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6968bc56e4469324482b31fa3304fff0e196c46
Author: Tobias Jordan <Tobias.Jordan@elektrobit.com>
Date:   Wed Oct 4 11:35:03 2017 +0530

    PM / OPP: Add missing of_node_put(np)
    
    commit 7978db344719dab1e56d05e6fc04aaaddcde0a5e upstream.
    
    The for_each_available_child_of_node() loop in _of_add_opp_table_v2()
    doesn't drop the reference to "np" on errors. Fix that.
    
    Fixes: 274659029c9d (PM / OPP: Add support to parse "operating-points-v2" bindings)
    Signed-off-by: Tobias Jordan <Tobias.Jordan@elektrobit.com>
    [ VK: Improved commit log. ]
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    Reviewed-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd3c395d4d466a8d76c6afd01c9a0e718daf6ca4
Author: Tuomas Tynkkynen <tuomas@tuxera.com>
Date:   Wed Sep 6 17:59:08 2017 +0300

    net/9p: Switch to wait_event_killable()
    
    commit 9523feac272ccad2ad8186ba4fcc89103754de52 upstream.
    
    Because userspace gets Very Unhappy when calls like stat() and execve()
    return -EINTR on 9p filesystem mounts. For instance, when bash is
    looking in PATH for things to execute and some SIGCHLD interrupts
    stat(), bash can throw a spurious 'command not found' since it doesn't
    retry the stat().
    
    In practice, hitting the problem is rare and needs a really
    slow/bogged down 9p server.
    
    Signed-off-by: Tuomas Tynkkynen <tuomas@tuxera.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91bd72dd8c72c603132bbbfd348a4216b8c83f58
Author: Eric Biggers <ebiggers@google.com>
Date:   Sun Oct 29 06:30:19 2017 -0400

    fscrypt: lock mutex before checking for bounce page pool
    
    commit a0b3bc855374c50b5ea85273553485af48caf2f7 upstream.
    
    fscrypt_initialize(), which allocates the global bounce page pool when
    an encrypted file is first accessed, uses "double-checked locking" to
    try to avoid locking fscrypt_init_mutex.  However, it doesn't use any
    memory barriers, so it's theoretically possible for a thread to observe
    a bounce page pool which has not been fully initialized.  This is a
    classic bug with "double-checked locking".
    
    While "only a theoretical issue" in the latest kernel, in pre-4.8
    kernels the pointer that was checked was not even the last to be
    initialized, so it was easily possible for a crash (NULL pointer
    dereference) to happen.  This was changed only incidentally by the large
    refactor to use fs/crypto/.
    
    Solve both problems in a trivial way that can easily be backported: just
    always take the mutex.  It's theoretically less efficient, but it
    shouldn't be noticeable in practice as the mutex is only acquired very
    briefly once per encrypted file.
    
    Later I'd like to make this use a helper macro like DO_ONCE().  However,
    DO_ONCE() runs in atomic context, so we'd need to add a new macro that
    allows blocking.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb1831a83e54cd3269a2420fce81c4fd8ae6f667
Author: Steven Rostedt (Red Hat) <rostedt@goodmis.org>
Date:   Fri Oct 6 14:05:04 2017 -0400

    sched/rt: Simplify the IPI based RT balancing logic
    
    commit 4bdced5c9a2922521e325896a7bbbf0132c94e56 upstream.
    
    When a CPU lowers its priority (schedules out a high priority task for a
    lower priority one), a check is made to see if any other CPU has overloaded
    RT tasks (more than one). It checks the rto_mask to determine this and if so
    it will request to pull one of those tasks to itself if the non running RT
    task is of higher priority than the new priority of the next task to run on
    the current CPU.
    
    When we deal with large number of CPUs, the original pull logic suffered
    from large lock contention on a single CPU run queue, which caused a huge
    latency across all CPUs. This was caused by only having one CPU having
    overloaded RT tasks and a bunch of other CPUs lowering their priority. To
    solve this issue, commit:
    
      b6366f048e0c ("sched/rt: Use IPI to trigger RT task push migration instead of pulling")
    
    changed the way to request a pull. Instead of grabbing the lock of the
    overloaded CPU's runqueue, it simply sent an IPI to that CPU to do the work.
    
    Although the IPI logic worked very well in removing the large latency build
    up, it still could suffer from a large number of IPIs being sent to a single
    CPU. On a 80 CPU box, I measured over 200us of processing IPIs. Worse yet,
    when I tested this on a 120 CPU box, with a stress test that had lots of
    RT tasks scheduling on all CPUs, it actually triggered the hard lockup
    detector! One CPU had so many IPIs sent to it, and due to the restart
    mechanism that is triggered when the source run queue has a priority status
    change, the CPU spent minutes! processing the IPIs.
    
    Thinking about this further, I realized there's no reason for each run queue
    to send its own IPI. As all CPUs with overloaded tasks must be scanned
    regardless if there's one or many CPUs lowering their priority, because
    there's no current way to find the CPU with the highest priority task that
    can schedule to one of these CPUs, there really only needs to be one IPI
    being sent around at a time.
    
    This greatly simplifies the code!
    
    The new approach is to have each root domain have its own irq work, as the
    rto_mask is per root domain. The root domain has the following fields
    attached to it:
    
      rto_push_work  - the irq work to process each CPU set in rto_mask
      rto_lock       - the lock to protect some of the other rto fields
      rto_loop_start - an atomic that keeps contention down on rto_lock
                        the first CPU scheduling in a lower priority task
                        is the one to kick off the process.
      rto_loop_next  - an atomic that gets incremented for each CPU that
                        schedules in a lower priority task.
      rto_loop       - a variable protected by rto_lock that is used to
                        compare against rto_loop_next
      rto_cpu        - The cpu to send the next IPI to, also protected by
                        the rto_lock.
    
    When a CPU schedules in a lower priority task and wants to make sure
    overloaded CPUs know about it. It increments the rto_loop_next. Then it
    atomically sets rto_loop_start with a cmpxchg. If the old value is not "0",
    then it is done, as another CPU is kicking off the IPI loop. If the old
    value is "0", then it will take the rto_lock to synchronize with a possible
    IPI being sent around to the overloaded CPUs.
    
    If rto_cpu is greater than or equal to nr_cpu_ids, then there's either no
    IPI being sent around, or one is about to finish. Then rto_cpu is set to the
    first CPU in rto_mask and an IPI is sent to that CPU. If there's no CPUs set
    in rto_mask, then there's nothing to be done.
    
    When the CPU receives the IPI, it will first try to push any RT tasks that is
    queued on the CPU but can't run because a higher priority RT task is
    currently running on that CPU.
    
    Then it takes the rto_lock and looks for the next CPU in the rto_mask. If it
    finds one, it simply sends an IPI to that CPU and the process continues.
    
    If there's no more CPUs in the rto_mask, then rto_loop is compared with
    rto_loop_next. If they match, everything is done and the process is over. If
    they do not match, then a CPU scheduled in a lower priority task as the IPI
    was being passed around, and the process needs to start again. The first CPU
    in rto_mask is sent the IPI.
    
    This change removes this duplication of work in the IPI logic, and greatly
    lowers the latency caused by the IPIs. This removed the lockup happening on
    the 120 CPU machine. It also simplifies the code tremendously. What else
    could anyone ask for?
    
    Thanks to Peter Zijlstra for simplifying the rto_loop_start atomic logic and
    supplying me with the rto_start_trylock() and rto_start_unlock() helper
    functions.
    
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Clark Williams <williams@redhat.com>
    Cc: Daniel Bristot de Oliveira <bristot@redhat.com>
    Cc: John Kacur <jkacur@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Scott Wood <swood@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/20170424114732.1aac6dc4@gandalf.local.home
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a11b8458b35da1ad797973aa3d81120dd42cce8
Author: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
Date:   Tue Oct 17 11:48:50 2017 -0400

    media: v4l2-ctrl: Fix flags field on Control events
    
    commit 9cac9d2fb2fe0e0cadacdb94415b3fe49e3f724f upstream.
    
    VIDIOC_DQEVENT and VIDIOC_QUERY_EXT_CTRL should give the same output for
    the control flags field.
    
    This patch creates a new function user_flags(), that calculates the user
    exported flags value (which is different than the kernel internal flags
    structure). This function is then used by all the code that exports the
    internal flags to userspace.
    
    Reported-by: Dimitrios Katsaros <patcherwork@gmail.com>
    Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0870fb4c3566088dc222e582e43edbc9ececbce4
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Sep 21 05:40:18 2017 -0300

    cx231xx-cards: fix NULL-deref on missing association descriptor
    
    commit 6c3b047fa2d2286d5e438bcb470c7b1a49f415f6 upstream.
    
    Make sure to check that we actually have an Interface Association
    Descriptor before dereferencing it during probe to avoid dereferencing a
    NULL-pointer.
    
    Fixes: e0d3bafd0258 ("V4L/DVB (10954): Add cx231xx USB driver")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Tested-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d758f4d8bf20e74f2afc6dfd0120d332d0fb9217
Author: Sean Young <sean@mess.org>
Date:   Sun Oct 8 14:18:52 2017 -0400

    media: rc: check for integer overflow
    
    commit 3e45067f94bbd61dec0619b1c32744eb0de480c8 upstream.
    
    The ioctl LIRC_SET_REC_TIMEOUT would set a timeout of 704ns if called
    with a timeout of 4294968us.
    
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 878c0f9a7c693b238b30a85f870e5334a66a3935
Author: Michele Baldessari <michele@acksyn.org>
Date:   Mon Nov 6 08:50:22 2017 -0500

    media: Don't do DMA on stack for firmware upload in the AS102 driver
    
    commit b3120d2cc447ee77b9d69bf4ad7b452c9adb4d39 upstream.
    
    Firmware load on AS102 is using the stack which is not allowed any
    longer. We currently fail with:
    
    kernel: transfer buffer not dma capable
    kernel: ------------[ cut here ]------------
    kernel: WARNING: CPU: 0 PID: 598 at drivers/usb/core/hcd.c:1595 usb_hcd_map_urb_for_dma+0x41d/0x620
    kernel: Modules linked in: amd64_edac_mod(-) edac_mce_amd as102_fe dvb_as102(+) kvm_amd kvm snd_hda_codec_realtek dvb_core snd_hda_codec_generic snd_hda_codec_hdmi snd_hda_intel snd_hda_codec irqbypass crct10dif_pclmul crc32_pclmul snd_hda_core snd_hwdep snd_seq ghash_clmulni_intel sp5100_tco fam15h_power wmi k10temp i2c_piix4 snd_seq_device snd_pcm snd_timer parport_pc parport tpm_infineon snd tpm_tis soundcore tpm_tis_core tpm shpchp acpi_cpufreq xfs libcrc32c amdgpu amdkfd amd_iommu_v2 radeon hid_logitech_hidpp i2c_algo_bit drm_kms_helper crc32c_intel ttm drm r8169 mii hid_logitech_dj
    kernel: CPU: 0 PID: 598 Comm: systemd-udevd Not tainted 4.13.10-200.fc26.x86_64 #1
    kernel: Hardware name: ASUS All Series/AM1I-A, BIOS 0505 03/13/2014
    kernel: task: ffff979933b24c80 task.stack: ffffaf83413a4000
    kernel: RIP: 0010:usb_hcd_map_urb_for_dma+0x41d/0x620
    systemd-fsck[659]: /dev/sda2: clean, 49/128016 files, 268609/512000 blocks
    kernel: RSP: 0018:ffffaf83413a7728 EFLAGS: 00010282
    systemd-udevd[604]: link_config: autonegotiation is unset or enabled, the speed and duplex are not writable.
    kernel: RAX: 000000000000001f RBX: ffff979930bce780 RCX: 0000000000000000
    kernel: RDX: 0000000000000000 RSI: ffff97993ec0e118 RDI: ffff97993ec0e118
    kernel: RBP: ffffaf83413a7768 R08: 000000000000039a R09: 0000000000000000
    kernel: R10: 0000000000000001 R11: 00000000ffffffff R12: 00000000fffffff5
    kernel: R13: 0000000001400000 R14: 0000000000000001 R15: ffff979930806800
    kernel: FS:  00007effaca5c8c0(0000) GS:ffff97993ec00000(0000) knlGS:0000000000000000
    kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    kernel: CR2: 00007effa9fca962 CR3: 0000000233089000 CR4: 00000000000406f0
    kernel: Call Trace:
    kernel:  usb_hcd_submit_urb+0x493/0xb40
    kernel:  ? page_cache_tree_insert+0x100/0x100
    kernel:  ? xfs_iunlock+0xd5/0x100 [xfs]
    kernel:  ? xfs_file_buffered_aio_read+0x57/0xc0 [xfs]
    kernel:  usb_submit_urb+0x22d/0x560
    kernel:  usb_start_wait_urb+0x6e/0x180
    kernel:  usb_bulk_msg+0xb8/0x160
    kernel:  as102_send_ep1+0x49/0xe0 [dvb_as102]
    kernel:  ? devres_add+0x3f/0x50
    kernel:  as102_firmware_upload.isra.0+0x1dc/0x210 [dvb_as102]
    kernel:  as102_fw_upload+0xb6/0x1f0 [dvb_as102]
    kernel:  as102_dvb_register+0x2af/0x2d0 [dvb_as102]
    kernel:  as102_usb_probe+0x1f3/0x260 [dvb_as102]
    kernel:  usb_probe_interface+0x124/0x300
    kernel:  driver_probe_device+0x2ff/0x450
    kernel:  __driver_attach+0xa4/0xe0
    kernel:  ? driver_probe_device+0x450/0x450
    kernel:  bus_for_each_dev+0x6e/0xb0
    kernel:  driver_attach+0x1e/0x20
    kernel:  bus_add_driver+0x1c7/0x270
    kernel:  driver_register+0x60/0xe0
    kernel:  usb_register_driver+0x81/0x150
    kernel:  ? 0xffffffffc0807000
    kernel:  as102_usb_driver_init+0x1e/0x1000 [dvb_as102]
    kernel:  do_one_initcall+0x50/0x190
    kernel:  ? __vunmap+0x81/0xb0
    kernel:  ? kfree+0x154/0x170
    kernel:  ? kmem_cache_alloc_trace+0x15f/0x1c0
    kernel:  ? do_init_module+0x27/0x1e9
    kernel:  do_init_module+0x5f/0x1e9
    kernel:  load_module+0x2602/0x2c30
    kernel:  SYSC_init_module+0x170/0x1a0
    kernel:  ? SYSC_init_module+0x170/0x1a0
    kernel:  SyS_init_module+0xe/0x10
    kernel:  do_syscall_64+0x67/0x140
    kernel:  entry_SYSCALL64_slow_path+0x25/0x25
    kernel: RIP: 0033:0x7effab6cf3ea
    kernel: RSP: 002b:00007fff5cfcbbc8 EFLAGS: 00000246 ORIG_RAX: 00000000000000af
    kernel: RAX: ffffffffffffffda RBX: 00005569e0b83760 RCX: 00007effab6cf3ea
    kernel: RDX: 00007effac2099c5 RSI: 0000000000009a13 RDI: 00005569e0b98c50
    kernel: RBP: 00007effac2099c5 R08: 00005569e0b83ed0 R09: 0000000000001d80
    kernel: R10: 00007effab98db00 R11: 0000000000000246 R12: 00005569e0b98c50
    kernel: R13: 00005569e0b81c60 R14: 0000000000020000 R15: 00005569dfadfdf7
    kernel: Code: 48 39 c8 73 30 80 3d 59 60 9d 00 00 41 bc f5 ff ff ff 0f 85 26 ff ff ff 48 c7 c7 b8 6b d0 92 c6 05 3f 60 9d 00 01 e8 24 3d ad ff <0f> ff 8b 53 64 e9 09 ff ff ff 65 48 8b 0c 25 00 d3 00 00 48 8b
    kernel: ---[ end trace c4cae366180e70ec ]---
    kernel: as10x_usb: error during firmware upload part1
    
    Let's allocate the the structure dynamically so we can get the firmware
    loaded correctly:
    [   14.243057] as10x_usb: firmware: as102_data1_st.hex loaded with success
    [   14.500777] as10x_usb: firmware: as102_data2_st.hex loaded with success
    
    Signed-off-by: Michele Baldessari <michele@acksyn.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2943ce580f57d75df763c37846e9e478861e0fd
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Thu Aug 31 21:55:57 2017 +0530

    powerpc/signal: Properly handle return value from uprobe_deny_signal()
    
    commit 46725b17f1c6c815a41429259b3f070c01e71bc1 upstream.
    
    When a uprobe is installed on an instruction that we currently do not
    emulate, we copy the instruction into a xol buffer and single step
    that instruction. If that instruction generates a fault, we abort the
    single stepping before invoking the signal handler. Once the signal
    handler is done, the uprobe trap is hit again since the instruction is
    retried and the process repeats.
    
    We use uprobe_deny_signal() to detect if the xol instruction triggered
    a signal. If so, we clear TIF_SIGPENDING and set TIF_UPROBE so that the
    signal is not handled until after the single stepping is aborted. In
    this case, uprobe_deny_signal() returns true and get_signal() ends up
    returning 0. However, in do_signal(), we are not looking at the return
    value, but depending on ksig.sig for further action, all with an
    uninitialized ksig that is not touched in this scenario. Fix the same
    by initializing ksig.sig to 0.
    
    Fixes: 129b69df9c90 ("powerpc: Use get_signal() signal_setup_done()")
    Reported-by: Anton Blanchard <anton@samba.org>
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 937a91cd399220c11f513e899218b26b226ee334
Author: John David Anglin <dave.anglin@bell.net>
Date:   Sat Nov 11 17:11:16 2017 -0500

    parisc: Fix validity check of pointer size argument in new CAS implementation
    
    commit 05f016d2ca7a4fab99d5d5472168506ddf95e74f upstream.
    
    As noted by Christoph Biedl, passing a pointer size of 4 in the new CAS
    implementation causes a kernel crash.  The attached patch corrects the
    off by one error in the argument validity check.
    
    In reviewing the code, I noticed that we only perform word operations
    with the pointer size argument.  The subi instruction intentionally uses
    a word condition on 64-bit kernels.  Nullification was used instead of a
    cmpib instruction as the branch should never be taken.  The shlw
    pseudo-operation generates a depw,z instruction and it clears the target
    before doing a shift left word deposit.  Thus, we don't need to clip the
    upper 32 bits of this argument on 64-bit kernels.
    
    Tested with a gcc testsuite run with a 64-bit kernel.  The gcc atomic
    code in libgcc is the only direct user of the new CAS implementation
    that I am aware of.
    
    Signed-off-by: John David Anglin <dave.anglin@bell.net>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aef7cdb6a6ffa07da7f713d9164d50f954df10b6
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:43 2017 -0600

    ixgbe: Fix skb list corruption on Power systems
    
    commit 0a9a17e3bb4564caf4bfe2a6783ae1287667d188 upstream.
    
    This patch fixes an issue seen on Power systems with ixgbe which results
    in skb list corruption and an eventual kernel oops. The following is what
    was observed:
    
    CPU 1                                   CPU2
    ============================            ============================
    1: ixgbe_xmit_frame_ring                ixgbe_clean_tx_irq
    2:  first->skb = skb                     eop_desc = tx_buffer->next_to_watch
    3:  ixgbe_tx_map                         read_barrier_depends()
    4:   wmb                                 check adapter written status bit
    5:   first->next_to_watch = tx_desc      napi_consume_skb(tx_buffer->skb ..);
    6:   writel(i, tx_ring->tail);
    
    The read_barrier_depends is insufficient to ensure that tx_buffer->skb does not
    get loaded prior to tx_buffer->next_to_watch, which then results in loading
    a stale skb pointer. This patch replaces the read_barrier_depends with
    smp_rmb to ensure loads are ordered with respect to the load of
    tx_buffer->next_to_watch.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb923a81c33e543ead08420ac03e7d704243d6b0
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:48 2017 -0600

    fm10k: Use smp_rmb rather than read_barrier_depends
    
    commit 7b8edcc685b5e2c3c37aa13dc50a88e84a5bfef8 upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with fm10k as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4ca98b7a8030a154478cfdf48fadb6ddbb2b04b
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:49 2017 -0600

    i40evf: Use smp_rmb rather than read_barrier_depends
    
    commit f72271e2a0ae4277d53c4053f5eed8bb346ba38a upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with i40evf as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8e699dfca04191e209a63d484e347aa921422e2
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:45 2017 -0600

    ixgbevf: Use smp_rmb rather than read_barrier_depends
    
    commit ae0c585d93dfaf923d2c7eb44b2c3ab92854ea9b upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with ixgbevf as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f7de4d5f525fc39c83e6c423e12f1954106bf38
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:46 2017 -0600

    igbvf: Use smp_rmb rather than read_barrier_depends
    
    commit 1e1f9ca546556e508d021545861f6b5fc75a95fe upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with igbvf as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 391cdaaaa9d9ce6b4cdc659d94ae59f9384f5e37
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:47 2017 -0600

    igb: Use smp_rmb rather than read_barrier_depends
    
    commit c4cb99185b4cc96c0a1c70104dc21ae14d7e7f28 upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with igb as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 146d533713859f7990703021e33ab63c8f7bcb1d
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Fri Nov 17 11:05:44 2017 -0600

    i40e: Use smp_rmb rather than read_barrier_depends
    
    commit 52c6912fde0133981ee50ba08808f257829c4c93 upstream.
    
    The original issue being fixed in this patch was seen with the ixgbe
    driver, but the same issue exists with i40e as well, as the code is
    very similar. read_barrier_depends is not sufficient to ensure
    loads following it are not speculatively loaded out of order
    by the CPU, which can result in stale data being loaded, causing
    potential system crashes.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 76c389ca1331aeec038d7a69cb1b8a0f3719dd72
Author: Johan Hovold <johan@kernel.org>
Date:   Sun Jul 9 13:08:58 2017 +0200

    NFC: fix device-allocation error return
    
    commit c45e3e4c5b134b081e8af362109905427967eb19 upstream.
    
    A recent change fixing NFC device allocation itself introduced an
    error-handling bug by returning an error pointer in case device-id
    allocation failed. This is clearly broken as the callers still expected
    NULL to be returned on errors as detected by Dan's static checker.
    
    Fix this up by returning NULL in the event that we've run out of memory
    when allocating a new device id.
    
    Note that the offending commit is marked for stable (3.8) so this fix
    needs to be backported along with it.
    
    Fixes: 20777bc57c34 ("NFC: fix broken device allocation")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ecc5e8914766d6d2c14f06e5dac0bfd173505d85
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Wed Oct 11 10:27:26 2017 -0700

    IB/srp: Avoid that a cable pull can trigger a kernel crash
    
    commit 8a0d18c62121d3c554a83eb96e2752861d84d937 upstream.
    
    This patch fixes the following kernel crash:
    
    general protection fault: 0000 [#1] PREEMPT SMP
    Workqueue: ib_mad2 timeout_sends [ib_core]
    Call Trace:
     ib_sa_path_rec_callback+0x1c4/0x1d0 [ib_core]
     send_handler+0xb2/0xd0 [ib_core]
     timeout_sends+0x14d/0x220 [ib_core]
     process_one_work+0x200/0x630
     worker_thread+0x4e/0x3b0
     kthread+0x113/0x150
    
    Fixes: commit aef9ec39c47f ("IB: Add SCSI RDMA Protocol (SRP) initiator")
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e32b40435b9d5e073c788dcfebb679c8a6ace1e
Author: Bart Van Assche <bart.vanassche@wdc.com>
Date:   Wed Oct 11 10:27:22 2017 -0700

    IB/srpt: Do not accept invalid initiator port names
    
    commit c70ca38960399a63d5c048b7b700612ea321d17e upstream.
    
    Make srpt_parse_i_port_id() return a negative value if hex2bin()
    fails.
    
    Fixes: commit a42d985bd5b2 ("ib_srpt: Initial SRP Target merge for v3.3-rc1")
    Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 54a8d930b93f171acaffbac83a1d0f595fa277bd
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Tue Sep 26 11:21:24 2017 -0700

    libnvdimm, namespace: make 'resource' attribute only readable by root
    
    commit c1fb3542074fd0c4d901d778bd52455111e4eb6f upstream.
    
    For the same reason that /proc/iomem returns 0's for non-root readers
    and acpi tables are root-only, make the 'resource' attribute for
    namespace devices only readable by root. Otherwise we disclose physical
    address information.
    
    Fixes: bf9bccc14c05 ("libnvdimm: pmem label sets and namespace instantiation")
    Reported-by: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4dae2f771fa72083cf247ea44bcdb7096409527d
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Tue Sep 26 11:41:28 2017 -0700

    libnvdimm, namespace: fix label initialization to use valid seq numbers
    
    commit b18d4b8a25af6fe83d7692191d6ff962ea611c4f upstream.
    
    The set of valid sequence numbers is {1,2,3}. The specification
    indicates that an implementation should consider 0 a sign of a critical
    error:
    
        UEFI 2.7: 13.19 NVDIMM Label Protocol
    
        Software never writes the sequence number 00, so a correctly
        check-summed Index Block with this sequence number probably indicates a
        critical error. When software discovers this case it treats it as an
        invalid Index Block indication.
    
    While the expectation is that the invalid block is just thrown away, the
    Robustness Principle says we should fix this to make both sequence
    numbers valid.
    
    Fixes: f524bf271a5c ("libnvdimm: write pmem label set")
    Reported-by: Juston Li <juston.li@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 037646313522559a65e91952c2e1ec623abf5147
Author: Johan Hovold <johan@kernel.org>
Date:   Sat Nov 11 17:29:29 2017 +0100

    clk: ti: dra7-atl-clock: fix child-node lookups
    
    commit 33ec6dbc5a02677509d97fe36cd2105753f0f0ea upstream.
    
    Fix child node-lookup during probe, which ended up searching the whole
    device tree depth-first starting at parent rather than just matching on
    its children.
    
    Note that the original premature free of the parent node has already
    been fixed separately, but that fix was apparently never backported to
    stable.
    
    Fixes: 9ac33b0ce81f ("CLK: TI: Driver for DRA7 ATL (Audio Tracking Logic)")
    Fixes: 660e15519399 ("clk: ti: dra7-atl-clock: Fix of_node reference counting")
    Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eca460c485f93de1474352d1d509e1a3e9f1d407
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Fri Mar 11 16:13:32 2016 +0200

    clk: ti: dra7-atl-clock: Fix of_node reference counting
    
    commit 660e1551939931657808d47838a3f443c0e83fd0 upstream.
    
    of_find_node_by_name() will call of_node_put() on the node so we need to
    get it first to avoid warnings.
    The cfg_node needs to be put after we have finished processing the
    properties.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Tested-by: Nishanth Menon <nm@ti.com>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36d2f19430e2711a1b327ac1734de4a52c67abd2
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Tue Oct 10 17:31:42 2017 -0400

    SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status
    
    commit e9d4bf219c83d09579bc62512fea2ca10f025d93 upstream.
    
    There is no guarantee that either the request or the svc_xprt exist
    by the time we get round to printing the trace message.
    
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a694b1f85aeafb674ad3c47e2efa3c3de69abf5e
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Oct 26 09:13:27 2017 +0200

    KVM: SVM: obey guest PAT
    
    commit 15038e14724799b8c205beb5f20f9e54896013c3 upstream.
    
    For many years some users of assigned devices have reported worse
    performance on AMD processors with NPT than on AMD without NPT,
    Intel or bare metal.
    
    The reason turned out to be that SVM is discarding the guest PAT
    setting and uses the default (PA0=PA4=WB, PA1=PA5=WT, PA2=PA6=UC-,
    PA3=UC).  The guest might be using a different setting, and
    especially might want write combining but isn't getting it
    (instead getting slow UC or UC- accesses).
    
    Thanks a lot to geoff@hostfission.com for noticing the relation
    to the g_pat setting.  The patch has been tested also by a bunch
    of people on VFIO users forums.
    
    Fixes: 709ddebf81cb40e3c36c6109a7892e8b93a09464
    Fixes: https://bugzilla.kernel.org/show_bug.cgi?id=196409
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Tested-by: Nick Sarnie <commendsarnex@gmail.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8293dc75de475ae9b6b0071f8dcf3585cb8be42a
Author: Ladi Prosek <lprosek@redhat.com>
Date:   Wed Oct 11 16:54:42 2017 +0200

    KVM: nVMX: set IDTR and GDTR limits when loading L1 host state
    
    commit 21f2d551183847bc7fbe8d866151d00cdad18752 upstream.
    
    Intel SDM 27.5.2 Loading Host Segment and Descriptor-Table Registers:
    
    "The GDTR and IDTR limits are each set to FFFFH."
    
    Signed-off-by: Ladi Prosek <lprosek@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e426ed57cd24b8d6621a4cf60d715d7a7da9a76
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Sep 22 16:48:28 2017 -0700

    target: Fix QUEUE_FULL + SCSI task attribute handling
    
    commit 1c79df1f349fb6050016cea4ef1dfbc3853a5685 upstream.
    
    This patch fixes a bug during QUEUE_FULL where transport_complete_qf()
    calls transport_complete_task_attr() after it's already been invoked
    by target_complete_ok_work() or transport_generic_request_failure()
    during initial completion, preceeding QUEUE_FULL.
    
    This will result in se_device->simple_cmds, se_device->dev_cur_ordered_id
    and/or se_device->dev_ordered_sync being updated multiple times for
    a single se_cmd.
    
    To address this bug, clear SCF_TASK_ATTR_SET after the first call
    to transport_complete_task_attr(), and avoid updating SCSI task
    attribute related counters for any subsequent calls.
    
    Also, when a se_cmd is deferred due to ordered tags and executed
    via target_restart_delayed_cmds(), set CMD_T_SENT before execution
    matching what target_execute_cmd() does.
    
    Cc: Michael Cyr <mikecyr@linux.vnet.ibm.com>
    Cc: Bryant G. Ly <bryantly@linux.vnet.ibm.com>
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 63bfc4c90a878df5fcb4a80a06390393dbee1519
Author: Nicholas Bellinger <nab@linux-iscsi.org>
Date:   Fri Oct 27 20:52:56 2017 -0700

    iscsi-target: Fix non-immediate TMR reference leak
    
    commit 3fc9fb13a4b2576aeab86c62fd64eb29ab68659c upstream.
    
    This patch fixes a se_cmd->cmd_kref reference leak that can
    occur when a non immediate TMR is proceeded our of command
    sequence number order, and CMDSN_LOWER_THAN_EXP is returned
    by iscsit_sequence_cmd().
    
    To address this bug, call target_put_sess_cmd() during this
    special case following what iscsit_process_scsi_cmd() does
    upon CMDSN_LOWER_THAN_EXP.
    
    Cc: Mike Christie <mchristi@redhat.com>
    Cc: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8709c5386109557e6cb9e3c38f011ce627fe3ce8
Author: Tuomas Tynkkynen <tuomas@tuxera.com>
Date:   Wed Sep 6 17:59:07 2017 +0300

    fs/9p: Compare qid.path in v9fs_test_inode
    
    commit 8ee031631546cf2f7859cc69593bd60bbdd70b46 upstream.
    
    Commit fd2421f54423 ("fs/9p: When doing inode lookup compare qid details
    and inode mode bits.") transformed v9fs_qid_iget() to use iget5_locked()
    instead of iget_locked(). However, the test() callback is not checking
    fid.path at all, which means that a lookup in the inode cache can now
    accidentally locate a completely wrong inode from the same inode hash
    bucket if the other fields (qid.type and qid.version) match.
    
    Fixes: fd2421f54423 ("fs/9p: When doing inode lookup compare qid details and inode mode bits.")
    Reviewed-by: Latchesar Ionkov <lucho@ionkov.net>
    Signed-off-by: Tuomas Tynkkynen <tuomas@tuxera.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b11593eb742ab6b69b1c23110fba024c5257101
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun Sep 24 18:36:44 2017 -0400

    fix a page leak in vhost_scsi_iov_to_sgl() error recovery
    
    commit 11d49e9d089ccec81be87c2386dfdd010d7f7f6e upstream.
    
    we are advancing sg as we go, so the pages we need to drop in
    case of error are *before* the current sg.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 509ab500a240f42fd35a696e735ca8e787668791
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Nov 22 15:21:32 2017 +0800

    ALSA: hda/realtek - Fix ALC700 family no sound issue
    
    commit 2d7fe6185722b0817bb345f62ab06b76a7b26542 upstream.
    
    It maybe the typo for ALC700 support patch.
    To fix the bit value on this patch.
    
    Fixes: 6fbae35a3170 ("ALSA: hda/realtek - Add support for new codecs ALC700/ALC701/ALC703")
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ef67455316481c4a418542495636505a0ab8c88e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 16:36:11 2017 +0100

    ALSA: timer: Remove kernel warning at compat ioctl error paths
    
    commit 3d4e8303f2c747c8540a0a0126d0151514f6468b upstream.
    
    Some timer compat ioctls have NULL checks of timer instance with
    snd_BUG_ON() that bring up WARN_ON() when the debug option is set.
    Actually the condition can be met in the normal situation and it's
    confusing and bad to spew kernel warnings with stack trace there.
    Let's remove snd_BUG_ON() invocation and replace with the simple
    checks.  Also, correct the error code to EBADFD to follow the native
    ioctl error handling.
    
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3532750d20f56f0165bd196aee3c6bb9fb5c1fdb
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 17:28:06 2017 +0100

    ALSA: usb-audio: Add sanity checks in v2 clock parsers
    
    commit 0a62d6c966956d77397c32836a5bbfe3af786fc1 upstream.
    
    The helper functions to parse and look for the clock source, selector
    and multiplier unit may return the descriptor with a too short length
    than required, while there is no sanity check in the caller side.
    Add some sanity checks in the parsers, at least, to guarantee the
    given descriptor size, for avoiding the potential crashes.
    
    Fixes: 79f920fbff56 ("ALSA: usb-audio: parse clock topology of UAC2 devices")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b6cede2e45500452c5c49d9cfb7d10cb1aca437
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 17:00:32 2017 +0100

    ALSA: usb-audio: Fix potential out-of-bound access at parsing SU
    
    commit f658f17b5e0e339935dca23e77e0f3cad591926b upstream.
    
    The usb-audio driver may trigger an out-of-bound access at parsing a
    malformed selector unit, as it checks the header length only after
    evaluating bNrInPins field, which can be already above the given
    length.  Fix it by adding the length check beforehand.
    
    Fixes: 99fc86450c43 ("ALSA: usb-mixer: parse descriptors with structs")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1316b9d83de1f0ce969206aaa5d3a1a60dc5c37
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Nov 21 16:55:51 2017 +0100

    ALSA: usb-audio: Add sanity checks to FE parser
    
    commit d937cd6790a2bef2d07b500487646bd794c039bb upstream.
    
    When the usb-audio descriptor contains the malformed feature unit
    description with a too short length, the driver may access
    out-of-bounds.  Add a sanity check of the header size at the beginning
    of parse_audio_feature_unit().
    
    Fixes: 23caaf19b11e ("ALSA: usb-mixer: Add support for Audio Class v2.0")
    Reported-by: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b71cf750ddd3ab64e8596b9b07ff78a8a669ef30
Author: Henrik Eriksson <henrik.eriksson@axis.com>
Date:   Tue Nov 21 09:29:28 2017 +0100

    ALSA: pcm: update tstamp only if audio_tstamp changed
    
    commit 20e3f985bb875fea4f86b04eba4b6cc29bfd6b71 upstream.
    
    commit 3179f6200188 ("ALSA: core: add .get_time_info") had a side effect
    of changing the behaviour of the PCM runtime tstamp.  Prior to this
    change tstamp was not updated by snd_pcm_update_hw_ptr0() unless the
    hw_ptr had moved, after this change tstamp was always updated.
    
    For an application using alsa-lib, doing snd_pcm_readi() followed by
    snd_pcm_status() to estimate the age of the read samples by subtracting
    status->avail * [sample rate] from status->tstamp this change degraded
    the accuracy of the estimate on devices where the pcm hw does not
    provide a granular hw_ptr, e.g., devices using
    soc-generic-dmaengine-pcm.c and a dma-engine with residue_granularity
    DMA_RESIDUE_GRANULARITY_DESCRIPTOR.  The accuracy of the estimate
    depended on the latency between the PCM hw completing a period and the
    driver called snd_pcm_period_elapsed() to notify ALSA core, typically
    determined by interrupt handling latency.  After the change the accuracy
    of the estimate depended on the latency between the PCM hw completing a
    period and the application calling snd_pcm_status(), determined by the
    scheduling of the application process.  The maximum error of the
    estimate is one period length in both cases, but the error average and
    variance is smaller when it depends on interrupt latency.
    
    Instead of always updating tstamp, update it only if audio_tstamp
    changed.
    
    Fixes: 3179f6200188 ("ALSA: core: add .get_time_info")
    Suggested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Henrik Eriksson <henrik.eriksson@axis.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db12d9b5a18143712362b5ccc4b077bf57b040ec
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Fri Oct 6 23:09:55 2017 -0400

    ext4: fix interaction between i_size, fallocate, and delalloc after a crash
    
    commit 51e3ae81ec58e95f10a98ef3dd6d7bce5d8e35a2 upstream.
    
    If there are pending writes subject to delayed allocation, then i_size
    will show size after the writes have completed, while i_disksize
    contains the value of i_size on the disk (since the writes have not
    been persisted to disk).
    
    If fallocate(2) is called with the FALLOC_FL_KEEP_SIZE flag, either
    with or without the FALLOC_FL_ZERO_RANGE flag set, and the new size
    after the fallocate(2) is between i_size and i_disksize, then after a
    crash, if a journal commit has resulted in the changes made by the
    fallocate() call to be persisted after a crash, but the delayed
    allocation write has not resolved itself, i_size would not be updated,
    and this would cause the following e2fsck complaint:
    
    Inode 12, end of extent exceeds allowed value
            (logical block 33, physical block 33441, len 7)
    
    This can only take place on a sparse file, where the fallocate(2) call
    is allocating blocks in a range which is before a pending delayed
    allocation write which is extending i_size.  Since this situation is
    quite rare, and the window in which the crash must take place is
    typically < 30 seconds, in practice this condition will rarely happen.
    
    Nevertheless, it can be triggered in testing, and in particular by
    xfstests generic/456.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reported-by: Amir Goldstein <amir73il@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 189bc689547a57100cb0c5d0e689a8555e98b547
Author: Rameshwar Prasad Sahu <rsahu@apm.com>
Date:   Thu Nov 2 16:31:07 2017 +0530

    ata: fixes kernel crash while tracing ata_eh_link_autopsy event
    
    commit f1601113ddc0339a745e702f4fb1ca37d4875e65 upstream.
    
    When tracing ata link error event, the kernel crashes when the disk is
    removed due to NULL pointer access by trace_ata_eh_link_autopsy API.
    This occurs as the dev is NULL when the disk disappeared. This patch
    fixes this crash by calling trace_ata_eh_link_autopsy only if "dev"
    is not NULL.
    
    v2 changes:
     Removed direct passing "link" pointer instead of "dev" in trace API.
    
    Signed-off-by: Rameshwar Prasad Sahu <rsahu@apm.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Fixes: 255c03d15a29 ("libata: Add tracepoints")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1be21021099046fbe288ae957cd75ab1c7a0daf
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Nov 6 14:55:35 2017 +0100

    rtlwifi: fix uninitialized rtlhal->last_suspend_sec time
    
    commit 3f2a162fab15aee243178b5308bb5d1206fc4043 upstream.
    
    We set rtlhal->last_suspend_sec to an uninitialized stack variable,
    but unfortunately gcc never warned about this, I only found it
    while working on another patch. I opened a gcc bug for this.
    
    Presumably the value of rtlhal->last_suspend_sec is not all that
    important, but it does get used, so we probably want the
    patch backported to stable kernels.
    
    Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82839
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3c260c60d20c51283904462015069063f78b065d
Author: Larry Finger <Larry.Finger@lwfinger.net>
Date:   Thu Sep 14 13:17:44 2017 -0500

    rtlwifi: rtl8192ee: Fix memory leak when loading firmware
    
    commit 519ce2f933fa14acf69d5c8cabcc18711943d629 upstream.
    
    In routine rtl92ee_set_fw_rsvdpagepkt(), the driver allocates an skb, but
    never calls rtl_cmd_send_packet(), which will free the buffer. All other
    rtlwifi drivers perform this operation correctly.
    
    This problem has been in the driver since it was included in the kernel.
    Fortunately, each firmware load only leaks 4 buffers, which likely
    explains why it has not previously been detected.
    
    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8b8ab79ca4fd69182f5864ddcd59994717e0186
Author: Andrew Elble <aweits@rit.edu>
Date:   Fri Nov 3 14:06:31 2017 -0400

    nfsd: deal with revoked delegations appropriately
    
    commit 95da1b3a5aded124dd1bda1e3cdb876184813140 upstream.
    
    If a delegation has been revoked by the server, operations using that
    delegation should error out with NFS4ERR_DELEG_REVOKED in the >4.1
    case, and NFS4ERR_BAD_STATEID otherwise.
    
    The server needs NFSv4.1 clients to explicitly free revoked delegations.
    If the server returns NFS4ERR_DELEG_REVOKED, the client will do that;
    otherwise it may just forget about the delegation and be unable to
    recover when it later sees SEQ4_STATUS_RECALLABLE_STATE_REVOKED set on a
    SEQUENCE reply.  That can cause the Linux 4.1 client to loop in its
    stage manager.
    
    Signed-off-by: Andrew Elble <aweits@rit.edu>
    Reviewed-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a2d4b41472c73439adc6b8b55fed212d85f4faa
Author: Chuck Lever <chuck.lever@oracle.com>
Date:   Sun Nov 5 15:45:22 2017 -0500

    nfs: Fix ugly referral attributes
    
    commit c05cefcc72416a37eba5a2b35f0704ed758a9145 upstream.
    
    Before traversing a referral and performing a mount, the mounted-on
    directory looks strange:
    
    dr-xr-xr-x. 2 4294967294 4294967294 0 Dec 31  1969 dir.0
    
    nfs4_get_referral is wiping out any cached attributes with what was
    returned via GETATTR(fs_locations), but the bit mask for that
    operation does not request any file attributes.
    
    Retrieve owner and timestamp information so that the memcpy in
    nfs4_get_referral fills in more attributes.
    
    Changes since v1:
    - Don't request attributes that the client unconditionally replaces
    - Request only MOUNTED_ON_FILEID or FILEID attribute, not both
    - encode_fs_locations() doesn't use the third bitmask word
    
    Fixes: 6b97fd3da1ea ("NFSv4: Follow a referral")
    Suggested-by: Pradeep Thomas <pradeepthomas@gmail.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab33df42eb3c53711c487c839d36379ffca3aeb9
Author: Joshua Watt <jpewhacker@gmail.com>
Date:   Tue Nov 7 16:25:47 2017 -0600

    NFS: Fix typo in nomigration mount option
    
    commit f02fee227e5f21981152850744a6084ff3fa94ee upstream.
    
    The option was incorrectly masking off all other options.
    
    Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e23be6169767d21f95d5bfd5df8a2c6274ee2d7
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Oct 19 16:47:48 2017 +0200

    isofs: fix timestamps beyond 2027
    
    commit 34be4dbf87fc3e474a842305394534216d428f5d upstream.
    
    isofs uses a 'char' variable to load the number of years since
    1900 for an inode timestamp. On architectures that use a signed
    char type by default, this results in an invalid date for
    anything beyond 2027.
    
    This changes the function argument to a 'u8' array, which
    is defined the same way on all architectures, and unambiguously
    lets us use years until 2155.
    
    This should be backported to all kernels that might still be
    in use by that date.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85c79043808d400ace74c99526fb9f4f67253102
Author: Coly Li <colyli@suse.de>
Date:   Fri Oct 13 16:35:29 2017 -0700

    bcache: check ca->alloc_thread initialized before wake up it
    
    commit 91af8300d9c1d7c6b6a2fd754109e08d4798b8d8 upstream.
    
    In bcache code, sysfs entries are created before all resources get
    allocated, e.g. allocation thread of a cache set.
    
    There is posibility for NULL pointer deference if a resource is accessed
    but which is not initialized yet. Indeed Jorg Bornschein catches one on
    cache set allocation thread and gets a kernel oops.
    
    The reason for this bug is, when bch_bucket_alloc() is called during
    cache set registration and attaching, ca->alloc_thread is not properly
    allocated and initialized yet, call wake_up_process() on ca->alloc_thread
    triggers NULL pointer deference failure. A simple and fast fix is, before
    waking up ca->alloc_thread, checking whether it is allocated, and only
    wake up ca->alloc_thread when it is not NULL.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Reported-by: Jorg Bornschein <jb@capsec.org>
    Cc: Kent Overstreet <kent.overstreet@gmail.com>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c093a258350e86f781f23fbbef4e3d761c6b1e3
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Aug 22 23:41:28 2017 +0300

    eCryptfs: use after free in ecryptfs_release_messaging()
    
    commit db86be3a12d0b6e5c5b51c2ab2a48f06329cb590 upstream.
    
    We're freeing the list iterator so we should be using the _safe()
    version of hlist_for_each_entry().
    
    Fixes: 88b4a07e6610 ("[PATCH] eCryptfs: Public key transport mechanism")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d7b05e4ffd5ad7cf54b57dfc2f377d9a543c8c6
Author: Andreas Rohner <andreas.rohner@gmx.net>
Date:   Fri Nov 17 15:29:35 2017 -0800

    nilfs2: fix race condition that causes file system corruption
    
    commit 31ccb1f7ba3cfe29631587d451cf5bb8ab593550 upstream.
    
    There is a race condition between nilfs_dirty_inode() and
    nilfs_set_file_dirty().
    
    When a file is opened, nilfs_dirty_inode() is called to update the
    access timestamp in the inode.  It calls __nilfs_mark_inode_dirty() in a
    separate transaction.  __nilfs_mark_inode_dirty() caches the ifile
    buffer_head in the i_bh field of the inode info structure and marks it
    as dirty.
    
    After some data was written to the file in another transaction, the
    function nilfs_set_file_dirty() is called, which adds the inode to the
    ns_dirty_files list.
    
    Then the segment construction calls nilfs_segctor_collect_dirty_files(),
    which goes through the ns_dirty_files list and checks the i_bh field.
    If there is a cached buffer_head in i_bh it is not marked as dirty
    again.
    
    Since nilfs_dirty_inode() and nilfs_set_file_dirty() use separate
    transactions, it is possible that a segment construction that writes out
    the ifile occurs in-between the two.  If this happens the inode is not
    on the ns_dirty_files list, but its ifile block is still marked as dirty
    and written out.
    
    In the next segment construction, the data for the file is written out
    and nilfs_bmap_propagate() updates the b-tree.  Eventually the bmap root
    is written into the i_bh block, which is not dirty, because it was
    written out in another segment construction.
    
    As a result the bmap update can be lost, which leads to file system
    corruption.  Either the virtual block address points to an unallocated
    DAT block, or the DAT entry will be reused for something different.
    
    The error can remain undetected for a long time.  A typical error
    message would be one of the "bad btree" errors or a warning that a DAT
    entry could not be found.
    
    This bug can be reproduced reliably by a simple benchmark that creates
    and overwrites millions of 4k files.
    
    Link: http://lkml.kernel.org/r/1509367935-3086-2-git-send-email-konishi.ryusuke@lab.ntt.co.jp
    Signed-off-by: Andreas Rohner <andreas.rohner@gmx.net>
    Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Tested-by: Andreas Rohner <andreas.rohner@gmx.net>
    Tested-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a4e08c634cebe28bfb96ec9482ed309f7c9b679
Author: NeilBrown <neilb@suse.com>
Date:   Fri Nov 17 15:29:13 2017 -0800

    autofs: don't fail mount for transient error
    
    commit ecc0c469f27765ed1e2b967be0aa17cee1a60b76 upstream.
    
    Currently if the autofs kernel module gets an error when writing to the
    pipe which links to the daemon, then it marks the whole moutpoint as
    catatonic, and it will stop working.
    
    It is possible that the error is transient.  This can happen if the
    daemon is slow and more than 16 requests queue up.  If a subsequent
    process tries to queue a request, and is then signalled, the write to
    the pipe will return -ERESTARTSYS and autofs will take that as total
    failure.
    
    So change the code to assess -ERESTARTSYS and -ENOMEM as transient
    failures which only abort the current request, not the whole mountpoint.
    
    It isn't a crash or a data corruption, but having autofs mountpoints
    suddenly stop working is rather inconvenient.
    
    Ian said:
    
    : And given the problems with a half dozen (or so) user space applications
    : consuming large amounts of CPU under heavy mount and umount activity this
    : could happen more easily than we expect.
    
    Link: http://lkml.kernel.org/r/87y3norvgp.fsf@notabene.neil.brown.name
    Signed-off-by: NeilBrown <neilb@suse.com>
    Acked-by: Ian Kent <raven@themaw.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 153142963ca1fa2b2f3bf3f687e00ef1a63bff5f
Author: Mirko Parthey <mirko.parthey@web.de>
Date:   Thu May 18 21:30:03 2017 +0200

    MIPS: BCM47XX: Fix LED inversion for WRT54GSv1
    
    commit 56a46acf62af5ba44fca2f3f1c7c25a2d5385b19 upstream.
    
    The WLAN LED on the Linksys WRT54GSv1 is active low, but the software
    treats it as active high. Fix the inverted logic.
    
    Fixes: 7bb26b169116 ("MIPS: BCM47xx: Fix LEDs on WRT54GS V1.0")
    Signed-off-by: Mirko Parthey <mirko.parthey@web.de>
    Looks-ok-by: Rafał Miłecki <zajec5@gmail.com>
    Cc: Hauke Mehrtens <hauke@hauke-m.de>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16071/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00fd53bc378fdeec3caece086de4eadd798b2346
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Tue Nov 7 19:09:20 2017 +0000

    MIPS: Fix an n32 core file generation regset support regression
    
    commit 547da673173de51f73887377eb275304775064ad upstream.
    
    Fix a commit 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    regression, then activated by commit 6a9c001b7ec3 ("MIPS: Switch ELF
    core dumper to use regsets.)", that caused n32 processes to dump o32
    core files by failing to set the EF_MIPS_ABI2 flag in the ELF core file
    header's `e_flags' member:
    
    $ file tls-core
    tls-core: ELF 32-bit MSB executable, MIPS, N32 MIPS64 rel2 version 1 (SYSV), [...]
    $ ./tls-core
    Aborted (core dumped)
    $ file core
    core: ELF 32-bit MSB core file MIPS, MIPS-I version 1 (SYSV), SVR4-style
    $
    
    Previously the flag was set as the result of a:
    
    statement placed in arch/mips/kernel/binfmt_elfn32.c, however in the
    regset case, i.e. when CORE_DUMP_USE_REGSET is set, ELF_CORE_EFLAGS is
    no longer used by `fill_note_info' in fs/binfmt_elf.c, and instead the
    `->e_flags' member of the regset view chosen is.  We have the views
    defined in arch/mips/kernel/ptrace.c, however only an o32 and an n64
    one, and the latter is used for n32 as well.  Consequently an o32 core
    file is incorrectly dumped from n32 processes (the ELF32 vs ELF64 class
    is chosen elsewhere, and the 32-bit one is correctly selected for n32).
    
    Correct the issue then by defining an n32 regset view and using it as
    appropriate.  Issue discovered in GDB testing.
    
    Fixes: 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Djordje Todorovic <djordje.todorovic@rt-rk.com>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17617/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e82464aa4a398207e2ecbc4877c82319ecdbafa
Author: Hou Tao <houtao1@huawei.com>
Date:   Wed Nov 1 15:42:36 2017 +0800

    dm: fix race between dm_get_from_kobject() and __dm_destroy()
    
    commit b9a41d21dceadf8104812626ef85dc56ee8a60ed upstream.
    
    The following BUG_ON was hit when testing repeat creation and removal of
    DM devices:
    
        kernel BUG at drivers/md/dm.c:2919!
        CPU: 7 PID: 750 Comm: systemd-udevd Not tainted 4.1.44
        Call Trace:
         [<ffffffff81649e8b>] dm_get_from_kobject+0x34/0x3a
         [<ffffffff81650ef1>] dm_attr_show+0x2b/0x5e
         [<ffffffff817b46d1>] ? mutex_lock+0x26/0x44
         [<ffffffff811df7f5>] sysfs_kf_seq_show+0x83/0xcf
         [<ffffffff811de257>] kernfs_seq_show+0x23/0x25
         [<ffffffff81199118>] seq_read+0x16f/0x325
         [<ffffffff811de994>] kernfs_fop_read+0x3a/0x13f
         [<ffffffff8117b625>] __vfs_read+0x26/0x9d
         [<ffffffff8130eb59>] ? security_file_permission+0x3c/0x44
         [<ffffffff8117bdb8>] ? rw_verify_area+0x83/0xd9
         [<ffffffff8117be9d>] vfs_read+0x8f/0xcf
         [<ffffffff81193e34>] ? __fdget_pos+0x12/0x41
         [<ffffffff8117c686>] SyS_read+0x4b/0x76
         [<ffffffff817b606e>] system_call_fastpath+0x12/0x71
    
    The bug can be easily triggered, if an extra delay (e.g. 10ms) is added
    between the test of DMF_FREEING & DMF_DELETING and dm_get() in
    dm_get_from_kobject().
    
    To fix it, we need to ensure the test of DMF_FREEING & DMF_DELETING and
    dm_get() are done in an atomic way, so _minor_lock is used.
    
    The other callers of dm_get() have also been checked to be OK: some
    callers invoke dm_get() under _minor_lock, some callers invoke it under
    _hash_lock, and dm_start_request() invoke it after increasing
    md->open_count.
    
    Signed-off-by: Hou Tao <houtao1@huawei.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36c4819abc92e6cb22de81568407a92cdb8e9363
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Nov 15 16:38:09 2017 -0800

    dm bufio: fix integer overflow when limiting maximum cache size
    
    commit 74d4108d9e681dbbe4a2940ed8fdff1f6868184c upstream.
    
    The default max_cache_size_bytes for dm-bufio is meant to be the lesser
    of 25% of the size of the vmalloc area and 2% of the size of lowmem.
    However, on 32-bit systems the intermediate result in the expression
    
        (VMALLOC_END - VMALLOC_START) * DM_BUFIO_VMALLOC_PERCENT / 100
    
    overflows, causing the wrong result to be computed.  For example, on a
    32-bit system where the vmalloc area is 520093696 bytes, the result is
    1174405 rather than the expected 130023424, which makes the maximum
    cache size much too small (far less than 2% of lowmem).  This causes
    severe performance problems for dm-verity users on affected systems.
    
    Fix this by using mult_frac() to correctly multiply by a percentage.  Do
    this for all places in dm-bufio that multiply by a percentage.  Also
    replace (VMALLOC_END - VMALLOC_START) with VMALLOC_TOTAL, which contrary
    to the comment is now defined in include/linux/vmalloc.h.
    
    Depends-on: 9993bc635 ("sched/x86: Fix overflow in cyc2ns_offset")
    Fixes: 95d402f057f2 ("dm: add bufio")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9f066404fd096351320a16660dd47a8a868a220
Author: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Date:   Thu Nov 23 20:07:00 2017 +0530

    ALSA: hda: Add Raven PCI ID
    
    commit 9ceace3c9c18c67676e75141032a65a8e01f9a7a upstream.
    
    This commit adds PCI ID for Raven platform
    
    Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c1faf9df0c840df75a4e1ee6a1c967f6ff10428
Author: Mathias Kresin <dev@kresin.me>
Date:   Thu May 11 08:11:15 2017 +0200

    MIPS: ralink: Fix typo in mt7628 pinmux function
    
    commit 05a67cc258e75ac9758e6f13d26337b8be51162a upstream.
    
    There is a typo inside the pinmux setup code. The function is called
    refclk and not reclk.
    
    Fixes: 53263a1c6852 ("MIPS: ralink: add mt7628an support")
    Signed-off-by: Mathias Kresin <dev@kresin.me>
    Acked-by: John Crispin <john@phrozen.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16047/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 84c785ed786a61dfd35ea3e818ead7dc0adddfd2
Author: Mathias Kresin <dev@kresin.me>
Date:   Thu May 11 08:11:14 2017 +0200

    MIPS: ralink: Fix MT7628 pinmux
    
    commit 8ef4b43cd3794d63052d85898e42424fd3b14d24 upstream.
    
    According to the datasheet the REFCLK pin is shared with GPIO#37 and
    the PERST pin is shared with GPIO#36.
    
    Fixes: 53263a1c6852 ("MIPS: ralink: add mt7628an support")
    Signed-off-by: Mathias Kresin <dev@kresin.me>
    Acked-by: John Crispin <john@phrozen.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16046/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36a082ce590f4e2625453d24dfcf98f74d2fe8c7
Author: Philip Derrin <philip@cog.systems>
Date:   Tue Nov 14 00:55:26 2017 +0100

    ARM: 8721/1: mm: dump: check hardware RO bit for LPAE
    
    commit 3b0c0c922ff4be275a8beb87ce5657d16f355b54 upstream.
    
    When CONFIG_ARM_LPAE is set, the PMD dump relies on the software
    read-only bit to determine whether a page is writable. This
    concealed a bug which left the kernel text section writable
    (AP2=0) while marked read-only in the software bit.
    
    In a kernel with the AP2 bug, the dump looks like this:
    
        ---[ Kernel Mapping ]---
        0xc0000000-0xc0200000           2M RW NX SHD
        0xc0200000-0xc0600000           4M ro x  SHD
        0xc0600000-0xc0800000           2M ro NX SHD
        0xc0800000-0xc4800000          64M RW NX SHD
    
    The fix is to check that the software and hardware bits are both
    set before displaying "ro". The dump then shows the true perms:
    
        ---[ Kernel Mapping ]---
        0xc0000000-0xc0200000           2M RW NX SHD
        0xc0200000-0xc0600000           4M RW x  SHD
        0xc0600000-0xc0800000           2M RW NX SHD
        0xc0800000-0xc4800000          64M RW NX SHD
    
    Fixes: ded947798469 ("ARM: 8109/1: mm: Modify pte_write and pmd_write logic for LPAE")
    Signed-off-by: Philip Derrin <philip@cog.systems>
    Tested-by: Neil Dick <neil@cog.systems>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f8046f7c9e3049000bbe610c15390bf698d681e
Author: Philip Derrin <philip@cog.systems>
Date:   Tue Nov 14 00:55:25 2017 +0100

    ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE
    
    commit 400eeffaffc7232c0ae1134fe04e14ae4fb48d8c upstream.
    
    Currently, for ARM kernels with CONFIG_ARM_LPAE and
    CONFIG_STRICT_KERNEL_RWX enabled, the 2MiB pages mapping the
    kernel code and rodata are writable. They are marked read-only in
    a software bit (L_PMD_SECT_RDONLY) but the hardware read-only bit
    is not set (PMD_SECT_AP2).
    
    For user mappings, the logic that propagates the software bit
    to the hardware bit is in set_pmd_at(); but for the kernel,
    section_update() writes the PMDs directly, skipping this logic.
    
    The fix is to set PMD_SECT_AP2 for read-only sections in
    section_update(), at the same time as L_PMD_SECT_RDONLY.
    
    Fixes: 1e3479225acb ("ARM: 8275/1: mm: fix PMD_SECT_RDONLY undeclared compile error")
    Signed-off-by: Philip Derrin <philip@cog.systems>
    Reported-by: Neil Dick <neil@cog.systems>
    Tested-by: Neil Dick <neil@cog.systems>
    Tested-by: Laura Abbott <labbott@redhat.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 29c4b6b4f46d4cc53b4f8c2b45e218ccfa1eea68
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Fri Nov 24 13:56:30 2017 +0900

    x86/decoder: Add new TEST instruction pattern
    
    commit 12a78d43de767eaf8fb272facb7a7b6f2dc6a9df upstream.
    
    The kbuild test robot reported this build warning:
    
      Warning: arch/x86/tools/test_get_len found difference at <jump_table>:ffffffff8103dd2c
    
      Warning: ffffffff8103dd82: f6 09 d8 testb $0xd8,(%rcx)
      Warning: objdump says 3 bytes, but insn_get_length() says 2
      Warning: decoded and checked 1569014 instructions with 1 warnings
    
    This sequence seems to be a new instruction not in the opcode map in the Intel SDM.
    
    The instruction sequence is "F6 09 d8", means Group3(F6), MOD(00)REG(001)RM(001), and 0xd8.
    Intel SDM vol2 A.4 Table A-6 said the table index in the group is "Encoding of Bits 5,4,3 of
    the ModR/M Byte (bits 2,1,0 in parenthesis)"
    
    In that table, opcodes listed by the index REG bits as:
    
      000         001       010 011  100        101        110         111
     TEST Ib/Iz,(undefined),NOT,NEG,MUL AL/rAX,IMUL AL/rAX,DIV AL/rAX,IDIV AL/rAX
    
    So, it seems TEST Ib is assigned to 001.
    
    Add the new pattern.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4fdb1637b2083824403de119b07c6bfe6560915d
Author: Eric Biggers <ebiggers@google.com>
Date:   Tue Nov 7 14:15:27 2017 -0800

    lib/mpi: call cond_resched() from mpi_powm() loop
    
    commit 1d9ddde12e3c9bab7f3d3484eb9446315e3571ca upstream.
    
    On a non-preemptible kernel, if KEYCTL_DH_COMPUTE is called with the
    largest permitted inputs (16384 bits), the kernel spends 10+ seconds
    doing modular exponentiation in mpi_powm() without rescheduling.  If all
    threads do it, it locks up the system.  Moreover, it can cause
    rcu_sched-stall warnings.
    
    Notwithstanding the insanity of doing this calculation in kernel mode
    rather than in userspace, fix it by calling cond_resched() as each bit
    from the exponent is processed.  It's still noninterruptible, but at
    least it's preemptible now.
    
    Do the cond_resched() once per bit rather than once per MPI limb because
    each limb might still easily take 100+ milliseconds on slow CPUs.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8ff3471878f3f8161bff92f73b3ecb35d6c397dc
Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Date:   Mon Sep 18 08:54:40 2017 -0700

    sched: Make resched_cpu() unconditional
    
    commit 7c2102e56a3f7d85b5d8f33efbd7aecc1f36fdd8 upstream.
    
    The current implementation of synchronize_sched_expedited() incorrectly
    assumes that resched_cpu() is unconditional, which it is not.  This means
    that synchronize_sched_expedited() can hang when resched_cpu()'s trylock
    fails as follows (analysis by Neeraj Upadhyay):
    
    o       CPU1 is waiting for expedited wait to complete:
    
            sync_rcu_exp_select_cpus
                 rdp->exp_dynticks_snap & 0x1   // returns 1 for CPU5
                 IPI sent to CPU5
    
            synchronize_sched_expedited_wait
                     ret = swait_event_timeout(rsp->expedited_wq,
                                               sync_rcu_preempt_exp_done(rnp_root),
                                               jiffies_stall);
    
            expmask = 0x20, CPU 5 in idle path (in cpuidle_enter())
    
    o       CPU5 handles IPI and fails to acquire rq lock.
    
            Handles IPI
                 sync_sched_exp_handler
                     resched_cpu
                         returns while failing to try lock acquire rq->lock
                     need_resched is not set
    
    o       CPU5 calls  rcu_idle_enter() and as need_resched is not set, goes to
            idle (schedule() is not called).
    
    o       CPU 1 reports RCU stall.
    
    Given that resched_cpu() is now used only by RCU, this commit fixes the
    assumption by making resched_cpu() unconditional.
    
    Reported-by: Neeraj Upadhyay <neeraju@codeaurora.org>
    Suggested-by: Neeraj Upadhyay <neeraju@codeaurora.org>
    Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3223ea129170a7799b92ee24862275aa7f6b9d1b
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Fri May 19 11:21:59 2017 -0700

    vsock: use new wait API for vsock_stream_sendmsg()
    
    commit 499fde662f1957e3cb8d192a94a099ebe19c714b upstream.
    
    As reported by Michal, vsock_stream_sendmsg() could still
    sleep at vsock_stream_has_space() after prepare_to_wait():
    
      vsock_stream_has_space
        vmci_transport_stream_has_space
          vmci_qpair_produce_free_space
            qp_lock
              qp_acquire_queue_mutex
                mutex_lock
    
    Just switch to the new wait API like we did for commit
    d9dc8b0f8b4e ("net: fix sleeping for sk_wait_event()").
    
    Reported-by: Michal Kubecek <mkubecek@suse.cz>
    Cc: Stefan Hajnoczi <stefanha@redhat.com>
    Cc: Jorgen Hansen <jhansen@vmware.com>
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: "Jorgen S. Hansen" <jhansen@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df24d6c224602ec23ad2626b07e13c40d018cbbc
Author: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
Date:   Tue Mar 22 17:05:52 2016 +0100

    AF_VSOCK: Shrink the area influenced by prepare_to_wait
    
    commit f7f9b5e7f8eccfd68ffa7b8d74b07c478bb9e7f0 upstream.
    
    When a thread is prepared for waiting by calling prepare_to_wait, sleeping
    is not allowed until either the wait has taken place or finish_wait has
    been called.  The existing code in af_vsock imposed unnecessary no-sleep
    assumptions to a broad list of backend functions.
    This patch shrinks the influence of prepare_to_wait to the area where it
    is strictly needed, therefore relaxing the no-sleep restriction there.
    
    Signed-off-by: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: "Jorgen S. Hansen" <jhansen@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2417da3f4d6bc4fc6c77f613f0e2264090892aa5
Author: WANG Cong <xiyou.wangcong@gmail.com>
Date:   Tue Jun 20 11:42:27 2017 -0700

    ipv6: only call ip6_route_dev_notify() once for NETDEV_UNREGISTER
    
    commit 76da0704507bbc51875013f6557877ab308cfd0a upstream.
    
    In commit 242d3a49a2a1 ("ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf")
    I assumed NETDEV_REGISTER and NETDEV_UNREGISTER are paired,
    unfortunately, as reported by jeffy, netdev_wait_allrefs()
    could rebroadcast NETDEV_UNREGISTER event until all refs are
    gone.
    
    We have to add an additional check to avoid this corner case.
    For netdev_wait_allrefs() dev->reg_state is NETREG_UNREGISTERED,
    for dev_change_net_namespace(), dev->reg_state is
    NETREG_REGISTERED. So check for dev->reg_state != NETREG_UNREGISTERED.
    
    Fixes: 242d3a49a2a1 ("ipv6: reorder ip6_route_dev_notifier after ipv6_dev_notf")
    Reported-by: jeffy <jeffy.chen@rock-chips.com>
    Cc: David Ahern <dsahern@gmail.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5c2607d3e7cd8d1e4ee96fdc8d18d49a57f9500f
Author: Vasily Gorbik <gor@linux.vnet.ibm.com>
Date:   Wed Nov 15 14:15:36 2017 +0100

    s390/disassembler: increase show_code buffer size
    
    commit b192571d1ae375e0bbe0aa3ccfa1a3c3704454b9 upstream.
    
    Current buffer size of 64 is too small. objdump shows that there are
    instructions which would require up to 75 bytes buffer (with current
    formating). 128 bytes "ought to be enough for anybody".
    
    Also replaces 8 spaces with a single tab to reduce the memory footprint.
    
    Fixes the following KASAN finding:
    
    BUG: KASAN: stack-out-of-bounds in number+0x3fe/0x538
    Write of size 1 at addr 000000005a4a75a0 by task bash/1282
    
    CPU: 1 PID: 1282 Comm: bash Not tainted 4.14.0+ #215
    Hardware name: IBM 2964 N96 702 (z/VM 6.4.0)
    Call Trace:
    ([<000000000011eeb6>] show_stack+0x56/0x88)
     [<0000000000e1ce1a>] dump_stack+0x15a/0x1b0
     [<00000000004e2994>] print_address_description+0xf4/0x288
     [<00000000004e2cf2>] kasan_report+0x13a/0x230
     [<0000000000e38ae6>] number+0x3fe/0x538
     [<0000000000e3dfe4>] vsnprintf+0x194/0x948
     [<0000000000e3ea42>] sprintf+0xa2/0xb8
     [<00000000001198dc>] print_insn+0x374/0x500
     [<0000000000119346>] show_code+0x4ee/0x538
     [<000000000011f234>] show_registers+0x34c/0x388
     [<000000000011f2ae>] show_regs+0x3e/0xa8
     [<000000000011f502>] die+0x1ea/0x2e8
     [<0000000000138f0e>] do_no_context+0x106/0x168
     [<0000000000139a1a>] do_protection_exception+0x4da/0x7d0
     [<0000000000e55914>] pgm_check_handler+0x16c/0x1c0
     [<000000000090639e>] sysrq_handle_crash+0x46/0x58
    ([<0000000000000007>] 0x7)
     [<00000000009073fa>] __handle_sysrq+0x102/0x218
     [<0000000000907c06>] write_sysrq_trigger+0xd6/0x100
     [<000000000061d67a>] proc_reg_write+0xb2/0x128
     [<0000000000520be6>] __vfs_write+0xee/0x368
     [<0000000000521222>] vfs_write+0x21a/0x278
     [<000000000052156a>] SyS_write+0xda/0x178
     [<0000000000e555cc>] system_call+0xc4/0x270
    
    The buggy address belongs to the page:
    page:000003d1016929c0 count:0 mapcount:0 mapping:          (null) index:0x0
    flags: 0x0()
    raw: 0000000000000000 0000000000000000 0000000000000000 ffffffff00000000
    raw: 0000000000000100 0000000000000200 0000000000000000 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     000000005a4a7480: 00 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1
     000000005a4a7500: 00 00 00 00 00 00 00 00 f2 f2 f2 f2 00 00 00 00
    >000000005a4a7580: 00 00 00 00 f3 f3 f3 f3 00 00 00 00 00 00 00 00
                                   ^
     000000005a4a7600: 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 f8 f8
     000000005a4a7680: f2 f2 f2 f2 f2 f2 f8 f8 f2 f2 f3 f3 f3 f3 00 00
    ==================================================================
    
    Signed-off-by: Vasily Gorbik <gor@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4337fa2425f6b00ba0977444a12dc5439858cb38
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Tue Sep 26 09:16:48 2017 +0200

    s390/disassembler: add missing end marker for e7 table
    
    commit 5c50538752af7968f53924b22dede8ed4ce4cb3b upstream.
    
    The e7 opcode table does not have an end marker. Hence when trying to
    find an unknown e7 instruction the code will access memory behind the
    table until it finds something that matches the opcode, or the kernel
    crashes, whatever comes first.
    
    This affects not only the in-kernel disassembler but also uprobes and
    kprobes which refuse to set a probe on unknown instructions, and
    therefore search the opcode tables to figure out if instructions are
    known or not.
    
    Fixes: 3585cb0280654 ("s390/disassembler: add vector instructions")
    Signed-off-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 04bc7a273264ce3a528b97af72a6473bc4a13fd7
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Mon Sep 11 11:24:22 2017 +0200

    s390/runtime instrumention: fix possible memory corruption
    
    commit d6e646ad7cfa7034d280459b2b2546288f247144 upstream.
    
    For PREEMPT enabled kernels the runtime instrumentation (RI) code
    contains a possible use-after-free bug. If a task that makes use of RI
    exits, it will execute do_exit() while still enabled for preemption.
    
    That function will call exit_thread_runtime_instr() via
    exit_thread(). If exit_thread_runtime_instr() gets preempted after the
    RI control block of the task has been freed but before the pointer to
    it is set to NULL, then save_ri_cb(), called from switch_to(), will
    write to already freed memory.
    
    Avoid this and simply disable preemption while freeing the control
    block and setting the pointer to NULL.
    
    Fixes: e4b8b3f33fca ("s390: add support for runtime instrumentation")
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-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 7ddbe701076d4ff2ba15c1a111bd41681594819e
Author: Heiko Carstens <heiko.carstens@de.ibm.com>
Date:   Thu Nov 9 12:29:34 2017 +0100

    s390: fix transactional execution control register handling
    
    commit a1c5befc1c24eb9c1ee83f711e0f21ee79cbb556 upstream.
    
    Dan Horák reported the following crash related to transactional execution:
    
    User process fault: interruption code 0013 ilc:3 in libpthread-2.26.so[3ff93c00000+1b000]
    CPU: 2 PID: 1 Comm: /init Not tainted 4.13.4-300.fc27.s390x #1
    Hardware name: IBM 2827 H43 400 (z/VM 6.4.0)
    task: 00000000fafc8000 task.stack: 00000000fafc4000
    User PSW : 0705200180000000 000003ff93c14e70
               R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:1 AS:0 CC:2 PM:0 RI:0 EA:3
    User GPRS: 0000000000000077 000003ff00000000 000003ff93144d48 000003ff93144d5e
               0000000000000000 0000000000000002 0000000000000000 000003ff00000000
               0000000000000000 0000000000000418 0000000000000000 000003ffcc9fe770
               000003ff93d28f50 000003ff9310acf0 000003ff92b0319a 000003ffcc9fe6d0
    User Code: 000003ff93c14e62: 60e0b030            std     %f14,48(%r11)
               000003ff93c14e66: 60f0b038            std     %f15,56(%r11)
              #000003ff93c14e6a: e5600000ff0e        tbegin  0,65294
              >000003ff93c14e70: a7740006            brc     7,3ff93c14e7c
               000003ff93c14e74: a7080000            lhi     %r0,0
               000003ff93c14e78: a7f40023            brc     15,3ff93c14ebe
               000003ff93c14e7c: b2220000            ipm     %r0
               000003ff93c14e80: 8800001c            srl     %r0,28
    
    There are several bugs with control register handling with respect to
    transactional execution:
    
    - on task switch update_per_regs() is only called if the next task has
      an mm (is not a kernel thread). This however is incorrect. This
      breaks e.g. for user mode helper handling, where the kernel creates
      a kernel thread and then execve's a user space program. Control
      register contents related to transactional execution won't be
      updated on execve. If the previous task ran with transactional
      execution disabled then the new task will also run with
      transactional execution disabled, which is incorrect. Therefore call
      update_per_regs() unconditionally within switch_to().
    
    - on startup the transactional execution facility is not enabled for
      the idle thread. This is not really a bug, but an inconsistency to
      other facilities. Therefore enable the facility if it is available.
    
    - on fork the new thread's per_flags field is not cleared. This means
      that a child process inherits the PER_FLAG_NO_TE flag. This flag can
      be set with a ptrace request to disable transactional execution for
      the current process. It should not be inherited by new child
      processes in order to be consistent with the handling of all other
      PER related debugging options. Therefore clear the per_flags field in
      copy_thread_tls().
    
    Reported-and-tested-by: Dan Horák <dan@danny.cz>
    Fixes: d35339a42dd1 ("s390: add support for transactional memory")
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>