commit 5b90d559d4d5c8fd2127013666014595caa53ae2
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed May 30 07:50:52 2018 +0200

    Linux 4.9.104

commit 357cf023c01b135620838ea6c948f093b4d4437f
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Fri Dec 8 10:19:19 2017 -0800

    kdb: make "mdr" command repeat
    
    [ Upstream commit 1e0ce03bf142454f38a5fc050bf4fd698d2d36d8 ]
    
    The "mdr" command should repeat (continue) when only Enter/Return
    is pressed, so make it do so.
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Daniel Thompson <daniel.thompson@linaro.org>
    Cc: Jason Wessel <jason.wessel@windriver.com>
    Cc: kgdb-bugreport@lists.sourceforge.net
    Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bd77073e693e8f93ff6ddba65a9f426153221cb
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Sun Jan 28 16:59:48 2018 -0800

    pinctrl: msm: Use dynamic GPIO numbering
    
    [ Upstream commit a7aa75a2a7dba32594291a71c3704000a2fd7089 ]
    
    The base of the TLMM gpiochip should not be statically defined as 0, fix
    this to not artificially restrict the existence of multiple pinctrl-msm
    devices.
    
    Fixes: f365be092572 ("pinctrl: Add Qualcomm TLMM driver")
    Reported-by: Timur Tabi <timur@codeaurora.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c9701fd4324f6d0a03c4455168dc50742960a64
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Fri Jan 26 23:13:44 2018 +0100

    regulator: of: Add a missing 'of_node_put()' in an error handling path of 'of_regulator_match()'
    
    [ Upstream commit 30966861a7a2051457be8c49466887d78cc47e97 ]
    
    If an unlikely failure in 'of_get_regulator_init_data()' occurs, we must
    release the reference on the current 'child' node before returning.
    
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c4eb3b322d8529147c70a97ce895740d5c7752d
Author: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Date:   Sat Jan 13 01:14:23 2018 +0200

    ARM: dts: porter: Fix HDMI output routing
    
    [ Upstream commit d4b78db6ac3e084e2bdc57d5518bd247c727f396 ]
    
    The HDMI encoder is connected to the RGB output of the DU, which is
    port@0, not port@1. Fix the incorrect DT description.
    
    Fixes: c5af8a4248d3 ("ARM: dts: porter: add DU DT support")
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0b4b72528670f0096e34e434c53f6a457d602b4
Author: Aapo Vienamo <aapo@tuxera.com>
Date:   Wed Jan 31 14:34:07 2018 +0000

    ARM: dts: imx7d: cl-som-imx7: fix pinctrl_enet
    
    [ Upstream commit 2bada7ac1fdcbf79a9689bd2ff65fa515ca7a31f ]
    
    The missing last digit of the CONFIG values is added. Looks like a typo
    of some sort when comparing to the downstream dt. This fixes
    intermittent behavior behaviour of the ethernet controllers.
    
    Signed-off-by: Aapo Vienamo <aapo@tuxera.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a2e11e7ba39325acef7b4a603d185f4a67447f7
Author: Charles Keepax <ckeepax@opensource.cirrus.com>
Date:   Mon Feb 12 18:15:44 2018 +0000

    regmap: Correct comparison in regmap_cached
    
    [ Upstream commit 71df179363a5a733a8932e9afb869760d7559383 ]
    
    The cache pointer points to the actual memory used by the cache, as the
    comparison here is looking for the type of the cache it should check
    against cache_type.
    
    Fixes: 1ea975cf1ef5 ("regmap: Add a function to check if a regmap register is cached")
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f806ed5cfac6bbd23bd223b4b6e3d8dd1f71838a
Author: Richard Haines <richard_c_haines@btinternet.com>
Date:   Mon Nov 13 20:54:22 2017 +0000

    netlabel: If PF_INET6, check sk_buff ip header version
    
    [ Upstream commit 213d7f94775322ba44e0bbb55ec6946e9de88cea ]
    
    When resolving a fallback label, check the sk_buff version as it
    is possible (e.g. SCTP) to have family = PF_INET6 while
    receiving ip_hdr(skb)->version = 4.
    
    Signed-off-by: Richard Haines <richard_c_haines@btinternet.com>
    Acked-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66380cb5b98fd7ec5a4e774f755156d8d88fc33b
Author: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
Date:   Thu Feb 15 09:19:26 2018 +0900

    selftests/net: fixes psock_fanout eBPF test case
    
    [ Upstream commit ddd0010392d9cbcb95b53d11b7cafc67b373ab56 ]
    
    eBPF test fails due to verifier failure because log_buf is too small.
    Fixed by increasing log_buf size
    
    Signed-off-by: Prashant Bhole <bhole_prashant_q7@lab.ntt.co.jp>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5a8e209b2d9b72c197d079ccb3787d706763d756
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Fri Feb 16 13:36:19 2018 +0100

    perf report: Fix memory corruption in --branch-history mode --branch-history
    
    [ Upstream commit e3ebaa465136ecfedf9c6f4671df02bf625f8125 ]
    
    Jin Yao reported memory corrupton in perf report with
    branch info used for stack trace:
    
      > Following command lines will cause perf crash.
    
      > perf record -j call -g -a <application>
      > perf report --branch-history
      >
      > *** Error in `perf': double free or corruption (!prev): 0x00000000104aa040 ***
      > ======= Backtrace: =========
      > /lib/x86_64-linux-gnu/libc.so.6(+0x77725)[0x7f6b37254725]
      > /lib/x86_64-linux-gnu/libc.so.6(+0x7ff4a)[0x7f6b3725cf4a]
      > /lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7f6b37260abc]
      > perf[0x51b914]
      > perf(hist_entry_iter__add+0x1e5)[0x51f305]
      > perf[0x43cf01]
      > perf[0x4fa3bf]
      > perf[0x4fa923]
      > perf[0x4fd396]
      > perf[0x4f9614]
      > perf(perf_session__process_events+0x89e)[0x4fc38e]
      > perf(cmd_report+0x15d2)[0x43f202]
      > perf[0x4a059f]
      > perf(main+0x631)[0x427b71]
      > /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)[0x7f6b371fd830]
      > perf(_start+0x29)[0x427d89]
    
    For the cumulative output, we allocate the he_cache array based on the
    --max-stack option value and populate it with data from 'callchain_cursor'.
    
    The --max-stack option value does not ensure now the limit for number of
    callchain_cursor nodes, so the cumulative iter code will allocate smaller array
    than it's actually needed and cause above corruption.
    
    I think the --max-stack limit does not apply here anyway, because we add
    callchain data as normal hist entries, while the --max-stack control the limit
    of single entry callchain depth.
    
    Using the callchain_cursor.nr as he_cache array count to fix this. Also
    removing struct hist_entry_iter::max_stack, because there's no longer any use
    for it.
    
    We need more fixes to ensure that the branch stack code follows properly the
    logic of --max-stack, which is not the case at the moment.
    
    Original-patch-by: Jin Yao <yao.jin@linux.intel.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Reported-by: Jin Yao <yao.jin@linux.intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kan Liang <kan.liang@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20180216123619.GA9945@krava
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f97276ccfd66b11da8948271b052f5e4226a47a1
Author: Jiri Olsa <jolsa@kernel.org>
Date:   Thu Feb 15 13:26:35 2018 +0100

    perf tests: Use arch__compare_symbol_names to compare symbols
    
    [ Upstream commit ab6e9a99345131cd8e54268d1d0dc04a33f7ed11 ]
    
    The symbol search called by machine__find_kernel_symbol_by_name is using
    internally arch__compare_symbol_names function to compare 2 symbol
    names, because different archs have different ways of comparing symbols.
    Mostly for skipping '.' prefixes and similar.
    
    In test 1 when we try to find matching symbols in kallsyms and vmlinux,
    by address and by symbol name. When either is found we compare the pair
    symbol names  by simple strcmp, which is not good enough for reasons
    explained in previous paragraph.
    
    On powerpc this can cause lockup, because even thought we found the
    pair, the compared names are different and don't match simple strcmp.
    Following code path is executed, that leads to lockup:
    
       - we find the pair in kallsyms by sym->start
    next_pair:
       - we compare the names and it fails
       - we find the pair by sym->name
       - the pair addresses match so we call goto next_pair
         because we assume the names match in this case
    
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 031b84c407c3 ("perf probe ppc: Enable matching against dot symbols automatically")
    Link: http://lkml.kernel.org/r/20180215122635.24029-10-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e6b708a1dc617478a6dede5ecd38e055f3b1e35
Author: Baoquan He <bhe@redhat.com>
Date:   Wed Feb 14 13:46:56 2018 +0800

    x86/apic: Set up through-local-APIC mode on the boot CPU if 'noapic' specified
    
    [ Upstream commit bee3204ec3c49f6f53add9c3962c9012a5c036fa ]
    
    Currently the kdump kernel becomes very slow if 'noapic' is specified.
    Normal kernel doesn't have this bug.
    
    Kernel parameter 'noapic' is used to disable IO-APIC in system for
    testing or special purpose. Here the root cause is that in kdump
    kernel LAPIC is disabled since commit:
    
      522e664644 ("x86/apic: Disable I/O APIC before shutdown of the local APIC")
    
    In this case we need set up through-local-APIC on boot CPU in
    setup_local_APIC().
    
    In normal kernel the legacy irq mode is enabled by the BIOS. If
    it is virtual wire mode, the local-APIC has been enabled and set as
    through-local-APIC.
    
    Though we fixed the regression introduced by commit 522e664644,
    to further improve robustness set up the through-local-APIC mode
    explicitly, do not rely on the default boot IRQ mode.
    
    Signed-off-by: Baoquan He <bhe@redhat.com>
    Reviewed-by: Eric W. Biederman <ebiederm@xmission.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: douly.fnst@cn.fujitsu.com
    Cc: joro@8bytes.org
    Cc: prarit@redhat.com
    Cc: uobergfe@redhat.com
    Link: http://lkml.kernel.org/r/20180214054656.3780-7-bhe@redhat.com
    [ Rewrote the changelog. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 996c5d9d9c625a29544c83bf94ffe107d2cd724f
Author: Ørjan Eide <orjan.eide@arm.com>
Date:   Tue Jan 30 21:28:33 2018 +0100

    drm/rockchip: Respect page offset for PRIME mmap calls
    
    [ Upstream commit 57de50af162b67612da99207b061ade3239e57db ]
    
    When mapping external DMA-bufs through the PRIME mmap call, we might be
    given an offset which has to be respected. However for the internal DRM
    GEM mmap path, we have to ignore the fake mmap offset used to identify
    the buffer only. Currently the code always zeroes out vma->vm_pgoff,
    which breaks the former.
    
    This patch fixes the problem by moving the vm_pgoff assignment to a
    function that is used only for GEM mmap path, so that the PRIME path
    retains the original offset.
    
    Cc: Daniel Kurtz <djkurtz@chromium.org>
    Signed-off-by: Ørjan Eide <orjan.eide@arm.com>
    Signed-off-by: Tomasz Figa <tfiga@chromium.org>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
    Tested-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180130202913.28724-4-thierry.escande@collabora.com
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f65c7c6ec720748cc73313585213a7658a20413d
Author: Joe Perches <joe@perches.com>
Date:   Tue Dec 5 23:04:58 2017 -0800

    MIPS: Octeon: Fix logging messages with spurious periods after newlines
    
    [ Upstream commit db6775ca6e0353d2618ca7d5e210fc36ad43bbd4 ]
    
    Using a period after a newline causes bad output.
    
    Fixes: 64b139f97c01 ("MIPS: OCTEON: irq: add CIB and other fixes")
    Signed-off-by: Joe Perches <joe@perches.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/17886/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2455fbbfc2ac178a95b5c5e4c097c53b0f59e96
Author: Takeshi Kihara <takeshi.kihara.df@renesas.com>
Date:   Fri Feb 16 15:25:03 2018 +0100

    pinctrl: sh-pfc: r8a7796: Fix MOD_SEL register pin assignment for SSI pins group
    
    [ Upstream commit b418c4609d5052d174668ad6d13efe023c45c595 ]
    
    This patch fixes MOD_SEL1 bit20 and MOD_SEL2 bit20, bit21 pin assignment
    for SSI pins group.
    
    This is a correction to the incorrect implementation of MOD_SEL register
    pin assignment for R8A7796 SoC specification of R-Car Gen3 Hardware
    User's Manual Rev.0.51E or later.
    
    Fixes: f9aece7344bd ("pinctrl: sh-pfc: Initial R8A7796 PFC support")
    Signed-off-by: Takeshi Kihara <takeshi.kihara.df@renesas.com>
    Signed-off-by: Ulrich Hecht <ulrich.hecht+renesas@gmail.com>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c458c7c7839e1e531ec1c31803a2bc6e5e07037c
Author: Tejun Heo <tj@kernel.org>
Date:   Tue Jan 9 10:38:17 2018 -0800

    rcu: Call touch_nmi_watchdog() while printing stall warnings
    
    [ Upstream commit 3caa973b7a260e7a2a69edc94c300ab9c65148c3 ]
    
    When RCU stall warning triggers, it can print out a lot of messages
    while holding spinlocks.  If the console device is slow (e.g. an
    actual or IPMI serial console), it may end up triggering NMI hard
    lockup watchdog like the following.

commit 85e924bb3309d59ffee2e0c23c920c74826ba509
Author: Richard Guy Briggs <rgb@redhat.com>
Date:   Wed Feb 21 04:30:07 2018 -0500

    audit: return on memory error to avoid null pointer dereference
    
    [ Upstream commit 23138ead270045f1b3e912e667967b6094244999 ]
    
    If there is a memory allocation error when trying to change an audit
    kernel feature value, the ignored allocation error will trigger a NULL
    pointer dereference oops on subsequent use of that pointer.  Return
    instead.
    
    Passes audit-testsuite.
    See: https://github.com/linux-audit/audit-kernel/issues/76
    
    Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
    [PM: not necessary (other funcs check for NULL), but a good practice]
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6bfbdfe0215172a232ef5b486f40d4ab8315dc4
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Fri Feb 16 11:55:34 2018 +0100

    ARM: dts: bcm283x: Fix probing of bcm2835-i2s
    
    [ Upstream commit 79c81facdc0b43b1cef37b8d5689a8c8b78f8be0 ]
    
    Since 517e7a1537a ("ASoC: bcm2835: move to use the clock framework")
    the bcm2835-i2s requires a clock as DT property. Unfortunately
    the necessary DT change has never been applied. While we are at it
    also fix the first PCM register range to cover the PCM_GRAY register.
    
    Fixes: 517e7a1537a ("ASoC: bcm2835: move to use the clock framework")
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Reviewed-by: Eric Anholt <eric@anholt.net>
    Tested-by: Matthias Reichl <hias@horus.com>
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8365105f1e959e389ce5a4ca02c5be9b6813d83c
Author: Jan Kara <jack@suse.cz>
Date:   Thu Feb 22 10:39:52 2018 +0100

    udf: Provide saner default for invalid uid / gid
    
    [ Upstream commit 116e5258e4115aca0c64ac0bf40ded3b353ed626 ]
    
    Currently when UDF filesystem is recorded without uid / gid (ids are set
    to -1), we will assign INVALID_[UG]ID to vfs inode unless user uses uid=
    and gid= mount options. In such case filesystem could not be modified in
    any way as VFS refuses to modify files with invalid ids (even by root).
    This is confusing to users and not very useful default since such media
    mode is generally used for removable media. Use overflow[ug]id instead
    so that at least root can modify the filesystem.
    
    Reported-by: Steve Kenton <skenton@ou.edu>
    Reviewed-by: Pali Rohár <pali.rohar@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71047cafcf9200c21acbb0e51907ae96d7f7d2ea
Author: Thomas Vincent-Cross <me@tvc.id.au>
Date:   Tue Feb 27 20:20:36 2018 +1100

    PCI: Add function 1 DMA alias quirk for Marvell 88SE9220
    
    [ Upstream commit 832e4e1f76b8a84991e9db56fdcef1ebce839b8b ]
    
    Add Marvell 88SE9220 DMA quirk as found and tested on bug 42679.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=42679
    Signed-off-by: Thomas Vincent-Cross <me@tvc.id.au>
    Signed-off-by: Bjorn Helgaas <helgaas@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0fba88ec9a7d201f2462d5337e50112a457b9984
Author: Viresh Kumar <viresh.kumar@linaro.org>
Date:   Thu Feb 22 11:29:43 2018 +0530

    cpufreq: Reorder cpufreq_online() error code path
    
    [ Upstream commit b24b6478e65f140610ab1ffaadc7bc6bf0be8aad ]
    
    Ideally the de-allocation of resources should happen in the exact
    opposite order in which they were allocated. It helps maintain the code
    in long term, even if nothing really breaks with incorrect ordering.
    
    That wasn't followed in cpufreq_online() and it has some
    inconsistencies.  For example, the symlinks were created from within
    the locked region while they are removed only after putting the locks.
    Also ->exit() should have been called only after the symlinks are
    removed and the lock is dropped, as that was the case when ->init()
    was first called.
    
    Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
    [ rjw: Subject ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5b3b32d061477e99d0805197930ad60dd51909d6
Author: Niklas Cassel <niklas.cassel@axis.com>
Date:   Mon Feb 26 22:47:06 2018 +0100

    net: stmmac: ensure that the MSS desc is the last desc to set the own bit
    
    [ Upstream commit 15d2ee42a3087089e73ad52fd8c1b37ab496b87c ]
    
    A dma_wmb() is used to guarantee the ordering, with respect to
    other writes, to cache coherent DMA memory.
    
    There is a dma_wmb() in prepare_tx_desc()/prepare_tso_tx_desc() which
    ensures that TDES0/1/2 is written before TDES3 (which contains the own
    bit), for First Desc.
    
    However, in the rare case that MSS changes, there will be a MSS
    context descriptor in front of the regular DMA descriptors:
    
    <MSS desc> <- DMA Next Descriptor
    <First Desc>
    <desc n>
    <Last Desc>
    
    Thus, for this special case, we need a dma_wmb()
    after prepare_tso_tx_desc()/before writing the own bit to the MSS desc,
    so that we flush the write to TDES3 for First Desc,
    in order to ensure that the MSS descriptor is the last descriptor to
    set the own bit.
    
    Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 82aad32b4aad92244bc7b8e4cd1210253785fe03
Author: Niklas Cassel <niklas.cassel@axis.com>
Date:   Mon Feb 26 22:47:08 2018 +0100

    net: stmmac: ensure that the device has released ownership before reading data
    
    [ Upstream commit a6b25da5e7ba212af5826a662e6a035a79bffabd ]
    
    According to Documentation/memory-barriers.txt, we need to use a
    dma_rmb() after reading the status/own bit, to ensure that all
    descriptor fields are read after reading the own bit.
    
    This way, we ensure that the DMA engine is done with the DMA
    descriptor before we read the other descriptor fields, e.g. reading
    the tx hardware timestamp (if PTP is enabled).
    
    Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cecf8a69042b3a54cb843223756c10ee8a8665e3
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Thu Feb 15 12:25:09 2018 +0000

    dmaengine: qcom: bam_dma: get num-channels and num-ees from dt
    
    [ Upstream commit 48d163b1aa6e7f650c0b7a4f9c61c387a6def868 ]
    
    When Linux is master of BAM, it can directly read registers to know number
    of supported channels, however when its remotely controlled reading these
    registers would trigger a crash if the BAM is not yet initialized or
    powered up on the remote side.
    
    This patch allows driver to read num-channels and num-ees from Device Tree
    for remotely controlled BAM.
    
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 086a52f1db8847dc0ab4acc5c9af3dd9cc4cf4e8
Author: lionel.debieve@st.com <lionel.debieve@st.com>
Date:   Thu Feb 15 14:03:08 2018 +0100

    hwrng: stm32 - add reset during probe
    
    [ Upstream commit 326ed382256475aa4b8b7eae8a2f60689fd25e78 ]
    
    Avoid issue when probing the RNG without
    reset if bad status has been detected previously
    
    Signed-off-by: Lionel Debieve <lionel.debieve@st.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92ff7ff0318f3c38394d36629084a19ea0e61a23
Author: Govindarajulu Varadarajan <gvaradar@cisco.com>
Date:   Thu Mar 1 11:07:23 2018 -0800

    enic: enable rq before updating rq descriptors
    
    [ Upstream commit e8588e268509292550634d9a35f2723a207683b2 ]
    
    rq should be enabled before posting the buffers to rq desc. If not hw sees
    stale value and casuses DMAR errors.
    
    Signed-off-by: Govindarajulu Varadarajan <gvaradar@cisco.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 431f979f767f55a0416d6b27604b79108dac88eb
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Fri Feb 2 19:05:15 2018 +0900

    dmaengine: rcar-dmac: Check the done lists in rcar_dmac_chan_get_residue()
    
    [ Upstream commit 3e081628d510b2ddbe493371d9c574d9275da17e ]
    
    This patch fixes an issue that a race condition happens between a client
    driver and the rcar-dmac driver:
    
    - The rcar_dmac_isr_transfer_end() is called.
     - The done list appears, and desc.running is the next active list.
    - rcar_dmac_chan_get_residue() is called by a client driver before
      rcar_dmac_isr_channel_thread() is called.
     - The rcar_dmac_chan_get_residue() will not find any descriptors.
     - And, the following WARNING happens:
            WARN(1, "No descriptor for cookie!");
    
    The sh-sci driver with HSCIF (921,600bps) on R-Car H3 can cause this
    situation.
    So, this patch checks the done lists in rcar_dmac_chan_get_residue()
    and returns zero if the done lists has the argument cookie.
    
    Tested-by: Nguyen Viet Dung <dung.nguyen.aj@renesas.com>
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83f6484ce77f119ff4923db9ea252761c84003e4
Author: Qi Hou <qi.hou@windriver.com>
Date:   Tue Mar 6 09:13:37 2018 +0800

    dmaengine: pl330: fix a race condition in case of threaded irqs
    
    [ Upstream commit a3ca831249ca8c4c226e4ceafee04e280152e59d ]
    
    When booting up with "threadirqs" in command line, all irq handlers of the DMA
    controller pl330 will be threaded forcedly. These threads will race for the same
    list, pl330->req_done.
    
    Before the callback, the spinlock was released. And after it, the spinlock was
    taken. This opened an race window where another threaded irq handler could steal
    the spinlock and be permitted to delete entries of the list, pl330->req_done.
    
    If the later deleted an entry that was still referred to by the former, there would
    be a kernel panic when the former was scheduled and tried to get the next sibling
    of the deleted entry.
    
    The scenario could be depicted as below:
    
      Thread: T1  pl330->req_done  Thread: T2
          |             |              |
          |          -A-B-C-D-         |
        Locked          |              |
          |             |           Waiting
        Del A           |              |
          |          -B-C-D-           |
        Unlocked        |              |
          |             |           Locked
        Waiting         |              |
          |             |            Del B
          |             |              |
          |           -C-D-         Unlocked
        Waiting         |              |
          |
        Locked
          |
       get C via B
          \
           - Kernel panic
    
    The kernel panic looked like as below:
    
    Unable to handle kernel paging request at virtual address dead000000000108
    pgd = ffffff8008c9e000
    [dead000000000108] *pgd=000000027fffe003, *pud=000000027fffe003, *pmd=0000000000000000
    Internal error: Oops: 96000044 [#1] PREEMPT SMP
    Modules linked in:
    CPU: 0 PID: 85 Comm: irq/59-66330000 Not tainted 4.8.24-WR9.0.0.12_standard #2
    Hardware name: Broadcom NS2 SVK (DT)
    task: ffffffc1f5cc3c00 task.stack: ffffffc1f5ce0000
    PC is at pl330_irq_handler+0x27c/0x390
    LR is at pl330_irq_handler+0x2a8/0x390
    pc : [<ffffff80084cb694>] lr : [<ffffff80084cb6c0>] pstate: 800001c5
    sp : ffffffc1f5ce3d00
    x29: ffffffc1f5ce3d00 x28: 0000000000000140
    x27: ffffffc1f5c530b0 x26: dead000000000100
    x25: dead000000000200 x24: 0000000000418958
    x23: 0000000000000001 x22: ffffffc1f5ccd668
    x21: ffffffc1f5ccd590 x20: ffffffc1f5ccd418
    x19: dead000000000060 x18: 0000000000000001
    x17: 0000000000000007 x16: 0000000000000001
    x15: ffffffffffffffff x14: ffffffffffffffff
    x13: ffffffffffffffff x12: 0000000000000000
    x11: 0000000000000001 x10: 0000000000000840
    x9 : ffffffc1f5ce0000 x8 : ffffffc1f5cc3338
    x7 : ffffff8008ce2020 x6 : 0000000000000000
    x5 : 0000000000000000 x4 : 0000000000000001
    x3 : dead000000000200 x2 : dead000000000100
    x1 : 0000000000000140 x0 : ffffffc1f5ccd590
    
    Process irq/59-66330000 (pid: 85, stack limit = 0xffffffc1f5ce0020)
    Stack: (0xffffffc1f5ce3d00 to 0xffffffc1f5ce4000)
    3d00: ffffffc1f5ce3d80 ffffff80080f09d0 ffffffc1f5ca0c00 ffffffc1f6f7c600
    3d20: ffffffc1f5ce0000 ffffffc1f6f7c600 ffffffc1f5ca0c00 ffffff80080f0998
    3d40: ffffffc1f5ce0000 ffffff80080f0000 0000000000000000 0000000000000000
    3d60: ffffff8008ce202c ffffff8008ce2020 ffffffc1f5ccd668 ffffffc1f5c530b0
    3d80: ffffffc1f5ce3db0 ffffff80080f0d70 ffffffc1f5ca0c40 0000000000000001
    3da0: ffffffc1f5ce0000 ffffff80080f0cfc ffffffc1f5ce3e20 ffffff80080bf4f8
    3dc0: ffffffc1f5ca0c80 ffffff8008bf3798 ffffff8008955528 ffffffc1f5ca0c00
    3de0: ffffff80080f0c30 0000000000000000 0000000000000000 0000000000000000
    3e00: 0000000000000000 0000000000000000 0000000000000000 ffffff80080f0b68
    3e20: 0000000000000000 ffffff8008083690 ffffff80080bf420 ffffffc1f5ca0c80
    3e40: 0000000000000000 0000000000000000 0000000000000000 ffffff80080cb648
    3e60: ffffff8008b1c780 0000000000000000 0000000000000000 ffffffc1f5ca0c00
    3e80: ffffffc100000000 ffffff8000000000 ffffffc1f5ce3e90 ffffffc1f5ce3e90
    3ea0: 0000000000000000 ffffff8000000000 ffffffc1f5ce3eb0 ffffffc1f5ce3eb0
    3ec0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3ee0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3f00: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3f20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3f40: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3f60: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3f80: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3fa0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
    3fc0: 0000000000000000 0000000000000005 0000000000000000 0000000000000000
    3fe0: 0000000000000000 0000000000000000 0000000275ce3ff0 0000000275ce3ff8
    Call trace:
    Exception stack(0xffffffc1f5ce3b30 to 0xffffffc1f5ce3c60)
    3b20:                                   dead000000000060 0000008000000000
    3b40: ffffffc1f5ce3d00 ffffff80084cb694 0000000000000008 0000000000000e88
    3b60: ffffffc1f5ce3bb0 ffffff80080dac68 ffffffc1f5ce3b90 ffffff8008826fe4
    3b80: 00000000000001c0 00000000000001c0 ffffffc1f5ce3bb0 ffffff800848dfcc
    3ba0: 0000000000020000 ffffff8008b15ae4 ffffffc1f5ce3c00 ffffff800808f000
    3bc0: 0000000000000010 ffffff80088377f0 ffffffc1f5ccd590 0000000000000140
    3be0: dead000000000100 dead000000000200 0000000000000001 0000000000000000
    3c00: 0000000000000000 ffffff8008ce2020 ffffffc1f5cc3338 ffffffc1f5ce0000
    3c20: 0000000000000840 0000000000000001 0000000000000000 ffffffffffffffff
    3c40: ffffffffffffffff ffffffffffffffff 0000000000000001 0000000000000007
    [<ffffff80084cb694>] pl330_irq_handler+0x27c/0x390
    [<ffffff80080f09d0>] irq_forced_thread_fn+0x38/0x88
    [<ffffff80080f0d70>] irq_thread+0x140/0x200
    [<ffffff80080bf4f8>] kthread+0xd8/0xf0
    [<ffffff8008083690>] ret_from_fork+0x10/0x40
    Code: f2a00838 f9405763 aa1c03e1 aa1503e0 (f9000443)
    ---[ end trace f50005726d31199c ]---
    Kernel panic - not syncing: Fatal exception in interrupt
    SMP: stopping secondary CPUs
    SMP: failed to stop secondary CPUs 0-1
    Kernel Offset: disabled
    Memory Limit: none
    ---[ end Kernel panic - not syncing: Fatal exception in interrupt
    
    To fix this, re-start with the list-head after dropping the lock then
    re-takeing it.
    
    Reviewed-by: Frank Mori Hess <fmh6jj@gmail.com>
    Tested-by: Frank Mori Hess <fmh6jj@gmail.com>
    Signed-off-by: Qi Hou <qi.hou@windriver.com>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e096b3d0f0f4856eeee8ecf02d8a369af939cfda
Author: Takashi Iwai <tiwai@suse.de>
Date:   Thu Mar 8 08:26:48 2018 +0100

    ALSA: vmaster: Propagate slave error
    
    [ Upstream commit 2e2c177ca84aff092c3c96714b0f6a12900f3946 ]
    
    In slave_update() of vmaster code ignores the error from the slave
    get() callback and copies the values.  It's not only about the missing
    error code but also that this may potentially lead to a leak of
    uninitialized variables when the slave get() don't clear them.
    
    This patch fixes slave_update() not to copy the potentially
    uninitialized values when an error is returned from the slave get()
    callback, and to propagate the error value properly.
    
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b08a3589fb07497cf5d5895a3b6589d0bbfe0156
Author: Ivan Gorinov <ivan.gorinov@intel.com>
Date:   Wed Mar 7 11:46:53 2018 -0800

    x86/devicetree: Fix device IRQ settings in DT
    
    [ Upstream commit 0a5169add90e43ab45ab1ba34223b8583fcaf675 ]
    
    IRQ parameters for the SoC devices connected directly to I/O APIC lines
    (without PCI IRQ routing) may be specified in the Device Tree.
    
    Called from DT IRQ parser, irq_create_fwspec_mapping() calls
    irq_domain_alloc_irqs() with a pointer to irq_fwspec structure as @arg.
    
    But x86-specific DT IRQ allocation code casts @arg to of_phandle_args
    structure pointer and crashes trying to read the IRQ parameters. The
    function was not converted when the mapping descriptor was changed to
    irq_fwspec in the generic irqdomain code.
    
    Fixes: 11e4438ee330 ("irqdomain: Introduce a firmware-specific IRQ specifier structure")
    Signed-off-by: Ivan Gorinov <ivan.gorinov@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Rob Herring <robh+dt@kernel.org>
    Link: https://lkml.kernel.org/r/a234dee27ea60ce76141872da0d6bdb378b2a9ee.1520450752.git.ivan.gorinov@intel.com
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ea601d7d0069ec7a4b757774ee8a7e3f674a543
Author: Ivan Gorinov <ivan.gorinov@intel.com>
Date:   Wed Mar 7 11:46:29 2018 -0800

    x86/devicetree: Initialize device tree before using it
    
    [ Upstream commit 628df9dc5ad886b0a9b33c75a7b09710eb859ca1 ]
    
    Commit 08d53aa58cb1 added CRC32 calculation in early_init_dt_verify() and
    checking in late initcall of_fdt_raw_init(), making early_init_dt_verify()
    mandatory.
    
    The required call to early_init_dt_verify() was not added to the
    x86-specific implementation, causing failure to create the sysfs entry in
    of_fdt_raw_init().
    
    Fixes: 08d53aa58cb1 ("of/fdt: export fdt blob as /sys/firmware/fdt")
    Signed-off-by: Ivan Gorinov <ivan.gorinov@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Rob Herring <robh+dt@kernel.org>
    Link: https://lkml.kernel.org/r/c8c7e941efc63b5d25ebf9b6350b0f3df38f6098.1520450752.git.ivan.gorinov@intel.com
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 44b65516d7785b328ed7965aea9ce1a2fb006569
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Tue Feb 20 08:03:24 2018 -0700

    gfs2: Fix fallocate chunk size
    
    [ Upstream commit 174d1232ebc84fcde8f5889d1171c9c7e74a10a7 ]
    
    The chunk size of allocations in __gfs2_fallocate is calculated
    incorrectly.  The size can collapse, causing __gfs2_fallocate to
    allocate one block at a time, which is very inefficient.  This needs
    fixing in two places:
    
    In gfs2_quota_lock_check, always set ap->allowed to UINT_MAX to indicate
    that there is no quota limit.  This fixes callers that rely on
    ap->allowed to be set even when quotas are off.
    
    In __gfs2_fallocate, reset max_blks to UINT_MAX in each iteration of the
    loop to make sure that allocation limits from one resource group won't
    spill over into another resource group.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Bob Peterson <rpeterso@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3aa06676c1122efafd0d986f9a928d6f5df7ac38
Author: Bjorn Andersson <bjorn.andersson@linaro.org>
Date:   Tue Feb 27 16:45:25 2018 -0800

    soc: qcom: wcnss_ctrl: Fix increment in NV upload
    
    [ Upstream commit 90c29ed7627b6b4aeb603ee197650173c8434512 ]
    
    hdr.len includes both the size of the header and the fragment, so using
    this when stepping through the firmware causes us to skip 16 bytes every
    chunk of 3072 bytes; causing only the first fragment to actually be
    valid data.
    
    Instead use fragment size steps through the firmware blob.
    
    Fixes: ea7a1f275cf0 ("soc: qcom: Introduce WCNSS_CTRL SMD client")
    Reported-by: Will Newton <will.newton@gmail.com>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Andy Gross <andy.gross@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de4699cd616fee88b811b74b0b752388c093d3d5
Author: Ilia Lin <ilialin@codeaurora.org>
Date:   Tue Jan 23 09:36:18 2018 +0200

    arm64: dts: qcom: Fix SPI5 config on MSM8996
    
    [ Upstream commit e723795c702b52cfceb3bb3faa63059eb4658313 ]
    
    Set correct clocks and interrupt values.
    Fixes the incorrect SPI master configuration. This is
    mandatory to make the SPI5 interface functional.
    
    Signed-off-by: Ilia Lin <ilialin@codeaurora.org>
    Signed-off-by: Andy Gross <andy.gross@linaro.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db27c6c53b8145d1e6f45e822c7f69527c794578
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Mon Feb 12 14:20:31 2018 -0800

    perf/x86/intel: Fix event update for auto-reload
    
    [ Upstream commit d31fc13fdcb20e1c317f9a7dd6273c18fbd58308 ]
    
    There is a bug when reading event->count with large PEBS enabled.
    
    Here is an example:
    
      # ./read_count
      0x71f0
      0x122c0
      0x1000000001c54
      0x100000001257d
      0x200000000bdc5
    
    In fixed period mode, the auto-reload mechanism could be enabled for
    PEBS events, but the calculation of event->count does not take the
    auto-reload values into account.
    
    Anyone who reads event->count will get the wrong result, e.g x86_pmu_read().
    
    This bug was introduced with the auto-reload mechanism enabled since
    commit:
    
      851559e35fd5 ("perf/x86/intel: Use the PEBS auto reload mechanism when possible")
    
    Introduce intel_pmu_save_and_restart_reload() to calculate the
    event->count only for auto-reload.
    
    Since the counter increments a negative counter value and overflows on
    the sign switch, giving the interval:
    
            [-period, 0]
    
    the difference between two consequtive reads is:
    
     A) value2 - value1;
        when no overflows have happened in between,
     B) (0 - value1) + (value2 - (-period));
        when one overflow happened in between,
     C) (0 - value1) + (n - 1) * (period) + (value2 - (-period));
        when @n overflows happened in between.
    
    Here A) is the obvious difference, B) is the extension to the discrete
    interval, where the first term is to the top of the interval and the
    second term is from the bottom of the next interval and C) the extension
    to multiple intervals, where the middle term is the whole intervals
    covered.
    
    The equation for all cases is:
    
        value2 - value1 + n * period
    
    Previously the event->count is updated right before the sample output.
    But for case A, there is no PEBS record ready. It needs to be specially
    handled.
    
    Remove the auto-reload code from x86_perf_event_set_period() since
    we'll not longer call that function in this case.
    
    Based-on-code-from: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Fixes: 851559e35fd5 ("perf/x86/intel: Use the PEBS auto reload mechanism when possible")
    Link: http://lkml.kernel.org/r/1518474035-21006-2-git-send-email-kan.liang@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb65df419ec536b4abeabe0985aebbe23d8ffd3a
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Thu Mar 1 12:54:54 2018 -0500

    perf/x86/intel: Fix large period handling on Broadwell CPUs
    
    [ Upstream commit f605cfca8c39ffa2b98c06d2b9f30ba64f1e54e3 ]
    
    Large fixed period values could be truncated on Broadwell, for example:
    
      perf record -e cycles -c 10000000000
    
    Here the fixed period is 0x2540BE400, but the period which finally applied is
    0x540BE400 - which is wrong.
    
    The reason is that x86_pmu::limit_period() uses an u32 parameter, so the
    high 32 bits of 'period' get truncated.
    
    This bug was introduced in:
    
      commit 294fe0f52a44 ("perf/x86/intel: Add INST_RETIRED.ALL workarounds")
    
    It's safe to use u64 instead of u32:
    
     - Although the 'left' is s64, the value of 'left' must be positive when
       calling limit_period().
    
     - bdw_limit_period() only modifies the lowest 6 bits, it doesn't touch
       the higher 32 bits.
    
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Fixes: 294fe0f52a44 ("perf/x86/intel: Add INST_RETIRED.ALL workarounds")
    Link: http://lkml.kernel.org/r/1519926894-3520-1-git-send-email-kan.liang@linux.intel.com
    [ Rewrote unacceptably bad changelog. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94ee9a43c689ea8cfb45d7a74e00756605af3732
Author: Maurizio Lombardi <mlombard@redhat.com>
Date:   Fri Mar 9 13:59:06 2018 +0100

    cdrom: do not call check_disk_change() inside cdrom_open()
    
    [ Upstream commit 2bbea6e117357d17842114c65e9a9cf2d13ae8a3 ]
    
    when mounting an ISO filesystem sometimes (very rarely)
    the system hangs because of a race condition between two tasks.
    
    PID: 6766   TASK: ffff88007b2a6dd0  CPU: 0   COMMAND: "mount"
     #0 [ffff880078447ae0] __schedule at ffffffff8168d605
     #1 [ffff880078447b48] schedule_preempt_disabled at ffffffff8168ed49
     #2 [ffff880078447b58] __mutex_lock_slowpath at ffffffff8168c995
     #3 [ffff880078447bb8] mutex_lock at ffffffff8168bdef
     #4 [ffff880078447bd0] sr_block_ioctl at ffffffffa00b6818 [sr_mod]
     #5 [ffff880078447c10] blkdev_ioctl at ffffffff812fea50
     #6 [ffff880078447c70] ioctl_by_bdev at ffffffff8123a8b3
     #7 [ffff880078447c90] isofs_fill_super at ffffffffa04fb1e1 [isofs]
     #8 [ffff880078447da8] mount_bdev at ffffffff81202570
     #9 [ffff880078447e18] isofs_mount at ffffffffa04f9828 [isofs]
    #10 [ffff880078447e28] mount_fs at ffffffff81202d09
    #11 [ffff880078447e70] vfs_kern_mount at ffffffff8121ea8f
    #12 [ffff880078447ea8] do_mount at ffffffff81220fee
    #13 [ffff880078447f28] sys_mount at ffffffff812218d6
    #14 [ffff880078447f80] system_call_fastpath at ffffffff81698c49
        RIP: 00007fd9ea914e9a  RSP: 00007ffd5d9bf648  RFLAGS: 00010246
        RAX: 00000000000000a5  RBX: ffffffff81698c49  RCX: 0000000000000010
        RDX: 00007fd9ec2bc210  RSI: 00007fd9ec2bc290  RDI: 00007fd9ec2bcf30
        RBP: 0000000000000000   R8: 0000000000000000   R9: 0000000000000010
        R10: 00000000c0ed0001  R11: 0000000000000206  R12: 00007fd9ec2bc040
        R13: 00007fd9eb6b2380  R14: 00007fd9ec2bc210  R15: 00007fd9ec2bcf30
        ORIG_RAX: 00000000000000a5  CS: 0033  SS: 002b
    
    This task was trying to mount the cdrom.  It allocated and configured a
    super_block struct and owned the write-lock for the super_block->s_umount
    rwsem. While exclusively owning the s_umount lock, it called
    sr_block_ioctl and waited to acquire the global sr_mutex lock.
    
    PID: 6785   TASK: ffff880078720fb0  CPU: 0   COMMAND: "systemd-udevd"
     #0 [ffff880078417898] __schedule at ffffffff8168d605
     #1 [ffff880078417900] schedule at ffffffff8168dc59
     #2 [ffff880078417910] rwsem_down_read_failed at ffffffff8168f605
     #3 [ffff880078417980] call_rwsem_down_read_failed at ffffffff81328838
     #4 [ffff8800784179d0] down_read at ffffffff8168cde0
     #5 [ffff8800784179e8] get_super at ffffffff81201cc7
     #6 [ffff880078417a10] __invalidate_device at ffffffff8123a8de
     #7 [ffff880078417a40] flush_disk at ffffffff8123a94b
     #8 [ffff880078417a88] check_disk_change at ffffffff8123ab50
     #9 [ffff880078417ab0] cdrom_open at ffffffffa00a29e1 [cdrom]
    #10 [ffff880078417b68] sr_block_open at ffffffffa00b6f9b [sr_mod]
    #11 [ffff880078417b98] __blkdev_get at ffffffff8123ba86
    #12 [ffff880078417bf0] blkdev_get at ffffffff8123bd65
    #13 [ffff880078417c78] blkdev_open at ffffffff8123bf9b
    #14 [ffff880078417c90] do_dentry_open at ffffffff811fc7f7
    #15 [ffff880078417cd8] vfs_open at ffffffff811fc9cf
    #16 [ffff880078417d00] do_last at ffffffff8120d53d
    #17 [ffff880078417db0] path_openat at ffffffff8120e6b2
    #18 [ffff880078417e48] do_filp_open at ffffffff8121082b
    #19 [ffff880078417f18] do_sys_open at ffffffff811fdd33
    #20 [ffff880078417f70] sys_open at ffffffff811fde4e
    #21 [ffff880078417f80] system_call_fastpath at ffffffff81698c49
        RIP: 00007f29438b0c20  RSP: 00007ffc76624b78  RFLAGS: 00010246
        RAX: 0000000000000002  RBX: ffffffff81698c49  RCX: 0000000000000000
        RDX: 00007f2944a5fa70  RSI: 00000000000a0800  RDI: 00007f2944a5fa70
        RBP: 00007f2944a5f540   R8: 0000000000000000   R9: 0000000000000020
        R10: 00007f2943614c40  R11: 0000000000000246  R12: ffffffff811fde4e
        R13: ffff880078417f78  R14: 000000000000000c  R15: 00007f2944a4b010
        ORIG_RAX: 0000000000000002  CS: 0033  SS: 002b
    
    This task tried to open the cdrom device, the sr_block_open function
    acquired the global sr_mutex lock. The call to check_disk_change()
    then saw an event flag indicating a possible media change and tried
    to flush any cached data for the device.
    As part of the flush, it tried to acquire the super_block->s_umount
    lock associated with the cdrom device.
    This was the same super_block as created and locked by the previous task.
    
    The first task acquires the s_umount lock and then the sr_mutex_lock;
    the second task acquires the sr_mutex_lock and then the s_umount lock.
    
    This patch fixes the issue by moving check_disk_change() out of
    cdrom_open() and let the caller take care of it.
    
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c698169b3027be08facc8ee1cb4d8f786c007b5e
Author: Kan Liang <kan.liang@linux.intel.com>
Date:   Tue Feb 20 02:11:50 2018 -0800

    perf/x86/intel: Properly save/restore the PMU state in the NMI handler
    
    [ Upstream commit 82d71ed0277efc45360828af8c4e4d40e1b45352 ]
    
    The PMU is disabled in intel_pmu_handle_irq(), but cpuc->enabled is not updated
    accordingly.
    
    This is fine in current usage because no-one checks it - but fix it
    for future code: for example, the drain_pebs() will be modified to
    fix an auto-reload bug.
    
    Properly save/restore the old PMU state.
    
    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: acme@kernel.org
    Cc: kernel test robot <fengguang.wu@intel.com>
    Link: http://lkml.kernel.org/r/6f44ee84-56f8-79f1-559b-08e371eaeb78@linux.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5556bf88fd03fce6d86f3a2e0abdc4726fd6a33b
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Mar 10 17:55:47 2018 -0800

    hwmon: (pmbus/adm1275) Accept negative page register values
    
    [ Upstream commit ecb29abd4cb0670c616fb563a078f25d777ce530 ]
    
    A negative page register value means that no page needs to be
    selected. This is used by status register read operations and needs
    to be accepted. The failure to do so so results in missed status
    and limit registers.
    
    Fixes: da8e48ab483e1 ("hwmon: (pmbus) Always call _pmbus_read_byte in core driver")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de3d8015f87fb1536879bc6824a483e17cfe99b3
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sat Mar 10 17:49:47 2018 -0800

    hwmon: (pmbus/max8688) Accept negative page register values
    
    [ Upstream commit a46f8cd696624ef757be0311eb28f119c36778e8 ]
    
    A negative page register value means that no page needs to be
    selected. This is used by status register evaluations and needs
    to be accepted.
    
    Fixes: da8e48ab483e1 ("hwmon: (pmbus) Always call _pmbus_read_byte in core driver")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d363ad0de093c27b2c00a5a5247f4db4b36ff6c
Author: Eric Anholt <eric@anholt.net>
Date:   Fri Mar 9 15:33:32 2018 -0800

    drm/panel: simple: Fix the bus format for the Ontat panel
    
    [ Upstream commit 5651e5e094591f479adad5830ac1bc45196a39b3 ]
    
    This fixes bad color output.  When I was first testing the device I
    had the DPI hardware set to 666 mode, but apparently in the refactor
    to use the bus_format information from the panel driver, I failed to
    actually update the panel.
    
    Signed-off-by: Eric Anholt <eric@anholt.net>
    Fixes: e8b6f561b2ee ("drm/panel: simple: Add the 7" DPI panel from Adafruit")
    Cc: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180309233332.1769-1-eric@anholt.net
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc09bf874d6c7d262b92525dcdf07868786cfed9
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Mar 9 12:52:04 2018 +0100

    perf/core: Fix perf_output_read_group()
    
    [ Upstream commit 9e5b127d6f33468143d90c8a45ca12410e4c3fa7 ]
    
    Mark reported his arm64 perf fuzzer runs sometimes splat like:
    
      armv8pmu_read_counter+0x1e8/0x2d8
      armpmu_event_update+0x8c/0x188
      armpmu_read+0xc/0x18
      perf_output_read+0x550/0x11e8
      perf_event_read_event+0x1d0/0x248
      perf_event_exit_task+0x468/0xbb8
      do_exit+0x690/0x1310
      do_group_exit+0xd0/0x2b0
      get_signal+0x2e8/0x17a8
      do_signal+0x144/0x4f8
      do_notify_resume+0x148/0x1e8
      work_pending+0x8/0x14
    
    which asserts that we only call pmu::read() on ACTIVE events.
    
    The above callchain does:
    
      perf_event_exit_task()
        perf_event_exit_task_context()
          task_ctx_sched_out() // INACTIVE
          perf_event_exit_event()
            perf_event_set_state(EXIT) // EXIT
            sync_child_event()
              perf_event_read_event()
                perf_output_read()
                  perf_output_read_group()
                    leader->pmu->read()
    
    Which results in doing a pmu::read() on an !ACTIVE event.
    
    I _think_ this is 'new' since we added attr.inherit_stat, which added
    the perf_event_read_event() to the exit path, without that
    perf_event_read_output() would only trigger from samples and for
    @event to trigger a sample, it's leader _must_ be ACTIVE too.
    
    Still, adding this check makes it consistent with the @sub case for
    the siblings.
    
    Reported-and-Tested-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3ab3aa8adcab55141696049936d247b7a62b40f
Author: Chao Yu <yuchao0@huawei.com>
Date:   Sat Jan 27 17:29:49 2018 +0800

    f2fs: fix to check extent cache in f2fs_drop_extent_tree
    
    [ Upstream commit bf617f7a92edc6bb2909db2bfa4576f50b280ee5 ]
    
    If noextent_cache mount option is on, we will never initialize extent tree
    in inode, but still we're going to access it in f2fs_drop_extent_tree,
    result in kernel panic as below:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000038
     IP: _raw_write_lock+0xc/0x30
     Call Trace:
      ? f2fs_drop_extent_tree+0x41/0x70 [f2fs]
      f2fs_fallocate+0x5a0/0xdd0 [f2fs]
      ? common_file_perm+0x47/0xc0
      ? apparmor_file_permission+0x1a/0x20
      vfs_fallocate+0x15b/0x290
      SyS_fallocate+0x44/0x70
      do_syscall_64+0x6e/0x160
      entry_SYSCALL64_slow_path+0x25/0x25
    
    This patch fixes to check extent cache status before using in
    f2fs_drop_extent_tree.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a9d617543c89ed41238de8bd4209801089f105f9
Author: Mathieu Malaterre <malat@debian.org>
Date:   Sun Feb 25 18:22:29 2018 +0100

    powerpc: Add missing prototype for arch_irq_work_raise()
    
    [ Upstream commit f5246862f82f1e16bbf84cda4cddf287672b30fe ]
    
    In commit 4f8b50bbbe63 ("irq_work, ppc: Fix up arch hooks") a new
    function arch_irq_work_raise() was added without a prototype in header
    irq_work.h.
    
    Fix the following warning (treated as error in W=1):
      arch/powerpc/kernel/time.c:523:6: error: no previous prototype for ‘arch_irq_work_raise’
    
    Signed-off-by: Mathieu Malaterre <malat@debian.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b4cc441afd750abffb247205542ab7070298e776
Author: Kamlakant Patel <kamlakant.patel@cavium.com>
Date:   Tue Mar 13 16:32:27 2018 +0530

    ipmi_ssif: Fix kernel panic at msg_done_handler
    
    [ Upstream commit f002612b9d86613bc6fde0a444e0095225f6053e ]
    
    This happens when BMC doesn't return any data and the code is trying
    to print the value of data[2].
    
    Getting following crash:
    [  484.728410] Unable to handle kernel NULL pointer dereference at virtual address 00000002
    [  484.736496] pgd = ffff0000094a2000
    [  484.739885] [00000002] *pgd=00000047fcffe003, *pud=00000047fcffd003, *pmd=0000000000000000
    [  484.748158] Internal error: Oops: 96000005 [#1] SMP
    [...]
    [  485.101451] Call trace:
    [...]
    [  485.188473] [<ffff000000a46e68>] msg_done_handler+0x668/0x700 [ipmi_ssif]
    [  485.195249] [<ffff000000a456b8>] ipmi_ssif_thread+0x110/0x128 [ipmi_ssif]
    [  485.202038] [<ffff0000080f1430>] kthread+0x108/0x138
    [  485.206994] [<ffff0000080838e0>] ret_from_fork+0x10/0x30
    [  485.212294] Code: aa1903e1 aa1803e0 b900227f 95fef6a5 (39400aa3)
    
    Adding a check to validate the data len before printing data[2] to fix this issue.
    
    Signed-off-by: Kamlakant Patel <kamlakant.patel@cavium.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 117ccc1846afbe63f1d5941859299f05c35c63fe
Author: Rafael J. Wysocki <rjw@rjwysocki.net>
Date:   Sat Mar 3 10:53:24 2018 +0100

    PCI: Restore config space on runtime resume despite being unbound
    
    [ Upstream commit 5775b843a619b3c93f946e2b55a208d9f0f48b59 ]
    
    We leave PCI devices not bound to a driver in D0 during runtime suspend.
    But they may have a parent which is bound and can be transitioned to
    D3cold at runtime.  Once the parent goes to D3cold, the unbound child
    may go to D3cold as well.  When the child goes to D3cold, its internal
    state, including configuration of BARs, MSI, ASPM, MPS, etc., is lost.
    
    One example are recent hybrid graphics laptops which cut power to the
    discrete GPU when the root port above it goes to ACPI power state D3.
    Users may provoke this by unbinding the GPU driver and allowing runtime
    PM on the GPU via sysfs:  The PM core will then treat the GPU as
    "suspended", which in turn allows the root port to runtime suspend,
    causing the power resources listed in its _PR3 object to be powered off.
    The GPU's BARs will be uninitialized when a driver later probes it.
    
    Another example are hybrid graphics laptops where the GPU itself (rather
    than the root port) is capable of runtime suspending to D3cold.  If the
    GPU's integrated HDA controller is not bound and the GPU's driver
    decides to runtime suspend to D3cold, the HDA controller's BARs will be
    uninitialized when a driver later probes it.
    
    Fix by saving and restoring config space over a runtime suspend cycle
    even if the device is not bound.
    
    Acked-by: Bjorn Helgaas <bhelgaas@google.com>
    Tested-by: Peter Wu <peter@lekensteyn.nl>              # Nvidia Optimus
    Tested-by: Lukas Wunner <lukas@wunner.de>              # MacBook Pro
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    [lukas: add commit message, bikeshed code comments for clarity]
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/92fb6e6ae2730915eb733c08e2f76c6a313e3860.1520068884.git.lukas@wunner.de
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b6fe8dc375b05eba37549e0396c4d55cc463819
Author: Mathias Kresin <dev@kresin.me>
Date:   Thu May 11 08:18:24 2017 +0200

    MIPS: ath79: Fix AR724X_PLL_REG_PCIE_CONFIG offset
    
    [ Upstream commit 05454c1bde91fb013c0431801001da82947e6b5a ]
    
    According to the QCA u-boot source the "PCIE Phase Lock Loop
    Configuration (PCIE_PLL_CONFIG)" register is for all SoCs except the
    QCA955X and QCA956X at offset 0x10.
    
    Since the PCIE PLL config register is only defined for the AR724x fix
    only this value. The value is wrong since the day it was added and isn't
    used by any driver yet.
    
    Signed-off-by: Mathias Kresin <dev@kresin.me>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/16048/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3888ac575deeaecc2888de0f94dd0326acb4cc2c
Author: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
Date:   Tue Mar 13 19:36:58 2018 +0100

    spi: bcm-qspi: fIX some error handling paths
    
    [ Upstream commit bc3cc75281b3c2b1c5355d88d147b66a753bb9a5 ]
    
    For some reason, commit c0368e4db4a3 ("spi: bcm-qspi: Fix use after free
    in bcm_qspi_probe() in error path") has updated some gotos, but not all of
    them.
    
    This looks spurious, so fix it.
    
    Fixes: fa236a7ef240 ("spi: bcm-qspi: Add Broadcom MSPI driver")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 121de4edcab749b1ab69c47b5c2a1dec8a0d40ef
Author: Christophe Jaillet <christophe.jaillet@wanadoo.fr>
Date:   Tue Mar 13 21:33:11 2018 +0100

    regulator: gpio: Fix some error handling paths in 'gpio_regulator_probe()'
    
    [ Upstream commit ed8cffda27dea6fd3dafb3ee881c5a786edac9ca ]
    
    Re-order error handling code and gotos to avoid leaks in error handling
    paths.
    
    Fixes: 9f946099fe19 ("regulator: gpio: fix parsing of gpio list")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19434e74192e86218f3a727cbd90000148618249
Author: Parav Pandit <parav@mellanox.com>
Date:   Tue Mar 13 16:06:14 2018 +0200

    IB/core: Honor port_num while resolving GID for IB link layer
    
    [ Upstream commit 563c4ba3bd2b8b0b21c65669ec2226b1cfa1138b ]
    
    ah_attr contains the port number to which cm_id is bound. However, while
    searching for GID table for matching GID entry, the port number is
    ignored.
    
    This could cause the wrong GID to be used when the ah_attr is converted to
    an AH.
    
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bb5f95132df9c5c10cf12b1be9e00471c41029c
Author: Thomas Richter <tmricht@linux.vnet.ibm.com>
Date:   Thu Mar 8 15:57:35 2018 +0100

    perf stat: Fix core dump when flag T is used
    
    [ Upstream commit fca32340a5e8b896f57d41fd94b8b1701df25eb1 ]
    
    Executing command 'perf stat -T -- ls' dumps core on x86 and s390.
    
    Here is the call back chain (done on x86):
    
     # gdb ./perf
     ....
     (gdb) r stat -T -- ls
    ...
    Program received signal SIGSEGV, Segmentation fault.
    0x00007ffff56d1963 in vasprintf () from /lib64/libc.so.6
    (gdb) where
     #0  0x00007ffff56d1963 in vasprintf () from /lib64/libc.so.6
     #1  0x00007ffff56ae484 in asprintf () from /lib64/libc.so.6
     #2  0x00000000004f1982 in __parse_events_add_pmu (parse_state=0x7fffffffd580,
        list=0xbfb970, name=0xbf3ef0 "cpu",
        head_config=0xbfb930, auto_merge_stats=false) at util/parse-events.c:1233
     #3  0x00000000004f1c8e in parse_events_add_pmu (parse_state=0x7fffffffd580,
        list=0xbfb970, name=0xbf3ef0 "cpu",
        head_config=0xbfb930) at util/parse-events.c:1288
     #4  0x0000000000537ce3 in parse_events_parse (_parse_state=0x7fffffffd580,
        scanner=0xbf4210) at util/parse-events.y:234
     #5  0x00000000004f2c7a in parse_events__scanner (str=0x6b66c0
        "task-clock,{instructions,cycles,cpu/cycles-t/,cpu/tx-start/}",
        parse_state=0x7fffffffd580, start_token=258) at util/parse-events.c:1673
     #6  0x00000000004f2e23 in parse_events (evlist=0xbe9990, str=0x6b66c0
        "task-clock,{instructions,cycles,cpu/cycles-t/,cpu/tx-start/}", err=0x0)
        at util/parse-events.c:1713
     #7  0x000000000044e137 in add_default_attributes () at builtin-stat.c:2281
     #8  0x000000000044f7b5 in cmd_stat (argc=1, argv=0x7fffffffe3b0) at
        builtin-stat.c:2828
     #9  0x00000000004c8b0f in run_builtin (p=0xab01a0 <commands+288>, argc=4,
        argv=0x7fffffffe3b0) at perf.c:297
     #10 0x00000000004c8d7c in handle_internal_command (argc=4,
        argv=0x7fffffffe3b0) at perf.c:349
     #11 0x00000000004c8ece in run_argv (argcp=0x7fffffffe20c,
       argv=0x7fffffffe200) at perf.c:393
     #12 0x00000000004c929c in main (argc=4, argv=0x7fffffffe3b0) at perf.c:537
    (gdb)
    
    It turns out that a NULL pointer is referenced. Here are the
    function calls:
    
      ...
      cmd_stat()
      +---> add_default_attributes()
            +---> parse_events(evsel_list, transaction_attrs, NULL);
                         3rd parameter set to NULL
    
    Function parse_events(xx, xx, struct parse_events_error *err) dives
    into a bison generated scanner and creates
    parser state information for it first:
    
       struct parse_events_state parse_state = {
                    .list   = LIST_HEAD_INIT(parse_state.list),
                    .idx    = evlist->nr_entries,
                    .error  = err,   <--- NULL POINTER !!!
                    .evlist = evlist,
            };
    
    Now various functions inside the bison scanner are called to end up in
    __parse_events_add_pmu(struct parse_events_state *parse_state, ..) with
    first parameter being a pointer to above structure definition.
    
    Now the PMU event name is not found (because being executed in a VM) and
    this function tries to create an error message with
    
       asprintf(&parse_state->error.str, ....)
    
    which references a NULL pointer and dumps core.
    
    Fix this by providing a pointer to the necessary error information
    instead of NULL. Technically only the else part is needed to avoid the
    core dump, just lets be safe...
    
    Signed-off-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Link: http://lkml.kernel.org/r/20180308145735.64717-1-tmricht@linux.vnet.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2c9d72746730adf336fb54aa924fd8c5dcc271f
Author: Yisheng Xie <xieyisheng1@huawei.com>
Date:   Mon Mar 12 19:25:56 2018 +0800

    perf top: Fix top.call-graph config option reading
    
    [ Upstream commit a3a4a3b37c9b911af4c375b2475cea0fd2b84d38 ]
    
    When trying to add the "call-graph" variable for top into the
    .perfconfig file, like:
    
          [top]
                call-graph = fp
    
    I that perf_top_config() do not parse this variable.
    
    Fix it by calling perf_default_config() when the top.call-graph variable
    is set.
    
    Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: b8cbb349061e ("perf config: Bring perf_default_config to the very beginning at main()")
    Link: http://lkml.kernel.org/r/1520853957-36106-1-git-send-email-xieyisheng1@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1d32f93981e74332f8e0efae5cba2832f098919
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Fri Feb 9 14:01:33 2018 +0100

    KVM: lapic: stop advertising DIRECTED_EOI when in-kernel IOAPIC is in use
    
    [ Upstream commit 0bcc3fb95b97ac2ca223a5a870287b37f56265ac ]
    
    Devices which use level-triggered interrupts under Windows 2016 with
    Hyper-V role enabled don't work: Windows disables EOI broadcast in SPIV
    unconditionally. Our in-kernel IOAPIC implementation emulates an old IOAPIC
    version which has no EOI register so EOI never happens.
    
    The issue was discovered and discussed a while ago:
    https://www.spinics.net/lists/kvm/msg148098.html
    
    While this is a guest OS bug (it should check that IOAPIC has the required
    capabilities before disabling EOI broadcast) we can workaround it in KVM:
    advertising DIRECTED_EOI with in-kernel IOAPIC makes little sense anyway.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f59418121e7af1df60d045f2e78ead6e0b5b009d
Author: Gregory CLEMENT <gregory.clement@bootlin.com>
Date:   Wed Mar 14 18:03:40 2018 +0100

    i2c: mv64xxx: Apply errata delay only in standard mode
    
    [ Upstream commit 31184d8c6ea49ea0676d100cdd7e1f102ad025b5 ]
    
    The errata FE-8471889 description has been updated. There is still a
    timing violation for repeated start. But the errata now states that it
    was only the case for the Standard mode (100 kHz), in Fast mode (400 kHz)
    there is no issue.
    
    This patch limit the errata fix to the Standard mode.
    
    It has been tesed successfully on the clearfog (Aramda 388 based board).
    
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 494ce7e6afff5532f31c661cc7432ed9748452e7
Author: Arjun Vynipadath <arjun@chelsio.com>
Date:   Thu Mar 15 17:34:14 2018 +0530

    cxgb4: Fix queue free path of ULD drivers
    
    [ Upstream commit d7cb44496a9bb458632cb3c18acb08949c210448 ]
    
    Setting sge_uld_rxq_info to NULL in free_queues_uld().
    We are referencing sge_uld_rxq_info in cxgb_up(). This
    will fix a panic when interface is brought up after a
    ULDq creation failure.
    
    Fixes: 94cdb8bb993a (cxgb4: Add support for dynamic allocation
           of resources for ULD)
    Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
    Signed-off-by: Casey Leedom <leedom@chelsio.com>
    Signed-off-by: Ganesh Goudhar <ganeshgr@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c6d844357a30e5dfcbb015c0d07a8175464b9c6
Author: Seunghun Han <kkamagui@gmail.com>
Date:   Wed Mar 14 16:12:56 2018 -0700

    ACPICA: acpi: acpica: fix acpi operand cache leak in nseval.c
    
    [ Upstream commit 97f3c0a4b0579b646b6b10ae5a3d59f0441cc12c ]
    
    I found an ACPI cache leak in ACPI early termination and boot continuing case.
    
    When early termination occurs due to malicious ACPI table, Linux kernel
    terminates ACPI function and continues to boot process. While kernel terminates
    ACPI function, kmem_cache_destroy() reports Acpi-Operand cache leak.
    
    Boot log of ACPI operand cache leak is as follows:
    >[    0.464168] ACPI: Added _OSI(Module Device)
    >[    0.467022] ACPI: Added _OSI(Processor Device)
    >[    0.469376] ACPI: Added _OSI(3.0 _SCP Extensions)
    >[    0.471647] ACPI: Added _OSI(Processor Aggregator Device)
    >[    0.477997] ACPI Error: Null stack entry at ffff880215c0aad8 (20170303/exresop-174)
    >[    0.482706] ACPI Exception: AE_AML_INTERNAL, While resolving operands for [opcode_name unavailable] (20170303/dswexec-461)
    >[    0.487503] ACPI Error: Method parse/execution failed [\DBG] (Node ffff88021710ab40), AE_AML_INTERNAL (20170303/psparse-543)
    >[    0.492136] ACPI Error: Method parse/execution failed [\_SB._INI] (Node ffff88021710a618), AE_AML_INTERNAL (20170303/psparse-543)
    >[    0.497683] ACPI: Interpreter enabled
    >[    0.499385] ACPI: (supports S0)
    >[    0.501151] ACPI: Using IOAPIC for interrupt routing
    >[    0.503342] ACPI Error: Null stack entry at ffff880215c0aad8 (20170303/exresop-174)
    >[    0.506522] ACPI Exception: AE_AML_INTERNAL, While resolving operands for [opcode_name unavailable] (20170303/dswexec-461)
    >[    0.510463] ACPI Error: Method parse/execution failed [\DBG] (Node ffff88021710ab40), AE_AML_INTERNAL (20170303/psparse-543)
    >[    0.514477] ACPI Error: Method parse/execution failed [\_PIC] (Node ffff88021710ab18), AE_AML_INTERNAL (20170303/psparse-543)
    >[    0.518867] ACPI Exception: AE_AML_INTERNAL, Evaluating _PIC (20170303/bus-991)
    >[    0.522384] kmem_cache_destroy Acpi-Operand: Slab cache still has objects
    >[    0.524597] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 4.12.0-rc5 #26
    >[    0.526795] Hardware name: innotek gmb_h virtual_box/virtual_box, BIOS virtual_box 12/01/2006
    >[    0.529668] Call Trace:
    >[    0.530811]  ? dump_stack+0x5c/0x81
    >[    0.532240]  ? kmem_cache_destroy+0x1aa/0x1c0
    >[    0.533905]  ? acpi_os_delete_cache+0xa/0x10
    >[    0.535497]  ? acpi_ut_delete_caches+0x3f/0x7b
    >[    0.537237]  ? acpi_terminate+0xa/0x14
    >[    0.538701]  ? acpi_init+0x2af/0x34f
    >[    0.540008]  ? acpi_sleep_proc_init+0x27/0x27
    >[    0.541593]  ? do_one_initcall+0x4e/0x1a0
    >[    0.543008]  ? kernel_init_freeable+0x19e/0x21f
    >[    0.546202]  ? rest_init+0x80/0x80
    >[    0.547513]  ? kernel_init+0xa/0x100
    >[    0.548817]  ? ret_from_fork+0x25/0x30
    >[    0.550587] vgaarb: loaded
    >[    0.551716] EDAC MC: Ver: 3.0.0
    >[    0.553744] PCI: Probing PCI hardware
    >[    0.555038] PCI host bridge to bus 0000:00
    > ... Continue to boot and log is omitted ...
    
    I analyzed this memory leak in detail and found acpi_ns_evaluate() function
    only removes Info->return_object in AE_CTRL_RETURN_VALUE case. But, when errors
    occur, the status value is not AE_CTRL_RETURN_VALUE, and Info->return_object is
    also not null. Therefore, this causes acpi operand memory leak.
    
    This cache leak causes a security threat because an old kernel (<= 4.9) shows
    memory locations of kernel functions in stack dump. Some malicious users
    could use this information to neutralize kernel ASLR.
    
    I made a patch to fix ACPI operand cache leak.
    
    Signed-off-by: Seunghun Han <kkamagui@gmail.com>
    Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e45b8dfb148997c2725f00e87ef8fa393320f5b
Author: Erik Schmauss <erik.schmauss@intel.com>
Date:   Wed Mar 14 16:13:08 2018 -0700

    ACPICA: Events: add a return on failure from acpi_hw_register_read
    
    [ Upstream commit b4c0de312613ca676db5bd7e696a44b56795612a ]
    
    This ensures that acpi_ev_fixed_event_detect() does not use fixed_status
    and and fixed_enable as uninitialized variables.
    
    Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe45138dd010dd479716c669660f8bdc8125ded5
Author: Coly Li <colyli@suse.de>
Date:   Sun Mar 18 17:36:15 2018 -0700

    bcache: quit dc->writeback_thread when BCACHE_DEV_DETACHING is set
    
    [ Upstream commit fadd94e05c02afec7b70b0b14915624f1782f578 ]
    
    In patch "bcache: fix cached_dev->count usage for bch_cache_set_error()",
    cached_dev_get() is called when creating dc->writeback_thread, and
    cached_dev_put() is called when exiting dc->writeback_thread. This
    modification works well unless people detach the bcache device manually by
        'echo 1 > /sys/block/bcache<N>/bcache/detach'
    Because this sysfs interface only calls bch_cached_dev_detach() which wakes
    up dc->writeback_thread but does not stop it. The reason is, before patch
    "bcache: fix cached_dev->count usage for bch_cache_set_error()", inside
    bch_writeback_thread(), if cache is not dirty after writeback,
    cached_dev_put() will be called here. And in cached_dev_make_request() when
    a new write request makes cache from clean to dirty, cached_dev_get() will
    be called there. Since we don't operate dc->count in these locations,
    refcount d->count cannot be dropped after cache becomes clean, and
    cached_dev_detach_finish() won't be called to detach bcache device.
    
    This patch fixes the issue by checking whether BCACHE_DEV_DETACHING is
    set inside bch_writeback_thread(). If this bit is set and cache is clean
    (no existing writeback_keys), break the while-loop, call cached_dev_put()
    and quit the writeback thread.
    
    Please note if cache is still dirty, even BCACHE_DEV_DETACHING is set the
    writeback thread should continue to perform writeback, this is the original
    design of manually detach.
    
    It is safe to do the following check without locking, let me explain why,
    +       if (!test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags) &&
    +           (!atomic_read(&dc->has_dirty) || !dc->writeback_running)) {
    
    If the kenrel thread does not sleep and continue to run due to conditions
    are not updated in time on the running CPU core, it just consumes more CPU
    cycles and has no hurt. This should-sleep-but-run is safe here. We just
    focus on the should-run-but-sleep condition, which means the writeback
    thread goes to sleep in mistake while it should continue to run.
    1, First of all, no matter the writeback thread is hung or not,
       kthread_stop() from cached_dev_detach_finish() will wake up it and
       terminate by making kthread_should_stop() return true. And in normal
       run time, bit on index BCACHE_DEV_DETACHING is always cleared, the
       condition
            !test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags)
       is always true and can be ignored as constant value.
    2, If one of the following conditions is true, the writeback thread should
       go to sleep,
       "!atomic_read(&dc->has_dirty)" or "!dc->writeback_running)"
       each of them independently controls the writeback thread should sleep or
       not, let's analyse them one by one.
    2.1 condition "!atomic_read(&dc->has_dirty)"
       If dc->has_dirty is set from 0 to 1 on another CPU core, bcache will
       call bch_writeback_queue() immediately or call bch_writeback_add() which
       indirectly calls bch_writeback_queue() too. In bch_writeback_queue(),
       wake_up_process(dc->writeback_thread) is called. It sets writeback
       thread's task state to TASK_RUNNING and following an implicit memory
       barrier, then tries to wake up the writeback thread.
       In writeback thread, its task state is set to TASK_INTERRUPTIBLE before
       doing the condition check. If other CPU core sets the TASK_RUNNING state
       after writeback thread setting TASK_INTERRUPTIBLE, the writeback thread
       will be scheduled to run very soon because its state is not
       TASK_INTERRUPTIBLE. If other CPU core sets the TASK_RUNNING state before
       writeback thread setting TASK_INTERRUPTIBLE, the implict memory barrier
       of wake_up_process() will make sure modification of dc->has_dirty on
       other CPU core is updated and observed on the CPU core of writeback
       thread. Therefore the condition check will correctly be false, and
       continue writeback code without sleeping.
    2.2 condition "!dc->writeback_running)"
       dc->writeback_running can be changed via sysfs file, every time it is
       modified, a following bch_writeback_queue() is alwasy called. So the
       change is always observed on the CPU core of writeback thread. If
       dc->writeback_running is changed from 0 to 1 on other CPU core, this
       condition check will observe the modification and allow writeback
       thread to continue to run without sleeping.
    Now we can see, even without a locking protection, multiple conditions
    check is safe here, no deadlock or process hang up will happen.
    
    I compose a separte patch because that patch "bcache: fix cached_dev->count
    usage for bch_cache_set_error()" already gets a "Reviewed-by:" from Hannes
    Reinecke. Also this fix is not trivial and good for a separate patch.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Huijun Tang <tang.junhui@zte.com.cn>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b19d676b7715deaaaf1f53cb0af6c58712c11504
Author: Michael Schmitz <schmitzmic@gmail.com>
Date:   Sat Mar 3 12:04:13 2018 +1300

    zorro: Set up z->dev.dma_mask for the DMA API
    
    [ Upstream commit 55496d3fe2acd1a365c43cbd613a20ecd4d74395 ]
    
    The generic DMA API uses dev->dma_mask to check the DMA addressable
    memory bitmask, and warns if no mask is set or even allocated.
    
    Set z->dev.dma_coherent_mask on Zorro bus scan, and make z->dev.dma_mask
    to point to z->dev.dma_coherent_mask so device drivers that need DMA have
    everything set up to avoid warnings from dma_alloc_coherent(). Drivers can
    still use dma_set_mask_and_coherent() to explicitly set their DMA bit mask.
    
    Signed-off-by: Michael Schmitz <schmitzmic@gmail.com>
    [geert: Handle Zorro II with 24-bit address space]
    Acked-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 796fd6b5939248415f88016a77f5b32692c40ca2
Author: Chunyu Hu <chuhu@redhat.com>
Date:   Mon Mar 5 13:40:38 2018 +0800

    cpufreq: cppc_cpufreq: Fix cppc_cpufreq_init() failure path
    
    [ Upstream commit 55b55abc17f238c61921360e61dde90dd9a326d1 ]
    
    Kmemleak reported the below leak. When cppc_cpufreq_init went into
    failure path, the cpu mask is not freed. After fix, this report is
    gone. And to avaoid potential NULL pointer reference, check the cpu
    value first.
    
    unreferenced object 0xffff800fd5ea4880 (size 128):
      comm "swapper/0", pid 1, jiffies 4294939510 (age 668.680s)
      hex dump (first 32 bytes):
        00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00  .... ...........
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffff0000082c4ae4>] __kmalloc_node+0x278/0x634
        [<ffff0000088f4a74>] alloc_cpumask_var_node+0x28/0x60
        [<ffff0000088f4af0>] zalloc_cpumask_var+0x14/0x1c
        [<ffff000008d20254>] cppc_cpufreq_init+0xd0/0x19c
        [<ffff000008083828>] do_one_initcall+0xec/0x15c
        [<ffff000008cd1018>] kernel_init_freeable+0x1f4/0x2a4
        [<ffff0000089099b0>] kernel_init+0x18/0x10c
        [<ffff000008084d50>] ret_from_fork+0x10/0x18
        [<ffffffffffffffff>] 0xffffffffffffffff
    
    Signed-off-by: Chunyu Hu <chuhu@redhat.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4767139615790512019fbcf4c0d151f02f1846e2
Author: Philipp Puschmann <pp@emlix.com>
Date:   Fri Mar 23 10:22:15 2018 +0100

    arm: dts: socfpga: fix GIC PPI warning
    
    [ Upstream commit 6d97d5aba08b26108f95dc9fb7bbe4d9436c769c ]
    
    Fixes the warning "GIC: PPI13 is secure or misconfigured" by
    changing the interrupt type from level_low to edge_raising
    
    Signed-off-by: Philipp Puschmann <pp@emlix.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ebfab1f2ddf3540cc1ba6af1671eae23c1ebc905
Author: Jay Vosburgh <jay.vosburgh@canonical.com>
Date:   Thu Mar 22 14:42:41 2018 +0000

    virtio-net: Fix operstate for virtio when no VIRTIO_NET_F_STATUS
    
    [ Upstream commit bda7fab54828bbef2164bb23c0f6b1a7d05cc718 ]
    
    The operstate update logic will leave an interface in the
    default UNKNOWN operstate if the interface carrier state never changes
    from the default carrier up state set at creation.  This includes the
    case of an explicit call to netif_carrier_on, as the carrier on to on
    transition has no effect on operstate.
    
            This affects virtio-net for the case that the virtio peer does
    not support VIRTIO_NET_F_STATUS (the feature that provides carrier state
    updates).  Without this feature, the virtio specification states that
    "the link should be assumed active," so, logically, the operstate should
    be UP instead of UNKNOWN.  This has impact on user space applications
    that use the operstate to make availability decisions for the interface.
    
            Resolve this by changing the virtio probe logic slightly to call
    netif_carrier_off for both the "with" and "without" VIRTIO_NET_F_STATUS
    cases, and then the existing call to netif_carrier_on for the "without"
    case will cause an operstate transition.
    
    Cc: "Michael S. Tsirkin" <mst@redhat.com>
    Cc: Jason Wang <jasowang@redhat.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99d8240f0dbabe9511a880ba32d632fe3b1834f8
Author: Petr Vorel <pvorel@suse.cz>
Date:   Fri Mar 23 14:41:08 2018 +0100

    ima: Fallback to the builtin hash algorithm
    
    [ Upstream commit ab60368ab6a452466885ef4edf0cefd089465132 ]
    
    IMA requires having it's hash algorithm be compiled-in due to it's
    early use.  The default IMA algorithm is protected by Kconfig to be
    compiled-in.
    
    The ima_hash kernel parameter allows to choose the hash algorithm. When
    the specified algorithm is not available or available as a module, IMA
    initialization fails, which leads to a kernel panic (mknodat syscall calls
    ima_post_path_mknod()).  Therefore as fallback we force IMA to use
    the default builtin Kconfig hash algorithm.
    
    Fixed crash:
    
    $ grep CONFIG_CRYPTO_MD4 .config
    CONFIG_CRYPTO_MD4=m
    
    [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.12.14-2.3-default root=UUID=74ae8202-9ca7-4e39-813b-22287ec52f7a video=1024x768-16 plymouth.ignore-serial-consoles console=ttyS0 console=tty resume=/dev/disk/by-path/pci-0000:00:07.0-part3 splash=silent showopts ima_hash=md4
    ...
    [    1.545190] ima: Can not allocate md4 (reason: -2)
    ...
    [    2.610120] BUG: unable to handle kernel NULL pointer dereference at           (null)
    [    2.611903] IP: ima_match_policy+0x23/0x390
    [    2.612967] PGD 0 P4D 0
    [    2.613080] Oops: 0000 [#1] SMP
    [    2.613080] Modules linked in: autofs4
    [    2.613080] Supported: Yes
    [    2.613080] CPU: 0 PID: 1 Comm: systemd Not tainted 4.12.14-2.3-default #1
    [    2.613080] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
    [    2.613080] task: ffff88003e2d0040 task.stack: ffffc90000190000
    [    2.613080] RIP: 0010:ima_match_policy+0x23/0x390
    [    2.613080] RSP: 0018:ffffc90000193e88 EFLAGS: 00010296
    [    2.613080] RAX: 0000000000000000 RBX: 000000000000000c RCX: 0000000000000004
    [    2.613080] RDX: 0000000000000010 RSI: 0000000000000001 RDI: ffff880037071728
    [    2.613080] RBP: 0000000000008000 R08: 0000000000000000 R09: 0000000000000000
    [    2.613080] R10: 0000000000000008 R11: 61c8864680b583eb R12: 00005580ff10086f
    [    2.613080] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000008000
    [    2.613080] FS:  00007f5c1da08940(0000) GS:ffff88003fc00000(0000) knlGS:0000000000000000
    [    2.613080] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    2.613080] CR2: 0000000000000000 CR3: 0000000037002000 CR4: 00000000003406f0
    [    2.613080] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [    2.613080] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [    2.613080] Call Trace:
    [    2.613080]  ? shmem_mknod+0xbf/0xd0
    [    2.613080]  ima_post_path_mknod+0x1c/0x40
    [    2.613080]  SyS_mknod+0x210/0x220
    [    2.613080]  entry_SYSCALL_64_fastpath+0x1a/0xa5
    [    2.613080] RIP: 0033:0x7f5c1bfde570
    [    2.613080] RSP: 002b:00007ffde1c90dc8 EFLAGS: 00000246 ORIG_RAX: 0000000000000085
    [    2.613080] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f5c1bfde570
    [    2.613080] RDX: 0000000000000000 RSI: 0000000000008000 RDI: 00005580ff10086f
    [    2.613080] RBP: 00007ffde1c91040 R08: 00005580ff10086f R09: 0000000000000000
    [    2.613080] R10: 0000000000104000 R11: 0000000000000246 R12: 00005580ffb99660
    [    2.613080] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000002
    [    2.613080] Code: 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 41 57 41 56 44 8d 14 09 41 55 41 54 55 53 44 89 d3 09 cb 48 83 ec 38 48 8b 05 c5 03 29 01 <4c> 8b 20 4c 39 e0 0f 84 d7 01 00 00 4c 89 44 24 08 89 54 24 20
    [    2.613080] RIP: ima_match_policy+0x23/0x390 RSP: ffffc90000193e88
    [    2.613080] CR2: 0000000000000000
    [    2.613080] ---[ end trace 9a9f0a8a73079f6a ]---
    [    2.673052] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009
    [    2.673052]
    [    2.675337] Kernel Offset: disabled
    [    2.676405] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009
    
    Signed-off-by: Petr Vorel <pvorel@suse.cz>
    Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79ad08dae99b978b6d1567f746076272cadefc38
Author: Arjun Vynipadath <arjun@chelsio.com>
Date:   Fri Mar 23 15:25:10 2018 +0530

    cxgb4: Setup FW queues before registering netdev
    
    [ Upstream commit 843bd7db79c861b49e2912d723625f5fa8e94502 ]
    
    When NetworkManager is enabled, there are chances that interface up
    is called even before probe completes. This means we have not yet
    allocated the FW sge queues, hence rest of ingress queue allocation
    wont be proper. Fix this by calling setup_fw_sge_queues() before
    register_netdev().
    
    Fixes: 0fbc81b3ad51 ('chcr/cxgb4i/cxgbit/RDMA/cxgb4: Allocate resources dynamically for all cxgb4 ULD's')
    Signed-off-by: Arjun Vynipadath <arjun@chelsio.com>
    Signed-off-by: Casey Leedom <leedom@chelsio.com>
    Signed-off-by: Ganesh Goudar <ganeshgr@chelsio.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e63ff84eb09953c4028fc450fe2c4c0103cf7ba0
Author: Karthikeyan Periyasamy <periyasa@codeaurora.org>
Date:   Mon Mar 12 17:09:40 2018 +0530

    ath10k: Fix kernel panic while using worker (ath10k_sta_rc_update_wk)
    
    [ Upstream commit 8b2d93dd22615cb7f3046a5a2083a6f8bb8052ed ]
    
    When attempt to run worker (ath10k_sta_rc_update_wk) after the station object
    (ieee80211_sta) delete will trigger the kernel panic.
    
    This problem arise in AP + Mesh configuration, Where the current node AP VAP
    and neighbor node mesh VAP MAC address are same. When the current mesh node
    try to establish the mesh link with neighbor node, driver peer creation for
    the neighbor mesh node fails due to duplication MAC address. Already the AP
    VAP created with same MAC address.
    
    It is caused by the following scenario steps.
    
    Steps:
    1. In above condition, ath10k driver sta_state callback (ath10k_sta_state)
       fails to do the state change for a station from IEEE80211_STA_NOTEXIST
       to IEEE80211_STA_NONE due to peer creation fails. Sta_state callback is
       called from ieee80211_add_station() to handle the new station
       (neighbor mesh node) request from the wpa_supplicant.
    2. Concurrently ath10k receive the sta_rc_update callback notification from
       the mesh_neighbour_update() to handle the beacon frames of the above
       neighbor mesh node. since its atomic callback, ath10k driver queue the
       work (ath10k_sta_rc_update_wk) to handle rc update.
    3. Due to driver sta_state callback fails (step 1), mac80211 free the station
       object.
    4. When the worker (ath10k_sta_rc_update_wk) scheduled to run, it will access
       the station object which is already deleted. so it will trigger kernel
       panic.
    
    Added the peer exist check in sta_rc_update callback before queue the work.
    
    Kernel Panic log:
    
    Unable to handle kernel NULL pointer dereference at virtual address 00000000
    pgd = c0204000
    [00000000] *pgd=00000000
    Internal error: Oops: 17 [#1] PREEMPT SMP ARM
    CPU: 1 PID: 1833 Comm: kworker/u4:2 Not tainted 3.14.77 #1
    task: dcef0000 ti: d72b6000 task.ti: d72b6000
    PC is at pwq_activate_delayed_work+0x10/0x40
    LR is at pwq_activate_delayed_work+0xc/0x40
    pc : [<c023f988>]    lr : [<c023f984>]    psr: 40000193
    sp : d72b7f18  ip : 0000007a  fp : d72b6000
    r10: 00000000  r9 : dd404414  r8 : d8c31998
    r7 : d72b6038  r6 : 00000004  r5 : d4907ec8  r4 : dcee1300
    r3 : ffffffe0  r2 : 00000000  r1 : 00000001  r0 : 00000000
    Flags: nZcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
    Control: 10c5787d  Table: 595bc06a  DAC: 00000015
    ...
    Process kworker/u4:2 (pid: 1833, stack limit = 0xd72b6238)
    Stack: (0xd72b7f18 to 0xd72b8000)
    7f00:                                                       00000001 dcee1300
    7f20: 00000001 c02410dc d8c31980 dd404400 dd404400 c0242790 d8c31980 00000089
    7f40: 00000000 d93e1340 00000000 d8c31980 c0242568 00000000 00000000 00000000
    7f60: 00000000 c02474dc 00000000 00000000 000000f8 d8c31980 00000000 00000000
    7f80: d72b7f80 d72b7f80 00000000 00000000 d72b7f90 d72b7f90 d72b7fac d93e1340
    7fa0: c0247404 00000000 00000000 c0208d20 00000000 00000000 00000000 00000000
    7fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    7fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000
    [<c023f988>] (pwq_activate_delayed_work) from [<c02410dc>] (pwq_dec_nr_in_flight+0x58/0xc4)
    [<c02410dc>] (pwq_dec_nr_in_flight) from [<c0242790>] (worker_thread+0x228/0x360)
    [<c0242790>] (worker_thread) from [<c02474dc>] (kthread+0xd8/0xec)
    [<c02474dc>] (kthread) from [<c0208d20>] (ret_from_fork+0x14/0x34)
    Code: e92d4038 e1a05000 ebffffbc[69210.619376] SMP: failed to stop secondary CPUs
    Rebooting in 3 seconds..
    
    Signed-off-by: Karthikeyan Periyasamy <periyasa@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d59a4a6df2c9e30242ab3e02b436fc30cdf5b34
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Tue Jan 2 16:49:56 2018 +0200

    net/mlx5: Protect from command bit overflow
    
    [ Upstream commit 957f6ba8adc7be401a74ccff427e4cfd88d3bfcb ]
    
    The system with CONFIG_UBSAN enabled on produces the following error
    during driver initialization. The reason to it that max_reg_cmds can be
    larger enough to cause to "1 << max_reg_cmds" overflow the unsigned long.
    
    ================================================================================
    UBSAN: Undefined behaviour in drivers/net/ethernet/mellanox/mlx5/core/cmd.c:1805:42
    signed integer overflow:
    -2147483648 - 1 cannot be represented in type 'int'
    CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.15.0-rc2-00032-g06cda2358d9b-dirty #724
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.7.5-0-ge51488c-20140602_164612-nilsson.home.kraxel.org 04/01/2014
    Call Trace:
     dump_stack+0xe9/0x18f
     ? dma_virt_alloc+0x81/0x81
     ubsan_epilogue+0xe/0x4e
     handle_overflow+0x187/0x20c
     mlx5_cmd_init+0x73a/0x12b0
     mlx5_load_one+0x1c3d/0x1d30
     init_one+0xd02/0xf10
     pci_device_probe+0x26c/0x3b0
     driver_probe_device+0x622/0xb40
     __driver_attach+0x175/0x1b0
     bus_for_each_dev+0xef/0x190
     bus_add_driver+0x2db/0x490
     driver_register+0x16b/0x1e0
     __pci_register_driver+0x177/0x1b0
     init+0x6d/0x92
     do_one_initcall+0x15b/0x270
     kernel_init_freeable+0x2d8/0x3d0
     kernel_init+0x14/0x190
     ret_from_fork+0x24/0x30
    ================================================================================
    
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3feab927bb324ffd673825f6f3911f61775ed9d3
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Mar 23 20:44:27 2018 +1100

    selftests: Print the test we're running to /dev/kmsg
    
    [ Upstream commit 88893cf787d3062c631cc20b875068eb11756e03 ]
    
    Some tests cause the kernel to print things to the kernel log
    buffer (ie. printk), in particular oops and warnings etc. However when
    running all the tests in succession it's not always obvious which
    test(s) caused the kernel to print something.
    
    We can narrow it down by printing which test directory we're running
    in to /dev/kmsg, if it's writable.
    
    Example output:
    
      [  170.149149] kselftest: Running tests in powerpc
      [  305.300132] kworker/dying (71) used greatest stack depth: 7776 bytes
                     left
      [  808.915456] kselftest: Running tests in pstore
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98b219800a8fc5ce5da5eb597f1fbd8e010ae87a
Author: Frank Asseg <frank.asseg@objecthunter.net>
Date:   Mon Mar 12 19:57:06 2018 +0100

    tools/thermal: tmon: fix for segfault
    
    [ Upstream commit 6c59f64b7ecf2bccbe73931d7d573d66ed13b537 ]
    
    Fixes a segfault occurring when e.g. <TAB> is pressed multiple times in the
    ncurses tmon application. The segfault is caused by incrementing
    cur_thermal_record in the main function without checking if it's value reached
    NR_THERMAL_RECORD immediately. Since the boundary check only occurred in
    update_thermal_data a race condition existed, which lead to an attempted read
    beyond the last element of the trec array.
    
    The fix was implemented by moving the cur_thermal_record incrementation to the
    update_thermal_data function using a temporary variable on which the boundary
    condition is checked before updating cur_thread_record, so that the variable is
    never incremented beyond the trec array's boundary.
    
    It seems the segfault does not occur on every machine: On a HP EliteBook G4 the
    segfault happens, while it does not happen on a Thinkpad T540p.
    
    Signed-off-by: Frank Asseg <frank.asseg@objecthunter.net>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbcc07d5fcb1145b58a3ae6ccf7ffb8ba41a4b61
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Wed Mar 21 17:10:24 2018 +0530

    powerpc/perf: Fix kernel address leak via sampling registers
    
    [ Upstream commit e1ebd0e5b9d0a10ba65e63a3514b6da8c6a5a819 ]
    
    Current code in power_pmu_disable() does not clear the sampling
    registers like Sampling Instruction Address Register (SIAR) and
    Sampling Data Address Register (SDAR) after disabling the PMU. Since
    these are userspace readable and could contain kernel addresses, add
    code to explicitly clear the content of these registers.
    
    Also add a "context synchronizing instruction" to enforce no further
    updates to these registers as suggested by Power ISA v3.0B. From
    section 9.4, on page 1108:
    
      "If an mtspr instruction is executed that changes the value of a
      Performance Monitor register other than SIAR, SDAR, and SIER, the
      change is not guaranteed to have taken effect until after a
      subsequent context synchronizing instruction has been executed (see
      Chapter 11. "Synchronization Requirements for Context Alterations"
      on page 1133)."
    
    Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    [mpe: Massage change log and add ISA reference]
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ebbbeb8c4651c3566028df308d8b53b09105e3e
Author: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Date:   Wed Mar 21 17:10:25 2018 +0530

    powerpc/perf: Prevent kernel address leak to userspace via BHRB buffer
    
    [ Upstream commit bb19af816025d495376bd76bf6fbcf4244f9a06d ]
    
    The current Branch History Rolling Buffer (BHRB) code does not check
    for any privilege levels before updating the data from BHRB. This
    could leak kernel addresses to userspace even when profiling only with
    userspace privileges. Add proper checks to prevent it.
    
    Acked-by: Balbir Singh <bsingharora@gmail.com>
    Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2a48e89c37bf60872a297cf584544826a44c29b7
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Mon Mar 26 19:50:31 2018 -0700

    hwmon: (nct6775) Fix writing pwmX_mode
    
    [ Upstream commit 415eb2a1aaa4881cf85bd86c683356fdd8094a23 ]
    
    pwmX_mode is defined in the ABI as 0=DC mode, 1=pwm mode. The chip
    register bit is set to 1 for DC mode. This got mixed up, and writing
    1 into pwmX_mode resulted in DC mode enabled. Fix it up by using
    the ABI definition throughout the driver for consistency.
    
    Fixes: 77eb5b3703d99 ("hwmon: (nct6775) Add support for pwm, pwm_mode, ... ")
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0c16b7ed7704c39efc2d633a4a33ba3f2ec4710a
Author: Helge Deller <deller@gmx.de>
Date:   Sun Mar 25 14:04:22 2018 +0200

    parisc/pci: Switch LBA PCI bus from Hard Fail to Soft Fail mode
    
    [ Upstream commit b845f66f78bf42a4ce98e5cfe0e94fab41dd0742 ]
    
    Carlo Pisani noticed that his C3600 workstation behaved unstable during heavy
    I/O on the PCI bus with a VIA VT6421 IDE/SATA PCI card.
    
    To avoid such instability, this patch switches the LBA PCI bus from Hard Fail
    mode into Soft Fail mode. In this mode the bus will return -1UL for timed out
    MMIO transactions, which is exactly how the x86 (and most other architectures)
    PCI busses behave.
    
    This patch is based on a proposal by Grant Grundler and Kyle McMartin 10
    years ago:
    https://www.spinics.net/lists/linux-parisc/msg01027.html
    
    Cc: Carlo Pisani <carlojpisani@gmail.com>
    Cc: Kyle McMartin <kyle@mcmartin.ca>
    Reviewed-by: Grant Grundler <grantgrundler@gmail.com>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f9711115a11bbc8b5e371a6572c12ebadef2a73
Author: Greg Ungerer <gerg@linux-m68k.org>
Date:   Wed Mar 28 17:12:18 2018 +1000

    m68k: set dma and coherent masks for platform FEC ethernets
    
    [ Upstream commit f61e64310b75733d782e930d1fb404b84699eed6 ]
    
    As of commit 205e1b7f51e4 ("dma-mapping: warn when there is no
    coherent_dma_mask") the Freescale FEC driver is issuing the following
    warning on driver initialization on ColdFire systems:
    
    WARNING: CPU: 0 PID: 1 at ./include/linux/dma-mapping.h:516 0x40159e20
    Modules linked in:
    CPU: 0 PID: 1 Comm: swapper Not tainted 4.16.0-rc7-dirty #4
    Stack from 41833dd8:
            41833dd8 40259c53 40025534 40279e26 00000003 00000000 4004e514 41827000
            400255de 40244e42 00000204 40159e20 00000009 00000000 00000000 4024531d
            40159e20 40244e42 00000204 00000000 00000000 00000000 00000007 00000000
            00000000 40279e26 4028d040 40226576 4003ae88 40279e26 418273f6 41833ef8
            7fffffff 418273f2 41867028 4003c9a2 4180ac6c 00000004 41833f8c 4013e71c
            40279e1c 40279e26 40226c16 4013ced2 40279e26 40279e58 4028d040 00000000
    Call Trace:
            [<40025534>] 0x40025534
     [<4004e514>] 0x4004e514
     [<400255de>] 0x400255de
     [<40159e20>] 0x40159e20
     [<40159e20>] 0x40159e20
    
    It is not fatal, the driver and the system continue to function normally.
    
    As per the warning the coherent_dma_mask is not set on this device.
    There is nothing special about the DMA memory coherency on this hardware
    so we can just set the mask to 32bits in the platform data for the FEC
    ethernet devices.
    
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c73749beaab56ed94c7c85124650773c9f688b8d
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Fri Mar 30 23:27:25 2018 +1100

    powerpc/mpic: Check if cpu_possible() in mpic_physmask()
    
    [ Upstream commit 0834d627fbea00c1444075eb3e448e1974da452d ]
    
    In mpic_physmask() we loop over all CPUs up to 32, then get the hard
    SMP processor id of that CPU.
    
    Currently that's possibly walking off the end of the paca array, but
    in a future patch we will change the paca array to be an array of
    pointers, and in that case we will get a NULL for missing CPUs and
    oops. eg:
    
      Unable to handle kernel paging request for data at address 0x88888888888888b8
      Faulting instruction address: 0xc00000000004e380
      Oops: Kernel access of bad area, sig: 11 [#1]
      ...
      NIP .mpic_set_affinity+0x60/0x1a0
      LR  .irq_do_set_affinity+0x48/0x100
    
    Fix it by checking the CPU is possible, this also fixes the code if
    there are gaps in the CPU numbering which probably never happens on
    mpic systems but who knows.
    
    Debugged-by: Nicholas Piggin <npiggin@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bebc3f0137796d0377fb7c06bdf191941f62b033
Author: Lenny Szubowicz <lszubowi@redhat.com>
Date:   Tue Mar 27 09:56:40 2018 -0400

    ACPI: acpi_pad: Fix memory leak in power saving threads
    
    [ Upstream commit 8b29d29abc484d638213dd79a18a95ae7e5bb402 ]
    
    Fix once per second (round_robin_time) memory leak of about 1 KB in
    each acpi_pad kernel idling thread that is activated.
    
    Found by testing with kmemleak.
    
    Signed-off-by: Lenny Szubowicz <lszubowi@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc45cf2446bf7350ea6db9f178f11996aadffb30
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Fri Mar 16 22:17:28 2018 +0200

    drivers: macintosh: rack-meter: really fix bogus memsets
    
    [ Upstream commit e283655b5abe26462d53d5196f186c5e8863af3b ]
    
    We should zero an array using sizeof instead of number of elements.
    
    Fixes the following compiler (GCC 7.3.0) warnings:
    
    drivers/macintosh/rack-meter.c: In function 'rackmeter_do_pause':
    drivers/macintosh/rack-meter.c:157:2: warning: 'memset' used with length equal to number of elements without multiplication by element size [-Wmemset-elt-size]
    drivers/macintosh/rack-meter.c:158:2: warning: 'memset' used with length equal to number of elements without multiplication by element size [-Wmemset-elt-size]
    
    Fixes: 4f7bef7a9f69 ("drivers: macintosh: rack-meter: fix bogus memsets")
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f22984237aa3d433a16317c4253ee951d3aab2ba
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Mar 29 12:01:53 2018 +0300

    xen/acpi: off by one in read_acpi_id()
    
    [ Upstream commit c37a3c94775855567b90f91775b9691e10bd2806 ]
    
    If acpi_id is == nr_acpi_bits, then we access one element beyond the end
    of the acpi_psd[] array or we set one bit beyond the end of the bit map
    when we do __set_bit(acpi_id, acpi_id_present);
    
    Fixes: 59a568029181 ("xen/acpi-processor: C and P-state driver that uploads said data to hypervisor.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Joao Martins <joao.m.martins@oracle.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 34f0516b709826c9210ad7e662a47fbef32ce3a1
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 30 21:04:44 2018 +0100

    rxrpc: Don't treat call aborts as conn aborts
    
    [ Upstream commit 57b0c9d49b94bbeb53649b7fbd264603c1ebd585 ]
    
    If a call-level abort is received for the previous call to complete on a
    connection channel, then that abort is queued for the connection processor
    to handle.  Unfortunately, the connection processor then assumes without
    checking that the abort is connection-level (ie. callNumber is 0) and
    distributes it over all active calls on that connection, thereby
    incorrectly aborting them.
    
    Fix this by discarding aborts aimed at a completed call.
    
    Further, discard all packets aimed at a call that's complete if there's
    currently an active call on a channel, since the DATA packets associated
    with the new call automatically terminate the old call.
    
    Fixes: 18bfeba50dfd ("rxrpc: Perform terminal call ACK/ABORT retransmission from conn processor")
    Reported-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b7c95ac2e0272b34b26ecc3a6bd9163e92e33c2
Author: David Howells <dhowells@redhat.com>
Date:   Fri Mar 30 21:04:43 2018 +0100

    rxrpc: Fix Tx ring annotation after initial Tx failure
    
    [ Upstream commit 03877bf6a30cca7d4bc3ffabd3c3e9464a7a1a19 ]
    
    rxrpc calls have a ring of packets that are awaiting ACK or retransmission
    and a parallel ring of annotations that tracks the state of those packets.
    If the initial transmission of a packet on the underlying UDP socket fails
    then the packet annotation is marked for resend - but the setting of this
    mark accidentally erases the last-packet mark also stored in the same
    annotation slot.  If this happens, a call won't switch out of the Tx phase
    when all the packets have been transmitted.
    
    Fix this by retaining the last-packet mark and only altering the packet
    state.
    
    Fixes: 248f219cb8bc ("rxrpc: Rewrite the data and ack handling code")
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c38c3ba5310b31196a8c2eca32c9398d723c25d
Author: Jeff Mahoney <jeffm@suse.com>
Date:   Fri Mar 16 14:36:27 2018 -0400

    btrfs: fix lockdep splat in btrfs_alloc_subvolume_writers
    
    [ Upstream commit 8a5a916d9a35e13576d79cc16e24611821b13e34 ]
    
    While running btrfs/011, I hit the following lockdep splat.
    
    This is the important bit:
       pcpu_alloc+0x1ac/0x5e0
       __percpu_counter_init+0x4e/0xb0
       btrfs_init_fs_root+0x99/0x1c0 [btrfs]
       btrfs_get_fs_root.part.54+0x5b/0x150 [btrfs]
       resolve_indirect_refs+0x130/0x830 [btrfs]
       find_parent_nodes+0x69e/0xff0 [btrfs]
       btrfs_find_all_roots_safe+0xa0/0x110 [btrfs]
       btrfs_find_all_roots+0x50/0x70 [btrfs]
       btrfs_qgroup_prepare_account_extents+0x53/0x90 [btrfs]
       btrfs_commit_transaction+0x3ce/0x9b0 [btrfs]
    
    The percpu_counter_init call in btrfs_alloc_subvolume_writers
    uses GFP_KERNEL, which we can't do during transaction commit.
    
    This switches it to GFP_NOFS.
    
    ========================================================
    WARNING: possible irq lock inversion dependency detected
    4.12.14-kvmsmall #8 Tainted: G        W
    --------------------------------------------------------
    kswapd0/50 just changed the state of lock:
     (&delayed_node->mutex){+.+.-.}, at: [<ffffffffc06994fa>] __btrfs_release_delayed_node+0x3a/0x1f0 [btrfs]
    but this lock took another, RECLAIM_FS-unsafe lock in the past:
     (pcpu_alloc_mutex){+.+.+.}
    
    and interrupts could create inverse lock ordering between them.
    
    other info that might help us debug this:
    Chain exists of:
      &delayed_node->mutex --> &found->groups_sem --> pcpu_alloc_mutex
    
     Possible interrupt unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(pcpu_alloc_mutex);
                                   local_irq_disable();
                                   lock(&delayed_node->mutex);
                                   lock(&found->groups_sem);
      <Interrupt>
        lock(&delayed_node->mutex);
    
     *** DEADLOCK ***
    
    2 locks held by kswapd0/50:
     #0:  (shrinker_rwsem){++++..}, at: [<ffffffff811dc11f>] shrink_slab+0x7f/0x5b0
     #1:  (&type->s_umount_key#30){+++++.}, at: [<ffffffff8126dec6>] trylock_super+0x16/0x50
    
    the shortest dependencies between 2nd lock and 1st lock:
       -> (pcpu_alloc_mutex){+.+.+.} ops: 4904 {
          HARDIRQ-ON-W at:
                              __mutex_lock+0x4e/0x8c0
                              pcpu_alloc+0x1ac/0x5e0
                              alloc_kmem_cache_cpus.isra.70+0x25/0xa0
                              __do_tune_cpucache+0x2c/0x220
                              do_tune_cpucache+0x26/0xc0
                              enable_cpucache+0x6d/0xf0
                              kmem_cache_init_late+0x42/0x75
                              start_kernel+0x343/0x4cb
                              x86_64_start_kernel+0x127/0x134
                              secondary_startup_64+0xa5/0xb0
          SOFTIRQ-ON-W at:
                              __mutex_lock+0x4e/0x8c0
                              pcpu_alloc+0x1ac/0x5e0
                              alloc_kmem_cache_cpus.isra.70+0x25/0xa0
                              __do_tune_cpucache+0x2c/0x220
                              do_tune_cpucache+0x26/0xc0
                              enable_cpucache+0x6d/0xf0
                              kmem_cache_init_late+0x42/0x75
                              start_kernel+0x343/0x4cb
                              x86_64_start_kernel+0x127/0x134
                              secondary_startup_64+0xa5/0xb0
          RECLAIM_FS-ON-W at:
                                 __kmalloc+0x47/0x310
                                 pcpu_extend_area_map+0x2b/0xc0
                                 pcpu_alloc+0x3ec/0x5e0
                                 alloc_kmem_cache_cpus.isra.70+0x25/0xa0
                                 __do_tune_cpucache+0x2c/0x220
                                 do_tune_cpucache+0x26/0xc0
                                 enable_cpucache+0x6d/0xf0
                                 __kmem_cache_create+0x1bf/0x390
                                 create_cache+0xba/0x1b0
                                 kmem_cache_create+0x1f8/0x2b0
                                 ksm_init+0x6f/0x19d
                                 do_one_initcall+0x50/0x1b0
                                 kernel_init_freeable+0x201/0x289
                                 kernel_init+0xa/0x100
                                 ret_from_fork+0x3a/0x50
          INITIAL USE at:
                             __mutex_lock+0x4e/0x8c0
                             pcpu_alloc+0x1ac/0x5e0
                             alloc_kmem_cache_cpus.isra.70+0x25/0xa0
                             setup_cpu_cache+0x2f/0x1f0
                             __kmem_cache_create+0x1bf/0x390
                             create_boot_cache+0x8b/0xb1
                             kmem_cache_init+0xa1/0x19e
                             start_kernel+0x270/0x4cb
                             x86_64_start_kernel+0x127/0x134
                             secondary_startup_64+0xa5/0xb0
        }
        ... key      at: [<ffffffff821d8e70>] pcpu_alloc_mutex+0x70/0xa0
        ... acquired at:
       pcpu_alloc+0x1ac/0x5e0
       __percpu_counter_init+0x4e/0xb0
       btrfs_init_fs_root+0x99/0x1c0 [btrfs]
       btrfs_get_fs_root.part.54+0x5b/0x150 [btrfs]
       resolve_indirect_refs+0x130/0x830 [btrfs]
       find_parent_nodes+0x69e/0xff0 [btrfs]
       btrfs_find_all_roots_safe+0xa0/0x110 [btrfs]
       btrfs_find_all_roots+0x50/0x70 [btrfs]
       btrfs_qgroup_prepare_account_extents+0x53/0x90 [btrfs]
       btrfs_commit_transaction+0x3ce/0x9b0 [btrfs]
       transaction_kthread+0x176/0x1b0 [btrfs]
       kthread+0x102/0x140
       ret_from_fork+0x3a/0x50
    
      -> (&fs_info->commit_root_sem){++++..} ops: 1566382 {
         HARDIRQ-ON-W at:
                            down_write+0x3e/0xa0
                            cache_block_group+0x287/0x420 [btrfs]
                            find_free_extent+0x106c/0x12d0 [btrfs]
                            btrfs_reserve_extent+0xd8/0x170 [btrfs]
                            cow_file_range.isra.66+0x133/0x470 [btrfs]
                            run_delalloc_range+0x121/0x410 [btrfs]
                            writepage_delalloc.isra.50+0xfe/0x180 [btrfs]
                            __extent_writepage+0x19a/0x360 [btrfs]
                            extent_write_cache_pages.constprop.56+0x249/0x3e0 [btrfs]
                            extent_writepages+0x4d/0x60 [btrfs]
                            do_writepages+0x1a/0x70
                            __filemap_fdatawrite_range+0xa7/0xe0
                            btrfs_rename+0x5ee/0xdb0 [btrfs]
                            vfs_rename+0x52a/0x7e0
                            SyS_rename+0x351/0x3b0
                            do_syscall_64+0x79/0x1e0
                            entry_SYSCALL_64_after_hwframe+0x42/0xb7
         HARDIRQ-ON-R at:
                            down_read+0x35/0x90
                            caching_thread+0x57/0x560 [btrfs]
                            normal_work_helper+0x1c0/0x5e0 [btrfs]
                            process_one_work+0x1e0/0x5c0
                            worker_thread+0x44/0x390
                            kthread+0x102/0x140
                            ret_from_fork+0x3a/0x50
         SOFTIRQ-ON-W at:
                            down_write+0x3e/0xa0
                            cache_block_group+0x287/0x420 [btrfs]
                            find_free_extent+0x106c/0x12d0 [btrfs]
                            btrfs_reserve_extent+0xd8/0x170 [btrfs]
                            cow_file_range.isra.66+0x133/0x470 [btrfs]
                            run_delalloc_range+0x121/0x410 [btrfs]
                            writepage_delalloc.isra.50+0xfe/0x180 [btrfs]
                            __extent_writepage+0x19a/0x360 [btrfs]
                            extent_write_cache_pages.constprop.56+0x249/0x3e0 [btrfs]
                            extent_writepages+0x4d/0x60 [btrfs]
                            do_writepages+0x1a/0x70
                            __filemap_fdatawrite_range+0xa7/0xe0
                            btrfs_rename+0x5ee/0xdb0 [btrfs]
                            vfs_rename+0x52a/0x7e0
                            SyS_rename+0x351/0x3b0
                            do_syscall_64+0x79/0x1e0
                            entry_SYSCALL_64_after_hwframe+0x42/0xb7
         SOFTIRQ-ON-R at:
                            down_read+0x35/0x90
                            caching_thread+0x57/0x560 [btrfs]
                            normal_work_helper+0x1c0/0x5e0 [btrfs]
                            process_one_work+0x1e0/0x5c0
                            worker_thread+0x44/0x390
                            kthread+0x102/0x140
                            ret_from_fork+0x3a/0x50
         INITIAL USE at:
                           down_write+0x3e/0xa0
                           cache_block_group+0x287/0x420 [btrfs]
                           find_free_extent+0x106c/0x12d0 [btrfs]
                           btrfs_reserve_extent+0xd8/0x170 [btrfs]
                           cow_file_range.isra.66+0x133/0x470 [btrfs]
                           run_delalloc_range+0x121/0x410 [btrfs]
                           writepage_delalloc.isra.50+0xfe/0x180 [btrfs]
                           __extent_writepage+0x19a/0x360 [btrfs]
                           extent_write_cache_pages.constprop.56+0x249/0x3e0 [btrfs]
                           extent_writepages+0x4d/0x60 [btrfs]
                           do_writepages+0x1a/0x70
                           __filemap_fdatawrite_range+0xa7/0xe0
                           btrfs_rename+0x5ee/0xdb0 [btrfs]
                           vfs_rename+0x52a/0x7e0
                           SyS_rename+0x351/0x3b0
                           do_syscall_64+0x79/0x1e0
                           entry_SYSCALL_64_after_hwframe+0x42/0xb7
       }
       ... key      at: [<ffffffffc0729578>] __key.61970+0x0/0xfffffffffff9aa88 [btrfs]
       ... acquired at:
       cache_block_group+0x287/0x420 [btrfs]
       find_free_extent+0x106c/0x12d0 [btrfs]
       btrfs_reserve_extent+0xd8/0x170 [btrfs]
       btrfs_alloc_tree_block+0x12f/0x4c0 [btrfs]
       btrfs_create_tree+0xbb/0x2a0 [btrfs]
       btrfs_create_uuid_tree+0x37/0x140 [btrfs]
       open_ctree+0x23c0/0x2660 [btrfs]
       btrfs_mount+0xd36/0xf90 [btrfs]
       mount_fs+0x3a/0x160
       vfs_kern_mount+0x66/0x150
       btrfs_mount+0x18c/0xf90 [btrfs]
       mount_fs+0x3a/0x160
       vfs_kern_mount+0x66/0x150
       do_mount+0x1c1/0xcc0
       SyS_mount+0x7e/0xd0
       do_syscall_64+0x79/0x1e0
       entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
     -> (&found->groups_sem){++++..} ops: 2134587 {
        HARDIRQ-ON-W at:
                          down_write+0x3e/0xa0
                          __link_block_group+0x34/0x130 [btrfs]
                          btrfs_read_block_groups+0x33d/0x7b0 [btrfs]
                          open_ctree+0x2054/0x2660 [btrfs]
                          btrfs_mount+0xd36/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          btrfs_mount+0x18c/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          do_mount+0x1c1/0xcc0
                          SyS_mount+0x7e/0xd0
                          do_syscall_64+0x79/0x1e0
                          entry_SYSCALL_64_after_hwframe+0x42/0xb7
        HARDIRQ-ON-R at:
                          down_read+0x35/0x90
                          btrfs_calc_num_tolerated_disk_barrier_failures+0x113/0x1f0 [btrfs]
                          open_ctree+0x207b/0x2660 [btrfs]
                          btrfs_mount+0xd36/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          btrfs_mount+0x18c/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          do_mount+0x1c1/0xcc0
                          SyS_mount+0x7e/0xd0
                          do_syscall_64+0x79/0x1e0
                          entry_SYSCALL_64_after_hwframe+0x42/0xb7
        SOFTIRQ-ON-W at:
                          down_write+0x3e/0xa0
                          __link_block_group+0x34/0x130 [btrfs]
                          btrfs_read_block_groups+0x33d/0x7b0 [btrfs]
                          open_ctree+0x2054/0x2660 [btrfs]
                          btrfs_mount+0xd36/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          btrfs_mount+0x18c/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          do_mount+0x1c1/0xcc0
                          SyS_mount+0x7e/0xd0
                          do_syscall_64+0x79/0x1e0
                          entry_SYSCALL_64_after_hwframe+0x42/0xb7
        SOFTIRQ-ON-R at:
                          down_read+0x35/0x90
                          btrfs_calc_num_tolerated_disk_barrier_failures+0x113/0x1f0 [btrfs]
                          open_ctree+0x207b/0x2660 [btrfs]
                          btrfs_mount+0xd36/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          btrfs_mount+0x18c/0xf90 [btrfs]
                          mount_fs+0x3a/0x160
                          vfs_kern_mount+0x66/0x150
                          do_mount+0x1c1/0xcc0
                          SyS_mount+0x7e/0xd0
                          do_syscall_64+0x79/0x1e0
                          entry_SYSCALL_64_after_hwframe+0x42/0xb7
        INITIAL USE at:
                         down_write+0x3e/0xa0
                         __link_block_group+0x34/0x130 [btrfs]
                         btrfs_read_block_groups+0x33d/0x7b0 [btrfs]
                         open_ctree+0x2054/0x2660 [btrfs]
                         btrfs_mount+0xd36/0xf90 [btrfs]
                         mount_fs+0x3a/0x160
                         vfs_kern_mount+0x66/0x150
                         btrfs_mount+0x18c/0xf90 [btrfs]
                         mount_fs+0x3a/0x160
                         vfs_kern_mount+0x66/0x150
                         do_mount+0x1c1/0xcc0
                         SyS_mount+0x7e/0xd0
                         do_syscall_64+0x79/0x1e0
                         entry_SYSCALL_64_after_hwframe+0x42/0xb7
      }
      ... key      at: [<ffffffffc0729488>] __key.59101+0x0/0xfffffffffff9ab78 [btrfs]
      ... acquired at:
       find_free_extent+0xcb4/0x12d0 [btrfs]
       btrfs_reserve_extent+0xd8/0x170 [btrfs]
       btrfs_alloc_tree_block+0x12f/0x4c0 [btrfs]
       __btrfs_cow_block+0x110/0x5b0 [btrfs]
       btrfs_cow_block+0xd7/0x290 [btrfs]
       btrfs_search_slot+0x1f6/0x960 [btrfs]
       btrfs_lookup_inode+0x2a/0x90 [btrfs]
       __btrfs_update_delayed_inode+0x65/0x210 [btrfs]
       btrfs_commit_inode_delayed_inode+0x121/0x130 [btrfs]
       btrfs_evict_inode+0x3fe/0x6a0 [btrfs]
       evict+0xc4/0x190
       __dentry_kill+0xbf/0x170
       dput+0x2ae/0x2f0
       SyS_rename+0x2a6/0x3b0
       do_syscall_64+0x79/0x1e0
       entry_SYSCALL_64_after_hwframe+0x42/0xb7
    
    -> (&delayed_node->mutex){+.+.-.} ops: 5580204 {
       HARDIRQ-ON-W at:
                        __mutex_lock+0x4e/0x8c0
                        btrfs_delayed_update_inode+0x46/0x6e0 [btrfs]
                        btrfs_update_inode+0x83/0x110 [btrfs]
                        btrfs_dirty_inode+0x62/0xe0 [btrfs]
                        touch_atime+0x8c/0xb0
                        do_generic_file_read+0x818/0xb10
                        __vfs_read+0xdc/0x150
                        vfs_read+0x8a/0x130
                        SyS_read+0x45/0xa0
                        do_syscall_64+0x79/0x1e0
                        entry_SYSCALL_64_after_hwframe+0x42/0xb7
       SOFTIRQ-ON-W at:
                        __mutex_lock+0x4e/0x8c0
                        btrfs_delayed_update_inode+0x46/0x6e0 [btrfs]
                        btrfs_update_inode+0x83/0x110 [btrfs]
                        btrfs_dirty_inode+0x62/0xe0 [btrfs]
                        touch_atime+0x8c/0xb0
                        do_generic_file_read+0x818/0xb10
                        __vfs_read+0xdc/0x150
                        vfs_read+0x8a/0x130
                        SyS_read+0x45/0xa0
                        do_syscall_64+0x79/0x1e0
                        entry_SYSCALL_64_after_hwframe+0x42/0xb7
       IN-RECLAIM_FS-W at:
                           __mutex_lock+0x4e/0x8c0
                           __btrfs_release_delayed_node+0x3a/0x1f0 [btrfs]
                           btrfs_evict_inode+0x22c/0x6a0 [btrfs]
                           evict+0xc4/0x190
                           dispose_list+0x35/0x50
                           prune_icache_sb+0x42/0x50
                           super_cache_scan+0x139/0x190
                           shrink_slab+0x262/0x5b0
                           shrink_node+0x2eb/0x2f0
                           kswapd+0x2eb/0x890
                           kthread+0x102/0x140
                           ret_from_fork+0x3a/0x50
       INITIAL USE at:
                       __mutex_lock+0x4e/0x8c0
                       btrfs_delayed_update_inode+0x46/0x6e0 [btrfs]
                       btrfs_update_inode+0x83/0x110 [btrfs]
                       btrfs_dirty_inode+0x62/0xe0 [btrfs]
                       touch_atime+0x8c/0xb0
                       do_generic_file_read+0x818/0xb10
                       __vfs_read+0xdc/0x150
                       vfs_read+0x8a/0x130
                       SyS_read+0x45/0xa0
                       do_syscall_64+0x79/0x1e0
                       entry_SYSCALL_64_after_hwframe+0x42/0xb7
     }
     ... key      at: [<ffffffffc072d488>] __key.56935+0x0/0xfffffffffff96b78 [btrfs]
     ... acquired at:
       __lock_acquire+0x264/0x11c0
       lock_acquire+0xbd/0x1e0
       __mutex_lock+0x4e/0x8c0
       __btrfs_release_delayed_node+0x3a/0x1f0 [btrfs]
       btrfs_evict_inode+0x22c/0x6a0 [btrfs]
       evict+0xc4/0x190
       dispose_list+0x35/0x50
       prune_icache_sb+0x42/0x50
       super_cache_scan+0x139/0x190
       shrink_slab+0x262/0x5b0
       shrink_node+0x2eb/0x2f0
       kswapd+0x2eb/0x890
       kthread+0x102/0x140
       ret_from_fork+0x3a/0x50
    
    stack backtrace:
    CPU: 1 PID: 50 Comm: kswapd0 Tainted: G        W        4.12.14-kvmsmall #8 SLE15 (unreleased)
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
    Call Trace:
     dump_stack+0x78/0xb7
     print_irq_inversion_bug.part.38+0x19f/0x1aa
     check_usage_forwards+0x102/0x120
     ? ret_from_fork+0x3a/0x50
     ? check_usage_backwards+0x110/0x110
     mark_lock+0x16c/0x270
     __lock_acquire+0x264/0x11c0
     ? pagevec_lookup_entries+0x1a/0x30
     ? truncate_inode_pages_range+0x2b3/0x7f0
     lock_acquire+0xbd/0x1e0
     ? __btrfs_release_delayed_node+0x3a/0x1f0 [btrfs]
     __mutex_lock+0x4e/0x8c0
     ? __btrfs_release_delayed_node+0x3a/0x1f0 [btrfs]
     ? __btrfs_release_delayed_node+0x3a/0x1f0 [btrfs]
     ? btrfs_evict_inode+0x1f6/0x6a0 [btrfs]
     __btrfs_release_delayed_node+0x3a/0x1f0 [btrfs]
     btrfs_evict_inode+0x22c/0x6a0 [btrfs]
     evict+0xc4/0x190
     dispose_list+0x35/0x50
     prune_icache_sb+0x42/0x50
     super_cache_scan+0x139/0x190
     shrink_slab+0x262/0x5b0
     shrink_node+0x2eb/0x2f0
     kswapd+0x2eb/0x890
     kthread+0x102/0x140
     ? mem_cgroup_shrink_node+0x2c0/0x2c0
     ? kthread_create_on_node+0x40/0x40
     ret_from_fork+0x3a/0x50
    
    Signed-off-by: Jeff Mahoney <jeffm@suse.com>
    Reviewed-by: Liu Bo <bo.liu@linux.alibaba.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bee3c02ab61a87e20c2a93f2bd6789ae09f437ad
Author: Filipe Manana <fdmanana@suse.com>
Date:   Mon Mar 26 23:59:12 2018 +0100

    Btrfs: fix copy_items() return value when logging an inode
    
    [ Upstream commit 8434ec46c6e3232cebc25a910363b29f5c617820 ]
    
    When logging an inode, at tree-log.c:copy_items(), if we call
    btrfs_next_leaf() at the loop which checks for the need to log holes, we
    need to make sure copy_items() returns the value 1 to its caller and
    not 0 (on success). This is because the path the caller passed was
    released and is now different from what is was before, and the caller
    expects a return value of 0 to mean both success and that the path
    has not changed, while a return value of 1 means both success and
    signals the caller that it can not reuse the path, it has to perform
    another tree search.
    
    Even though this is a case that should not be triggered on normal
    circumstances or very rare at least, its consequences can be very
    unpredictable (especially when replaying a log tree).
    
    Fixes: 16e7549f045d ("Btrfs: incompatible format change to remove hole extents")
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5934adafba3bfc43e9c8a22bd4ee5e7a2429cdc4
Author: Qu Wenruo <wqu@suse.com>
Date:   Tue Mar 27 20:44:18 2018 +0800

    btrfs: tests/qgroup: Fix wrong tree backref level
    
    [ Upstream commit 3c0efdf03b2d127f0e40e30db4e7aa0429b1b79a ]
    
    The extent tree of the test fs is like the following:
    
     BTRFS info (device (null)): leaf 16327509003777336587 total ptrs 1 free space 3919
      item 0 key (4096 168 4096) itemoff 3944 itemsize 51
              extent refs 1 gen 1 flags 2
              tree block key (68719476736 0 0) level 1
                                               ^^^^^^^
              ref#0: tree block backref root 5
    
    And it's using an empty tree for fs tree, so there is no way that its
    level can be 1.
    
    For REAL (created by mkfs) fs tree backref with no skinny metadata, the
    result should look like:
    
     item 3 key (30408704 EXTENT_ITEM 4096) itemoff 3845 itemsize 51
             refs 1 gen 4 flags TREE_BLOCK
             tree block key (256 INODE_ITEM 0) level 0
                                               ^^^^^^^
             tree block backref root 5
    
    Fix the level to 0, so it won't break later tree level checker.
    
    Fixes: faa2dbf004e8 ("Btrfs: add sanity tests for new qgroup accounting code")
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit deb064c4a906fcb541d0d56f59974a5397cf2e3f
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Sun Apr 1 10:26:30 2018 -0700

    net: bgmac: Fix endian access in bgmac_dma_tx_ring_free()
    
    [ Upstream commit 60d6e6f0b9e422dd01aeda39257ee0428e5e2a3f ]
    
    bgmac_dma_tx_ring_free() assigns the ctl1 word which is a litle endian
    32-bit word without using proper accessors, fix this, and because a
    length cannot be negative, use unsigned int while at it.
    
    Fixes: 9cde94506eac ("bgmac: implement scatter/gather support")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e02caa11752874beaa9e1a7c3c4a99f3dda4571
Author: David S. Miller <davem@davemloft.net>
Date:   Tue Apr 3 08:24:35 2018 -0700

    sparc64: Make atomic_xchg() an inline function rather than a macro.
    
    [ Upstream commit d13864b68e41c11e4231de90cf358658f6ecea45 ]
    
    This avoids a lot of -Wunused warnings such as:
    
    ====================
    kernel/debug/debug_core.c: In function ‘kgdb_cpu_enter’:
    ./arch/sparc/include/asm/cmpxchg_64.h:55:22: warning: value computed is not used [-Wunused-value]
     #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
    
    ./arch/sparc/include/asm/atomic_64.h:86:30: note: in expansion of macro ‘xchg’
     #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
                                  ^~~~
    kernel/debug/debug_core.c:508:4: note: in expansion of macro ‘atomic_xchg’
        atomic_xchg(&kgdb_active, cpu);
        ^~~~~~~~~~~
    ====================
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9397f74deff9cddae7a62fd50d3e546858bf4951
Author: David Howells <dhowells@redhat.com>
Date:   Wed Apr 4 13:41:26 2018 +0100

    fscache: Fix hanging wait on page discarded by writeback
    
    [ Upstream commit 2c98425720233ae3e135add0c7e869b32913502f ]
    
    If the fscache asynchronous write operation elects to discard a page that's
    pending storage to the cache because the page would be over the store limit
    then it needs to wake the page as someone may be waiting on completion of
    the write.
    
    The problem is that the store limit may be updated by a different
    asynchronous operation - and so may miss the write - and that the store
    limit may not even get updated until later by the netfs.
    
    Fix the kernel hang by making fscache_write_op() mark as written any pages
    that are over the limit.
    
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94b4fed80f9265c95f9a9ee7a40db95f09630d1d
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Fri Mar 23 09:34:00 2018 -0700

    KVM: VMX: raise internal error for exception during invalid protected mode state
    
    [ Upstream commit add5ff7a216ee545a214013f26d1ef2f44a9c9f8 ]
    
    Exit to userspace with KVM_INTERNAL_ERROR_EMULATION if we encounter
    an exception in Protected Mode while emulating guest due to invalid
    guest state.  Unlike Big RM, KVM doesn't support emulating exceptions
    in PM, i.e. PM exceptions are always injected via the VMCS.  Because
    we will never do VMRESUME due to emulation_required, the exception is
    never realized and we'll keep emulating the faulting instruction over
    and over until we receive a signal.
    
    Exit to userspace iff there is a pending exception, i.e. don't exit
    simply on a requested event. The purpose of this check and exit is to
    aid in debugging a guest that is in all likelihood already doomed.
    Invalid guest state in PM is extremely limited in normal operation,
    e.g. it generally only occurs for a few instructions early in BIOS,
    and any exception at this time is all but guaranteed to be fatal.
    Non-vectored interrupts, e.g. INIT, SIPI and SMI, can be cleanly
    handled/emulated, while checking for vectored interrupts, e.g. INTR
    and NMI, without hitting false positives would add a fair amount of
    complexity for almost no benefit (getting hit by lightning seems
    more likely than encountering this specific scenario).
    
    Add a WARN_ON_ONCE to vmx_queue_exception() if we try to inject an
    exception via the VMCS and emulation_required is true.
    
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3d0632557e6435b88e8ae91b78b098dbae123372
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Mon Apr 2 09:49:54 2018 -0700

    sched/rt: Fix rq->clock_update_flags < RQCF_ACT_SKIP warning
    
    [ Upstream commit d29a20645d5e929aa7e8616f28e5d8e1c49263ec ]
    
    While running rt-tests' pi_stress program I got the following splat:
    
      rq->clock_update_flags < RQCF_ACT_SKIP
      WARNING: CPU: 27 PID: 0 at kernel/sched/sched.h:960 assert_clock_updated.isra.38.part.39+0x13/0x20
    
      [...]
    
      <IRQ>
      enqueue_top_rt_rq+0xf4/0x150
      ? cpufreq_dbs_governor_start+0x170/0x170
      sched_rt_rq_enqueue+0x65/0x80
      sched_rt_period_timer+0x156/0x360
      ? sched_rt_rq_enqueue+0x80/0x80
      __hrtimer_run_queues+0xfa/0x260
      hrtimer_interrupt+0xcb/0x220
      smp_apic_timer_interrupt+0x62/0x120
      apic_timer_interrupt+0xf/0x20
      </IRQ>
    
      [...]
    
      do_idle+0x183/0x1e0
      cpu_startup_entry+0x5f/0x70
      start_secondary+0x192/0x1d0
      secondary_startup_64+0xa5/0xb0
    
    We can get rid of it be the "traditional" means of adding an
    update_rq_clock() call after acquiring the rq->lock in
    do_sched_rt_period_timer().
    
    The case for the RT task throttling (which this workload also hits)
    can be ignored in that the skip_update call is actually bogus and
    quite the contrary (the request bits are removed/reverted).
    
    By setting RQCF_UPDATED we really don't care if the skip is happening
    or not and will therefore make the assert_clock_updated() check happy.
    
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reviewed-by: Matt Fleming <matt@codeblueprint.co.uk>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: dave@stgolabs.net
    Cc: linux-kernel@vger.kernel.org
    Cc: rostedt@goodmis.org
    Link: http://lkml.kernel.org/r/20180402164954.16255-1-dave@stgolabs.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbf947dd36861f106cfd6048367126089b26976b
Author: Jun Piao <piaojun@huawei.com>
Date:   Thu Apr 5 16:18:48 2018 -0700

    ocfs2/dlm: don't handle migrate lockres if already in shutdown
    
    [ Upstream commit bb34f24c7d2c98d0c81838a7700e6068325b17a0 ]
    
    We should not handle migrate lockres if we are already in
    'DLM_CTXT_IN_SHUTDOWN', as that will cause lockres remains after leaving
    dlm domain.  At last other nodes will get stuck into infinite loop when
    requsting lock from us.
    
    The problem is caused by concurrency umount between nodes.  Before
    receiveing N1's DLM_BEGIN_EXIT_DOMAIN_MSG, N2 has picked up N1 as the
    migrate target.  So N2 will continue sending lockres to N1 even though
    N1 has left domain.
    
            N1                             N2 (owner)
                                           touch file
    
        access the file,
        and get pr lock
    
                                           begin leave domain and
                                           pick up N1 as new owner
    
        begin leave domain and
        migrate all lockres done
    
                                           begin migrate lockres to N1
    
        end leave domain, but
        the lockres left
        unexpectedly, because
        migrate task has passed
    
    [piaojun@huawei.com: v3]
      Link: http://lkml.kernel.org/r/5A9CBD19.5020107@huawei.com
    Link: http://lkml.kernel.org/r/5A99F028.2090902@huawei.com
    Signed-off-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Yiwen Jiang <jiangyiwen@huawei.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Reviewed-by: Changwei Ge <ge.changwei@h3c.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4367fb9e86c303887a6fe8f8f47866373f17a7e6
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Thu Apr 5 10:40:15 2018 +0300

    btrfs: Fix possible softlock on single core machines
    
    [ Upstream commit 1e1c50a929bc9e49bc3f9935b92450d9e69f8158 ]
    
    do_chunk_alloc implements a loop checking whether there is a pending
    chunk allocation and if so causes the caller do loop. Generally this
    loop is executed only once, however testing with btrfs/072 on a single
    core vm machines uncovered an extreme case where the system could loop
    indefinitely. This is due to a missing cond_resched when loop which
    doesn't give a chance to the previous chunk allocator finish its job.
    
    The fix is to simply add the missing cond_resched.
    
    Fixes: 6d74119f1a3e ("Btrfs: avoid taking the chunk_mutex in do_chunk_alloc")
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14c4d5f6e9f39070f1cfdbf4483e4c7ddc827f52
Author: Liu Bo <bo.liu@linux.alibaba.com>
Date:   Tue Apr 3 01:59:47 2018 +0800

    Btrfs: fix NULL pointer dereference in log_dir_items
    
    [ Upstream commit 80c0b4210a963e31529e15bf90519708ec947596 ]
    
    0, 1 and <0 can be returned by btrfs_next_leaf(), and when <0 is
    returned, path->nodes[0] could be NULL, log_dir_items lacks such a
    check for <0 and we may run into a null pointer dereference panic.
    
    Fixes: e02119d5a7b4 ("Btrfs: Add a write ahead tree log to optimize synchronous operations")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b38357528cd30e84942668352da8507cd4a0825b
Author: Liu Bo <bo.liu@linux.alibaba.com>
Date:   Tue Apr 3 01:59:48 2018 +0800

    Btrfs: bail out on error during replay_dir_deletes
    
    [ Upstream commit b98def7ca6e152ee55e36863dddf6f41f12d1dc6 ]
    
    If errors were returned by btrfs_next_leaf(), replay_dir_deletes needs
    to bail out, otherwise @ret would be forced to be 0 after 'break;' and
    the caller won't be aware of it.
    
    Fixes: e02119d5a7b4 ("Btrfs: Add a write ahead tree log to optimize synchronous operations")
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7f4e94843d97f5ce068f3b15260ada151d57f25
Author: Huang Ying <ying.huang@intel.com>
Date:   Thu Apr 5 16:23:20 2018 -0700

    mm: fix races between address_space dereference and free in page_evicatable
    
    [ Upstream commit e92bb4dd9673945179b1fc738c9817dd91bfb629 ]
    
    When page_mapping() is called and the mapping is dereferenced in
    page_evicatable() through shrink_active_list(), it is possible for the
    inode to be truncated and the embedded address space to be freed at the
    same time.  This may lead to the following race.
    
    CPU1                                                CPU2
    
    truncate(inode)                                     shrink_active_list()
      ...                                                 page_evictable(page)
      truncate_inode_page(mapping, page);
        delete_from_page_cache(page)
          spin_lock_irqsave(&mapping->tree_lock, flags);
            __delete_from_page_cache(page, NULL)
              page_cache_tree_delete(..)
                ...                                         mapping = page_mapping(page);
                page->mapping = NULL;
                ...
          spin_unlock_irqrestore(&mapping->tree_lock, flags);
          page_cache_free_page(mapping, page)
            put_page(page)
              if (put_page_testzero(page)) -> false
    - inode now has no pages and can be freed including embedded address_space
    
                                                            mapping_unevictable(mapping)
                                                              test_bit(AS_UNEVICTABLE, &mapping->flags);
    - we've dereferenced mapping which is potentially already free.
    
    Similar race exists between swap cache freeing and page_evicatable()
    too.
    
    The address_space in inode and swap cache will be freed after a RCU
    grace period.  So the races are fixed via enclosing the page_mapping()
    and address_space usage in rcu_read_lock/unlock().  Some comments are
    added in code to make it clear what is protected by the RCU read lock.
    
    Link: http://lkml.kernel.org/r/20180212081227.1940-1-ying.huang@intel.com
    Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2272b8322cfa6c5b40d006721cedd17e2fc92211
Author: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
Date:   Thu Apr 5 16:25:41 2018 -0700

    mm/ksm: fix interaction with THP
    
    [ Upstream commit 77da2ba0648a4fd52e5ff97b8b2b8dd312aec4b0 ]
    
    This patch fixes a corner case for KSM.  When two pages belong or
    belonged to the same transparent hugepage, and they should be merged,
    KSM fails to split the page, and therefore no merging happens.
    
    This bug can be reproduced by:
    * making sure ksm is running (in case disabling ksmtuned)
    * enabling transparent hugepages
    * allocating a THP-aligned 1-THP-sized buffer
      e.g. on amd64: posix_memalign(&p, 1<<21, 1<<21)
    * filling it with the same values
      e.g. memset(p, 42, 1<<21)
    * performing madvise to make it mergeable
      e.g. madvise(p, 1<<21, MADV_MERGEABLE)
    * waiting for KSM to perform a few scans
    
    The expected outcome is that the all the pages get merged (1 shared and
    the rest sharing); the actual outcome is that no pages get merged (1
    unshared and the rest volatile)
    
    The reason of this behaviour is that we increase the reference count
    once for both pages we want to merge, but if they belong to the same
    hugepage (or compound page), the reference counter used in both cases is
    the one of the head of the compound page.  This means that
    split_huge_page will find a value of the reference counter too high and
    will fail.
    
    This patch solves this problem by testing if the two pages to merge
    belong to the same hugepage when attempting to merge them.  If so, the
    hugepage is split safely.  This means that the hugepage is not split if
    not necessary.
    
    Link: http://lkml.kernel.org/r/1521548069-24758-1-git-send-email-imbrenda@linux.vnet.ibm.com
    Signed-off-by: Claudio Imbrenda <imbrenda@linux.vnet.ibm.com>
    Co-authored-by: Gerald Schaefer <gerald.schaefer@de.ibm.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bb928fbe0f05d98570f6d10b5ab2961323ed1f89
Author: Esben Haabendal <eha@deif.com>
Date:   Sun Apr 8 22:17:01 2018 +0200

    dp83640: Ensure against premature access to PHY registers after reset
    
    [ Upstream commit 76327a35caabd1a932e83d6a42b967aa08584e5d ]
    
    The datasheet specifies a 3uS pause after performing a software
    reset. The default implementation of genphy_soft_reset() does not
    provide this, so implement soft_reset with the needed pause.
    
    Signed-off-by: Esben Haabendal <eha@deif.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 707f25a21d617cae6e3b42811f3e3a108026f31d
Author: Shunyong Yang <shunyong.yang@hxt-semitech.com>
Date:   Fri Apr 6 10:43:49 2018 +0800

    cpufreq: CPPC: Initialize shared perf capabilities of CPUs
    
    [ Upstream commit 8913315e9459b146e5888ab5138e10daa061b885 ]
    
    When multiple CPUs are related in one cpufreq policy, the first online
    CPU will be chosen by default to handle cpufreq operations. Let's take
    cpu0 and cpu1 as an example.
    
    When cpu0 is offline, policy->cpu will be shifted to cpu1. cpu1's perf
    capabilities should be initialized. Otherwise, perf capabilities are 0s
    and speed change can not take effect.
    
    This patch copies perf capabilities of the first online CPU to other
    shared CPUs when policy shared type is CPUFREQ_SHARED_TYPE_ANY.
    
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Signed-off-by: Shunyong Yang <shunyong.yang@hxt-semitech.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bb576ce8a83f82c162333a4091305e48ab8fc68
Author: Carlos Maiolino <cmaiolino@redhat.com>
Date:   Tue Apr 10 22:39:04 2018 -0700

    Force log to disk before reading the AGF during a fstrim
    
    [ Upstream commit 8c81dd46ef3c416b3b95e3020fb90dbd44e6140b ]
    
    Forcing the log to disk after reading the agf is wrong, we might be
    calling xfs_log_force with XFS_LOG_SYNC with a metadata lock held.
    
    This can cause a deadlock when racing a fstrim with a filesystem
    shutdown.
    
    The deadlock has been identified due a miscalculation bug in device-mapper
    dm-thin, which returns lack of space to its users earlier than the device itself
    really runs out of space, changing the device-mapper volume into an error state.
    
    The problem happened while filling the filesystem with a single file,
    triggering the bug in device-mapper, consequently causing an IO error
    and shutting down the filesystem.
    
    If such file is removed, and fstrim executed before the XFS finishes the
    shut down process, the fstrim process will end up holding the buffer
    lock, and going to sleep on the cil wait queue.
    
    At this point, the shut down process will try to wake up all the threads
    waiting on the cil wait queue, but for this, it will try to hold the
    same buffer log already held my the fstrim, locking up the filesystem.
    
    Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2666b2b70e88aec0323660e4e8d143411ddf2ff
Author: Jens Axboe <axboe@kernel.dk>
Date:   Wed Apr 11 11:26:09 2018 -0600

    sr: get/drop reference to device in revalidate and check_events
    
    [ Upstream commit 2d097c50212e137e7b53ffe3b37561153eeba87d ]
    
    We can't just use scsi_cd() to get the scsi_cd structure, we have
    to grab a live reference to the device. For both callbacks, we're
    not inside an open where we already hold a reference to the device.
    
    This fixes device removal/addition under concurrent device access,
    which otherwise could result in the below oops.
    
    NULL pointer dereference at 0000000000000010
    PGD 0 P4D 0
    Oops: 0000 [#1] PREEMPT SMP
    Modules linked in:
    sr 12:0:0:0: [sr2] scsi-1 drive
     scsi_debug crc_t10dif crct10dif_generic crct10dif_common nvme nvme_core sb_edac xl
    sr 12:0:0:0: Attached scsi CD-ROM sr2
     sr_mod cdrom btrfs xor zstd_decompress zstd_compress xxhash lzo_compress zlib_defc
    sr 12:0:0:0: Attached scsi generic sg7 type 5
     igb ahci libahci i2c_algo_bit libata dca [last unloaded: crc_t10dif]
    CPU: 43 PID: 4629 Comm: systemd-udevd Not tainted 4.16.0+ #650
    Hardware name: Dell Inc. PowerEdge T630/0NT78X, BIOS 2.3.4 11/09/2016
    RIP: 0010:sr_block_revalidate_disk+0x23/0x190 [sr_mod]
    RSP: 0018:ffff883ff357bb58 EFLAGS: 00010292
    RAX: ffffffffa00b07d0 RBX: ffff883ff3058000 RCX: ffff883ff357bb66
    RDX: 0000000000000003 RSI: 0000000000007530 RDI: ffff881fea631000
    RBP: 0000000000000000 R08: ffff881fe4d38400 R09: 0000000000000000
    R10: 0000000000000000 R11: 00000000000001b6 R12: 000000000800005d
    R13: 000000000800005d R14: ffff883ffd9b3790 R15: 0000000000000000
    FS:  00007f7dc8e6d8c0(0000) GS:ffff883fff340000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000010 CR3: 0000003ffda98005 CR4: 00000000003606e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    Call Trace:
     ? __invalidate_device+0x48/0x60
     check_disk_change+0x4c/0x60
     sr_block_open+0x16/0xd0 [sr_mod]
     __blkdev_get+0xb9/0x450
     ? iget5_locked+0x1c0/0x1e0
     blkdev_get+0x11e/0x320
     ? bdget+0x11d/0x150
     ? _raw_spin_unlock+0xa/0x20
     ? bd_acquire+0xc0/0xc0
     do_dentry_open+0x1b0/0x320
     ? inode_permission+0x24/0xc0
     path_openat+0x4e6/0x1420
     ? cpumask_any_but+0x1f/0x40
     ? flush_tlb_mm_range+0xa0/0x120
     do_filp_open+0x8c/0xf0
     ? __seccomp_filter+0x28/0x230
     ? _raw_spin_unlock+0xa/0x20
     ? __handle_mm_fault+0x7d6/0x9b0
     ? list_lru_add+0xa8/0xc0
     ? _raw_spin_unlock+0xa/0x20
     ? __alloc_fd+0xaf/0x160
     ? do_sys_open+0x1a6/0x230
     do_sys_open+0x1a6/0x230
     do_syscall_64+0x5a/0x100
     entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 423794780d0589356d0fa5287e376eb5bcbdf44b
Author: Tom Abraham <tabraham@suse.com>
Date:   Tue Apr 10 16:29:48 2018 -0700

    swap: divide-by-zero when zero length swap file on ssd
    
    [ Upstream commit a06ad633a37c64a0cd4c229fc605cee8725d376e ]
    
    Calling swapon() on a zero length swap file on SSD can lead to a
    divide-by-zero.
    
    Although creating such files isn't possible with mkswap and they woud be
    considered invalid, it would be better for the swapon code to be more
    robust and handle this condition gracefully (return -EINVAL).
    Especially since the fix is small and straightforward.
    
    To help with wear leveling on SSD, the swapon syscall calculates a
    random position in the swap file using modulo p->highest_bit, which is
    set to maxpages - 1 in read_swap_header.
    
    If the swap file is zero length, read_swap_header sets maxpages=1 and
    last_page=0, resulting in p->highest_bit=0 and we divide-by-zero when we
    modulo p->highest_bit in swapon syscall.
    
    This can be prevented by having read_swap_header return zero if
    last_page is zero.
    
    Link: http://lkml.kernel.org/r/5AC747C1020000A7001FA82C@prv-mh.provo.novell.com
    Signed-off-by: Thomas Abraham <tabraham@suse.com>
    Reported-by: <Mark.Landis@Teradata.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b62143830170e14ccd94c2e340a2ce8f2f4c777b
Author: Danilo Krummrich <danilokrummrich@dk-develop.de>
Date:   Tue Apr 10 16:31:38 2018 -0700

    fs/proc/proc_sysctl.c: fix potential page fault while unregistering sysctl table
    
    [ Upstream commit a0b0d1c345d0317efe594df268feb5ccc99f651e ]
    
    proc_sys_link_fill_cache() does not take currently unregistering sysctl
    tables into account, which might result into a page fault in
    sysctl_follow_link() - add a check to fix it.
    
    This bug has been present since v3.4.
    
    Link: http://lkml.kernel.org/r/20180228013506.4915-1-danilokrummrich@dk-develop.de
    Fixes: 0e47c99d7fe25 ("sysctl: Replace root_list with links between sysctl_table_sets")
    Signed-off-by: Danilo Krummrich <danilokrummrich@dk-develop.de>
    Acked-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: "Luis R . Rodriguez" <mcgrof@kernel.org>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2bbb81de2b7c242fc724a1597a0aac6f1d78e4a4
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Fri Apr 6 13:55:14 2018 -0700

    x86/mm: Do not forbid _PAGE_RW before init for __ro_after_init
    
    [ Upstream commit 639d6aafe437a7464399d2a77d006049053df06f ]
    
    __ro_after_init data gets stuck in the .rodata section.  That's normally
    fine because the kernel itself manages the R/W properties.
    
    But, if we run __change_page_attr() on an area which is __ro_after_init,
    the .rodata checks will trigger and force the area to be immediately
    read-only, even if it is early-ish in boot.  This caused problems when
    trying to clear the _PAGE_GLOBAL bit for these area in the PTI code:
    it cleared _PAGE_GLOBAL like I asked, but also took it up on itself
    to clear _PAGE_RW.  The kernel then oopses the next time it wrote to
    a __ro_after_init data structure.
    
    To fix this, add the kernel_set_to_readonly check, just like we have
    for kernel text, just a few lines below in this function.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: David Woodhouse <dwmw2@infradead.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Nadav Amit <namit@vmware.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20180406205514.8D898241@viggo.jf.intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e2694161367a0bc370f897d03c5a4d3ff7f094f
Author: Joerg Roedel <joro@8bytes.org>
Date:   Wed Apr 11 17:24:38 2018 +0200

    x86/pgtable: Don't set huge PUD/PMD on non-leaf entries
    
    [ Upstream commit e3e288121408c3abeed5af60b87b95c847143845 ]
    
    The pmd_set_huge() and pud_set_huge() functions are used from
    the generic ioremap() code to establish large mappings where this
    is possible.
    
    But the generic ioremap() code does not check whether the
    PMD/PUD entries are already populated with a non-leaf entry,
    so that any page-table pages these entries point to will be
    lost.
    
    Further, on x86-32 with SHARED_KERNEL_PMD=0, this causes a
    BUG_ON() in vmalloc_sync_one() when PMD entries are synced
    from swapper_pg_dir to the current page-table. This happens
    because the PMD entry from swapper_pg_dir was promoted to a
    huge-page entry while the current PGD still contains the
    non-leaf entry. Because both entries are present and point
    to a different page, the BUG_ON() triggers.
    
    This was actually triggered with pti-x32 enabled in a KVM
    virtual machine by the graphics driver.
    
    A real and better fix for that would be to improve the
    page-table handling in the generic ioremap() code. But that is
    out-of-scope for this patch-set and left for later work.
    
    Reported-by: David H. Gutteridge <dhgutteridge@sympatico.ca>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: David Laight <David.Laight@aculab.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: Eduardo Valentin <eduval@amazon.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Jiri Kosina <jkosina@suse.cz>
    Cc: Josh Poimboeuf <jpoimboe@redhat.com>
    Cc: Juergen Gross <jgross@suse.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Waiman Long <llong@redhat.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: aliguori@amazon.com
    Cc: daniel.gruss@iaik.tugraz.at
    Cc: hughd@google.com
    Cc: keescook@google.com
    Cc: linux-mm@kvack.org
    Link: http://lkml.kernel.org/r/20180411152437.GC15462@8bytes.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2a1bf451130e7141e3cf88f7e682c0d6afa9612
Author: Johannes Thumshirn <jthumshirn@suse.de>
Date:   Thu Apr 12 09:16:06 2018 -0600

    nvme: don't send keep-alives to the discovery controller
    
    [ Upstream commit 74c6c71530847808d4e3be7b205719270efee80c ]
    
    NVMe over Fabrics 1.0 Section 5.2 "Discovery Controller Properties and
    Command Support" Figure 31 "Discovery Controller – Admin Commands"
    explicitly listst all commands but "Get Log Page" and "Identify" as
    reserved, but NetApp report the Linux host is sending Keep Alive
    commands to the discovery controller, which is a violation of the
    Spec.
    
    We're already checking for discovery controllers when configuring the
    keep alive timeout but when creating a discovery controller we're not
    hard wiring the keep alive timeout to 0 and thus remain on
    NVME_DEFAULT_KATO for the discovery controller.
    
    This can be easily remproduced when issuing a direct connect to the
    discovery susbsystem using:
    'nvme connect [...] --nqn=nqn.2014-08.org.nvmexpress.discovery'
    
    Signed-off-by: Johannes Thumshirn <jthumshirn@suse.de>
    Fixes: 07bfcd09a288 ("nvme-fabrics: add a generic NVMe over Fabrics library")
    Reported-by: Martin George <marting@netapp.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bec95d211f1256ebb8414225cb235f22c1a4aa12
Author: Rich Felker <dalias@libc.org>
Date:   Thu Mar 15 20:01:36 2018 -0400

    sh: fix debug trap failure to process signals before return to user
    
    [ Upstream commit 96a598996f6ac518ac79839ecbb17c91af91f4f7 ]
    
    When responding to a debug trap (breakpoint) in userspace, the
    kernel's trap handler raised SIGTRAP but returned from the trap via a
    code path that ignored pending signals, resulting in an infinite loop
    re-executing the trapping instruction.
    
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2b1c1ad87805cab84cca87a3705c3b3b8e196840
Author: Yelena Krivosheev <yelena@marvell.com>
Date:   Fri Mar 30 12:05:31 2018 +0200

    net: mvneta: fix enable of all initialized RXQs
    
    [ Upstream commit e81b5e01c14add8395dfba7130f8829206bb507d ]
    
    In mvneta_port_up() we enable relevant RX and TX port queues by write
    queues bit map to an appropriate register.
    
    q_map must be ZERO in the beginning of this process.
    
    Signed-off-by: Yelena Krivosheev <yelena@marvell.com>
    Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b389e04a464f8abdfe949658fa20e1a5e7fdef82
Author: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Date:   Thu Mar 29 19:05:29 2018 +0900

    net: Fix untag for vlan packets without ethernet header
    
    [ Upstream commit ae4745730cf8e693d354ccd4dbaf59ea440c09a9 ]
    
    In some situation vlan packets do not have ethernet headers. One example
    is packets from tun devices. Users can specify vlan protocol in tun_pi
    field instead of IP protocol, and skb_vlan_untag() attempts to untag such
    packets.
    
    skb_vlan_untag() (more precisely, skb_reorder_vlan_header() called by it)
    however did not expect packets without ethernet headers, so in such a case
    size argument for memmove() underflowed and triggered crash.
    
    ====
    BUG: unable to handle kernel paging request at ffff8801cccb8000
    IP: __memmove+0x24/0x1a0 arch/x86/lib/memmove_64.S:43
    PGD 9cee067 P4D 9cee067 PUD 1d9401063 PMD 1cccb7063 PTE 2810100028101
    Oops: 000b [#1] SMP KASAN
    Dumping ftrace buffer:
       (ftrace buffer empty)
    Modules linked in:
    CPU: 1 PID: 17663 Comm: syz-executor2 Not tainted 4.16.0-rc7+ #368
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    RIP: 0010:__memmove+0x24/0x1a0 arch/x86/lib/memmove_64.S:43
    RSP: 0018:ffff8801cc046e28 EFLAGS: 00010287
    RAX: ffff8801ccc244c4 RBX: fffffffffffffffe RCX: fffffffffff6c4c2
    RDX: fffffffffffffffe RSI: ffff8801cccb7ffc RDI: ffff8801cccb8000
    RBP: ffff8801cc046e48 R08: ffff8801ccc244be R09: ffffed0039984899
    R10: 0000000000000001 R11: ffffed0039984898 R12: ffff8801ccc244c4
    R13: ffff8801ccc244c0 R14: ffff8801d96b7c06 R15: ffff8801d96b7b40
    FS:  00007febd562d700(0000) GS:ffff8801db300000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffff8801cccb8000 CR3: 00000001ccb2f006 CR4: 00000000001606e0
    DR0: 0000000020000000 DR1: 0000000020000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000600
    Call Trace:
     memmove include/linux/string.h:360 [inline]
     skb_reorder_vlan_header net/core/skbuff.c:5031 [inline]
     skb_vlan_untag+0x470/0xc40 net/core/skbuff.c:5061
     __netif_receive_skb_core+0x119c/0x3460 net/core/dev.c:4460
     __netif_receive_skb+0x2c/0x1b0 net/core/dev.c:4627
     netif_receive_skb_internal+0x10b/0x670 net/core/dev.c:4701
     netif_receive_skb+0xae/0x390 net/core/dev.c:4725
     tun_rx_batched.isra.50+0x5ee/0x870 drivers/net/tun.c:1555
     tun_get_user+0x299e/0x3c20 drivers/net/tun.c:1962
     tun_chr_write_iter+0xb9/0x160 drivers/net/tun.c:1990
     call_write_iter include/linux/fs.h:1782 [inline]
     new_sync_write fs/read_write.c:469 [inline]
     __vfs_write+0x684/0x970 fs/read_write.c:482
     vfs_write+0x189/0x510 fs/read_write.c:544
     SYSC_write fs/read_write.c:589 [inline]
     SyS_write+0xef/0x220 fs/read_write.c:581
     do_syscall_64+0x281/0x940 arch/x86/entry/common.c:287
     entry_SYSCALL_64_after_hwframe+0x42/0xb7
    RIP: 0033:0x454879
    RSP: 002b:00007febd562cc68 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 00007febd562d6d4 RCX: 0000000000454879
    RDX: 0000000000000157 RSI: 0000000020000180 RDI: 0000000000000014
    RBP: 000000000072bea0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 00000000000006b0 R14: 00000000006fc120 R15: 0000000000000000
    Code: 90 90 90 90 90 90 90 48 89 f8 48 83 fa 20 0f 82 03 01 00 00 48 39 fe 7d 0f 49 89 f0 49 01 d0 49 39 f8 0f 8f 9f 00 00 00 48 89 d1 <f3> a4 c3 48 81 fa a8 02 00 00 72 05 40 38 fe 74 3b 48 83 ea 20
    RIP: __memmove+0x24/0x1a0 arch/x86/lib/memmove_64.S:43 RSP: ffff8801cc046e28
    CR2: ffff8801cccb8000
    ====
    
    We don't need to copy headers for packets which do not have preceding
    headers of vlan headers, so skip memmove() in that case.
    
    Fixes: 4bbb3e0e8239 ("net: Fix vlan untag for bridge and vlan_dev with reorder_hdr off")
    Reported-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51db67432b02593fdf011b4a2224ebd7ee26e637
Author: Vinayak Menon <vinmenon@codeaurora.org>
Date:   Wed Mar 28 16:01:16 2018 -0700

    mm/kmemleak.c: wait for scan completion before disabling free
    
    [ Upstream commit 914b6dfff790544d9b77dfd1723adb3745ec9700 ]
    
    A crash is observed when kmemleak_scan accesses the object->pointer,
    likely due to the following race.
    
      TASK A             TASK B                     TASK C
      kmemleak_write
       (with "scan" and
       NOT "scan=on")
      kmemleak_scan()
                         create_object
                         kmem_cache_alloc fails
                         kmemleak_disable
                         kmemleak_do_cleanup
                         kmemleak_free_enabled = 0
                                                    kfree
                                                    kmemleak_free bails out
                                                     (kmemleak_free_enabled is 0)
                                                    slub frees object->pointer
      update_checksum
      crash - object->pointer
       freed (DEBUG_PAGEALLOC)
    
    kmemleak_do_cleanup waits for the scan thread to complete, but not for
    direct call to kmemleak_scan via kmemleak_write.  So add a wait for
    kmemleak_scan completion before disabling kmemleak_free, and while at it
    fix the comment on stop_scan_thread.
    
    [vinmenon@codeaurora.org: fix stop_scan_thread comment]
      Link: http://lkml.kernel.org/r/1522219972-22809-1-git-send-email-vinmenon@codeaurora.org
    Link: http://lkml.kernel.org/r/1522063429-18992-1-git-send-email-vinmenon@codeaurora.org
    Signed-off-by: Vinayak Menon <vinmenon@codeaurora.org>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2f820205cbf5f6ab40e59eaa6f6e68be2557bcc
Author: Jan Kiszka <jan.kiszka@siemens.com>
Date:   Wed Mar 21 13:15:28 2018 +0800

    builddeb: Fix header package regarding dtc source links
    
    [ Upstream commit f8437520704cfd9cc442a99d73ed708a3cdadaf9 ]
    
    Since d5d332d3f7e8, a couple of links in scripts/dtc/include-prefixes
    are additionally required in order to build device trees with the header
    package.
    
    Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
    Reviewed-by: Riku Voipio <riku.voipio@linaro.org>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4703f3fc5e495fc982c9ef41d304d682491e6a7d
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Mar 26 15:08:33 2018 -0700

    llc: properly handle dev_queue_xmit() return value
    
    [ Upstream commit b85ab56c3f81c5a24b5a5213374f549df06430da ]
    
    llc_conn_send_pdu() pushes the skb into write queue and
    calls llc_conn_send_pdus() to flush them out. However, the
    status of dev_queue_xmit() is not returned to caller,
    in this case, llc_conn_state_process().
    
    llc_conn_state_process() needs hold the skb no matter
    success or failure, because it still uses it after that,
    therefore we should hold skb before dev_queue_xmit() when
    that skb is the one being processed by llc_conn_state_process().
    
    For other callers, they can just pass NULL and ignore
    the return value as they are.
    
    Reported-by: Noam Rathaus <noamr@beyondsecurity.com>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb58c034ee7ed508126fc236fa95b66d65c11d80
Author: Stephane Eranian <eranian@google.com>
Date:   Fri Mar 23 00:01:47 2018 -0700

    perf/x86/intel: Fix linear IP of PEBS real_ip on Haswell and later CPUs
    
    [ Upstream commit 71eb9ee9596d8df3d5723c3cfc18774c6235e8b1 ]
    
    this patch fix a bug in how the pebs->real_ip is handled in the PEBS
    handler. real_ip only exists in Haswell and later processor. It is
    actually the eventing IP, i.e., where the event occurred. As opposed
    to the pebs->ip which is the PEBS interrupt IP which is always off
    by one.
    
    The problem is that the real_ip just like the IP needs to be fixed up
    because PEBS does not record all the machine state registers, and
    in particular the code segement (cs). This is why we have the set_linear_ip()
    function. The problem was that set_linear_ip() was only used on the pebs->ip
    and not the pebs->real_ip.
    
    We have profiles which ran into invalid callstacks because of this.
    Here is an example:
    
     .....  0: ffffffffffffff80 recent entry, marker kernel v
     .....  1: 000000000040044d <= user address in kernel space!
     .....  2: fffffffffffffe00 marker enter user v
     .....  3: 000000000040044d
     .....  4: 00000000004004b6 oldest entry
    
    Debugging output in get_perf_callchain():
    
     [  857.769909] CALLCHAIN: CPU8 ip=40044d regs->cs=10 user_mode(regs)=0
    
    The problem is that the kernel entry in 1: points to a user level
    address. How can that be?
    
    The reason is that with PEBS sampling the instruction that caused the event
    to occur and the instruction where the CPU was when the interrupt was posted
    may be far apart. And sometime during that time window, the privilege level may
    change. This happens, for instance, when the PEBS sample is taken close to a
    kernel entry point. Here PEBS, eventing IP (real_ip) captured a user level
    instruction. But by the time the PMU interrupt fired, the processor had already
    entered kernel space. This is why the debug output shows a user address with
    user_mode() false.
    
    The problem comes from PEBS not recording the code segment (cs) register.
    The register is used in x86_64 to determine if executing in kernel vs user
    space. This is okay because the kernel has a software workaround called
    set_linear_ip(). But the issue in setup_pebs_sample_data() is that
    set_linear_ip() is never called on the real_ip value when it is available
    (Haswell and later) and precise_ip > 1.
    
    This patch fixes this problem and eliminates the callchain discrepancy.
    
    The patch restructures the code around set_linear_ip() to minimize the number
    of times the IP has to be set.
    
    Signed-off-by: Stephane Eranian <eranian@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Cc: kan.liang@intel.com
    Link: http://lkml.kernel.org/r/1521788507-10231-1-git-send-email-eranian@google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9c6381de1265870b045dcb073be4d0d0a1c656d
Author: Pawel Dembicki <paweldembicki@gmail.com>
Date:   Sat Mar 24 22:08:14 2018 +0100

    net: qmi_wwan: add BroadMobi BM806U 2020:2033
    
    [ Upstream commit 743989254ea9f132517806d8893ca9b6cf9dc86b ]
    
    BroadMobi BM806U is an Qualcomm MDM9225 based 3G/4G modem.
    Tested hardware BM806U is mounted on D-Link DWR-921-C3 router.
    The USB id is added to qmi_wwan.c to allow QMI communication with
    the BM806U.
    
    Tested on 4.14 kernel and OpenWRT.
    
    Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1475b5ab37dacdb610a1c402a82b2110fc8cf0cf
Author: Jinbum Park <jinb.park7@gmail.com>
Date:   Tue Mar 6 01:37:21 2018 +0100

    ARM: 8748/1: mm: Define vdso_start, vdso_end as array
    
    [ Upstream commit 73b9160d0dfe44dfdaffd6465dc1224c38a4a73c ]
    
    Define vdso_start, vdso_end as array to avoid compile-time analysis error
    for the case of built with CONFIG_FORTIFY_SOURCE.
    
    and, since vdso_start, vdso_end are used in vdso.c only,
    move extern-declaration from vdso.h to vdso.c.
    
    If kernel is built with CONFIG_FORTIFY_SOURCE,
    compile-time error happens at this code.
    - if (memcmp(&vdso_start, "177ELF", 4))
    
    The size of "&vdso_start" is recognized as 1 byte, but n is 4,
    So that compile-time error is reported.
    
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Jinbum Park <jinb.park7@gmail.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 511d9451a37607246483bff6741cad2ea7e3924b
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Thu Mar 22 00:21:32 2018 +0100

    batman-adv: fix packet loss for broadcasted DHCP packets to a server
    
    [ Upstream commit a752c0a4524889cdc0765925258fd1fd72344100 ]
    
    DHCP connectivity issues can currently occur if the following conditions
    are met:
    
    1) A DHCP packet from a client to a server
    2) This packet has a multicast destination
    3) This destination has a matching entry in the translation table
       (FF:FF:FF:FF:FF:FF for IPv4, 33:33:00:01:00:02/33:33:00:01:00:03
        for IPv6)
    4) The orig-node determined by TT for the multicast destination
       does not match the orig-node determined by best-gateway-selection
    
    In this case the DHCP packet will be dropped.
    
    The "gateway-out-of-range" check is supposed to only be applied to
    unicasted DHCP packets to a specific DHCP server.
    
    In that case dropping the the unicasted frame forces the client to
    retry via a broadcasted one, but now directed to the new best
    gateway.
    
    A DHCP packet with broadcast/multicast destination is already ensured to
    always be delivered to the best gateway. Dropping a multicasted
    DHCP packet here will only prevent completing DHCP as there is no
    other fallback.
    
    So far, it seems the unicast check was implicitly performed by
    expecting the batadv_transtable_search() to return NULL for multicast
    destinations. However, a multicast address could have always ended up in
    the translation table and in fact is now common.
    
    To fix this potential loss of a DHCP client-to-server packet to a
    multicast address this patch adds an explicit multicast destination
    check to reliably bail out of the gateway-out-of-range check for such
    destinations.
    
    The issue and fix were tested in the following three node setup:
    
    - Line topology, A-B-C
    - A: gateway client, DHCP client
    - B: gateway server, hop-penalty increased: 30->60, DHCP server
    - C: gateway server, code modifications to announce FF:FF:FF:FF:FF:FF
    
    Without this patch, A would never transmit its DHCP Discover packet
    due to an always "out-of-range" condition. With this patch,
    a full DHCP handshake between A and B was possible again.
    
    Fixes: be7af5cf9cae ("batman-adv: refactoring gateway handling code")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00a7d83c8acb9843f27ebf06208cd7f3059667e5
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Tue Mar 20 03:13:27 2018 +0100

    batman-adv: fix multicast-via-unicast transmission with AP isolation
    
    [ Upstream commit f8fb3419ead44f9a3136995acd24e35da4525177 ]
    
    For multicast frames AP isolation is only supposed to be checked on
    the receiving nodes and never on the originating one.
    
    Furthermore, the isolation or wifi flag bits should only be intepreted
    as such for unicast and never multicast TT entries.
    
    By injecting flags to the multicast TT entry claimed by a single
    target node it was verified in tests that this multicast address
    becomes unreachable, leading to packet loss.
    
    Omitting the "src" parameter to the batadv_transtable_search() call
    successfully skipped the AP isolation check and made the target
    reachable again.
    
    Fixes: 1d8ab8d3c176 ("batman-adv: Modified forwarding behaviour for multicast packets")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9cf1e7f6bdd0a2bec6299b5830a32aa8a847cbe3
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Mar 17 21:40:31 2018 +0900

    selftests: ftrace: Add a testcase for probepoint
    
    [ Upstream commit dfa453bc90eca0febff33c8d292a656e53702158 ]
    
    Add a testcase for probe point definition. This tests
    symbol, address and symbol+offset syntax. The offset
    must be positive and smaller than UINT_MAX.
    
    Link: http://lkml.kernel.org/r/152129043097.31874.14273580606301767394.stgit@devbox
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c44ecab27c3471a2fa81f3a3fdea2bfcd5c7c171
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Mar 17 21:39:44 2018 +0900

    selftests: ftrace: Add a testcase for string type with kprobe_event
    
    [ Upstream commit 5fbdbed797b6d12d043a5121fdbc8d8b49d10e80 ]
    
    Add a testcase for string type with kprobe event.
    This tests good/bad syntax combinations and also
    the traced data is correct in several way.
    
    Link: http://lkml.kernel.org/r/152129038381.31874.9201387794548737554.stgit@devbox
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 47b91fcf63246d140148f2c3b2b3500dedcbfad3
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Sat Mar 17 21:38:56 2018 +0900

    selftests: ftrace: Add probe event argument syntax testcase
    
    [ Upstream commit 871bef2000968c312a4000b2f56d370dcedbc93c ]
    
    Add a testcase for probe event argument syntax which
    ensures the kprobe_events interface correctly parses
    given event arguments.
    
    Link: http://lkml.kernel.org/r/152129033679.31874.12705519603869152799.stgit@devbox
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b7ff8e50a9d7bd9dd06f97a0076c2dcde675a4d
Author: David Rientjes <rientjes@google.com>
Date:   Thu Mar 22 16:17:45 2018 -0700

    mm, thp: do not cause memcg oom for thp
    
    [ Upstream commit 9d3c3354bb85bab4d865fe95039443f09a4c8394 ]
    
    Commit 2516035499b9 ("mm, thp: remove __GFP_NORETRY from khugepaged and
    madvised allocations") changed the page allocator to no longer detect
    thp allocations based on __GFP_NORETRY.
    
    It did not, however, modify the mem cgroup try_charge() path to avoid
    oom kill for either khugepaged collapsing or thp faulting.  It is never
    expected to oom kill a process to allocate a hugepage for thp; reclaim
    is governed by the thp defrag mode and MADV_HUGEPAGE, but allocations
    (and charging) should fallback instead of oom killing processes.
    
    Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1803191409420.124411@chino.kir.corp.google.com
    Fixes: 2516035499b9 ("mm, thp: remove __GFP_NORETRY from khugepaged and madvised allocations")
    Signed-off-by: David Rientjes <rientjes@google.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be1a9d14d6dbb38990e81467b776c6044508b893
Author: Yisheng Xie <xieyisheng1@huawei.com>
Date:   Thu Mar 22 16:17:02 2018 -0700

    mm/mempolicy.c: avoid use uninitialized preferred_node
    
    [ Upstream commit 8970a63e965b43288c4f5f40efbc2bbf80de7f16 ]
    
    Alexander reported a use of uninitialized memory in __mpol_equal(),
    which is caused by incorrect use of preferred_node.
    
    When mempolicy in mode MPOL_PREFERRED with flags MPOL_F_LOCAL, it uses
    numa_node_id() instead of preferred_node, however, __mpol_equal() uses
    preferred_node without checking whether it is MPOL_F_LOCAL or not.
    
    [akpm@linux-foundation.org: slight comment tweak]
    Link: http://lkml.kernel.org/r/4ebee1c2-57f6-bcb8-0e2d-1833d1ee0bb7@huawei.com
    Fixes: fc36b8d3d819 ("mempolicy: use MPOL_F_LOCAL to Indicate Preferred Local Policy")
    Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
    Reported-by: Alexander Potapenko <glider@google.com>
    Tested-by: Alexander Potapenko <glider@google.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Dmitriy Vyukov <dvyukov@google.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Michal Hocko <mhocko@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94ef0ff0b8ff0fd513653b2293cfcbfa1cd20638
Author: Kalderon, Michal <Michal.Kalderon@cavium.com>
Date:   Wed Mar 21 14:51:51 2018 +0200

    RDMA/qedr: Fix rc initialization on CNQ allocation failure
    
    [ Upstream commit b15606f47b89b0b09936d7f45b59ba6275527041 ]
    
    Return code wasn't set properly when CNQ allocation failed.
    This only affect error message logging, currently user will
    receive an error message that says the qedr driver load failed
    with rc '0', instead of ENOMEM
    
    Fixes: ec72fce4 ("qedr: Add support for RoCE HW init")
    Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2809193b46d2544c3362d67f9c03657dec1c5234
Author: Kalderon, Michal <Michal.Kalderon@cavium.com>
Date:   Wed Mar 21 14:51:50 2018 +0200

    RDMA/qedr: fix QP's ack timeout configuration
    
    [ Upstream commit c3594f22302cca5e924e47ec1cc8edd265708f41 ]
    
    QPs that were configured with ack timeout value lower than 1
    msec will not implement re-transmission timeout.
    This means that if a packet / ACK were dropped, the QP
    will not retransmit this packet.
    
    This can lead to an application hang.
    
    Fixes: cecbcddf6 ("qedr: Add support for QP verbs")
    Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d1d56d9384d4f86052df55f82e70ea99f3b5906
Author: Chien Tin Tung <chien.tin.tung@intel.com>
Date:   Wed Mar 21 13:09:25 2018 -0500

    RDMA/ucma: Correct option size check using optlen
    
    [ Upstream commit 5f3e3b85cc0a5eae1c46d72e47d3de7bf208d9e2 ]
    
    The option size check is using optval instead of optlen
    causing the set option call to fail. Use the correct
    field, optlen, for size check.
    
    Fixes: 6a21dfc0d0db ("RDMA/ucma: Limit possible option size")
    Signed-off-by: Chien Tin Tung <chien.tin.tung@intel.com>
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df17a3408d5e21919d40d72141befb08fcb197fe
Author: Nicolas Pitre <nicolas.pitre@linaro.org>
Date:   Thu Mar 15 16:56:20 2018 -0400

    kbuild: make scripts/adjust_autoksyms.sh robust against timestamp races
    
    [ Upstream commit 825d487583089f9a33d31650c9c41f6474aab7fc ]
    
    Some filesystems have timestamps with coarse precision that may allow
    for a recently built object file to have the same timestamp as the
    updated time on one of its dependency files. When that happens, the
    object file doesn't get rebuilt as it should.
    
    This is especially the case on filesystems that don't have sub-second
    time precision, such as ext3 or Ext4 with 128B inodes.
    
    Let's prevent that by making sure updated dependency files have a newer
    timestamp than the first file we created (i.e. autoksyms.h.tmpnew).
    
    Reported-by: Thomas Lindroth <thomas.lindroth@gmail.com>
    Signed-off-by: Nicolas Pitre <nico@linaro.org>
    Tested-by: Thomas Lindroth <thomas.lindroth@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 78e7409901054e87559f15724652b4d666bd7f8a
Author: Stefan Wahren <stefan.wahren@i2se.com>
Date:   Wed Mar 14 20:02:59 2018 +0100

    brcmfmac: Fix check for ISO3166 code
    
    [ Upstream commit 9b9322db5c5a1917a66c71fe47c3848a9a31227e ]
    
    The commit "regulatory: add NUL to request alpha2" increases the length of
    alpha2 to 3. This causes a regression on brcmfmac, because
    brcmf_cfg80211_reg_notifier() expect valid ISO3166 codes in the complete
    array. So fix this accordingly.
    
    Fixes: 657308f73e67 ("regulatory: add NUL to request alpha2")
    Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
    Acked-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4271d86a4cad42a49a1ebec31cf90d45760210e
Author: Song Liu <songliubraving@fb.com>
Date:   Mon Mar 12 09:59:43 2018 -0700

    perf/cgroup: Fix child event counting bug
    
    [ Upstream commit c917e0f259908e75bd2a65877e25f9d90c22c848 ]
    
    When a perf_event is attached to parent cgroup, it should count events
    for all children cgroups:
    
       parent_group   <---- perf_event
         \
          - child_group  <---- process(es)
    
    However, in our tests, we found this perf_event cannot report reliable
    results. Here is an example case:
    
      # create cgroups
      mkdir -p /sys/fs/cgroup/p/c
      # start perf for parent group
      perf stat -e instructions -G "p"
    
      # on another console, run test process in child cgroup:
      stressapptest -s 2 -M 1000 & echo $! > /sys/fs/cgroup/p/c/cgroup.procs
    
      # after the test process is done, stop perf in the first console shows
    
           <not counted>      instructions              p
    
    The instruction should not be "not counted" as the process runs in the
    child cgroup.
    
    We found this is because perf_event->cgrp and cpuctx->cgrp are not
    identical, thus perf_event->cgrp are not updated properly.
    
    This patch fixes this by updating perf_cgroup properly for ancestor
    cgroup(s).
    
    Reported-by: Ephraim Park <ephiepark@fb.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: <jolsa@redhat.com>
    Cc: <kernel-team@fb.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/20180312165943.1057894-1-songliubraving@fb.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d82309e24315a99a29342d330f6142122e249963
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu Mar 15 17:16:29 2018 +0100

    vti4: Don't override MTU passed on link creation via IFLA_MTU
    
    [ Upstream commit 03080e5ec72740c1a62e6730f2a5f3f114f11b19 ]
    
    Don't hardcode a MTU value on vti tunnel initialization,
    ip_tunnel_newlink() is able to deal with this already. See also
    commit ffc2b6ee4174 ("ip_gre: fix IFLA_MTU ignored on NEWLINK").
    
    Fixes: 1181412c1a67 ("net/ipv4: VTI support new module for ip_vti.")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Acked-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69e692668cf51bb1a44366e770c561f386644ee0
Author: Stefano Brivio <sbrivio@redhat.com>
Date:   Thu Mar 15 17:16:27 2018 +0100

    vti4: Don't count header length twice on tunnel setup
    
    [ Upstream commit dd1df24737727e119c263acf1be2a92763938297 ]
    
    This re-introduces the effect of commit a32452366b72 ("vti4:
    Don't count header length twice.") which was accidentally
    reverted by merge commit f895f0cfbb77 ("Merge branch 'master' of
    git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec").
    
    The commit message from Steffen Klassert said:
    
        We currently count the size of LL_MAX_HEADER and struct iphdr
        twice for vti4 devices, this leads to a wrong device mtu.
        The size of LL_MAX_HEADER and struct iphdr is already counted in
        ip_tunnel_bind_dev(), so don't do it again in vti_tunnel_init().
    
    And this is still the case now: ip_tunnel_bind_dev() already
    accounts for the header length of the link layer (not
    necessarily LL_MAX_HEADER, if the output device is found), plus
    one IP header.
    
    For example, with a vti device on top of veth, with MTU of 1500,
    the existing implementation would set the initial vti MTU to
    1332, accounting once for LL_MAX_HEADER (128, included in
    hard_header_len by vti) and twice for the same IP header (once
    from hard_header_len, once from ip_tunnel_bind_dev()).
    
    It should instead be 1480, because ip_tunnel_bind_dev() is able
    to figure out that the output device is veth, so no additional
    link layer header is attached, and will properly count one
    single IP header.
    
    The existing issue had the side effect of avoiding PMTUD for
    most xfrm policies, by arbitrarily lowering the initial MTU.
    However, the only way to get a consistent PMTU value is to let
    the xfrm PMTU discovery do its course, and commit d6af1a31cc72
    ("vti: Add pmtu handling to vti_xmit.") now takes care of local
    delivery cases where the application ignores local socket
    notifications.
    
    Fixes: b9959fd3b0fa ("vti: switch to new ip tunnel code")
    Fixes: f895f0cfbb77 ("Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec")
    Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
    Acked-by: Sabrina Dubroca <sd@queasysnail.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d86130f69705054a57bb80ec0566a7f2852b09b8
Author: Sven Eckelmann <sven@narfation.org>
Date:   Fri Mar 16 21:14:32 2018 +0100

    batman-adv: Fix skbuff rcsum on packet reroute
    
    [ Upstream commit fc04fdb2c8a894283259f5621d31d75610701091 ]
    
    batadv_check_unicast_ttvn may redirect a packet to itself or another
    originator. This involves rewriting the ttvn and the destination address in
    the batadv unicast header. These field were not yet pulled (with skb rcsum
    update) and thus any change to them also requires a change in the receive
    checksum.
    
    Reported-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Fixes: a73105b8d4c7 ("batman-adv: improved client announcement mechanism")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33e0acf13c744efefba4322c1963968f538ff671
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Fri Mar 16 11:29:10 2018 +0100

    batman-adv: fix header size check in batadv_dbg_arp()
    
    [ Upstream commit 6f27d2c2a8c236d296201c19abb8533ec20d212b ]
    
    Checking for 0 is insufficient: when an SKB without a batadv header, but
    with a VLAN header is received, hdr_size will be 4, making the following
    code interpret the Ethernet header as a batadv header.
    
    Fixes: be1db4f6615b ("batman-adv: make the Distributed ARP Table vlan aware")
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58df28952c377af5b055be678e8e922a4a8ea3e5
Author: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
Date:   Tue Mar 13 14:51:27 2018 +0900

    net: Fix vlan untag for bridge and vlan_dev with reorder_hdr off
    
    [ Upstream commit 4bbb3e0e8239f9079bf1fe20b3c0cb598714ae61 ]
    
    When we have a bridge with vlan_filtering on and a vlan device on top of
    it, packets would be corrupted in skb_vlan_untag() called from
    br_dev_xmit().
    
    The problem sits in skb_reorder_vlan_header() used in skb_vlan_untag(),
    which makes use of skb->mac_len. In this function mac_len is meant for
    handling rx path with vlan devices with reorder_header disabled, but in
    tx path mac_len is typically 0 and cannot be used, which is the problem
    in this case.
    
    The current code even does not properly handle rx path (skb_vlan_untag()
    called from __netif_receive_skb_core()) with reorder_header off actually.
    
    In rx path single tag case, it works as follows:
    
    - Before skb_reorder_vlan_header()
    
     mac_header                                data
       v                                        v
       +-------------------+-------------+------+----
       |        ETH        |    VLAN     | ETH  |
       |       ADDRS       | TPID | TCI  | TYPE |
       +-------------------+-------------+------+----
       <-------- mac_len --------->
                           <------------->
                            to be removed
    
    - After skb_reorder_vlan_header()
    
                mac_header                     data
                     v                          v
                     +-------------------+------+----
                     |        ETH        | ETH  |
                     |       ADDRS       | TYPE |
                     +-------------------+------+----
                     <-------- mac_len --------->
    
    This is ok, but in rx double tag case, it corrupts packets:
    
    - Before skb_reorder_vlan_header()
    
     mac_header                                              data
       v                                                      v
       +-------------------+-------------+-------------+------+----
       |        ETH        |    VLAN     |    VLAN     | ETH  |
       |       ADDRS       | TPID | TCI  | TPID | TCI  | TYPE |
       +-------------------+-------------+-------------+------+----
       <--------------- mac_len ---------------->
                                         <------------->
                                        should be removed
                           <--------------------------->
                             actually will be removed
    
    - After skb_reorder_vlan_header()
    
                mac_header                                   data
                     v                                        v
                                   +-------------------+------+----
                                   |        ETH        | ETH  |
                                   |       ADDRS       | TYPE |
                                   +-------------------+------+----
                     <--------------- mac_len ---------------->
    
    So, two of vlan tags are both removed while only inner one should be
    removed and mac_header (and mac_len) is broken.
    
    skb_vlan_untag() is meant for removing the vlan header at (skb->data - 2),
    so use skb->data and skb->mac_header to calculate the right offset.
    
    Reported-by: Brandon Carpenter <brandon.carpenter@cypherpath.com>
    Fixes: a6e18ff11170 ("vlan: Fix untag operations of stacked vlans with REORDER_HEADER off")
    Signed-off-by: Toshiaki Makita <makita.toshiaki@lab.ntt.co.jp>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b43e24b039364fdab601a020103ae55d4e0f7dea
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Thu Mar 15 10:11:59 2018 +0100

    drm/imx: move arming of the vblank event to atomic_flush
    
    [ Upstream commit 6a055b92de15af987b4027826d43aa103c65a3c4 ]
    
    Right now the vblank event completion is racing with the atomic update,
    which is especially bad when the PRE is in use, as one of the hardware
    issue workaround might extend the atomic commit for quite some time.
    
    If the vblank IRQ happens to trigger during that time, we will prematurely
    signal the atomic commit completion to userspace, which causes tearing
    when userspace re-uses a framebuffer we haven't managed to flip away from
    yet.
    
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1e08390525aba7df545ac29ef9379593d0caa94
Author: Cathy Zhou <Cathy.Zhou@Oracle.COM>
Date:   Wed Mar 14 10:56:07 2018 -0700

    sunvnet: does not support GSO for sctp
    
    [ Upstream commit cf55612a945039476abfd73e39064b2e721c3272 ]
    
    The NETIF_F_GSO_SOFTWARE implies support for GSO on SCTP, but the
    sunvnet driver does not support GSO for sctp.  Here we remove the
    NETIF_F_GSO_SOFTWARE feature flag and only report NETIF_F_ALL_TSO
    instead.
    
    Signed-off-by: Cathy Zhou <Cathy.Zhou@Oracle.COM>
    Signed-off-by: Shannon Nelson <shannon.nelson@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d543907a4730400f5c5b684c57cb5bbbfd6136ab
Author: Sabrina Dubroca <sd@queasysnail.net>
Date:   Wed Mar 14 10:21:14 2018 +0100

    ipv4: lock mtu in fnhe when received PMTU < net.ipv4.route.min_pmtu
    
    [ Upstream commit d52e5a7e7ca49457dd31fc8b42fb7c0d58a31221 ]
    
    Prior to the rework of PMTU information storage in commit
    2c8cec5c10bc ("ipv4: Cache learned PMTU information in inetpeer."),
    when a PMTU event advertising a PMTU smaller than
    net.ipv4.route.min_pmtu was received, we would disable setting the DF
    flag on packets by locking the MTU metric, and set the PMTU to
    net.ipv4.route.min_pmtu.
    
    Since then, we don't disable DF, and set PMTU to
    net.ipv4.route.min_pmtu, so the intermediate router that has this link
    with a small MTU will have to drop the packets.
    
    This patch reestablishes pre-2.6.39 behavior by splitting
    rtable->rt_pmtu into a bitfield with rt_mtu_locked and rt_pmtu.
    rt_mtu_locked indicates that we shouldn't set the DF bit on that path,
    and is checked in ip_dont_fragment().
    
    One possible workaround is to set net.ipv4.route.min_pmtu to a value low
    enough to accommodate the lowest MTU encountered.
    
    Fixes: 2c8cec5c10bc ("ipv4: Cache learned PMTU information in inetpeer.")
    Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
    Reviewed-by: Stefano Brivio <sbrivio@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30393949d1ed11b3025ff6f5966d8b94040d1999
Author: Arvind Yadav <arvind.yadav.cs@gmail.com>
Date:   Tue Mar 6 15:35:43 2018 +0530

    workqueue: use put_device() instead of kfree()
    
    [ Upstream commit 537f4146c53c95aac977852b371bafb9c6755ee1 ]
    
    Never directly free @dev after calling device_register(), even
    if it returned an error! Always use put_device() to give up the
    reference initialized in this function instead.
    
    Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbaab49706e993a42e44bed67418156e4c5afcb1
Author: Michael Chan <michael.chan@broadcom.com>
Date:   Fri Mar 9 23:46:10 2018 -0500

    bnxt_en: Check valid VNIC ID in bnxt_hwrm_vnic_set_tpa().
    
    [ Upstream commit 3c4fe80b32c685bdc02b280814d0cfe80d441c72 ]
    
    During initialization, if we encounter errors, there is a code path that
    calls bnxt_hwrm_vnic_set_tpa() with invalid VNIC ID.  This may cause a
    warning in firmware logs.
    
    Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb5ce10a27d5a55c50072dfdeb12c9b62d140563
Author: Florian Westphal <fw@strlen.de>
Date:   Thu Mar 8 12:54:19 2018 +0100

    netfilter: ebtables: fix erroneous reject of last rule
    
    [ Upstream commit 932909d9b28d27e807ff8eecb68c7748f6701628 ]
    
    The last rule in the blob has next_entry offset that is same as total size.
    This made "ebtables32 -A OUTPUT -d de:ad:be:ef:01:02" fail on 64 bit kernel.
    
    Fixes: b71812168571fa ("netfilter: ebtables: CONFIG_COMPAT: don't trust userland offsets")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bdcced41936b054470639c6a76ae033df1074e3
Author: Gregory CLEMENT <gregory.clement@bootlin.com>
Date:   Wed Mar 7 16:40:10 2018 +0100

    dmaengine: mv_xor_v2: Fix clock resource by adding a register clock
    
    [ Upstream commit 3cd2c313f1d618f92d1294addc6c685c17065761 ]
    
    On the CP110 components which are present on the Armada 7K/8K SoC we need
    to explicitly enable the clock for the registers. However it is not
    needed for the AP8xx component, that's why this clock is optional.
    
    With this patch both clock have now a name, but in order to be backward
    compatible, the name of the first clock is not used. It allows to still
    use this clock with a device tree using the old binding.
    
    Reviewed-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0238dbb33b156a36e29aa270c1493b7f04923f99
Author: Marc Zyngier <marc.zyngier@arm.com>
Date:   Fri Mar 9 15:40:50 2018 +0000

    arm64: Relax ARM_SMCCC_ARCH_WORKAROUND_1 discovery
    
    [ Upstream commit e21da1c992007594d391e7b301779cf30f438691 ]
    
    A recent update to the ARM SMCCC ARCH_WORKAROUND_1 specification
    allows firmware to return a non zero, positive value to describe
    that although the mitigation is implemented at the higher exception
    level, the CPU on which the call is made is not affected.
    
    Let's relax the check on the return value from ARCH_WORKAROUND_1
    so that we only error out if the returned value is negative.
    
    Fixes: b092201e0020 ("arm64: Add ARM_SMCCC_ARCH_WORKAROUND_1 BP hardening support")
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0becf0693e8d5a4d14ebe8650941860c2726e2e3
Author: Arvind Yadav <arvind.yadav.cs@gmail.com>
Date:   Tue Mar 6 15:40:37 2018 +0530

    xen: xenbus: use put_device() instead of kfree()
    
    [ Upstream commit 351b2bccede1cb673ec7957b35ea997ea24c8884 ]
    
    Never directly free @dev after calling device_register(), even
    if it returned an error! Always use put_device() to give up the
    reference initialized.
    
    Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9bcfd1c63ada820505690e1c41494fd179101996
Author: Parav Pandit <parav@mellanox.com>
Date:   Wed Mar 7 08:07:41 2018 +0200

    IB/core: Fix possible crash to access NULL netdev
    
    [ Upstream commit bb7f8f199c354c4cf155b1d6d55f86eaaed7fa5a ]
    
    resolved_dev returned might be NULL as ifindex is transient number.
    Ignoring NULL check of resolved_dev might crash the kernel.
    Therefore perform NULL check before accessing resolved_dev.
    
    Additionally rdma_resolve_ip_route() invokes addr_resolve() which
    performs check and address translation for loopback ifindex.
    Therefore, checking it again in rdma_resolve_ip_route() is not helpful.
    Therefore, the code is simplified to avoid IFF_LOOPBACK check.
    
    Fixes: 200298326b27 ("IB/core: Validate route when we init ah")
    Reviewed-by: Daniel Jurgens <danielj@mellanox.com>
    Signed-off-by: Parav Pandit <parav@mellanox.com>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57f1033e92781c2ebf242f71ab22c1fe1ae63359
Author: Jeremy Linton <jeremy.linton@arm.com>
Date:   Tue Mar 6 09:00:06 2018 -0600

    net: smsc911x: Fix unload crash when link is up
    
    [ Upstream commit e06513d78d54e6c7026c9043a39e2c01ee25bdbe ]
    
    The smsc911x driver will crash if it is rmmod'ed while the netdev
    is up like:
    
    Call trace:
      phy_detach+0x94/0x150
      phy_disconnect+0x40/0x50
      smsc911x_stop+0x104/0x128 [smsc911x]
      __dev_close_many+0xb4/0x138
      dev_close_many+0xbc/0x190
      rollback_registered_many+0x140/0x460
      rollback_registered+0x68/0xb0
      unregister_netdevice_queue+0x100/0x118
      unregister_netdev+0x28/0x38
      smsc911x_drv_remove+0x58/0x130 [smsc911x]
      platform_drv_remove+0x30/0x50
      device_release_driver_internal+0x15c/0x1f8
      driver_detach+0x54/0x98
      bus_remove_driver+0x64/0xe8
      driver_unregister+0x34/0x60
      platform_driver_unregister+0x20/0x30
      smsc911x_cleanup_module+0x14/0xbca8 [smsc911x]
      SyS_delete_module+0x1e8/0x238
      __sys_trace_return+0x0/0x4
    
    This is caused by the mdiobus being unregistered/free'd
    and the code in phy_detach() attempting to manipulate mdio
    related structures from unregister_netdev() calling close()
    
    To fix this, we delay the mdiobus teardown until after
    the netdev is deregistered.
    
    Reported-by: Matt Sealey <matt.sealey@arm.com>
    Signed-off-by: Jeremy Linton <jeremy.linton@arm.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae19aaa6fc07011c43ac6d9d9e013166c51404c3
Author: Hemanth Puranik <hpuranik@codeaurora.org>
Date:   Tue Mar 6 08:18:06 2018 +0530

    net: qcom/emac: Use proper free methods during TX
    
    [ Upstream commit cc5db3150e87fe7f7e947bf333b6c1c97f848ecb ]
    
    This patch fixes the warning messages/call traces seen if DMA debug is
    enabled, In case of fragmented skb's memory was allocated using
    dma_map_page but freed using dma_unmap_single. This patch modifies buffer
    allocations in TX path to use dma_map_page in all the places and
    dma_unmap_page while freeing the buffers.
    
    Signed-off-by: Hemanth Puranik <hpuranik@codeaurora.org>
    Acked-by: Timur Tabi <timur@codeaurora.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 65518c6e641679cc149bd1f549591be27bcc3cd9
Author: Denis Kirjanov <kda@linux-powerpc.org>
Date:   Sun Mar 4 21:48:17 2018 +0300

    fsl/fman: avoid sleeping in atomic context while adding an address
    
    [ Upstream commit 803fafbe0cd522fa6b9e41ca3b96cfb2e2a2222d ]
    
    __dev_mc_add grabs an adress spinlock so use
    atomic context in kmalloc.
    
    / # ifconfig eth0 inet 192.168.0.111
    [   89.331622] BUG: sleeping function called from invalid context at mm/slab.h:420
    [   89.339002] in_atomic(): 1, irqs_disabled(): 0, pid: 1035, name: ifconfig
    [   89.345799] 2 locks held by ifconfig/1035:
    [   89.349908]  #0:  (rtnl_mutex){+.+.}, at: [<(ptrval)>] devinet_ioctl+0xc0/0x8a0
    [   89.357258]  #1:  (_xmit_ETHER){+...}, at: [<(ptrval)>] __dev_mc_add+0x28/0x80
    [   89.364520] CPU: 1 PID: 1035 Comm: ifconfig Not tainted 4.16.0-rc3-dirty #8
    [   89.371464] Call Trace:
    [   89.373908] [e959db60] [c066f948] dump_stack+0xa4/0xfc (unreliable)
    [   89.380177] [e959db80] [c00671d8] ___might_sleep+0x248/0x280
    [   89.385833] [e959dba0] [c01aec34] kmem_cache_alloc_trace+0x174/0x320
    [   89.392179] [e959dbd0] [c04ab920] dtsec_add_hash_mac_address+0x130/0x240
    [   89.398874] [e959dc00] [c04a9d74] set_multi+0x174/0x1b0
    [   89.404093] [e959dc30] [c04afb68] dpaa_set_rx_mode+0x68/0xe0
    [   89.409745] [e959dc40] [c057baf8] __dev_mc_add+0x58/0x80
    [   89.415052] [e959dc60] [c060fd64] igmp_group_added+0x164/0x190
    [   89.420878] [e959dca0] [c060ffa8] ip_mc_inc_group+0x218/0x460
    [   89.426617] [e959dce0] [c06120fc] ip_mc_up+0x3c/0x190
    [   89.431662] [e959dd10] [c0607270] inetdev_event+0x250/0x620
    [   89.437227] [e959dd50] [c005f190] notifier_call_chain+0x80/0xf0
    [   89.443138] [e959dd80] [c0573a74] __dev_notify_flags+0x54/0xf0
    [   89.448964] [e959dda0] [c05743f8] dev_change_flags+0x48/0x60
    [   89.454615] [e959ddc0] [c0606744] devinet_ioctl+0x544/0x8a0
    [   89.460180] [e959de10] [c060987c] inet_ioctl+0x9c/0x1f0
    [   89.465400] [e959de80] [c05479a8] sock_ioctl+0x168/0x460
    [   89.470708] [e959ded0] [c01cf3ec] do_vfs_ioctl+0xac/0x8c0
    [   89.476099] [e959df20] [c01cfc40] SyS_ioctl+0x40/0xc0
    [   89.481147] [e959df40] [c0011318] ret_from_syscall+0x0/0x3c
    [   89.486715] --- interrupt: c01 at 0x1006943c
    [   89.486715]     LR = 0x100c45ec
    
    Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>
    Acked-by: Madalin Bucur <madalin.bucur@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05b4268070b14dbd77ac6f5986b77a80a458fffa
Author: Peter Malone <peter.malone@gmail.com>
Date:   Wed Mar 7 14:00:34 2018 +0100

    fbdev: Fixing arbitrary kernel leak in case FBIOGETCMAP_SPARC in sbusfb_ioctl_helper().
    
    [ Upstream commit 250c6c49e3b68756b14983c076183568636e2bde ]
    
    Fixing arbitrary kernel leak in case FBIOGETCMAP_SPARC in
    sbusfb_ioctl_helper().
    
    'index' is defined as an int in sbusfb_ioctl_helper().
    We retrieve this from the user:
    if (get_user(index, &c->index) ||
        __get_user(count, &c->count) ||
        __get_user(ured, &c->red) ||
        __get_user(ugreen, &c->green) ||
        __get_user(ublue, &c->blue))
           return -EFAULT;
    
    and then we use 'index' in the following way:
    red = cmap->red[index + i] >> 8;
    green = cmap->green[index + i] >> 8;
    blue = cmap->blue[index + i] >> 8;
    
    This is a classic information leak vulnerability. 'index' should be
    an unsigned int, given its usage above.
    
    This patch is straight-forward; it changes 'index' to unsigned int
    in two switch-cases: FBIOGETCMAP_SPARC && FBIOPUTCMAP_SPARC.
    
    This patch fixes CVE-2018-6412.
    
    Signed-off-by: Peter Malone <peter.malone@gmail.com>
    Acked-by: Mathieu Malaterre <malat@debian.org>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2d48e0161b54be303b8023fd85b4c95ac8b83ca
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Mar 6 13:00:31 2018 +0300

    IB/mlx5: Fix an error code in __mlx5_ib_modify_qp()
    
    [ Upstream commit 5d414b178e950ce9685c253994cc730893d5d887 ]
    
    "err" is either zero or possibly uninitialized here.  It should be
    -EINVAL.
    
    Fixes: 427c1e7bcd7e ("{IB, net}/mlx5: Move the modify QP operation table to mlx5_ib")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Leon Romanovsky <leonro@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6ffc778ca3fb5295eb2744c2288e29a29729e34
Author: Jack M <jackm@dev.mellanox.co.il>
Date:   Mon Mar 5 20:09:46 2018 +0200

    IB/mlx4: Include GID type when deleting GIDs from HW table under RoCE
    
    [ Upstream commit a18177925c252da7801149abe217c05b80884798 ]
    
    The commit cited below added a gid_type field (RoCEv1 or RoCEv2)
    to GID properties.
    
    When adding GIDs, this gid_type field was copied over to the
    hardware gid table. However, when deleting GIDs, the gid_type field
    was not copied over to the hardware gid table.
    
    As a result, when running RoCEv2, all RoCEv2 gids in the
    hardware gid table were set to type RoCEv1 when any gid was deleted.
    
    This problem would persist until the next gid was added (which would again
    restore the gid_type field for all the gids in the hardware gid table).
    
    Fix this by copying over the gid_type field to the hardware gid table
    when deleting gids, so that the gid_type of all remaining gids is
    preserved when a gid is deleted.
    
    Fixes: b699a859d17b ("IB/mlx4: Add gid_type to GID properties")
    Reviewed-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b4a65a7d035fc4bcc146f4766e0a862f3aabca3
Author: Jack Morgenstein <jackm@dev.mellanox.co.il>
Date:   Mon Mar 5 20:09:45 2018 +0200

    IB/mlx4: Fix corruption of RoCEv2 IPv4 GIDs
    
    [ Upstream commit 0077416a3d529baccbe07ab3242e8db541cfadf6 ]
    
    When using IPv4 addresses in RoCEv2, the GID format for the mapped
    IPv4 address should be: ::ffff:<4-byte IPv4 address>.
    
    In the cited commit, IPv4 mapped IPV6 addresses had the 3 upper dwords
    zeroed out by memset, which resulted in deleting the ffff field.
    
    However, since procedure ipv6_addr_v4mapped() already verifies that the
    gid has format ::ffff:<ipv4 address>, no change is needed for the gid,
    and the memset can simply be removed.
    
    Fixes: 7e57b85c444c ("IB/mlx4: Add support for setting RoCEv2 gids in hardware")
    Reviewed-by: Moni Shoua <monis@mellanox.com>
    Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Leon Romanovsky <leon@kernel.org>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fccbe38f3933a2226a533cb46bb91bc6b6064f46
Author: Kalderon, Michal <Michal.Kalderon@cavium.com>
Date:   Mon Mar 5 10:50:11 2018 +0200

    RDMA/qedr: Fix iWARP write and send with immediate
    
    [ Upstream commit 551e1c67b4207455375a2e7a285dea1c7e8fc361 ]
    
    iWARP does not support RDMA WRITE or SEND with immediate data.
    Driver should check this before submitting to FW and return an
    immediate error
    
    Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c5f3d1013eaf42cf20d197884364a7f62f59bdf
Author: Kalderon, Michal <Michal.Kalderon@cavium.com>
Date:   Mon Mar 5 10:50:10 2018 +0200

    RDMA/qedr: Fix kernel panic when running fio over NFSoRDMA
    
    [ Upstream commit e3fd112cbf21d049faf64ba1471d72b93c22109a ]
    
    Race in qedr_poll_cq, lastest_cqe wasn't protected by lock,
    leading to a case where two context's accessing poll_cq at
    the same time lead to one of them having a pointer to an old
    latest_cqe and reading an invalid cqe element
    
    Signed-off-by: Amit Radzi <Amit.Radzi@cavium.com>
    Signed-off-by: Michal Kalderon <Michal.Kalderon@cavium.com>
    Signed-off-by: Ariel Elior <Ariel.Elior@cavium.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b79a8597b0121263a839be1ebec873e32bd169ed
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Mon Jan 22 09:21:37 2018 -0800

    ia64/err-inject: Use get_user_pages_fast()
    
    [ Upstream commit 69c907022a7d9325cdc5c9dd064571e445df9a47 ]
    
    At the point of sysfs callback, the call to gup is
    done without mmap_sem (or any lock for that matter).
    This is racy. As such, use the get_user_pages_fast()
    alternative and safely avoid taking the lock, if possible.
    
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a47047e2b40abefe815313279175859590565c04
Author: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>
Date:   Fri Jan 26 11:24:12 2018 +0100

    e1000e: allocate ring descriptors with dma_zalloc_coherent
    
    [ Upstream commit aea3fca005fb45f80869f2e8d56fd4e64c1d1fdb ]
    
    Descriptor rings were not initialized at zero when allocated
    When area contained garbage data, it caused skb_over_panic in
    e1000_clean_rx_irq (if data had E1000_RXD_STAT_DD bit set)
    
    This patch makes use of dma_zalloc_coherent to make sure the
    ring is memset at 0 to prevent the area from containing garbage.
    
    Following is the signature of the panic:
    IODDR0@0.0: skbuff: skb_over_panic: text:80407b20 len:64010 put:64010 head:ab46d800 data:ab46d842 tail:0xab47d24c end:0xab46df40 dev:eth0
    IODDR0@0.0: BUG: failure at net/core/skbuff.c:105/skb_panic()!
    IODDR0@0.0: Kernel panic - not syncing: BUG!
    IODDR0@0.0:
    IODDR0@0.0: Process swapper/0 (pid: 0, threadinfo=81728000, task=8173cc00 ,cpu: 0)
    IODDR0@0.0: SP = <815a1c0c>
    IODDR0@0.0: Stack:      00000001
    IODDR0@0.0: b2d89800 815e33ac
    IODDR0@0.0: ea73c040 00000001
    IODDR0@0.0: 60040003 0000fa0a
    IODDR0@0.0: 00000002
    IODDR0@0.0:
    IODDR0@0.0: 804540c0 815a1c70
    IODDR0@0.0: b2744000 602ac070
    IODDR0@0.0: 815a1c44 b2d89800
    IODDR0@0.0: 8173cc00 815a1c08
    IODDR0@0.0:
    IODDR0@0.0:     00000006
    IODDR0@0.0: 815a1b50 00000000
    IODDR0@0.0: 80079434 00000001
    IODDR0@0.0: ab46df40 b2744000
    IODDR0@0.0: b2d89800
    IODDR0@0.0:
    IODDR0@0.0: 0000fa0a 8045745c
    IODDR0@0.0: 815a1c88 0000fa0a
    IODDR0@0.0: 80407b20 b2789f80
    IODDR0@0.0: 00000005 80407b20
    IODDR0@0.0:
    IODDR0@0.0:
    IODDR0@0.0: Call Trace:
    IODDR0@0.0: [<804540bc>] skb_panic+0xa4/0xa8
    IODDR0@0.0: [<80079430>] console_unlock+0x2f8/0x6d0
    IODDR0@0.0: [<80457458>] skb_put+0xa0/0xc0
    IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
    IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
    IODDR0@0.0: [<804079c8>] e1000_clean_rx_irq+0x188/0x3e8
    IODDR0@0.0: [<80407b1c>] e1000_clean_rx_irq+0x2dc/0x3e8
    IODDR0@0.0: [<80468b48>] __dev_kfree_skb_any+0x88/0xa8
    IODDR0@0.0: [<804101ac>] e1000e_poll+0x94/0x288
    IODDR0@0.0: [<8046e9d4>] net_rx_action+0x19c/0x4e8
    IODDR0@0.0:   ...
    IODDR0@0.0: Maximum depth to print reached. Use kstack=<maximum_depth_to_print> To specify a custom value (where 0 means to display the full backtrace)
    IODDR0@0.0: ---[ end Kernel panic - not syncing: BUG!
    
    Signed-off-by: Pierre-Yves Kerbrat <pkerbrat@kalray.eu>
    Signed-off-by: Marius Gligor <mgligor@kalray.eu>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Reviewed-by: Alexander Duyck <alexander.h.duyck@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36dd98b0e72da1e4ba4ab7d6b11151400fc7ae6d
Author: Benjamin Poirier <bpoirier@suse.com>
Date:   Tue Feb 20 15:12:00 2018 +0900

    e1000e: Fix check_for_link return value with autoneg off
    
    [ Upstream commit 4e7dc08e57c95673d2edaba8983c3de4dd1f65f5 ]
    
    When autoneg is off, the .check_for_link callback functions clear the
    get_link_status flag and systematically return a "pseudo-error". This means
    that the link is not detected as up until the next execution of the
    e1000_watchdog_task() 2 seconds later.
    
    Fixes: 19110cfbb34d ("e1000e: Separate signaling for link check/link up")
    Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
    Acked-by: Sasha Neftin <sasha.neftin@intel.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 585f1ef43c1c0736e37190609140cd7dc4bd775f
Author: Linus Lüssing <linus.luessing@c0d3.blue>
Date:   Sun Mar 4 13:08:17 2018 +0100

    batman-adv: Fix multicast packet loss with a single WANT_ALL_IPV4/6 flag
    
    [ Upstream commit 74c12c630fe310eb7fcae1b292257d47781fff0a ]
    
    As the kernel doc describes too the code is supposed to skip adding
    multicast TT entries if both the WANT_ALL_IPV4 and WANT_ALL_IPV6 flags
    are present.
    
    Unfortunately, the current code even skips adding multicast TT entries
    if only either the WANT_ALL_IPV4 or WANT_ALL_IPV6 is present.
    
    This could lead to IPv6 multicast packet loss if only an IGMP but not an
    MLD querier is present for instance or vice versa.
    
    Fixes: 687937ab3489 ("batman-adv: Add multicast optimization support for bridged setups")
    Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25f9cea4300a0c3679e561fdea65c9de42d3768d
Author: Jayachandran C <jnair@caviumnetworks.com>
Date:   Wed Feb 28 02:52:20 2018 -0800

    watchdog: sbsa: use 32-bit read for WCV
    
    [ Upstream commit 93ac3deb7c220cbcec032a967220a1f109d58431 ]
    
    According to SBSA spec v3.1 section 5.3:
      All registers are 32 bits in size and should be accessed using
      32-bit reads and writes. If an access size other than 32 bits
      is used then the results are IMPLEMENTATION DEFINED.
      [...]
      The Generic Watchdog is little-endian
    
    The current code uses readq to read the watchdog compare register
    which does a 64-bit access. This fails on ThunderX2 which does not
    implement 64-bit access to this register.
    
    Fix this by using lo_hi_readq() that does two 32-bit reads.
    
    Signed-off-by: Jayachandran C <jnair@caviumnetworks.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aecd123f6a04e2f09859663cd8c33b8d72f778a9
Author: Igor Pylypiv <igor.pylypiv@gmail.com>
Date:   Wed Feb 28 00:59:12 2018 -0800

    watchdog: f71808e_wdt: Fix magic close handling
    
    [ Upstream commit 7bd3e7b743956afbec30fb525bc3c5e22e3d475c ]
    
    Watchdog close is "expected" when any byte is 'V' not just the last one.
    Writing "V" to the device fails because the last byte is the end of string.
    
    $ echo V > /dev/watchdog
    f71808e_wdt: Unexpected close, not stopping watchdog!
    
    Signed-off-by: Igor Pylypiv <igor.pylypiv@gmail.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 57a85742bb00d5ab4ef174c59d35d122fe804188
Author: Sara Sharon <sara.sharon@intel.com>
Date:   Tue Jan 2 11:40:15 2018 +0200

    iwlwifi: mvm: fix TX of CCMP 256
    
    [ Upstream commit de04d4fbf87b769ab18c480e4f020c53e74bbdd2 ]
    
    We don't have enough room in the TX command for a CCMP 256
    key, and need to use key from table.
    
    Fixes: 3264bf032bd9 ("[BUGFIX] iwlwifi: mvm: Fix CCMP IV setting")
    Signed-off-by: Sara Sharon <sara.sharon@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec12bb57cd0db96babc0ad5dbdf068f39643cfad
Author: Paul Mackerras <paulus@ozlabs.org>
Date:   Fri Mar 2 15:38:04 2018 +1100

    KVM: PPC: Book3S HV: Fix VRMA initialization with 2MB or 1GB memory backing
    
    [ Upstream commit debd574f4195e205ba505b25e19b2b797f4bcd94 ]
    
    The current code for initializing the VRMA (virtual real memory area)
    for HPT guests requires the page size of the backing memory to be one
    of 4kB, 64kB or 16MB.  With a radix host we have the possibility that
    the backing memory page size can be 2MB or 1GB.  In these cases, if the
    guest switches to HPT mode, KVM will not initialize the VRMA and the
    guest will fail to run.
    
    In fact it is not necessary that the VRMA page size is the same as the
    backing memory page size; any VRMA page size less than or equal to the
    backing memory page size is acceptable.  Therefore we now choose the
    largest page size out of the set {4k, 64k, 16M} which is not larger
    than the backing memory page size.
    
    Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be00ce584839c058d2eeabae0e104546b4bc4ddc
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Mon Feb 26 15:22:22 2018 +1100

    selftests/powerpc: Skip the subpage_prot tests if the syscall is unavailable
    
    [ Upstream commit cd4a6f3ab4d80cb919d15897eb3cbc85c2009d4b ]
    
    The subpage_prot syscall is only functional when the system is using
    the Hash MMU. Since commit 5b2b80714796 ("powerpc/mm: Invalidate
    subpage_prot() system call on radix platforms") it returns ENOENT when
    the Radix MMU is active. Currently this just makes the test fail.
    
    Additionally the syscall is not available if the kernel is built with
    4K pages, or if CONFIG_PPC_SUBPAGE_PROT=n, in which case it returns
    ENOSYS because the syscall is missing entirely.
    
    So check explicitly for ENOENT and ENOSYS and skip if we see either of
    those.
    
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b672f4bf9d2383afa048bdf64b0ac9915c672476
Author: Filipe Manana <fdmanana@suse.com>
Date:   Tue Feb 6 20:39:20 2018 +0000

    Btrfs: send, fix issuing write op when processing hole in no data mode
    
    [ Upstream commit d4dfc0f4d39475ccbbac947880b5464a74c30b99 ]
    
    When doing an incremental send of a filesystem with the no-holes feature
    enabled, we end up issuing a write operation when using the no data mode
    send flag, instead of issuing an update extent operation. Fix this by
    issuing the update extent operation instead.
    
    Trivial reproducer:
    
      $ mkfs.btrfs -f -O no-holes /dev/sdc
      $ mkfs.btrfs -f /dev/sdd
      $ mount /dev/sdc /mnt/sdc
      $ mount /dev/sdd /mnt/sdd
    
      $ xfs_io -f -c "pwrite -S 0xab 0 32K" /mnt/sdc/foobar
      $ btrfs subvolume snapshot -r /mnt/sdc /mnt/sdc/snap1
    
      $ xfs_io -c "fpunch 8K 8K" /mnt/sdc/foobar
      $ btrfs subvolume snapshot -r /mnt/sdc /mnt/sdc/snap2
    
      $ btrfs send /mnt/sdc/snap1 | btrfs receive /mnt/sdd
      $ btrfs send --no-data -p /mnt/sdc/snap1 /mnt/sdc/snap2 \
           | btrfs receive -vv /mnt/sdd
    
    Before this change the output of the second receive command is:
    
      receiving snapshot snap2 uuid=f6922049-8c22-e544-9ff9-fc6755918447...
      utimes
      write foobar, offset 8192, len 8192
      utimes foobar
      BTRFS_IOC_SET_RECEIVED_SUBVOL uuid=f6922049-8c22-e544-9ff9-...
    
    After this change it is:
    
      receiving snapshot snap2 uuid=564d36a3-ebc8-7343-aec9-bf6fda278e64...
      utimes
      update_extent foobar: offset=8192, len=8192
      utimes foobar
      BTRFS_IOC_SET_RECEIVED_SUBVOL uuid=564d36a3-ebc8-7343-aec9-bf6fda278e64...
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6d8ce377c6180a75ca44c62eca9fc400989296d4
Author: Giulio Benetti <giulio.benetti@micronovasrl.com>
Date:   Wed Feb 28 17:46:53 2018 +0100

    drm/sun4i: Fix dclk_set_phase
    
    [ Upstream commit e64b6afa98f3629d0c0c46233bbdbe8acdb56f06 ]
    
    Phase value is not shifted before writing.
    
    Shift left of 28 bits to fit right bits
    
    Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1519836413-35023-1-git-send-email-giulio.benetti@micronovasrl.com
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 058c84a37f60493015dd523a8931a7a3919d72ff
Author: Roger Pau Monne <roger.pau@citrix.com>
Date:   Wed Feb 28 09:19:03 2018 +0000

    xen/pirq: fix error path cleanup when binding MSIs
    
    [ Upstream commit 910f8befdf5bccf25287d9f1743e3e546bcb7ce0 ]
    
    Current cleanup in the error path of xen_bind_pirq_msi_to_irq is
    wrong. First of all there's an off-by-one in the cleanup loop, which
    can lead to unbinding wrong IRQs.
    
    Secondly IRQs not bound won't be freed, thus leaking IRQ numbers.
    
    Note that there's no need to differentiate between bound and unbound
    IRQs when freeing them, __unbind_from_irq will deal with both of them
    correctly.
    
    Fixes: 4892c9b4ada9f9 ("xen: add support for MSI message groups")
    Reported-by: Hooman Mirhadi <mirhadih@amazon.com>
    Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
    Reviewed-by: Amit Shah <aams@amazon.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0074250ea9064ddb9c0476b6bec75a4d862cc01
Author: Max Gurtovoy <maxg@mellanox.com>
Date:   Wed Jan 24 17:31:45 2018 +0200

    nvmet: fix PSDT field check in command format
    
    [ Upstream commit bffd2b61670feef18d2535e9b53364d270a1c991 ]
    
    PSDT field section according to NVM_Express-1.3:
    "This field specifies whether PRPs or SGLs are used for any data
    transfer associated with the command. PRPs shall be used for all
    Admin commands for NVMe over PCIe. SGLs shall be used for all Admin
    and I/O commands for NVMe over Fabrics. This field shall be set to
    01b for NVMe over Fabrics 1.0 implementations.
    
    Suggested-by: Idan Burstein <idanb@mellanox.com>
    Signed-off-by: Max Gurtovoy <maxg@mellanox.com>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f981ef66dd3dfdeaf35da9a4310d5d7f8549a22d
Author: Joey Pabalinas <joeypabalinas@gmail.com>
Date:   Tue Feb 27 22:05:53 2018 -1000

    net/tcp/illinois: replace broken algorithm reference link
    
    [ Upstream commit ecc832758a654e375924ebf06a4ac971acb5ce60 ]
    
    The link to the pdf containing the algorithm description is now a
    dead link; it seems http://www.ifp.illinois.edu/~srikant/ has been
    moved to https://sites.google.com/a/illinois.edu/srikant/ and none of
    the original papers can be found there...
    
    I have replaced it with the only working copy I was able to find.
    
    n.b. there is also a copy available at:
    
    http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.296.6350&rep=rep1&type=pdf
    
    However, this seems to only be a *cached* version, so I am unsure
    exactly how reliable that link can be expected to remain over time
    and have decided against using that one.
    
    Signed-off-by: Joey Pabalinas <joeypabalinas@gmail.com>
    
     net/ipv4/tcp_illinois.c |    2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6a2f2824eec75251cdedd9db2f10a224b018188f
Author: Claudiu Manoil <claudiu.manoil@nxp.com>
Date:   Tue Feb 27 17:33:10 2018 +0200

    gianfar: Fix Rx byte accounting for ndev stats
    
    [ Upstream commit 590399ddf9561f2ed0839311c8ae1be21597ba68 ]
    
    Don't include in the Rx bytecount of the packet sent up the stack:
    the FCB (frame control block), and the padding bytes inserted by
    the controller into the frame payload, nor the FCS. All these are
    being pulled out of the skb by gfar_process_frame().
    This issue is old, likely from the driver's beginnings, however
    it was amplified by recent:
    commit d903ec77118c ("gianfar: simplify FCS handling and fix memory leak")
    which basically added the FCS to the Rx bytecount, and so brought
    this to my attention.
    
    Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0ce44186a8810c80fefe5d9fb5277f692971c39
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Fri Feb 23 12:55:59 2018 -0800

    powerpc/boot: Fix random libfdt related build errors
    
    [ Upstream commit 64c3f648c25d108f346fdc96c15180c6b7d250e9 ]
    
    Once in a while I see build errors similar to the following
    when building images from a clean tree.
    
      Building powerpc:virtex-ml507:44x/virtex5_defconfig ... failed
      ------------
      Error log:
      arch/powerpc/boot/treeboot-akebono.c:37:20: fatal error:
            libfdt.h: No such file or directory
    
      Building powerpc:bamboo:smpdev:44x/bamboo_defconfig ... failed
      ------------
      Error log:
      arch/powerpc/boot/treeboot-akebono.c:37:20: fatal error:
            libfdt.h: No such file or directory
    
      arch/powerpc/boot/treeboot-currituck.c:35:20: fatal error:
           libfdt.h: No such file or directory
    
    Rebuilds will succeed.
    
    Turns out that several source files in arch/powerpc/boot/ include
    libfdt.h, but Makefile dependencies are incomplete. Let's fix that.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f38309df20f729073e3fdda3676a108eec76d4ef
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Mon Feb 26 17:00:35 2018 -0800

    ARM: dts: NSP: Fix amount of RAM on BCM958625HR
    
    [ Upstream commit 0a5aff64f20d92c5a6e9aeed7b5950b0b817bcd9 ]
    
    Jon attempted to fix the amount of RAM on the BCM958625HR in commit
    c53beb47f621 ("ARM: dts: NSP: Correct RAM amount for BCM958625HR board")
    but it seems like we tripped over some poorly documented schematics.
    
    The top-level page of the schematics says the board has 2GB, but when
    you end-up scrolling to page 6, you see two chips of 4GBit (512MB) but
    what the bootloader really initializes only 512MB, any attempt to use
    more than that results in data aborts. Fix this again back to 512MB.
    
    Fixes: c53beb47f621 ("ARM: dts: NSP: Correct RAM amount for BCM958625HR board")
    Acked-by: Jon Mason <jon.mason@broadcom.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3588d9aed3ad11a3881f062647a482dd47910414
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Feb 27 19:19:41 2018 +0800

    sit: fix IFLA_MTU ignored on NEWLINK
    
    [ Upstream commit 2b3957c34b6d7f03544b12ebbf875eee430745db ]
    
    Commit 128bb975dc3c ("ip6_gre: init dev->mtu and dev->hard_header_len
    correctly") fixed IFLA_MTU ignored on NEWLINK for ip6_gre. The same
    mtu fix is also needed for sit.
    
    Note that dev->hard_header_len setting for sit works fine, no need to
    fix it. sit is actually ipv4 tunnel, it can't call ip6_tnl_change_mtu
    to set mtu.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 11a670a04ecbc3d17135769ce64b21f96d6266f1
Author: Xin Long <lucien.xin@gmail.com>
Date:   Tue Feb 27 19:19:40 2018 +0800

    ip6_tunnel: fix IFLA_MTU ignored on NEWLINK
    
    [ Upstream commit a6aa80446234ec0ad38eecdb8efc59e91daae565 ]
    
    Commit 128bb975dc3c ("ip6_gre: init dev->mtu and dev->hard_header_len
    correctly") fixed IFLA_MTU ignored on NEWLINK for ip6_gre. The same
    mtu fix is also needed for ip6_tunnel.
    
    Note that dev->hard_header_len setting for ip6_tunnel works fine,
    no need to fix it.
    
    Reported-by: Jianlin Shi <jishi@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9822c2c24f948304692ca576ffe73579a8a58ae
Author: Tang Junhui <tang.junhui@zte.com.cn>
Date:   Tue Feb 27 09:49:30 2018 -0800

    bcache: fix kcrashes with fio in RAID5 backend dev
    
    [ Upstream commit 60eb34ec5526e264c2bbaea4f7512d714d791caf ]
    
    Kernel crashed when run fio in a RAID5 backend bcache device, the call
    trace is bellow:
    [  440.012034] kernel BUG at block/blk-ioc.c:146!
    [  440.012696] invalid opcode: 0000 [#1] SMP NOPTI
    [  440.026537] CPU: 2 PID: 2205 Comm: md127_raid5 Not tainted 4.15.0 #8
    [  440.027441] Hardware name: HP ProLiant MicroServer Gen8, BIOS J06 07/16
    /2015
    [  440.028615] RIP: 0010:put_io_context+0x8b/0x90
    [  440.029246] RSP: 0018:ffffa8c882b43af8 EFLAGS: 00010246
    [  440.029990] RAX: 0000000000000000 RBX: ffffa8c88294fca0 RCX: 0000000000
    0f4240
    [  440.031006] RDX: 0000000000000004 RSI: 0000000000000286 RDI: ffffa8c882
    94fca0
    [  440.032030] RBP: ffffa8c882b43b10 R08: 0000000000000003 R09: ffff949cb8
    0c1700
    [  440.033206] R10: 0000000000000104 R11: 000000000000b71c R12: 00000000000
    01000
    [  440.034222] R13: 0000000000000000 R14: ffff949cad84db70 R15: ffff949cb11
    bd1e0
    [  440.035239] FS:  0000000000000000(0000) GS:ffff949cba280000(0000) knlGS:
    0000000000000000
    [  440.060190] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  440.084967] CR2: 00007ff0493ef000 CR3: 00000002f1e0a002 CR4: 00000000001
    606e0
    [  440.110498] Call Trace:
    [  440.135443]  bio_disassociate_task+0x1b/0x60
    [  440.160355]  bio_free+0x1b/0x60
    [  440.184666]  bio_put+0x23/0x30
    [  440.208272]  search_free+0x23/0x40 [bcache]
    [  440.231448]  cached_dev_write_complete+0x31/0x70 [bcache]
    [  440.254468]  closure_put+0xb6/0xd0 [bcache]
    [  440.277087]  request_endio+0x30/0x40 [bcache]
    [  440.298703]  bio_endio+0xa1/0x120
    [  440.319644]  handle_stripe+0x418/0x2270 [raid456]
    [  440.340614]  ? load_balance+0x17b/0x9c0
    [  440.360506]  handle_active_stripes.isra.58+0x387/0x5a0 [raid456]
    [  440.380675]  ? __release_stripe+0x15/0x20 [raid456]
    [  440.400132]  raid5d+0x3ed/0x5d0 [raid456]
    [  440.419193]  ? schedule+0x36/0x80
    [  440.437932]  ? schedule_timeout+0x1d2/0x2f0
    [  440.456136]  md_thread+0x122/0x150
    [  440.473687]  ? wait_woken+0x80/0x80
    [  440.491411]  kthread+0x102/0x140
    [  440.508636]  ? find_pers+0x70/0x70
    [  440.524927]  ? kthread_associate_blkcg+0xa0/0xa0
    [  440.541791]  ret_from_fork+0x35/0x40
    [  440.558020] Code: c2 48 00 5b 41 5c 41 5d 5d c3 48 89 c6 4c 89 e7 e8 bb c2
    48 00 48 8b 3d bc 36 4b 01 48 89 de e8 7c f7 e0 ff 5b 41 5c 41 5d 5d c3 <0f> 0b
    0f 1f 00 0f 1f 44 00 00 55 48 8d 47 b8 48 89 e5 41 57 41
    [  440.610020] RIP: put_io_context+0x8b/0x90 RSP: ffffa8c882b43af8
    [  440.628575] ---[ end trace a1fd79d85643a73e ]--
    
    All the crash issue happened when a bypass IO coming, in such scenario
    s->iop.bio is pointed to the s->orig_bio. In search_free(), it finishes the
    s->orig_bio by calling bio_complete(), and after that, s->iop.bio became
    invalid, then kernel would crash when calling bio_put(). Maybe its upper
    layer's faulty, since bio should not be freed before we calling bio_put(),
    but we'd better calling bio_put() first before calling bio_complete() to
    notify upper layer ending this bio.
    
    This patch moves bio_complete() under bio_put() to avoid kernel crash.
    
    [mlyle: fixed commit subject for character limits]
    
    Reported-by: Matthias Ferdinand <bcache@mfedv.net>
    Tested-by: Matthias Ferdinand <bcache@mfedv.net>
    Signed-off-by: Tang Junhui <tang.junhui@zte.com.cn>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 12700760a014f85202c519b43744dc3ff26d6271
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Wed Feb 14 18:40:12 2018 +0900

    dmaengine: rcar-dmac: fix max_chunk_size for R-Car Gen3
    
    [ Upstream commit d716d9b702bb759dd6fb50804f10a174bd156d71 ]
    
    According to R-Car Gen3 Rev.0.80 manual, the DMATCR can be set to
    16,777,215 as maximum. So, this patch fixes the max_chunk_size for
    safety on all of SoCs. Otherwise, a system may hang if the DMATCR
    is set to 0 on R-Car Gen3.
    
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Vinod Koul <vinod.koul@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc3d7001d88b6b3ea4092562f346d1520d8cb4d7
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Feb 21 11:50:03 2018 +1000

    virtio-gpu: fix ioctl and expose the fixed status to userspace.
    
    [ Upstream commit 9a191b114906457c4b2494c474f58ae4142d4e67 ]
    
    This exposes to mesa that it can use the fixed ioctl for querying
    later cap sets, cap set 1 is forever frozen in time.
    
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/20180221015003.22884-1-airlied@gmail.com
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 14a61b6f2d3fbf941128fab5d6e20519d8e5309e
Author: Eric Dumazet <edumazet@google.com>
Date:   Sun Feb 25 19:12:10 2018 -0800

    r8152: fix tx packets accounting
    
    [ Upstream commit 4c27bf3c5b7434ccb9ab962301da661c26b467a4 ]
    
    r8152 driver handles TSO packets (limited to ~16KB) quite well,
    but pretends each TSO logical packet is a single packet on the wire.
    
    There is also some error since headers are accounted once, but
    error rate is small enough that we do not care.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9df8e11bbdeba9fe792b76658f5edcfddbb30882
Author: Ramon Fried <rfried@codeaurora.org>
Date:   Sun Feb 25 09:49:37 2018 +0200

    qrtr: add MODULE_ALIAS macro to smd
    
    [ Upstream commit c77f5fbbefc04612755117775e8555c2a7006cac ]
    
    Added MODULE_ALIAS("rpmsg:IPCRTR") to ensure qrtr-smd and qrtr will load
    when IPCRTR channel is detected.
    
    Signed-off-by: Ramon Fried <rfried@codeaurora.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 790231395ed6a5360fc0dd0f41ec4e3fdfc1896c
Author: David S. Miller <davem@davemloft.net>
Date:   Mon Feb 26 13:41:47 2018 -0500

    ARM: orion5x: Revert commit 4904dbda41c8.
    
    [ Upstream commit 13a55372b64e00e564a08d785ca87bd9d454ba30 ]
    
    It is not valid for orion5x to use mac_pton().
    
    First of all, the orion5x buffer is not NULL terminated.  mac_pton()
    has no business operating on non-NULL terminated buffers because
    only the caller can know that this is valid and in what manner it
    is ok to parse this NULL'less buffer.
    
    Second of all, orion5x operates on an __iomem pointer, which cannot
    be dereferenced using normal C pointer operations.  Accesses to
    such areas much be performed with the proper iomem accessors.
    
    Fixes: 4904dbda41c8 ("ARM: orion5x: use mac_pton() helper")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 087d268b76b2adedb9b39e101ebf4097c3b42730
Author: Chengguang Xu <cgxu519@icloud.com>
Date:   Fri Feb 9 20:40:59 2018 +0800

    ceph: fix dentry leak when failing to init debugfs
    
    [ Upstream commit 18106734b512664a8541026519ce4b862498b6c3 ]
    
    When failing from ceph_fs_debugfs_init() in ceph_real_mount(),
    there is lack of dput of root_dentry and it causes slab errors,
    so change the calling order of ceph_fs_debugfs_init() and
    open_root_dentry() and do some cleanups to avoid this issue.
    
    Signed-off-by: Chengguang Xu <cgxu519@icloud.com>
    Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a25a9d63c478b6893cab930ea1fd07c9ec0a261
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon Feb 26 11:36:14 2018 +0000

    clocksource/drivers/fsl_ftm_timer: Fix error return checking
    
    [ Upstream commit f287eb9013ccf199cbfa4eabd80c36fedfc15a73 ]
    
    The error checks on freq for a negative error return always fails because
    freq is unsigned and can never be negative. Fix this by making freq a
    signed long.
    
    Detected with Coccinelle:
    drivers/clocksource/fsl_ftm_timer.c:287:5-9: WARNING: Unsigned expression
    compared with zero: freq <= 0
    drivers/clocksource/fsl_ftm_timer.c:291:5-9: WARNING: Unsigned expression
    compared with zero: freq <= 0
    
    Fixes: 2529c3a33079 ("clocksource: Add Freescale FlexTimer Module (FTM) timer support")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Cc: kernel-janitors@vger.kernel.org
    Link: https://lkml.kernel.org/r/20180226113614.3092-1-colin.king@canonical.com
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23f9fb0f53b3add8669f093d58fe193846154a87
Author: Jianchao Wang <jianchao.w.wang@oracle.com>
Date:   Thu Feb 15 19:13:41 2018 +0800

    nvme-pci: Fix nvme queue cleanup if IRQ setup fails
    
    [ Upstream commit f25a2dfc20e3a3ed8fe6618c331799dd7bd01190 ]
    
    This patch fixes nvme queue cleanup if requesting an IRQ handler for
    the queue's vector fails. It does this by resetting the cq_vector to
    the uninitialized value of -1 so it is ignored for a controller reset.
    
    Signed-off-by: Jianchao Wang <jianchao.w.wang@oracle.com>
    [changelog updates, removed misc whitespace changes]
    Signed-off-by: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fef6509a9d273a6a2e3e954830c5a296b890d342
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Feb 24 12:03:37 2018 +0100

    batman-adv: Fix netlink dumping of BLA backbones
    
    [ Upstream commit fce672db548ff19e76a08a32a829544617229bc2 ]
    
    The function batadv_bla_backbone_dump_bucket must be able to handle
    non-complete dumps of a single bucket. It tries to do that by saving the
    latest dumped index in *idx_skip to inform the caller about the current
    state.
    
    But the caller only assumes that buckets were not completely dumped when
    the return code is non-zero. This function must therefore also return a
    non-zero index when the dumping of an entry failed. Otherwise the caller
    will just skip all remaining buckets.
    
    And the function must also reset *idx_skip back to zero when it finished a
    bucket. Otherwise it will skip the same number of entries in the next
    bucket as the previous one had.
    
    Fixes: ea4152e11716 ("batman-adv: add backbone table netlink support")
    Reported-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50b1c6b227433eea392cc8e9715e886034643850
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Feb 24 12:03:36 2018 +0100

    batman-adv: Fix netlink dumping of BLA claims
    
    [ Upstream commit b0264ecdfeab5f889b02ec54af7ca8cc1c245e2f ]
    
    The function batadv_bla_claim_dump_bucket must be able to handle
    non-complete dumps of a single bucket. It tries to do that by saving the
    latest dumped index in *idx_skip to inform the caller about the current
    state.
    
    But the caller only assumes that buckets were not completely dumped when
    the return code is non-zero. This function must therefore also return a
    non-zero index when the dumping of an entry failed. Otherwise the caller
    will just skip all remaining buckets.
    
    And the function must also reset *idx_skip back to zero when it finished a
    bucket. Otherwise it will skip the same number of entries in the next
    bucket as the previous one had.
    
    Fixes: 04f3f5bf1883 ("batman-adv: add B.A.T.M.A.N. Dump BLA claims via netlink")
    Reported-by: Linus Lüssing <linus.luessing@c0d3.blue>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d31ae952b198d038ccf6dc95cb00ebdf9127d08a
Author: Sven Eckelmann <sven.eckelmann@openmesh.com>
Date:   Mon Feb 19 14:08:53 2018 +0100

    batman-adv: Ignore invalid batadv_v_gw during netlink send
    
    [ Upstream commit 011c935fceae5252619ef730baa610c655281dda ]
    
    The function batadv_v_gw_dump stops the processing loop when
    batadv_v_gw_dump_entry returns a non-0 return code. This should only
    happen when the buffer is full. Otherwise, an empty message may be
    returned by batadv_gw_dump. This empty message will then stop the netlink
    dumping of gateway entries. At worst, not a single entry is returned to
    userspace even when plenty of possible gateways exist.
    
    Fixes: b71bb6f924fe ("batman-adv: add B.A.T.M.A.N. V bat_gw_dump implementations")
    Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 280a7b6f18fd0fd4cee2029c50a4ddf351817334
Author: Sven Eckelmann <sven.eckelmann@openmesh.com>
Date:   Mon Feb 19 14:08:52 2018 +0100

    batman-adv: Ignore invalid batadv_iv_gw during netlink send
    
    [ Upstream commit 10d570284258a30dc104c50787c5289ec49f3d23 ]
    
    The function batadv_iv_gw_dump stops the processing loop when
    batadv_iv_gw_dump_entry returns a non-0 return code. This should only
    happen when the buffer is full. Otherwise, an empty message may be
    returned by batadv_gw_dump. This empty message will then stop the netlink
    dumping of gateway entries. At worst, not a single entry is returned to
    userspace even when plenty of possible gateways exist.
    
    Fixes: efb766af06e3 ("batman-adv: add B.A.T.M.A.N. IV bat_gw_dump implementations")
    Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d505165f3787350b6268a9b11e7ab2298f83f2fc
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Feb 19 01:24:53 2018 +0100

    netfilter: ebtables: convert BUG_ONs to WARN_ONs
    
    [ Upstream commit fc6a5d0601c5ac1d02f283a46f60b87b2033e5ca ]
    
    All of these conditions are not fatal and should have
    been WARN_ONs from the get-go.
    
    Convert them to WARN_ONs and bail out.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cf517fc579bf6a2040a978e0a8385ba030e2ebc
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Tue Jan 23 10:59:50 2018 +0100

    batman-adv: invalidate checksum on fragment reassembly
    
    [ Upstream commit 3bf2a09da956b43ecfaa630a2ef9a477f991a46a ]
    
    A more sophisticated implementation could try to combine fragment checksums
    when all fragments have CHECKSUM_COMPLETE and are split at even offsets.
    For now, we just set ip_summed to CHECKSUM_NONE to avoid "hw csum failure"
    warnings in the kernel log when fragmented frames are received. In
    consequence, skb_pull_rcsum() can be replaced with skb_pull().
    
    Note that in usual setups, packets don't reach batman-adv with
    CHECKSUM_COMPLETE (I assume NICs bail out of checksumming when they see
    batadv's ethtype?), which is why the log messages do not occur on every
    system using batman-adv. I could reproduce this issue by stacking
    batman-adv on top of a VXLAN interface.
    
    Fixes: 610bfc6bc99b ("batman-adv: Receive fragmented packets and merge")
    Tested-by: Maximilian Wilhelm <max@sdn.clinic>
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6aa03f189cde8996534ca55e8b8e15c719359ed
Author: Matthias Schiffer <mschiffer@universe-factory.net>
Date:   Tue Jan 23 10:59:49 2018 +0100

    batman-adv: fix packet checksum in receive path
    
    [ Upstream commit abd6360591d3f8259f41c34e31ac4826dfe621b8 ]
    
    eth_type_trans() internally calls skb_pull(), which does not adjust the
    skb checksum; skb_postpull_rcsum() is necessary to avoid log spam of the
    form "bat0: hw csum failure" when packets with CHECKSUM_COMPLETE are
    received.
    
    Note that in usual setups, packets don't reach batman-adv with
    CHECKSUM_COMPLETE (I assume NICs bail out of checksumming when they see
    batadv's ethtype?), which is why the log messages do not occur on every
    system using batman-adv. I could reproduce this issue by stacking
    batman-adv on top of a VXLAN interface.
    
    Fixes: c6c8fea29769 ("net: Add batman-adv meshing protocol")
    Tested-by: Maximilian Wilhelm <max@sdn.clinic>
    Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b6e82d779221034848dd73e0663f3288baf2003a
Author: Yufen Yu <yuyufen@huawei.com>
Date:   Sat Feb 24 12:05:56 2018 +0800

    md/raid1: fix NULL pointer dereference
    
    [ Upstream commit 3de59bb9d551428cbdc76a9ea57883f82e350b4d ]
    
    In handle_write_finished(), if r1_bio->bios[m] != NULL, it thinks
    the corresponding conf->mirrors[m].rdev is also not NULL. But, it
    is not always true.
    
    Even if some io hold replacement rdev(i.e. rdev->nr_pending.count > 0),
    raid1_remove_disk() can also set the rdev as NULL. That means,
    bios[m] != NULL, but mirrors[m].rdev is NULL, resulting in NULL
    pointer dereference in handle_write_finished and sync_request_write.
    
    This patch can fix BUGs as follows:
    
     BUG: unable to handle kernel NULL pointer dereference at 0000000000000140
     IP: [<ffffffff815bbbbd>] raid1d+0x2bd/0xfc0
     PGD 12ab52067 PUD 12f587067 PMD 0
     Oops: 0000 [#1] SMP
     CPU: 1 PID: 2008 Comm: md3_raid1 Not tainted 4.1.44+ #130
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1.fc26 04/01/2014
     Call Trace:
      ? schedule+0x37/0x90
      ? prepare_to_wait_event+0x83/0xf0
      md_thread+0x144/0x150
      ? wake_atomic_t_function+0x70/0x70
      ? md_start_sync+0xf0/0xf0
      kthread+0xd8/0xf0
      ? kthread_worker_fn+0x160/0x160
      ret_from_fork+0x42/0x70
      ? kthread_worker_fn+0x160/0x160
    
     BUG: unable to handle kernel NULL pointer dereference at 00000000000000b8
     IP: sync_request_write+0x9e/0x980
     PGD 800000007c518067 P4D 800000007c518067 PUD 8002b067 PMD 0
     Oops: 0000 [#1] SMP PTI
     CPU: 24 PID: 2549 Comm: md3_raid1 Not tainted 4.15.0+ #118
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1.fc26 04/01/2014
     Call Trace:
      ? sched_clock+0x5/0x10
      ? sched_clock_cpu+0xc/0xb0
      ? flush_pending_writes+0x3a/0xd0
      ? pick_next_task_fair+0x4d5/0x5f0
      ? __switch_to+0xa2/0x430
      raid1d+0x65a/0x870
      ? find_pers+0x70/0x70
      ? find_pers+0x70/0x70
      ? md_thread+0x11c/0x160
      md_thread+0x11c/0x160
      ? finish_wait+0x80/0x80
      kthread+0x111/0x130
      ? kthread_create_worker_on_cpu+0x70/0x70
      ? do_syscall_64+0x6f/0x190
      ? SyS_exit_group+0x10/0x10
      ret_from_fork+0x35/0x40
    
    Reviewed-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Yufen Yu <yuyufen@huawei.com>
    Signed-off-by: Shaohua Li <sh.li@alibaba-inc.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 547f11fd132d908018109417216d23b4008a2780
Author: BingJing Chang <bingjingc@synology.com>
Date:   Thu Feb 22 13:34:46 2018 +0800

    md: fix a potential deadlock of raid5/raid10 reshape
    
    [ Upstream commit 8876391e440ba615b10eef729576e111f0315f87 ]
    
    There is a potential deadlock if mount/umount happens when
    raid5_finish_reshape() tries to grow the size of emulated disk.
    
    How the deadlock happens?
    1) The raid5 resync thread finished reshape (expanding array).
    2) The mount or umount thread holds VFS sb->s_umount lock and tries to
       write through critical data into raid5 emulated block device. So it
       waits for raid5 kernel thread handling stripes in order to finish it
       I/Os.
    3) In the routine of raid5 kernel thread, md_check_recovery() will be
       called first in order to reap the raid5 resync thread. That is,
       raid5_finish_reshape() will be called. In this function, it will try
       to update conf and call VFS revalidate_disk() to grow the raid5
       emulated block device. It will try to acquire VFS sb->s_umount lock.
    The raid5 kernel thread cannot continue, so no one can handle mount/
    umount I/Os (stripes). Once the write-through I/Os cannot be finished,
    mount/umount will not release sb->s_umount lock. The deadlock happens.
    
    The raid5 kernel thread is an emulated block device. It is responible to
    handle I/Os (stripes) from upper layers. The emulated block device
    should not request any I/Os on itself. That is, it should not call VFS
    layer functions. (If it did, it will try to acquire VFS locks to
    guarantee the I/Os sequence.) So we have the resync thread to send
    resync I/O requests and to wait for the results.
    
    For solving this potential deadlock, we can put the size growth of the
    emulated block device as the final step of reshape thread.
    
    2017/12/29:
    Thanks to Guoqing Jiang <gqjiang@suse.com>,
    we confirmed that there is the same deadlock issue in raid10. It's
    reproducible and can be fixed by this patch. For raid10.c, we can remove
    the similar code to prevent deadlock as well since they has been called
    before.
    
    Reported-by: Alex Wu <alexwu@synology.com>
    Reviewed-by: Alex Wu <alexwu@synology.com>
    Reviewed-by: Chung-Chiang Cheng <cccheng@synology.com>
    Signed-off-by: BingJing Chang <bingjingc@synology.com>
    Signed-off-by: Shaohua Li <sh.li@alibaba-inc.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 527ed41ff2776311bdae56c2472ee0a5cbb60605
Author: Will Deacon <will.deacon@arm.com>
Date:   Mon Feb 19 14:55:55 2018 +0000

    fs: dcache: Use READ_ONCE when accessing i_dir_seq
    
    [ Upstream commit 8cc07c808c9d595e81cbe5aad419b7769eb2e5c9 ]
    
    i_dir_seq is subject to concurrent modification by a cmpxchg or
    store-release operation, so ensure that the relaxed access in
    d_alloc_parallel uses READ_ONCE.
    
    Reported-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bcefedb87cf9625d33d0e53dfdc52e43744593c1
Author: Will Deacon <will.deacon@arm.com>
Date:   Mon Feb 19 14:55:54 2018 +0000

    fs: dcache: Avoid livelock between d_alloc_parallel and __d_add
    
    [ Upstream commit 015555fd4d2930bc0c86952c46ad88b3392f66e4 ]
    
    If d_alloc_parallel runs concurrently with __d_add, it is possible for
    d_alloc_parallel to continuously retry whilst i_dir_seq has been
    incremented to an odd value by __d_add:
    
    CPU0:
    __d_add
            n = start_dir_add(dir);
                    cmpxchg(&dir->i_dir_seq, n, n + 1) == n
    
    CPU1:
    d_alloc_parallel
    retry:
            seq = smp_load_acquire(&parent->d_inode->i_dir_seq) & ~1;
            hlist_bl_lock(b);
                    bit_spin_lock(0, (unsigned long *)b); // Always succeeds
    
    CPU0:
            __d_lookup_done(dentry)
                    hlist_bl_lock
                            bit_spin_lock(0, (unsigned long *)b); // Never succeeds
    
    CPU1:
            if (unlikely(parent->d_inode->i_dir_seq != seq)) {
                    hlist_bl_unlock(b);
                    goto retry;
            }
    
    Since the simple bit_spin_lock used to implement hlist_bl_lock does not
    provide any fairness guarantees, then CPU1 can starve CPU0 of the lock
    and prevent it from reaching end_dir_add(dir), therefore CPU1 cannot
    exit its retry loop because the sequence number always has the bottom
    bit set.
    
    This patch resolves the livelock by not taking hlist_bl_lock in
    d_alloc_parallel if the sequence counter is odd, since any subsequent
    masked comparison with i_dir_seq will fail anyway.
    
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Reported-by: Naresh Madhusudana <naresh.madhusudana@arm.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Matthew Wilcox <mawilcox@microsoft.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3eacc4ab0d4b96a134f2b2581f89ffb8ded0632c
Author: Sebastian Ott <sebott@linux.vnet.ibm.com>
Date:   Thu Feb 22 13:05:41 2018 +0100

    kvm: fix warning for CONFIG_HAVE_KVM_EVENTFD builds
    
    [ Upstream commit 076467490b8176eb96eddc548a14d4135c7b5852 ]
    
    Move the kvm_arch_irq_routing_update() prototype outside of
    ifdef CONFIG_HAVE_KVM_EVENTFD guards to fix the following sparse warning:
    
    arch/s390/kvm/../../../virt/kvm/irqchip.c:171:28: warning: symbol 'kvm_arch_irq_routing_update' was not declared. Should it be static?
    
    Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f19a40b0d7a5c76d390325aa35b532a900fed8d1
Author: Alexey Kodanev <alexey.kodanev@oracle.com>
Date:   Thu Feb 22 18:20:30 2018 +0300

    macvlan: fix use-after-free in macvlan_common_newlink()
    
    [ Upstream commit 4e14bf4236490306004782813b8b4494b18f5e60 ]
    
    The following use-after-free was reported by KASan when running
    LTP macvtap01 test on 4.16-rc2:
    
    [10642.528443] BUG: KASAN: use-after-free in
                   macvlan_common_newlink+0x12ef/0x14a0 [macvlan]
    [10642.626607] Read of size 8 at addr ffff880ba49f2100 by task ip/18450
    ...
    [10642.963873] Call Trace:
    [10642.994352]  dump_stack+0x5c/0x7c
    [10643.035325]  print_address_description+0x75/0x290
    [10643.092938]  kasan_report+0x28d/0x390
    [10643.137971]  ? macvlan_common_newlink+0x12ef/0x14a0 [macvlan]
    [10643.207963]  macvlan_common_newlink+0x12ef/0x14a0 [macvlan]
    [10643.275978]  macvtap_newlink+0x171/0x260 [macvtap]
    [10643.334532]  rtnl_newlink+0xd4f/0x1300
    ...
    [10646.256176] Allocated by task 18450:
    [10646.299964]  kasan_kmalloc+0xa6/0xd0
    [10646.343746]  kmem_cache_alloc_trace+0xf1/0x210
    [10646.397826]  macvlan_common_newlink+0x6de/0x14a0 [macvlan]
    [10646.464386]  macvtap_newlink+0x171/0x260 [macvtap]
    [10646.522728]  rtnl_newlink+0xd4f/0x1300
    ...
    [10647.022028] Freed by task 18450:
    [10647.061549]  __kasan_slab_free+0x138/0x180
    [10647.111468]  kfree+0x9e/0x1c0
    [10647.147869]  macvlan_port_destroy+0x3db/0x650 [macvlan]
    [10647.211411]  rollback_registered_many+0x5b9/0xb10
    [10647.268715]  rollback_registered+0xd9/0x190
    [10647.319675]  register_netdevice+0x8eb/0xc70
    [10647.370635]  macvlan_common_newlink+0xe58/0x14a0 [macvlan]
    [10647.437195]  macvtap_newlink+0x171/0x260 [macvtap]
    
    Commit d02fd6e7d293 ("macvlan: Fix one possible double free") handles
    the case when register_netdevice() invokes ndo_uninit() on error and
    as a result free the port. But 'macvlan_port_get_rtnl(dev))' check
    (returns dev->rx_handler_data), which was added by this commit in order
    to prevent double free, is not quite correct:
    
    * for macvlan it always returns NULL because 'lowerdev' is the one that
      was used to register rx handler (port) in macvlan_port_create() as
      well as to unregister it in macvlan_port_destroy().
    * for macvtap it always returns a valid pointer because macvtap registers
      its own rx handler before macvlan_common_newlink().
    
    Fixes: d02fd6e7d293 ("macvlan: Fix one possible double free")
    Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c3655e72f84971c9d861c1acb48cf7b035866c8d
Author: Pratyush Anand <panand@redhat.com>
Date:   Mon Feb 5 14:28:01 2018 +0100

    arm64: fix unwind_frame() for filtered out fn for function graph tracing
    
    [ Upstream commit 9f416319f40cd857d2bb517630e5855a905ef3fb ]
    
    do_task_stat() calls get_wchan(), which further does unwind_frame().
    unwind_frame() restores frame->pc to original value in case function
    graph tracer has modified a return address (LR) in a stack frame to hook
    a function return. However, if function graph tracer has hit a filtered
    function, then we can't unwind it as ftrace_push_return_trace() has
    biased the index(frame->graph) with a 'huge negative'
    offset(-FTRACE_NOTRACE_DEPTH).
    
    Moreover, arm64 stack walker defines index(frame->graph) as unsigned
    int, which can not compare a -ve number.
    
    Similar problem we can have with calling of walk_stackframe() from
    save_stack_trace_tsk() or dump_backtrace().
    
    This patch fixes unwind_frame() to test the index for -ve value and
    restore index accordingly before we can restore frame->pc.
    
    Reproducer:
    
    cd /sys/kernel/debug/tracing/
    echo schedule > set_graph_notrace
    echo 1 > options/display-graph
    echo wakeup > current_tracer
    ps -ef | grep -i agent
    
    Above commands result in:
    Unable to handle kernel paging request at virtual address ffff801bd3d1e000
    pgd = ffff8003cbe97c00
    [ffff801bd3d1e000] *pgd=0000000000000000, *pud=0000000000000000
    Internal error: Oops: 96000006 [#1] SMP
    [...]
    CPU: 5 PID: 11696 Comm: ps Not tainted 4.11.0+ #33
    [...]
    task: ffff8003c21ba000 task.stack: ffff8003cc6c0000
    PC is at unwind_frame+0x12c/0x180
    LR is at get_wchan+0xd4/0x134
    pc : [<ffff00000808892c>] lr : [<ffff0000080860b8>] pstate: 60000145
    sp : ffff8003cc6c3ab0
    x29: ffff8003cc6c3ab0 x28: 0000000000000001
    x27: 0000000000000026 x26: 0000000000000026
    x25: 00000000000012d8 x24: 0000000000000000
    x23: ffff8003c1c04000 x22: ffff000008c83000
    x21: ffff8003c1c00000 x20: 000000000000000f
    x19: ffff8003c1bc0000 x18: 0000fffffc593690
    x17: 0000000000000000 x16: 0000000000000001
    x15: 0000b855670e2b60 x14: 0003e97f22cf1d0f
    x13: 0000000000000001 x12: 0000000000000000
    x11: 00000000e8f4883e x10: 0000000154f47ec8
    x9 : 0000000070f367c0 x8 : 0000000000000000
    x7 : 00008003f7290000 x6 : 0000000000000018
    x5 : 0000000000000000 x4 : ffff8003c1c03cb0
    x3 : ffff8003c1c03ca0 x2 : 00000017ffe80000
    x1 : ffff8003cc6c3af8 x0 : ffff8003d3e9e000
    
    Process ps (pid: 11696, stack limit = 0xffff8003cc6c0000)
    Stack: (0xffff8003cc6c3ab0 to 0xffff8003cc6c4000)
    [...]
    [<ffff00000808892c>] unwind_frame+0x12c/0x180
    [<ffff000008305008>] do_task_stat+0x864/0x870
    [<ffff000008305c44>] proc_tgid_stat+0x3c/0x48
    [<ffff0000082fde0c>] proc_single_show+0x5c/0xb8
    [<ffff0000082b27e0>] seq_read+0x160/0x414
    [<ffff000008289e6c>] __vfs_read+0x58/0x164
    [<ffff00000828b164>] vfs_read+0x88/0x144
    [<ffff00000828c2e8>] SyS_read+0x60/0xc0
    [<ffff0000080834a0>] __sys_trace_return+0x0/0x4
    
    Fixes: 20380bb390a4 (arm64: ftrace: fix a stack tracer's output under function graph tracer)
    Signed-off-by: Pratyush Anand <panand@redhat.com>
    Signed-off-by: Jerome Marchand <jmarchan@redhat.com>
    [catalin.marinas@arm.com: replace WARN_ON with WARN_ON_ONCE]
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6588cfd4dae78e7d14eacaff800ece7f8a9db2f8
Author: Felix Fietkau <nbd@nbd.name>
Date:   Fri Feb 23 10:06:03 2018 +0100

    mac80211: drop frames with unexpected DS bits from fast-rx to slow path
    
    [ Upstream commit b323ac19b7734a1c464b2785a082ee50bccd3b91 ]
    
    Fixes rx for 4-addr packets in AP mode. These may be used for setting
    up a 4-addr link for stations that are allowed to do so.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8421da4b57b47dfb9ee9aacfb2612bb188f5aa5
Author: Samuel Neves <sneves@dei.uc.pt>
Date:   Wed Feb 21 20:50:36 2018 +0000

    x86/topology: Update the 'cpu cores' field in /proc/cpuinfo correctly across CPU hotplug operations
    
    [ Upstream commit 4596749339e06dc7a424fc08a15eded850ed78b7 ]
    
    Without this fix, /proc/cpuinfo will display an incorrect amount
    of CPU cores, after bringing them offline and online again, as
    exemplified below:
    
      $ cat /proc/cpuinfo | grep cores
      cpu cores     : 4
      cpu cores     : 8
      cpu cores     : 8
      cpu cores     : 20
      cpu cores     : 4
      cpu cores     : 3
      cpu cores     : 2
      cpu cores     : 2
    
    This patch fixes this by always zeroing the booted_cores variable
    upon turning off a logical CPU.
    
    Tested-by: Dou Liyang <douly.fnst@cn.fujitsu.com>
    Signed-off-by: Samuel Neves <sneves@dei.uc.pt>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: jgross@suse.com
    Cc: luto@kernel.org
    Cc: prarit@redhat.com
    Cc: vkuznets@redhat.com
    Link: http://lkml.kernel.org/r/20180221205036.5244-1-sneves@dei.uc.pt
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit afc5883b73347e9e0fb35850a704d06f026e1a7b
Author: Andrea Parri <parri.andrea@gmail.com>
Date:   Thu Feb 22 10:24:48 2018 +0100

    locking/xchg/alpha: Fix xchg() and cmpxchg() memory ordering bugs
    
    [ Upstream commit 472e8c55cf6622d1c112dc2bc777f68bbd4189db ]
    
    Successful RMW operations are supposed to be fully ordered, but
    Alpha's xchg() and cmpxchg() do not meet this requirement.
    
    Will Deacon noticed the bug:
    
      > So MP using xchg:
      >
      > WRITE_ONCE(x, 1)
      > xchg(y, 1)
      >
      > smp_load_acquire(y) == 1
      > READ_ONCE(x) == 0
      >
      > would be allowed.
    
    ... which thus violates the above requirement.
    
    Fix it by adding a leading smp_mb() to the xchg() and cmpxchg() implementations.
    
    Reported-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Andrea Parri <parri.andrea@gmail.com>
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-alpha@vger.kernel.org
    Link: http://lkml.kernel.org/r/1519291488-5752-1-git-send-email-parri.andrea@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8a5a436acaf5fffeea35b7c11209d00d58b74bf6
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Feb 12 17:26:20 2018 -0800

    integrity/security: fix digsig.c build error with header file
    
    [ Upstream commit 120f3b11ef88fc38ce1d0ff9c9a4b37860ad3140 ]
    
    security/integrity/digsig.c has build errors on some $ARCH due to a
    missing header file, so add it.
    
      security/integrity/digsig.c:146:2: error: implicit declaration of function 'vfree' [-Werror=implicit-function-declaration]
    
    Reported-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
    Cc: linux-integrity@vger.kernel.org
    Link: http://kisskb.ellerman.id.au/kisskb/head/13396/
    Signed-off-by: James Morris <james.morris@microsoft.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d375e14cd8d5f0d12a04462eb5c52d45fa2dcef
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Thu Feb 22 20:55:28 2018 +0100

    regulatory: add NUL to request alpha2
    
    [ Upstream commit 657308f73e674e86b60509a430a46e569bf02846 ]
    
    Similar to the ancient commit a5fe8e7695dc ("regulatory: add NUL
    to alpha2"), add another byte to alpha2 in the request struct so
    that when we use nla_put_string(), we don't overrun anything.
    
    Fixes: 73d54c9e74c4 ("cfg80211: add regulatory netlink multicast group")
    Reported-by: Kees Cook <keescook@google.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6eacfc12597a820cd8e027f6129184d748467256
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Feb 20 21:42:26 2018 -0800

    smsc75xx: fix smsc75xx_set_features()
    
    [ Upstream commit 88e80c62671ceecdbb77c902731ec95a4bfa62f9 ]
    
    If an attempt is made to disable RX checksums, USB adapter is changed
    but netdev->features is not, because smsc75xx_set_features() returns a
    non zero value.
    
    This throws errors from netdev_rx_csum_fault() :
    <devname>: hw csum failure
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Steve Glendinning <steve.glendinning@shawell.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 353be46dfdab675096cbcfb30d39f2fc33047201
Author: Tony Lindgren <tony@atomide.com>
Date:   Thu Feb 22 10:02:49 2018 -0800

    ARM: OMAP: Fix dmtimer init for omap1
    
    [ Upstream commit ba6887836178d43b3665b9da075c2c5dfe1d207c ]
    
    We need to enable PM runtime on omap1 also as otherwise we
    will get errors:
    
    omap_timer omap_timer.1: omap_dm_timer_probe: pm_runtime_get_sync failed!
    omap_timer: probe of omap_timer.1 failed with error -13
    ...
    
    We are checking for OMAP_TIMER_NEEDS_RESET flag elsewhere so this is
    safe to do.
    
    Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
    Cc: Keerthy <j-keerthy@ti.com>
    Cc: Ladislav Michl <ladis@linux-mips.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4d7388a1895b5b06c8f625abc782b1b9a0ffbea9
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu Feb 22 14:38:33 2018 +0000

    PKCS#7: fix direct verification of SignerInfo signature
    
    [ Upstream commit 6459ae386699a5fe0dc52cf30255f75274fa43a4 ]
    
    If none of the certificates in a SignerInfo's certificate chain match a
    trusted key, nor is the last certificate signed by a trusted key, then
    pkcs7_validate_trust_one() tries to check whether the SignerInfo's
    signature was made directly by a trusted key.  But, it actually fails to
    set the 'sig' variable correctly, so it actually verifies the last
    signature seen.  That will only be the SignerInfo's signature if the
    certificate chain is empty; otherwise it will actually be the last
    certificate's signature.
    
    This is not by itself a security problem, since verifying any of the
    certificates in the chain should be sufficient to verify the SignerInfo.
    Still, it's not working as intended so it should be fixed.
    
    Fix it by setting 'sig' correctly for the direct verification case.
    
    Fixes: 757932e6da6d ("PKCS#7: Handle PKCS#7 messages that contain no X.509 certs")
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f18fb14521dd9d46b9d02bf7caf25ac100ff09f9
Author: Sebastian Ott <sebott@linux.vnet.ibm.com>
Date:   Mon Feb 12 12:01:03 2018 +0100

    s390/cio: clear timer when terminating driver I/O
    
    [ Upstream commit 410d5e13e7638bc146321671e223d56495fbf3c7 ]
    
    When we terminate driver I/O (because we need to stop using a certain
    channel path) we also need to ensure that a timer (which may have been
    set up using ccw_device_start_timeout) is cleared.
    
    Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b912a541d4ca6bafc7d6343f5656eb8652015b9d
Author: Sebastian Ott <sebott@linux.vnet.ibm.com>
Date:   Wed Feb 7 13:18:19 2018 +0100

    s390/cio: fix return code after missing interrupt
    
    [ Upstream commit 770b55c995d171f026a9efb85e71e3b1ea47b93d ]
    
    When a timeout occurs for users of ccw_device_start_timeout
    we will stop the IO and call the drivers int handler with
    the irb pointer set to ERR_PTR(-ETIMEDOUT). Sometimes
    however we'd set the irb pointer to ERR_PTR(-EIO) which is
    not intended. Just set the correct value in all codepaths.
    
    Reported-by: Julian Wiedmann <jwi@linux.vnet.ibm.com>
    Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a8c6a26da1351885d2cd64f127102e7eafcb8b3
Author: Sebastian Ott <sebott@linux.vnet.ibm.com>
Date:   Tue Feb 6 14:59:43 2018 +0100

    s390/cio: fix ccw_device_start_timeout API
    
    [ Upstream commit f97a6b6c47d2f329a24f92cc0ca3c6df5727ba73 ]
    
    There are cases a device driver can't start IO because the device is
    currently in use by cio. In this case the device driver is notified
    when the device is usable again.
    
    Using ccw_device_start_timeout we would set the timeout (and change
    an existing timeout) before we test for internal usage. Worst case
    this could lead to an unexpected timer deletion.
    
    Fix this by setting the timeout after we test for internal usage.
    
    Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 503b6c0d278dc7bf4b5cf1c9b092b7b461b32e15
Author: Mark Lord <mlord@pobox.com>
Date:   Tue Feb 20 14:49:20 2018 -0500

    powerpc/bpf/jit: Fix 32-bit JIT for seccomp_data access
    
    [ Upstream commit 083b20907185b076f21c265b30fe5b5f24c03d8c ]
    
    I am using SECCOMP to filter syscalls on a ppc32 platform, and noticed
    that the JIT compiler was failing on the BPF even though the
    interpreter was working fine.
    
    The issue was that the compiler was missing one of the instructions
    used by SECCOMP, so here is a patch to enable JIT for that
    instruction.
    
    Fixes: eb84bab0fb38 ("ppc: Kconfig: Enable BPF JIT on ppc32")
    Signed-off-by: Mark Lord <mlord@pobox.com>
    Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79dc8f386541754db2bee28799bc9ce6aecc6aff
Author: David Rientjes <rientjes@google.com>
Date:   Wed Feb 21 14:45:32 2018 -0800

    kernel/relay.c: limit kmalloc size to KMALLOC_MAX_SIZE
    
    [ Upstream commit 88913bd8ea2a75d7e460a4bed5f75e1c32660d7e ]
    
    chan->n_subbufs is set by the user and relay_create_buf() does a kmalloc()
    of chan->n_subbufs * sizeof(size_t *).
    
    kmalloc_slab() will generate a warning when this fails if
    chan->subbufs * sizeof(size_t *) > KMALLOC_MAX_SIZE.
    
    Limit chan->n_subbufs to the maximum allowed kmalloc() size.
    
    Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1802061216100.122576@chino.kir.corp.google.com
    Fixes: f6302f1bcd75 ("relay: prevent integer overflow in relay_open()")
    Signed-off-by: David Rientjes <rientjes@google.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc78ce270423500568ad2e65840a893666954719
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Feb 20 14:09:11 2018 +0100

    md: raid5: avoid string overflow warning
    
    [ Upstream commit 53b8d89ddbdbb0e4625a46d2cdbb6f106c52f801 ]
    
    gcc warns about a possible overflow of the kmem_cache string, when adding
    four characters to a string of the same length:
    
    drivers/md/raid5.c: In function 'setup_conf':
    drivers/md/raid5.c:2207:34: error: '-alt' directive writing 4 bytes into a region of size between 1 and 32 [-Werror=format-overflow=]
      sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]);
                                      ^~~~
    drivers/md/raid5.c:2207:2: note: 'sprintf' output between 5 and 36 bytes into a destination of size 32
      sprintf(conf->cache_name[1], "%s-alt", conf->cache_name[0]);
      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    If I'm counting correctly, we need 11 characters for the fixed part
    of the string and 18 characters for a 64-bit pointer (when no gendisk
    is used), so that leaves three characters for conf->level, which should
    always be sufficient.
    
    This makes the code use snprintf() with the correct length, to
    make the code more robust against changes, and to get the compiler
    to shut up.
    
    In commit f4be6b43f1ac ("md/raid5: ensure we create a unique name for
    kmem_cache when mddev has no gendisk") from 2010, Neil said that
    the pointer could be removed "shortly" once devices without gendisk
    are disallowed. I have no idea if that happened, but if it did, that
    should probably be changed as well.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Shaohua Li <sh.li@alibaba-inc.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bffff2e16f50ba5e6cbe4e5ccdb2e478965de06d
Author: Andrea Parri <parri.andrea@gmail.com>
Date:   Tue Feb 20 19:45:56 2018 +0100

    locking/xchg/alpha: Add unconditional memory barrier to cmpxchg()
    
    [ Upstream commit cb13b424e986aed68d74cbaec3449ea23c50e167 ]
    
    Continuing along with the fight against smp_read_barrier_depends() [1]
    (or rather, against its improper use), add an unconditional barrier to
    cmpxchg.  This guarantees that dependency ordering is preserved when a
    dependency is headed by an unsuccessful cmpxchg.  As it turns out, the
    change could enable further simplification of LKMM as proposed in [2].
    
    [1] https://marc.info/?l=linux-kernel&m=150884953419377&w=2
        https://marc.info/?l=linux-kernel&m=150884946319353&w=2
        https://marc.info/?l=linux-kernel&m=151215810824468&w=2
        https://marc.info/?l=linux-kernel&m=151215816324484&w=2
    
    [2] https://marc.info/?l=linux-kernel&m=151881978314872&w=2
    
    Signed-off-by: Andrea Parri <parri.andrea@gmail.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Turner <mattst88@gmail.com>
    Cc: Richard Henderson <rth@twiddle.net>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-alpha@vger.kernel.org
    Link: http://lkml.kernel.org/r/1519152356-4804-1-git-send-email-parri.andrea@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be4132e07364c5a758ac9d0c8e89dbf663f41f78
Author: Wolfram Sang <wsa+renesas@sang-engineering.com>
Date:   Mon Feb 5 21:09:59 2018 +0100

    drm/exynos: fix comparison to bitshift when dealing with a mask
    
    [ Upstream commit 1293b6191010672c0c9dacae8f71c6f3e4d70cbe ]
    
    Due to a typo, the mask was destroyed by a comparison instead of a bit
    shift.
    
    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Inki Dae <inki.dae@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4529bc4ff8407de2ad373d9a1c19328a5a645d2
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Jan 17 18:01:21 2018 +0100

    drm/exynos: g2d: use monotonic timestamps
    
    [ Upstream commit a588a8bb7b25a3fb4f7fed00feb7aec541fc2632 ]
    
    The exynos DRM driver uses real-time 'struct timeval' values
    for exporting its timestamps to user space. This has multiple
    problems:
    
    1. signed seconds overflow in y2038
    2. the 'struct timeval' definition is deprecated in the kernel
    3. time may jump or go backwards after a 'settimeofday()' syscall
    4. other DRM timestamps are in CLOCK_MONOTONIC domain, so they
       can't be compared
    5. exporting microseconds requires a division by 1000, which may
       be slow on some architectures.
    
    The code existed in two places before, but the IPP portion was
    removed in 8ded59413ccc ("drm/exynos: ipp: Remove Exynos DRM
    IPP subsystem"), so we no longer need to worry about it.
    
    Ideally timestamps should just use 64-bit nanoseconds instead, but
    of course we can't change that now. Instead, this tries to address
    the first four points above by using monotonic 'timespec' values.
    
    According to Tobias Jakobi, user space doesn't care about the
    timestamp at the moment, so we can change the format. Even if
    there is something looking at them, it will work just fine with
    monotonic times as long as the application only looks at the
    relative values between two events.
    
    Link: https://patchwork.kernel.org/patch/10038593/
    Cc: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Tobias Jakobi <tjakobi@math.uni-bielefeld.de>
    Signed-off-by: Inki Dae <inki.dae@samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f5af7cc105f9bf5e6995db27e20c0f83ad5abcb
Author: Yufen Yu <yuyufen@huawei.com>
Date:   Tue Feb 6 17:39:15 2018 +0800

    md raid10: fix NULL deference in handle_write_completed()
    
    [ Upstream commit 01a69cab01c184d3786af09e9339311123d63d22 ]
    
    In the case of 'recover', an r10bio with R10BIO_WriteError &
    R10BIO_IsRecover will be progressed by handle_write_completed().
    This function traverses all r10bio->devs[copies].
    If devs[m].repl_bio != NULL, it thinks conf->mirrors[dev].replacement
    is also not NULL. However, this is not always true.
    
    When there is an rdev of raid10 has replacement, then each r10bio
    ->devs[m].repl_bio != NULL in conf->r10buf_pool. However, in 'recover',
    even if corresponded replacement is NULL, it doesn't clear r10bio
    ->devs[m].repl_bio, resulting in replacement NULL deference.
    
    This bug was introduced when replacement support for raid10 was
    added in Linux 3.3.
    
    As NeilBrown suggested:
            Elsewhere the determination of "is this device part of the
            resync/recovery" is made by resting bio->bi_end_io.
            If this is end_sync_write, then we tried to write here.
            If it is NULL, then we didn't try to write.
    
    Fixes: 9ad1aefc8ae8 ("md/raid10:  Handle replacement devices during resync.")
    Cc: stable (V3.3+)
    Suggested-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Yufen Yu <yuyufen@huawei.com>
    Signed-off-by: Shaohua Li <sh.li@alibaba-inc.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6114a6884d902029b2938c35d43d8f36b73b101
Author: Ilan Peer <ilan.peer@intel.com>
Date:   Mon Feb 19 14:48:42 2018 +0200

    mac80211: Do not disconnect on invalid operating class
    
    [ Upstream commit 191da271ac260700db3e5b4bb982a17ca78769d6 ]
    
    Some APs include a non global operating class in their extended channel
    switch information element. In such a case, as the operating class is not
    known, mac80211 would decide to disconnect.
    
    However the specification states that the operating class needs to be
    taken from Annex E, but it does not specify from which table it should be
    taken, so it is valid for an AP to use a non global operating class.
    
    To avoid possibly unneeded disconnection, in such a case ignore the
    operating class and assume that the current band is used, and if the
    resulting channel and band configuration is invalid disconnect.
    
    Signed-off-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31155ee44dd94f379532a446b078175289e8c3ff
Author: Sara Sharon <sara.sharon@intel.com>
Date:   Mon Feb 19 14:48:37 2018 +0200

    mac80211: fix calling sleeping function in atomic context
    
    [ Upstream commit 95f3ce6a77893ac828ba841df44421620de4314b ]
    
    sta_info_alloc can be called from atomic paths (such as RX path)
    so we need to call pcpu_alloc with the correct gfp.
    
    Fixes: c9c5962b56c1 ("mac80211: enable collecting station statistics per-CPU")
    Signed-off-by: Sara Sharon <sara.sharon@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae58b7545f76710ab9a776c7cafbae5ebfc0ceb3
Author: Sara Sharon <sara.sharon@intel.com>
Date:   Mon Feb 19 14:48:35 2018 +0200

    mac80211: fix a possible leak of station stats
    
    [ Upstream commit d78d9ee9d40aca4781d2c5334972544601a4c3a2 ]
    
    If sta_info_alloc fails after allocating the per CPU statistics,
    they are not properly freed.
    
    Fixes: c9c5962b56c1 ("mac80211: enable collecting station statistics per-CPU")
    Signed-off-by: Sara Sharon <sara.sharon@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5f3c6add07622e31a1f2acf259d8482cb1765792
Author: Felix Fietkau <nbd@nbd.name>
Date:   Sat Feb 10 13:20:34 2018 +0100

    mac80211: round IEEE80211_TX_STATUS_HEADROOM up to multiple of 4
    
    [ Upstream commit 651b9920d7a694ffb1f885aef2bbb068a25d9d66 ]
    
    This ensures that mac80211 allocated management frames are properly
    aligned, which makes copying them more efficient.
    For instance, mt76 uses iowrite32_copy to copy beacon frames to beacon
    template memory on the chip.
    Misaligned 32-bit accesses cause CPU exceptions on MIPS and should be
    avoided.
    
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f55ec6a8d856ffbd53e7424207e722c3c3eb5c2d
Author: David Howells <dhowells@redhat.com>
Date:   Thu Feb 15 22:59:00 2018 +0000

    rxrpc: Work around usercopy check
    
    [ Upstream commit a16b8d0cf2ec1e626d24bc2a7b9e64ace6f7501d ]
    
    Due to a check recently added to copy_to_user(), it's now not permitted to
    copy from slab-held data to userspace unless the slab is whitelisted.  This
    affects rxrpc_recvmsg() when it attempts to place an RXRPC_USER_CALL_ID
    control message in the userspace control message buffer.  A warning is
    generated by usercopy_warn() because the source is the copy of the
    user_call_ID retained in the rxrpc_call struct.
    
    Work around the issue by copying the user_call_ID to a variable on the
    stack and passing that to put_cmsg().
    
    The warning generated looks like:
    
            Bad or missing usercopy whitelist? Kernel memory exposure attempt detected from SLUB object 'dmaengine-unmap-128' (offset 680, size 8)!
            WARNING: CPU: 0 PID: 1401 at mm/usercopy.c:81 usercopy_warn+0x7e/0xa0
            ...
            RIP: 0010:usercopy_warn+0x7e/0xa0
            ...
            Call Trace:
             __check_object_size+0x9c/0x1a0
             put_cmsg+0x98/0x120
             rxrpc_recvmsg+0x6fc/0x1010 [rxrpc]
             ? finish_wait+0x80/0x80
             ___sys_recvmsg+0xf8/0x240
             ? __clear_rsb+0x25/0x3d
             ? __clear_rsb+0x15/0x3d
             ? __clear_rsb+0x25/0x3d
             ? __clear_rsb+0x15/0x3d
             ? __clear_rsb+0x25/0x3d
             ? __clear_rsb+0x15/0x3d
             ? __clear_rsb+0x25/0x3d
             ? __clear_rsb+0x15/0x3d
             ? finish_task_switch+0xa6/0x2b0
             ? trace_hardirqs_on_caller+0xed/0x180
             ? _raw_spin_unlock_irq+0x29/0x40
             ? __sys_recvmsg+0x4e/0x90
             __sys_recvmsg+0x4e/0x90
             do_syscall_64+0x7a/0x220
             entry_SYSCALL_64_after_hwframe+0x26/0x9b
    
    Reported-by: Jonathan Billings <jsbillings@jsbillings.org>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Acked-by: Kees Cook <keescook@chromium.org>
    Tested-by: Jonathan Billings <jsbillings@jsbillings.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69b28c18f7c8b3bbdc037f1cc029acc21723b997
Author: Kees Cook <keescook@chromium.org>
Date:   Wed Feb 14 15:45:07 2018 -0800

    NFC: llcp: Limit size of SDP URI
    
    [ Upstream commit fe9c842695e26d8116b61b80bfb905356f07834b ]
    
    The tlv_len is u8, so we need to limit the size of the SDP URI. Enforce
    this both in the NLA policy and in the code that performs the allocation
    and copy, to avoid writing past the end of the allocated buffer.
    
    Fixes: d9b8d8e19b073 ("NFC: llcp: Service Name Lookup netlink interface")
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd620d1636dce0316dce93d5cff6ae03ce3bd85b
Author: Naftali Goldstein <naftali.goldstein@intel.com>
Date:   Thu Dec 28 15:53:04 2017 +0200

    iwlwifi: mvm: always init rs with 20mhz bandwidth rates
    
    [ Upstream commit 6b7a5aea71b342ec0593d23b08383e1f33da4c9a ]
    
    In AP mode, when a new station associates, rs is initialized immediately
    upon association completion, before the phy context is updated with the
    association parameters, so the sta bandwidth might be wider than the phy
    context allows.
    To avoid this issue, always initialize rs with 20mhz bandwidth rate, and
    after authorization, when the phy context is already up-to-date, re-init
    rs with the correct bw.
    
    Signed-off-by: Naftali Goldstein <naftali.goldstein@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b9a8aa96cb1a1702d8d21081c4f794dcb66dfcca
Author: Sara Sharon <sara.sharon@intel.com>
Date:   Tue Mar 29 10:56:57 2016 +0300

    iwlwifi: mvm: fix security bug in PN checking
    
    [ Upstream commit 5ab2ba931255d8bf03009c06d58dce97de32797c ]
    
    A previous patch allowed the same PN for packets originating from the
    same AMSDU by copying PN only for the last packet in the series.
    
    This however is bogus since we cannot assume the last frame will be
    received on the same queue, and if it is received on a different ueue
    we will end up not incrementing the PN and possibly let the next
    packet to have the same PN and pass through.
    
    Change the logic instead to driver explicitly indicate for the second
    sub frame and on to be allowed to have the same PN as the first
    subframe. Indicate it to mac80211 as well for the fallback queue.
    
    Fixes: f1ae02b186d9 ("iwlwifi: mvm: allow same PN for de-aggregated AMSDU")
    Signed-off-by: Sara Sharon <sara.sharon@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1a8a34c906dfc69be8399c8648691b955724222
Author: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
Date:   Tue Feb 13 18:23:42 2018 -0600

    ibmvnic: Free RX socket buffer in case of adapter error
    
    [ Upstream commit 4b9b0f01350500173f17e2b2e65beb4df4ef99c7 ]
    
    If a RX buffer is returned to the client driver with an error, free the
    corresponding socket buffer before continuing.
    
    Signed-off-by: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 222fe5f1081812899713cddd51db1f7d90ffd74c
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Tue Jan 2 16:25:35 2018 +0100

    ARM: OMAP1: clock: Fix debugfs_create_*() usage
    
    [ Upstream commit 8cbbf1745dcde7ba7e423dc70619d223de90fd43 ]
    
    When exposing data access through debugfs, the correct
    debugfs_create_*() functions must be used, depending on data type.
    
    Remove all casts from data pointers passed to debugfs_create_*()
    functions, as such casts prevent the compiler from flagging bugs.
    
    Correct all wrong usage:
      - clk.rate is unsigned long, not u32,
      - clk.flags is u8, not u32, which exposed the successive
        clk.rate_offset and clk.src_offset fields.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Acked-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d5cea0404364192bcbc0990f089f02c40484cdc4
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Feb 9 08:15:53 2018 -0800

    ARM: OMAP3: Fix prm wake interrupt for resume
    
    [ Upstream commit d3be6d2a08bd26580562d9714d3d97ea9ba22c73 ]
    
    For platform_suspend_ops, the finish call is too late to re-enable wake
    irqs and we need re-enable wake irqs on wake call instead.
    
    Otherwise noirq resume for devices has already happened. And then
    dev_pm_disarm_wake_irq() has already disabled the dedicated wake irqs
    when the interrupt triggers and the wake irq is never handled.
    
    For devices that are already in PM runtime suspended state when we
    enter suspend this means that a possible wake irq will never trigger.
    
    And this can lead into a situation where a device has a pending padconf
    wake irq, and the device will stay unresponsive to any further wake
    irqs.
    
    This issue can be easily reproduced by setting serial console log level
    to zero, letting the serial console idle, and suspend the system from
    an ssh terminal. Then try to wake up the system by typing to the serial
    console.
    
    Note that this affects only omap3 PRM interrupt as that's currently
    the only omap variant that does anything in omap_pm_wake().
    
    In general, for the wake irqs to work, the interrupt must have either
    IRQF_NO_SUSPEND or IRQF_EARLY_RESUME set for it to trigger before
    dev_pm_disarm_wake_irq() disables the wake irqs.
    
    Reported-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Cc: Tero Kristo <t-kristo@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72877aa5ee14e71a3569c9289e080adf3828bc89
Author: Qi Hou <qi.hou@windriver.com>
Date:   Thu Jan 11 12:54:43 2018 +0800

    ARM: OMAP2+: timer: fix a kmemleak caused in omap_get_timer_dt
    
    [ Upstream commit db35340c536f1af0108ec9a0b2126a05d358d14a ]
    
    When more than one GP timers are used as kernel system timers and the
    corresponding nodes in device-tree are marked with the same "disabled"
    property, then the "attr" field of the property will be initialized
    more than once as the property being added to sys file system via
    __of_add_property_sysfs().
    
    In __of_add_property_sysfs(), the "name" field of pp->attr.attr is set
    directly to the return value of safe_name(), without taking care of
    whether it's already a valid pointer to a memory block. If it is, its
    old value will always be overwritten by the new one and the memory block
    allocated before will a "ghost", then a kmemleak happened.
    
    That the same "disabled" property being added to different nodes of device
    tree would cause that kind of kmemleak overhead, at least once.
    
    To fix it, allocate the property dynamically, and delete static one.
    
    Signed-off-by: Qi Hou <qi.hou@windriver.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b611d4548adab4f11e4de7aa6f0ecd7a46cee244
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Tue Feb 6 16:20:44 2018 -0600

    selftests: memfd: add config fragment for fuse
    
    [ Upstream commit 9a606f8d55cfc932ec02172aaed4124fdc150047 ]
    
    The memfd test requires to insert the fuse module (CONFIG_FUSE_FS).
    
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f3beab9649a9c26d1a26ea0eebb69ed26428ebd
Author: Naresh Kamboju <naresh.kamboju@linaro.org>
Date:   Wed Feb 7 14:47:20 2018 +0530

    selftests: pstore: Adding config fragment CONFIG_PSTORE_RAM=m
    
    [ Upstream commit 9a379e77033f02c4a071891afdf0f0a01eff8ccb ]
    
    pstore_tests and pstore_post_reboot_tests need CONFIG_PSTORE_RAM=m
    
    Signed-off-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3a6ebe27cc8bc541bd27c710ea11d36771234091
Author: Dong Bo <dongbo4@huawei.com>
Date:   Fri Jan 26 11:21:49 2018 +0800

    libata: Fix compile warning with ATA_DEBUG enabled
    
    [ Upstream commit 0d3e45bc6507bd1f8728bf586ebd16c2d9e40613 ]
    
    This fixs the following comile warnings with ATA_DEBUG enabled,
    which detected by Linaro GCC 5.2-2015.11:
    
      drivers/ata/libata-scsi.c: In function 'ata_scsi_dump_cdb':
      ./include/linux/kern_levels.h:5:18: warning: format '%d' expects
      argument of type 'int', but argument 6 has type 'u64 {aka long
       long unsigned int}' [-Wformat=]
    
    tj: Patch hand-applied and description trimmed.
    
    Signed-off-by: Dong Bo <dongbo4@huawei.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e857aaf091f00b342f5d66e1ffa77bcb25c1f6a
Author: Jason Wang <jasowang@redhat.com>
Date:   Sun Feb 11 11:28:12 2018 +0800

    ptr_ring: prevent integer overflow when calculating size
    
    [ Upstream commit 54e02162d4454a99227f520948bf4494c3d972d0 ]
    
    Switch to use dividing to prevent integer overflow when size is too
    big to calculate allocation size properly.
    
    Reported-by: Eric Biggers <ebiggers3@gmail.com>
    Fixes: 6e6e41c31122 ("ptr_ring: fail early if queue occupies more than KMALLOC_MAX_SIZE")
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5338dbdf1e711e9873ff1958c0adc180d40dfe1
Author: Ulf Magnusson <ulfalizer@gmail.com>
Date:   Mon Feb 5 02:21:31 2018 +0100

    ARC: Fix malformed ARC_EMUL_UNALIGNED default
    
    [ Upstream commit 827cc2fa024dd6517d62de7a44c7b42f32af371b ]
    
    'default N' should be 'default n', though they happen to have the same
    effect here, due to undefined symbols (N in this case) evaluating to n
    in a tristate sense.
    
    Remove the default from ARC_EMUL_UNALIGNED instead of changing it. bool
    and tristate symbols implicitly default to n.
    
    Discovered with the
    https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_ulfalizer_Kconfiglib_blob_master_examples_list-5Fundefined.py&d=DwIBAg&c=DPL6_X_6JkXFx7AXWqB0tg&r=c14YS-cH-kdhTOW89KozFhBtBJgs1zXscZojEZQ0THs&m=WxxD8ozR7QQUVzNCBksiznaisBGO_crN7PBOvAoju8s&s=1LmxsNqxwT-7wcInVpZ6Z1J27duZKSoyKxHIJclXU_M&e=
    script.
    
    Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
    Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5fa8ed82ff4696425df12cb6ac4e755c9692f3c6
Author: Mark Salter <msalter@redhat.com>
Date:   Fri Feb 2 09:20:29 2018 -0500

    irqchip/gic-v3: Change pr_debug message to pr_devel
    
    [ Upstream commit b6dd4d83dc2f78cebc9a7e6e7e4bc2be4d29b94d ]
    
    The pr_debug() in gic-v3 gic_send_sgi() can trigger a circular locking
    warning:
    
     GICv3: CPU10: ICC_SGI1R_EL1 5000400
     ======================================================
     WARNING: possible circular locking dependency detected
     4.15.0+ #1 Tainted: G        W
     ------------------------------------------------------
     dynamic_debug01/1873 is trying to acquire lock:
      ((console_sem).lock){-...}, at: [<0000000099c891ec>] down_trylock+0x20/0x4c
    
     but task is already holding lock:
      (&rq->lock){-.-.}, at: [<00000000842e1587>] __task_rq_lock+0x54/0xdc
    
     which lock already depends on the new lock.
    
     the existing dependency chain (in reverse order) is:
    
     -> #2 (&rq->lock){-.-.}:
            __lock_acquire+0x3b4/0x6e0
            lock_acquire+0xf4/0x2a8
            _raw_spin_lock+0x4c/0x60
            task_fork_fair+0x3c/0x148
            sched_fork+0x10c/0x214
            copy_process.isra.32.part.33+0x4e8/0x14f0
            _do_fork+0xe8/0x78c
            kernel_thread+0x48/0x54
            rest_init+0x34/0x2a4
            start_kernel+0x45c/0x488
    
     -> #1 (&p->pi_lock){-.-.}:
            __lock_acquire+0x3b4/0x6e0
            lock_acquire+0xf4/0x2a8
            _raw_spin_lock_irqsave+0x58/0x70
            try_to_wake_up+0x48/0x600
            wake_up_process+0x28/0x34
            __up.isra.0+0x60/0x6c
            up+0x60/0x68
            __up_console_sem+0x4c/0x7c
            console_unlock+0x328/0x634
            vprintk_emit+0x25c/0x390
            dev_vprintk_emit+0xc4/0x1fc
            dev_printk_emit+0x88/0xa8
            __dev_printk+0x58/0x9c
            _dev_info+0x84/0xa8
            usb_new_device+0x100/0x474
            hub_port_connect+0x280/0x92c
            hub_event+0x740/0xa84
            process_one_work+0x240/0x70c
            worker_thread+0x60/0x400
            kthread+0x110/0x13c
            ret_from_fork+0x10/0x18
    
     -> #0 ((console_sem).lock){-...}:
            validate_chain.isra.34+0x6e4/0xa20
            __lock_acquire+0x3b4/0x6e0
            lock_acquire+0xf4/0x2a8
            _raw_spin_lock_irqsave+0x58/0x70
            down_trylock+0x20/0x4c
            __down_trylock_console_sem+0x3c/0x9c
            console_trylock+0x20/0xb0
            vprintk_emit+0x254/0x390
            vprintk_default+0x58/0x90
            vprintk_func+0xbc/0x164
            printk+0x80/0xa0
            __dynamic_pr_debug+0x84/0xac
            gic_raise_softirq+0x184/0x18c
            smp_cross_call+0xac/0x218
            smp_send_reschedule+0x3c/0x48
            resched_curr+0x60/0x9c
            check_preempt_curr+0x70/0xdc
            wake_up_new_task+0x310/0x470
            _do_fork+0x188/0x78c
            SyS_clone+0x44/0x50
            __sys_trace_return+0x0/0x4
    
     other info that might help us debug this:
    
     Chain exists of:
       (console_sem).lock --> &p->pi_lock --> &rq->lock
    
      Possible unsafe locking scenario:
    
            CPU0                    CPU1
            ----                    ----
       lock(&rq->lock);
                                    lock(&p->pi_lock);
                                    lock(&rq->lock);
       lock((console_sem).lock);
    
      *** DEADLOCK ***
    
     2 locks held by dynamic_debug01/1873:
      #0:  (&p->pi_lock){-.-.}, at: [<000000001366df53>] wake_up_new_task+0x40/0x470
      #1:  (&rq->lock){-.-.}, at: [<00000000842e1587>] __task_rq_lock+0x54/0xdc
    
     stack backtrace:
     CPU: 10 PID: 1873 Comm: dynamic_debug01 Tainted: G        W        4.15.0+ #1
     Hardware name: GIGABYTE R120-T34-00/MT30-GS2-00, BIOS T48 10/02/2017
     Call trace:
      dump_backtrace+0x0/0x188
      show_stack+0x24/0x2c
      dump_stack+0xa4/0xe0
      print_circular_bug.isra.31+0x29c/0x2b8
      check_prev_add.constprop.39+0x6c8/0x6dc
      validate_chain.isra.34+0x6e4/0xa20
      __lock_acquire+0x3b4/0x6e0
      lock_acquire+0xf4/0x2a8
      _raw_spin_lock_irqsave+0x58/0x70
      down_trylock+0x20/0x4c
      __down_trylock_console_sem+0x3c/0x9c
      console_trylock+0x20/0xb0
      vprintk_emit+0x254/0x390
      vprintk_default+0x58/0x90
      vprintk_func+0xbc/0x164
      printk+0x80/0xa0
      __dynamic_pr_debug+0x84/0xac
      gic_raise_softirq+0x184/0x18c
      smp_cross_call+0xac/0x218
      smp_send_reschedule+0x3c/0x48
      resched_curr+0x60/0x9c
      check_preempt_curr+0x70/0xdc
      wake_up_new_task+0x310/0x470
      _do_fork+0x188/0x78c
      SyS_clone+0x44/0x50
      __sys_trace_return+0x0/0x4
     GICv3: CPU0: ICC_SGI1R_EL1 12000
    
    This could be fixed with printk_deferred() but that might lessen its
    usefulness for debugging. So change it to pr_devel to keep it out of
    production kernels. Developers working on gic-v3 can enable it as
    needed in their kernels.
    
    Signed-off-by: Mark Salter <msalter@redhat.com>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31710e63fa66518d1b9c1101060c2d0369e09b11
Author: Michael Kelley <mhkelley@outlook.com>
Date:   Wed Feb 14 02:54:03 2018 +0000

    cpumask: Make for_each_cpu_wrap() available on UP as well
    
    [ Upstream commit d207af2eab3f8668b95ad02b21930481c42806fd ]
    
    for_each_cpu_wrap() was originally added in the #else half of a
    large "#if NR_CPUS == 1" statement, but was omitted in the #if
    half.  This patch adds the missing #if half to prevent compile
    errors when NR_CPUS is 1.
    
    Reported-by: kbuild test robot <fengguang.wu@intel.com>
    Signed-off-by: Michael Kelley <mhkelley@outlook.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: kys@microsoft.com
    Cc: martin.petersen@oracle.com
    Cc: mikelley@microsoft.com
    Fixes: c743f0a5c50f ("sched/fair, cpumask: Export for_each_cpu_wrap()")
    Link: http://lkml.kernel.org/r/SN6PR1901MB2045F087F59450507D4FCC17CBF50@SN6PR1901MB2045.namprd19.prod.outlook.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f409f1576de19de5545383d40373721bc723d2e
Author: Stephen Boyd <sboyd@codeaurora.org>
Date:   Thu Feb 1 09:03:29 2018 -0800

    irqchip/gic-v3: Ignore disabled ITS nodes
    
    [ Upstream commit 95a2562590c2f64a0398183f978d5cf3db6d0284 ]
    
    On some platforms there's an ITS available but it's not enabled
    because reading or writing the registers is denied by the
    firmware. In fact, reading or writing them will cause the system
    to reset. We could remove the node from DT in such a case, but
    it's better to skip nodes that are marked as "disabled" in DT so
    that we can describe the hardware that exists and use the status
    property to indicate how the firmware has configured things.
    
    Cc: Stuart Yoder <stuyoder@gmail.com>
    Cc: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Rajendra Nayak <rnayak@codeaurora.org>
    Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
    Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c8723ceed341db0e62570f5b996554bd60026af5
Author: Will Deacon <will.deacon@arm.com>
Date:   Tue Feb 13 13:22:57 2018 +0000

    locking/qspinlock: Ensure node->count is updated before initialising node
    
    [ Upstream commit 11dc13224c975efcec96647a4768a6f1bb7a19a8 ]
    
    When queuing on the qspinlock, the count field for the current CPU's head
    node is incremented. This needn't be atomic because locking in e.g. IRQ
    context is balanced and so an IRQ will return with node->count as it
    found it.
    
    However, the compiler could in theory reorder the initialisation of
    node[idx] before the increment of the head node->count, causing an
    IRQ to overwrite the initialised node and potentially corrupt the lock
    state.
    
    Avoid the potential for this harmful compiler reordering by placing a
    barrier() between the increment of the head node->count and the subsequent
    node initialisation.
    
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1518528177-19169-3-git-send-email-will.deacon@arm.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 059befd4e0ae7ad7c54d5d292a3cb75b51ff4bf9
Author: Jia Zhang <zhang.jia@linux.alibaba.com>
Date:   Mon Feb 12 22:44:53 2018 +0800

    vfs/proc/kcore, x86/mm/kcore: Fix SMAP fault when dumping vsyscall user page
    
    [ Upstream commit 595dd46ebfc10be041a365d0a3fa99df50b6ba73 ]
    
    Commit:
    
      df04abfd181a ("fs/proc/kcore.c: Add bounce buffer for ktext data")
    
    ... introduced a bounce buffer to work around CONFIG_HARDENED_USERCOPY=y.
    However, accessing the vsyscall user page will cause an SMAP fault.
    
    Replace memcpy() with copy_from_user() to fix this bug works, but adding
    a common way to handle this sort of user page may be useful for future.
    
    Currently, only vsyscall page requires KCORE_USER.
    
    Signed-off-by: Jia Zhang <zhang.jia@linux.alibaba.com>
    Reviewed-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: jolsa@redhat.com
    Link: http://lkml.kernel.org/r/1518446694-21124-2-git-send-email-zhang.jia@linux.alibaba.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 517fbc77e8b44eed689d1576245e16a62a647f22
Author: Daniel Borkmann <daniel@iogearbox.net>
Date:   Fri Feb 9 14:49:44 2018 +0100

    bpf: fix rlimit in reuseport net selftest
    
    [ Upstream commit 941ff6f11c020913f5cddf543a9ec63475d7c082 ]
    
    Fix two issues in the reuseport_bpf selftests that were
    reported by Linaro CI:
    
      [...]
      + ./reuseport_bpf
      ---- IPv4 UDP ----
      Testing EBPF mod 10...
      Reprograming, testing mod 5...
      ./reuseport_bpf: ebpf error. log:
      0: (bf) r6 = r1
      1: (20) r0 = *(u32 *)skb[0]
      2: (97) r0 %= 10
      3: (95) exit
      processed 4 insns
      : Operation not permitted
      + echo FAIL
      [...]
      ---- IPv4 TCP ----
      Testing EBPF mod 10...
      ./reuseport_bpf: failed to bind send socket: Address already in use
      + echo FAIL
      [...]
    
    For the former adjust rlimit since this was the cause of
    failure for loading the BPF prog, and for the latter add
    SO_REUSEADDR.
    
    Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
    Link: https://bugs.linaro.org/show_bug.cgi?id=3502
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a7f9a7eb40cab86b15908f17f987f00259e1d22e
Author: Jesper Dangaard Brouer <brouer@redhat.com>
Date:   Thu Feb 8 12:48:32 2018 +0100

    tools/libbpf: handle issues with bpf ELF objects containing .eh_frames
    
    [ Upstream commit e3d91b0ca523d53158f435a3e13df7f0cb360ea2 ]
    
    V3: More generic skipping of relo-section (suggested by Daniel)
    
    If clang >= 4.0.1 is missing the option '-target bpf', it will cause
    llc/llvm to create two ELF sections for "Exception Frames", with
    section names '.eh_frame' and '.rel.eh_frame'.
    
    The BPF ELF loader library libbpf fails when loading files with these
    sections.  The other in-kernel BPF ELF loader in samples/bpf/bpf_load.c,
    handle this gracefully. And iproute2 loader also seems to work with these
    "eh" sections.
    
    The issue in libbpf is caused by bpf_object__elf_collect() skipping
    some sections, and later when performing relocation it will be
    pointing to a skipped section, as these sections cannot be found by
    bpf_object__find_prog_by_idx() in bpf_object__collect_reloc().
    
    This is a general issue that also occurs for other sections, like
    debug sections which are also skipped and can have relo section.
    
    As suggested by Daniel.  To avoid keeping state about all skipped
    sections, instead perform a direct qlookup in the ELF object.  Lookup
    the section that the relo-section points to and check if it contains
    executable machine instructions (denoted by the sh_flags
    SHF_EXECINSTR).  Use this check to also skip irrelevant relo-sections.
    
    Note, for samples/bpf/ the '-target bpf' parameter to clang cannot be used
    due to incompatibility with asm embedded headers, that some of the samples
    include. This is explained in more details by Yonghong Song in bpf_devel_QA.
    
    Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4008f81ccdffd9960e92a8332b19125976174fb
Author: Tang Junhui <tang.junhui@zte.com.cn>
Date:   Wed Feb 7 11:41:45 2018 -0800

    bcache: return attach error when no cache set exist
    
    [ Upstream commit 7f4fc93d4713394ee8f1cd44c238e046e11b4f15 ]
    
    I attach a back-end device to a cache set, and the cache set is not
    registered yet, this back-end device did not attach successfully, and no
    error returned:
    [root]# echo 87859280-fec6-4bcc-20df7ca8f86b > /sys/block/sde/bcache/attach
    [root]#
    
    In sysfs_attach(), the return value "v" is initialized to "size" in
    the beginning, and if no cache set exist in bch_cache_sets, the "v" value
    would not change any more, and return to sysfs, sysfs regard it as success
    since the "size" is a positive number.
    
    This patch fixes this issue by assigning "v" with "-ENOENT" in the
    initialization.
    
    Signed-off-by: Tang Junhui <tang.junhui@zte.com.cn>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d5da3123946e74d822022f95091fc3fe60f9f61
Author: Tang Junhui <tang.junhui@zte.com.cn>
Date:   Wed Feb 7 11:41:46 2018 -0800

    bcache: fix for data collapse after re-attaching an attached device
    
    [ Upstream commit 73ac105be390c1de42a2f21643c9778a5e002930 ]
    
    back-end device sdm has already attached a cache_set with ID
    f67ebe1f-f8bc-4d73-bfe5-9dc88607f119, then try to attach with
    another cache set, and it returns with an error:
    [root]# cd /sys/block/sdm/bcache
    [root]# echo 5ccd0a63-148e-48b8-afa2-aca9cbd6279f > attach
    -bash: echo: write error: Invalid argument
    
    After that, execute a command to modify the label of bcache
    device:
    [root]# echo data_disk1 > label
    
    Then we reboot the system, when the system power on, the back-end
    device can not attach to cache_set, a messages show in the log:
    Feb  5 12:05:52 ceph152 kernel: [922385.508498] bcache:
    bch_cached_dev_attach() couldn't find uuid for sdm in set
    
    In sysfs_attach(), dc->sb.set_uuid was assigned to the value
    which input through sysfs, no matter whether it is success
    or not in bch_cached_dev_attach(). For example, If the back-end
    device has already attached to an cache set, bch_cached_dev_attach()
    would fail, but dc->sb.set_uuid was changed. Then modify the
    label of bcache device, it will call bch_write_bdev_super(),
    which would write the dc->sb.set_uuid to the super block, so we
    record a wrong cache set ID in the super block, after the system
    reboot, the cache set couldn't find the uuid of the back-end
    device, so the bcache device couldn't exist and use any more.
    
    In this patch, we don't assigned cache set ID to dc->sb.set_uuid
    in sysfs_attach() directly, but input it into bch_cached_dev_attach(),
    and assigned dc->sb.set_uuid to the cache set ID after the back-end
    device attached to the cache set successful.
    
    Signed-off-by: Tang Junhui <tang.junhui@zte.com.cn>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d26dcc057c716cf4ffd7e6efe6567d7038fa35e1
Author: Tang Junhui <tang.junhui@zte.com.cn>
Date:   Wed Feb 7 11:41:43 2018 -0800

    bcache: fix for allocator and register thread race
    
    [ Upstream commit 682811b3ce1a5a4e20d700939a9042f01dbc66c4 ]
    
    After long time running of random small IO writing,
    I reboot the machine, and after the machine power on,
    I found bcache got stuck, the stack is:
    [root@ceph153 ~]# cat /proc/2510/task/*/stack
    [<ffffffffa06b2455>] closure_sync+0x25/0x90 [bcache]
    [<ffffffffa06b6be8>] bch_journal+0x118/0x2b0 [bcache]
    [<ffffffffa06b6dc7>] bch_journal_meta+0x47/0x70 [bcache]
    [<ffffffffa06be8f7>] bch_prio_write+0x237/0x340 [bcache]
    [<ffffffffa06a8018>] bch_allocator_thread+0x3c8/0x3d0 [bcache]
    [<ffffffff810a631f>] kthread+0xcf/0xe0
    [<ffffffff8164c318>] ret_from_fork+0x58/0x90
    [<ffffffffffffffff>] 0xffffffffffffffff
    [root@ceph153 ~]# cat /proc/2038/task/*/stack
    [<ffffffffa06b1abd>] __bch_btree_map_nodes+0x12d/0x150 [bcache]
    [<ffffffffa06b1bd1>] bch_btree_insert+0xf1/0x170 [bcache]
    [<ffffffffa06b637f>] bch_journal_replay+0x13f/0x230 [bcache]
    [<ffffffffa06c75fe>] run_cache_set+0x79a/0x7c2 [bcache]
    [<ffffffffa06c0cf8>] register_bcache+0xd48/0x1310 [bcache]
    [<ffffffff812f702f>] kobj_attr_store+0xf/0x20
    [<ffffffff8125b216>] sysfs_write_file+0xc6/0x140
    [<ffffffff811dfbfd>] vfs_write+0xbd/0x1e0
    [<ffffffff811e069f>] SyS_write+0x7f/0xe0
    [<ffffffff8164c3c9>] system_call_fastpath+0x16/0x1
    The stack shows the register thread and allocator thread
    were getting stuck when registering cache device.
    
    I reboot the machine several times, the issue always
    exsit in this machine.
    
    I debug the code, and found the call trace as bellow:
    register_bcache()
       ==>run_cache_set()
          ==>bch_journal_replay()
             ==>bch_btree_insert()
                ==>__bch_btree_map_nodes()
                   ==>btree_insert_fn()
                      ==>btree_split() //node need split
                         ==>btree_check_reserve()
    In btree_check_reserve(), It will check if there is enough buckets
    of RESERVE_BTREE type, since allocator thread did not work yet, so
    no buckets of RESERVE_BTREE type allocated, so the register thread
    waits on c->btree_cache_wait, and goes to sleep.
    
    Then the allocator thread initialized, the call trace is bellow:
    bch_allocator_thread()
    ==>bch_prio_write()
       ==>bch_journal_meta()
          ==>bch_journal()
             ==>journal_wait_for_write()
    In journal_wait_for_write(), It will check if journal is full by
    journal_full(), but the long time random small IO writing
    causes the exhaustion of journal buckets(journal.blocks_free=0),
    In order to release the journal buckets,
    the allocator calls btree_flush_write() to flush keys to
    btree nodes, and waits on c->journal.wait until btree nodes writing
    over or there has already some journal buckets space, then the
    allocator thread goes to sleep. but in btree_flush_write(), since
    bch_journal_replay() is not finished, so no btree nodes have journal
    (condition "if (btree_current_write(b)->journal)" never satisfied),
    so we got no btree node to flush, no journal bucket released,
    and allocator sleep all the times.
    
    Through the above analysis, we can see that:
    1) Register thread wait for allocator thread to allocate buckets of
       RESERVE_BTREE type;
    2) Alloctor thread wait for register thread to replay journal, so it
       can flush btree nodes and get journal bucket.
       then they are all got stuck by waiting for each other.
    
    Hua Rui provided a patch for me, by allocating some buckets of
    RESERVE_BTREE type in advance, so the register thread can get bucket
    when btree node splitting and no need to waiting for the allocator
    thread. I tested it, it has effect, and register thread run a step
    forward, but finally are still got stuck, the reason is only 8 bucket
    of RESERVE_BTREE type were allocated, and in bch_journal_replay(),
    after 2 btree nodes splitting, only 4 bucket of RESERVE_BTREE type left,
    then btree_check_reserve() is not satisfied anymore, so it goes to sleep
    again, and in the same time, alloctor thread did not flush enough btree
    nodes to release a journal bucket, so they all got stuck again.
    
    So we need to allocate more buckets of RESERVE_BTREE type in advance,
    but how much is enough?  By experience and test, I think it should be
    as much as journal buckets. Then I modify the code as this patch,
    and test in the machine, and it works.
    
    This patch modified base on Hua Rui’s patch, and allocate more buckets
    of RESERVE_BTREE type in advance to avoid register thread and allocate
    thread going to wait for each other.
    
    [patch v2] ca->sb.njournal_buckets would be 0 in the first time after
    cache creation, and no journal exists, so just 8 btree buckets is OK.
    
    Signed-off-by: Hua Rui <huarui.dev@gmail.com>
    Signed-off-by: Tang Junhui <tang.junhui@zte.com.cn>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee6fcd83cc8b9f1b7f7d3ea3314c1f8d2f410e5e
Author: Coly Li <colyli@suse.de>
Date:   Wed Feb 7 11:41:41 2018 -0800

    bcache: properly set task state in bch_writeback_thread()
    
    [ Upstream commit 99361bbf26337186f02561109c17a4c4b1a7536a ]
    
    Kernel thread routine bch_writeback_thread() has the following code block,
    
    447         down_write(&dc->writeback_lock);
    448~450     if (check conditions) {
    451                 up_write(&dc->writeback_lock);
    452                 set_current_state(TASK_INTERRUPTIBLE);
    453
    454                 if (kthread_should_stop())
    455                         return 0;
    456
    457                 schedule();
    458                 continue;
    459         }
    
    If condition check is true, its task state is set to TASK_INTERRUPTIBLE
    and call schedule() to wait for others to wake up it.
    
    There are 2 issues in current code,
    1, Task state is set to TASK_INTERRUPTIBLE after the condition checks, if
       another process changes the condition and call wake_up_process(dc->
       writeback_thread), then at line 452 task state is set back to
       TASK_INTERRUPTIBLE, the writeback kernel thread will lose a chance to be
       waken up.
    2, At line 454 if kthread_should_stop() is true, writeback kernel thread
       will return to kernel/kthread.c:kthread() with TASK_INTERRUPTIBLE and
       call do_exit(). It is not good to enter do_exit() with task state
       TASK_INTERRUPTIBLE, in following code path might_sleep() is called and a
       warning message is reported by __might_sleep(): "WARNING: do not call
       blocking ops when !TASK_RUNNING; state=1 set at [xxxx]".
    
    For the first issue, task state should be set before condition checks.
    Ineed because dc->writeback_lock is required when modifying all the
    conditions, calling set_current_state() inside code block where dc->
    writeback_lock is hold is safe. But this is quite implicit, so I still move
    set_current_state() before all the condition checks.
    
    For the second issue, frankley speaking it does not hurt when kernel thread
    exits with TASK_INTERRUPTIBLE state, but this warning message scares users,
    makes them feel there might be something risky with bcache and hurt their
    data.  Setting task state to TASK_RUNNING before returning fixes this
    problem.
    
    In alloc.c:allocator_wait(), there is also a similar issue, and is also
    fixed in this patch.
    
    Changelog:
    v3: merge two similar fixes into one patch
    v2: fix the race issue in v1 patch.
    v1: initial buggy fix.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Reviewed-by: Hannes Reinecke <hare@suse.de>
    Reviewed-by: Michael Lyle <mlyle@lyle.org>
    Cc: Michael Lyle <mlyle@lyle.org>
    Cc: Junhui Tang <tang.junhui@zte.com.cn>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4bf53b51342b134dfcd6e4a6477547077b8b545d
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Feb 2 16:48:47 2018 +0100

    cifs: silence compiler warnings showing up with gcc-8.0.0
    
    [ Upstream commit ade7db991b47ab3016a414468164f4966bd08202 ]
    
    This bug was fixed before, but came up again with the latest
    compiler in another function:
    
    fs/cifs/cifssmb.c: In function 'CIFSSMBSetEA':
    fs/cifs/cifssmb.c:6362:3: error: 'strncpy' offset 8 is out of the bounds [0, 4] [-Werror=array-bounds]
       strncpy(parm_data->list[0].name, ea_name, name_len);
    
    Let's apply the same fix that was used for the other instances.
    
    Fixes: b2a3ad9ca502 ("cifs: silence compiler warnings showing up with gcc-4.7.0")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Steve French <smfrench@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e0a1a0173aceffb45c8ab008d3d37c096224af56
Author: Alexey Dobriyan <adobriyan@gmail.com>
Date:   Tue Feb 6 15:36:59 2018 -0800

    proc: fix /proc/*/map_files lookup
    
    [ Upstream commit ac7f1061c2c11bb8936b1b6a94cdb48de732f7a4 ]
    
    Current code does:
    
            if (sscanf(dentry->d_name.name, "%lx-%lx", start, end) != 2)
    
    However sscanf() is broken garbage.
    
    It silently accepts whitespace between format specifiers
    (did you know that?).
    
    It silently accepts valid strings which result in integer overflow.
    
    Do not use sscanf() for any even remotely reliable parsing code.
    
            OK
            # readlink '/proc/1/map_files/55a23af39000-55a23b05b000'
            /lib/systemd/systemd
    
            broken
            # readlink '/proc/1/map_files/               55a23af39000-55a23b05b000'
            /lib/systemd/systemd
    
            broken
            # readlink '/proc/1/map_files/55a23af39000-55a23b05b000    '
            /lib/systemd/systemd
    
            very broken
            # readlink '/proc/1/map_files/1000000000000000055a23af39000-55a23b05b000'
            /lib/systemd/systemd
    
    Andrei said:
    
    : This patch breaks criu.  It was a bug in criu.  And this bug is on a minor
    : path, which works when memfd_create() isn't available.  It is a reason why
    : I ask to not backport this patch to stable kernels.
    :
    : In CRIU this bug can be triggered, only if this patch will be backported
    : to a kernel which version is lower than v3.16.
    
    Link: http://lkml.kernel.org/r/20171120212706.GA14325@avx2
    Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Pavel Emelyanov <xemul@openvz.org>
    Cc: Andrei Vagin <avagin@virtuozzo.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0675ec13c63f9eb918342b63614738767ef079a3
Author: Will Deacon <will.deacon@arm.com>
Date:   Wed Jan 31 12:12:20 2018 +0000

    arm64: spinlock: Fix theoretical trylock() A-B-A with LSE atomics
    
    [ Upstream commit 202fb4ef81e3ec765c23bd1e6746a5c25b797d0e ]
    
    If the spinlock "next" ticket wraps around between the initial LDR
    and the cmpxchg in the LSE version of spin_trylock, then we can erroneously
    think that we have successfuly acquired the lock because we only check
    whether the next ticket return by the cmpxchg is equal to the owner ticket
    in our updated lock word.
    
    This patch fixes the issue by performing a full 32-bit check of the lock
    word when trying to determine whether or not the CASA instruction updated
    memory.
    
    Reported-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0138dc31d07220a07adbf065bb8fee023a02f40
Author: Guanglei Li <guanglei.li@oracle.com>
Date:   Tue Feb 6 10:43:21 2018 +0800

    RDS: IB: Fix null pointer issue
    
    [ Upstream commit 2c0aa08631b86a4678dbc93b9caa5248014b4458 ]
    
    Scenario:
    1. Port down and do fail over
    2. Ap do rds_bind syscall
    
    PID: 47039  TASK: ffff89887e2fe640  CPU: 47  COMMAND: "kworker/u:6"
     #0 [ffff898e35f159f0] machine_kexec at ffffffff8103abf9
     #1 [ffff898e35f15a60] crash_kexec at ffffffff810b96e3
     #2 [ffff898e35f15b30] oops_end at ffffffff8150f518
     #3 [ffff898e35f15b60] no_context at ffffffff8104854c
     #4 [ffff898e35f15ba0] __bad_area_nosemaphore at ffffffff81048675
     #5 [ffff898e35f15bf0] bad_area_nosemaphore at ffffffff810487d3
     #6 [ffff898e35f15c00] do_page_fault at ffffffff815120b8
     #7 [ffff898e35f15d10] page_fault at ffffffff8150ea95
        [exception RIP: unknown or invalid address]
        RIP: 0000000000000000  RSP: ffff898e35f15dc8  RFLAGS: 00010282
        RAX: 00000000fffffffe  RBX: ffff889b77f6fc00  RCX:ffffffff81c99d88
        RDX: 0000000000000000  RSI: ffff896019ee08e8  RDI:ffff889b77f6fc00
        RBP: ffff898e35f15df0   R8: ffff896019ee08c8  R9:0000000000000000
        R10: 0000000000000400  R11: 0000000000000000  R12:ffff896019ee08c0
        R13: ffff889b77f6fe68  R14: ffffffff81c99d80  R15: ffffffffa022a1e0
        ORIG_RAX: ffffffffffffffff  CS: 0010 SS: 0018
     #8 [ffff898e35f15dc8] cma_ndev_work_handler at ffffffffa022a228 [rdma_cm]
     #9 [ffff898e35f15df8] process_one_work at ffffffff8108a7c6
     #10 [ffff898e35f15e58] worker_thread at ffffffff8108bda0
     #11 [ffff898e35f15ee8] kthread at ffffffff81090fe6
    
    PID: 45659  TASK: ffff880d313d2500  CPU: 31  COMMAND: "oracle_45659_ap"
     #0 [ffff881024ccfc98] __schedule at ffffffff8150bac4
     #1 [ffff881024ccfd40] schedule at ffffffff8150c2cf
     #2 [ffff881024ccfd50] __mutex_lock_slowpath at ffffffff8150cee7
     #3 [ffff881024ccfdc0] mutex_lock at ffffffff8150cdeb
     #4 [ffff881024ccfde0] rdma_destroy_id at ffffffffa022a027 [rdma_cm]
     #5 [ffff881024ccfe10] rds_ib_laddr_check at ffffffffa0357857 [rds_rdma]
     #6 [ffff881024ccfe50] rds_trans_get_preferred at ffffffffa0324c2a [rds]
     #7 [ffff881024ccfe80] rds_bind at ffffffffa031d690 [rds]
     #8 [ffff881024ccfeb0] sys_bind at ffffffff8142a670
    
    PID: 45659                          PID: 47039
    rds_ib_laddr_check
      /* create id_priv with a null event_handler */
      rdma_create_id
      rdma_bind_addr
        cma_acquire_dev
          /* add id_priv to cma_dev->id_list */
          cma_attach_to_dev
                                        cma_ndev_work_handler
                                          /* event_hanlder is null */
                                          id_priv->id.event_handler
    
    Signed-off-by: Guanglei Li <guanglei.li@oracle.com>
    Signed-off-by: Honglei Wang <honglei.wang@oracle.com>
    Reviewed-by: Junxiao Bi <junxiao.bi@oracle.com>
    Reviewed-by: Yanjun Zhu <yanjun.zhu@oracle.com>
    Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Acked-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 240ef711607a8b53e185b1e15b7f3920f677493d
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Thu Jan 11 09:36:37 2018 +0000

    xen/grant-table: Use put_page instead of free_page
    
    [ Upstream commit 3ac7292a25db1c607a50752055a18aba32ac2176 ]
    
    The page given to gnttab_end_foreign_access() to free could be a
    compound page so use put_page() instead of free_page() since it can
    handle both compound and single pages correctly.
    
    This bug was discovered when migrating a Xen VM with several VIFs and
    CONFIG_DEBUG_VM enabled. It hits a BUG usually after fewer than 10
    iterations. All netfront devices disconnect from the backend during a
    suspend/resume and this will call gnttab_end_foreign_access() if a
    netfront queue has an outstanding skb. The mismatch between calling
    get_page() and free_page() on a compound page causes a reference
    counting error which is detected when DEBUG_VM is enabled.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca3108cd4764000309fdb8900262d183641eab49
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Thu Jan 11 09:36:38 2018 +0000

    xen-netfront: Fix race between device setup and open
    
    [ Upstream commit f599c64fdf7d9c108e8717fb04bc41c680120da4 ]
    
    When a netfront device is set up it registers a netdev fairly early on,
    before it has set up the queues and is actually usable. A userspace tool
    like NetworkManager will immediately try to open it and access its state
    as soon as it appears. The bug can be reproduced by hotplugging VIFs
    until the VM runs out of grant refs. It registers the netdev but fails
    to set up any queues (since there are no more grant refs). In the
    meantime, NetworkManager opens the device and the kernel crashes trying
    to access the queues (of which there are none).
    
    Fix this in two ways:
    * For initial setup, register the netdev much later, after the queues
    are setup. This avoids the race entirely.
    * During a suspend/resume cycle, the frontend reconnects to the backend
    and the queues are recreated. It is possible (though highly unlikely) to
    race with something opening the device and accessing the queues after
    they have been destroyed but before they have been recreated. Extend the
    region covered by the rtnl semaphore to protect against this race. There
    is a possibility that we fail to recreate the queues so check for this
    in the open function.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6a4ef16ab138c007d6eb250ffd2e1a4a6bd6513
Author: Matt Redfearn <matt.redfearn@mips.com>
Date:   Mon Jan 29 11:26:45 2018 +0000

    MIPS: TXx9: use IS_BUILTIN() for CONFIG_LEDS_CLASS
    
    [ Upstream commit 0cde5b44a30f1daaef1c34e08191239dc63271c4 ]
    
    When commit b27311e1cace ("MIPS: TXx9: Add RBTX4939 board support")
    added board support for the RBTX4939, it added a call to
    led_classdev_register even if the LED class is built as a module.
    Built-in arch code cannot call module code directly like this. Commit
    b33b44073734 ("MIPS: TXX9: use IS_ENABLED() macro") subsequently
    changed the inclusion of this code to a single check that
    CONFIG_LEDS_CLASS is either builtin or a module, but the same issue
    remains.
    
    This leads to MIPS allmodconfig builds failing when CONFIG_MACH_TX49XX=y
    is set:
    
    arch/mips/txx9/rbtx4939/setup.o: In function `rbtx4939_led_probe':
    setup.c:(.init.text+0xc0): undefined reference to `of_led_classdev_register'
    make: *** [Makefile:999: vmlinux] Error 1
    
    Fix this by using the IS_BUILTIN() macro instead.
    
    Fixes: b27311e1cace ("MIPS: TXx9: Add RBTX4939 board support")
    Signed-off-by: Matt Redfearn <matt.redfearn@mips.com>
    Reviewed-by: James Hogan <jhogan@kernel.org>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/18544/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51b896a8558722ee2ef54ad59b5b572c4c41065e
Author: James Hogan <jhogan@kernel.org>
Date:   Fri Feb 2 22:14:09 2018 +0000

    MIPS: generic: Fix machine compatible matching
    
    [ Upstream commit 9a9ab3078e2744a1a55163cfaec73a5798aae33e ]
    
    We now have a platform (Ranchu) in the "generic" platform which matches
    based on the FDT compatible string using mips_machine_is_compatible(),
    however that function doesn't stop at a blank struct
    of_device_id::compatible as that is an array in the struct, not a
    pointer to a string.
    
    Fix the loop completion to check the first byte of the compatible array
    rather than the address of the compatible array in the struct.
    
    Fixes: eed0eabd12ef ("MIPS: generic: Introduce generic DT-based board support")
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Reviewed-by: Paul Burton <paul.burton@mips.com>
    Reviewed-by: Matt Redfearn <matt.redfearn@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Patchwork: https://patchwork.linux-mips.org/patch/18580/
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ee4bba566dda17c8d844c45dfbd8269b7d11f6fd
Author: Yonghong Song <yhs@fb.com>
Date:   Fri Feb 2 22:37:15 2018 -0800

    bpf: fix selftests/bpf test_kmod.sh failure when CONFIG_BPF_JIT_ALWAYS_ON=y
    
    [ Upstream commit 09584b406742413ac4c8d7e030374d4daa045b69 ]
    
    With CONFIG_BPF_JIT_ALWAYS_ON is defined in the config file,
    tools/testing/selftests/bpf/test_kmod.sh failed like below:
      [root@localhost bpf]# ./test_kmod.sh
      sysctl: setting key "net.core.bpf_jit_enable": Invalid argument
      [ JIT enabled:0 hardened:0 ]
      [  132.175681] test_bpf: #297 BPF_MAXINSNS: Jump, gap, jump, ... FAIL to prog_create err=-524 len=4096
      [  132.458834] test_bpf: Summary: 348 PASSED, 1 FAILED, [340/340 JIT'ed]
      [ JIT enabled:1 hardened:0 ]
      [  133.456025] test_bpf: #297 BPF_MAXINSNS: Jump, gap, jump, ... FAIL to prog_create err=-524 len=4096
      [  133.730935] test_bpf: Summary: 348 PASSED, 1 FAILED, [340/340 JIT'ed]
      [ JIT enabled:1 hardened:1 ]
      [  134.769730] test_bpf: #297 BPF_MAXINSNS: Jump, gap, jump, ... FAIL to prog_create err=-524 len=4096
      [  135.050864] test_bpf: Summary: 348 PASSED, 1 FAILED, [340/340 JIT'ed]
      [ JIT enabled:1 hardened:2 ]
      [  136.442882] test_bpf: #297 BPF_MAXINSNS: Jump, gap, jump, ... FAIL to prog_create err=-524 len=4096
      [  136.821810] test_bpf: Summary: 348 PASSED, 1 FAILED, [340/340 JIT'ed]
      [root@localhost bpf]#
    
    The test_kmod.sh load/remove test_bpf.ko multiple times with different
    settings for sysctl net.core.bpf_jit_{enable,harden}. The failed test #297
    of test_bpf.ko is designed such that JIT always fails.
    
    Commit 290af86629b2 (bpf: introduce BPF_JIT_ALWAYS_ON config)
    introduced the following tightening logic:
        ...
            if (!bpf_prog_is_dev_bound(fp->aux)) {
                    fp = bpf_int_jit_compile(fp);
        #ifdef CONFIG_BPF_JIT_ALWAYS_ON
                    if (!fp->jited) {
                            *err = -ENOTSUPP;
                            return fp;
                    }
        #endif
        ...
    With this logic, Test #297 always gets return value -ENOTSUPP
    when CONFIG_BPF_JIT_ALWAYS_ON is defined, causing the test failure.
    
    This patch fixed the failure by marking Test #297 as expected failure
    when CONFIG_BPF_JIT_ALWAYS_ON is defined.
    
    Fixes: 290af86629b2 (bpf: introduce BPF_JIT_ALWAYS_ON config)
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbaf06cca3dade6e1e5199f1fddf32f4a147dc13
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Jan 26 16:02:59 2018 +0100

    ACPI / scan: Use acpi_bus_get_status() to initialize ACPI_TYPE_DEVICE devs
    
    [ Upstream commit 63347db0affadcbccd5613116ea8431c70139b3e ]
    
    The acpi_get_bus_status wrapper for acpi_bus_get_status_handle has some
    code to handle certain device quirks, in some cases we also need this
    quirk handling for the initial _STA call.
    
    Specifically on some devices calling _STA before all _DEP dependencies
    are met results in errors like these:
    
    [    0.123579] ACPI Error: No handler for Region [ECRM] (00000000ba9edc4c)
                   [GenericSerialBus] (20170831/evregion-166)
    [    0.123601] ACPI Error: Region GenericSerialBus (ID=9) has no handler
                   (20170831/exfldio-299)
    [    0.123618] ACPI Error: Method parse/execution failed
                   \_SB.I2C1.BAT1._STA, AE_NOT_EXIST (20170831/psparse-550)
    
    acpi_get_bus_status already has code to avoid this, so by using it we
    also silence these errors from the initial _STA call.
    
    Note that in order for the acpi_get_bus_status handling for this to work,
    we initialize dep_unmet to 1 until acpi_device_dep_initialize gets called,
    this means that battery devices will be instantiated with an initial
    status of 0. This is not a problem, acpi_bus_attach will get called soon
    after the instantiation anyways and it will update the status as first
    point of order.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9a18bac19cdc52d082c362b694d37a1b7ddd4d81
Author: Chen Yu <yu.c.chen@intel.com>
Date:   Mon Jan 29 10:26:46 2018 +0800

    ACPI: processor_perflib: Do not send _PPC change notification if not ready
    
    [ Upstream commit ba1edb9a5125a617d612f98eead14b9b84e75c3a ]
    
    The following warning was triggered after resumed from S3 -
    if all the nonboot CPUs were put offline before suspend:
    
    [ 1840.329515] unchecked MSR access error: RDMSR from 0x771 at rIP: 0xffffffff86061e3a (native_read_msr+0xa/0x30)
    [ 1840.329516] Call Trace:
    [ 1840.329521]  __rdmsr_on_cpu+0x33/0x50
    [ 1840.329525]  generic_exec_single+0x81/0xb0
    [ 1840.329527]  smp_call_function_single+0xd2/0x100
    [ 1840.329530]  ? acpi_ds_result_pop+0xdd/0xf2
    [ 1840.329532]  ? acpi_ds_create_operand+0x215/0x23c
    [ 1840.329534]  rdmsrl_on_cpu+0x57/0x80
    [ 1840.329536]  ? cpumask_next+0x1b/0x20
    [ 1840.329538]  ? rdmsrl_on_cpu+0x57/0x80
    [ 1840.329541]  intel_pstate_update_perf_limits+0xf3/0x220
    [ 1840.329544]  ? notifier_call_chain+0x4a/0x70
    [ 1840.329546]  intel_pstate_set_policy+0x4e/0x150
    [ 1840.329548]  cpufreq_set_policy+0xcd/0x2f0
    [ 1840.329550]  cpufreq_update_policy+0xb2/0x130
    [ 1840.329552]  ? cpufreq_update_policy+0x130/0x130
    [ 1840.329556]  acpi_processor_ppc_has_changed+0x65/0x80
    [ 1840.329558]  acpi_processor_notify+0x80/0x100
    [ 1840.329561]  acpi_ev_notify_dispatch+0x44/0x5c
    [ 1840.329563]  acpi_os_execute_deferred+0x14/0x20
    [ 1840.329565]  process_one_work+0x193/0x3c0
    [ 1840.329567]  worker_thread+0x35/0x3b0
    [ 1840.329569]  kthread+0x125/0x140
    [ 1840.329571]  ? process_one_work+0x3c0/0x3c0
    [ 1840.329572]  ? kthread_park+0x60/0x60
    [ 1840.329575]  ? do_syscall_64+0x67/0x180
    [ 1840.329577]  ret_from_fork+0x25/0x30
    [ 1840.329585] unchecked MSR access error: WRMSR to 0x774 (tried to write 0x0000000000000000) at rIP: 0xffffffff86061f78 (native_write_msr+0x8/0x30)
    [ 1840.329586] Call Trace:
    [ 1840.329587]  __wrmsr_on_cpu+0x37/0x40
    [ 1840.329589]  generic_exec_single+0x81/0xb0
    [ 1840.329592]  smp_call_function_single+0xd2/0x100
    [ 1840.329594]  ? acpi_ds_create_operand+0x215/0x23c
    [ 1840.329595]  ? cpumask_next+0x1b/0x20
    [ 1840.329597]  wrmsrl_on_cpu+0x57/0x70
    [ 1840.329598]  ? rdmsrl_on_cpu+0x57/0x80
    [ 1840.329599]  ? wrmsrl_on_cpu+0x57/0x70
    [ 1840.329602]  intel_pstate_hwp_set+0xd3/0x150
    [ 1840.329604]  intel_pstate_set_policy+0x119/0x150
    [ 1840.329606]  cpufreq_set_policy+0xcd/0x2f0
    [ 1840.329607]  cpufreq_update_policy+0xb2/0x130
    [ 1840.329610]  ? cpufreq_update_policy+0x130/0x130
    [ 1840.329613]  acpi_processor_ppc_has_changed+0x65/0x80
    [ 1840.329615]  acpi_processor_notify+0x80/0x100
    [ 1840.329617]  acpi_ev_notify_dispatch+0x44/0x5c
    [ 1840.329619]  acpi_os_execute_deferred+0x14/0x20
    [ 1840.329620]  process_one_work+0x193/0x3c0
    [ 1840.329622]  worker_thread+0x35/0x3b0
    [ 1840.329624]  kthread+0x125/0x140
    [ 1840.329625]  ? process_one_work+0x3c0/0x3c0
    [ 1840.329626]  ? kthread_park+0x60/0x60
    [ 1840.329628]  ? do_syscall_64+0x67/0x180
    [ 1840.329631]  ret_from_fork+0x25/0x30
    
    This is because if there's only one online CPU, the MSR_PM_ENABLE
    (package wide)can not be enabled after resumed, due to
    intel_pstate_hwp_enable() will only be invoked on AP's online
    process after resumed - if there's no AP online, the HWP remains
    disabled after resumed (BIOS has disabled it in S3). Then if
    there comes a _PPC change notification which touches HWP register
    during this stage, the warning is triggered.
    
    Since we don't call acpi_processor_register_performance() when
    HWP is enabled, the pr->performance will be NULL. When this is
    NULL we don't need to do _PPC change notification.
    
    Reported-by: Doug Smythies <dsmythies@telus.net>
    Suggested-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Yu Chen <yu.c.chen@intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6fdca0dcd765c89d62d590951f5d60583f9816f5
Author: Jean Delvare <jdelvare@suse.de>
Date:   Sat Feb 3 11:25:20 2018 +0100

    firmware: dmi_scan: Fix handling of empty DMI strings
    
    [ Upstream commit a7770ae194569e96a93c48aceb304edded9cc648 ]
    
    The handling of empty DMI strings looks quite broken to me:
    * Strings from 1 to 7 spaces are not considered empty.
    * True empty DMI strings (string index set to 0) are not considered
      empty, and result in allocating a 0-char string.
    * Strings with invalid index also result in allocating a 0-char
      string.
    * Strings starting with 8 spaces are all considered empty, even if
      non-space characters follow (sounds like a weird thing to do, but
      I have actually seen occurrences of this in DMI tables before.)
    * Strings which are considered empty are reported as 8 spaces,
      instead of being actually empty.
    
    Some of these issues are the result of an off-by-one error in memcmp,
    the rest is incorrect by design.
    
    So let's get it square: missing strings and strings made of only
    spaces, regardless of their length, should be treated as empty and
    no memory should be allocated for them. All other strings are
    non-empty and should be allocated.
    
    Signed-off-by: Jean Delvare <jdelvare@suse.de>
    Fixes: 79da4721117f ("x86: fix DMI out of memory problems")
    Cc: Parag Warudkar <parag.warudkar@gmail.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b2e949bfbac09a9906d1117d25a90d6710d3c647
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Feb 2 15:56:18 2018 +0100

    x86/power: Fix swsusp_arch_resume prototype
    
    [ Upstream commit 328008a72d38b5bde6491e463405c34a81a65d3e ]
    
    The declaration for swsusp_arch_resume marks it as 'asmlinkage', but the
    definition in x86-32 does not, and it fails to include the header with the
    declaration. This leads to a warning when building with
    link-time-optimizations:
    
    kernel/power/power.h:108:23: error: type of 'swsusp_arch_resume' does not match original declaration [-Werror=lto-type-mismatch]
     extern asmlinkage int swsusp_arch_resume(void);
                           ^
    arch/x86/power/hibernate_32.c:148:0: note: 'swsusp_arch_resume' was previously declared here
     int swsusp_arch_resume(void)
    
    This moves the declaration into a globally visible header file and fixes up
    both x86 definitions to match it.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: Len Brown <len.brown@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Nicolas Pitre <nico@linaro.org>
    Cc: linux-pm@vger.kernel.org
    Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Bart Van Assche <bart.vanassche@wdc.com>
    Link: https://lkml.kernel.org/r/20180202145634.200291-2-arnd@arndb.de
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dd5968e80959b68f3883e03e01d8920312340599
Author: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Date:   Wed Jan 31 04:50:01 2018 -0700

    netfilter: ipv6: nf_defrag: Kill frag queue on RFC2460 failure
    
    [ Upstream commit ea23d5e3bf340e413b8e05c13da233c99c64142b ]
    
    Failures were seen in ICMPv6 fragmentation timeout tests if they were
    run after the RFC2460 failure tests. Kernel was not sending out the
    ICMPv6 fragment reassembly time exceeded packet after the fragmentation
    reassembly timeout of 1 minute had elapsed.
    
    This happened because the frag queue was not released if an error in
    IPv6 fragmentation header was detected by RFC2460.
    
    Fixes: 83f1999caeb1 ("netfilter: ipv6: nf_defrag: Pass on packets to stack per RFC2460")
    Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7bce21130372ed4f7ce59657c92264945f37a32
Author: Karol Herbst <kherbst@redhat.com>
Date:   Mon Nov 6 16:32:41 2017 +0100

    drm/nouveau/pmu/fuc: don't use movw directly anymore
    
    [ Upstream commit fe9748b7b41cee11f8db57fb8b20bc540a33102a ]
    
    Fixes failure to compile with recent envyas as a result of the 'movw'
    alias being removed for v5.
    
    A bit of history:
    
    v3 only has a 16-bit sign-extended immediate mov op. In order to set
    the high bits, there's a separate 'sethi' op. envyas validates that
    the value passed to mov(imm) is between -0x8000 and 0x7fff. In order
    to simplify macros that load both the low and high word, a 'movw'
    alias was added which takes an unsigned 16-bit immediate. However the
    actual hardware op still sign extends.
    
    v5 has a full 32-bit immediate mov op. The v3 16-bit immediate mov op
    is gone (loads 0 into the dst reg). However due to a bug in envyas,
    the movw alias still existed, and selected the no-longer-present v3
    16-bit immediate mov op. As a result usage of movw on v5 is the same
    as mov with a 0x0 argument.
    
    The proper fix throughout is to only ever use the 'movw' alias in
    combination with 'sethi'. Anything else should get the sign-extended
    validation to ensure that the intended value ends up in the
    destination register.
    
    Changes in fuc3 binaries is the result of a different encoding being
    selected for a mov with an 8-bit value.
    
    v2: added commit message written by Ilia, thanks for that!
    v3: messed up rebasing, now it should apply
    
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e405d2ebba9f93d0df9b3b7b04f9fe8e5a38d074
Author: Alex Estrin <alex.estrin@intel.com>
Date:   Thu Feb 1 10:55:41 2018 -0800

    IB/ipoib: Fix for potential no-carrier state
    
    [ Upstream commit 1029361084d18cc270f64dfd39529fafa10cfe01 ]
    
    On reboot SM can program port pkey table before ipoib registered its
    event handler, which could result in missing pkey event and leave root
    interface with initial pkey value from index 0.
    
    Since OPA port starts with invalid pkey in index 0, root interface will
    fail to initialize and stay down with no-carrier flag.
    
    For IB ipoib interface may end up with pkey different from value
    opensm put in pkey table idx 0, resulting in connectivity issues
    (different mcast groups, for example).
    
    Close the window by calling event handler after registration
    to make sure ipoib pkey is in sync with port pkey table.
    
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Reviewed-by: Ira Weiny <ira.weiny@intel.com>
    Signed-off-by: Alex Estrin <alex.estrin@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfd188fb51d7b68c2c498487d56f36286ca7e722
Author: Ed Swierk <eswierk@skyportsystems.com>
Date:   Wed Jan 31 18:48:02 2018 -0800

    openvswitch: Remove padding from packet before L3+ conntrack processing
    
    [ Upstream commit 9382fe71c0058465e942a633869629929102843d ]
    
    IPv4 and IPv6 packets may arrive with lower-layer padding that is not
    included in the L3 length. For example, a short IPv4 packet may have
    up to 6 bytes of padding following the IP payload when received on an
    Ethernet device with a minimum packet length of 64 bytes.
    
    Higher-layer processing functions in netfilter (e.g. nf_ip_checksum(),
    and help() in nf_conntrack_ftp) assume skb->len reflects the length of
    the L3 header and payload, rather than referring back to
    ip_hdr->tot_len or ipv6_hdr->payload_len, and get confused by
    lower-layer padding.
    
    In the normal IPv4 receive path, ip_rcv() trims the packet to
    ip_hdr->tot_len before invoking netfilter hooks. In the IPv6 receive
    path, ip6_rcv() does the same using ipv6_hdr->payload_len. Similarly
    in the br_netfilter receive path, br_validate_ipv4() and
    br_validate_ipv6() trim the packet to the L3 length before invoking
    netfilter hooks.
    
    Currently in the OVS conntrack receive path, ovs_ct_execute() pulls
    the skb to the L3 header but does not trim it to the L3 length before
    calling nf_conntrack_in(NF_INET_PRE_ROUTING). When
    nf_conntrack_proto_tcp encounters a packet with lower-layer padding,
    nf_ip_checksum() fails causing a "nf_ct_tcp: bad TCP checksum" log
    message. While extra zero bytes don't affect the checksum, the length
    in the IP pseudoheader does. That length is based on skb->len, and
    without trimming, it doesn't match the length the sender used when
    computing the checksum.
    
    In ovs_ct_execute(), trim the skb to the L3 length before higher-layer
    processing.
    
    Signed-off-by: Ed Swierk <eswierk@skyportsystems.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8b21508b97b7c6c2799ecacbd729f446a32cc58
Author: shidao.ytt <shidao.ytt@alibaba-inc.com>
Date:   Wed Jan 31 16:19:55 2018 -0800

    mm/fadvise: discard partial page if endbyte is also EOF
    
    [ Upstream commit a7ab400d6fe73d0119fdc234e9982a6f80faea9f ]
    
    During our recent testing with fadvise(FADV_DONTNEED), we find that if
    given offset/length is not page-aligned, the last page will not be
    discarded.  The tool we use is vmtouch (https://hoytech.com/vmtouch/),
    we map a 10KB-sized file into memory and then try to run this tool to
    evict the whole file mapping, but the last single page always remains
    staying in the memory:
    
    $./vmtouch -e test_10K
               Files: 1
         Directories: 0
       Evicted Pages: 3 (12K)
             Elapsed: 2.1e-05 seconds
    
    $./vmtouch test_10K
               Files: 1
         Directories: 0
      Resident Pages: 1/3  4K/12K  33.3%
             Elapsed: 5.5e-05 seconds
    
    However when we test with an older kernel, say 3.10, this problem is
    gone.  So we wonder if this is a regression:
    
    $./vmtouch -e test_10K
               Files: 1
         Directories: 0
       Evicted Pages: 3 (12K)
             Elapsed: 8.2e-05 seconds
    
    $./vmtouch test_10K
               Files: 1
         Directories: 0
      Resident Pages: 0/3  0/12K  0%  <-- partial page also discarded
             Elapsed: 5e-05 seconds
    
    After digging a little bit into this problem, we find it seems not a
    regression.  Not discarding partial page is likely to be on purpose
    according to commit 441c228f817f ("mm: fadvise: document the
    fadvise(FADV_DONTNEED) behaviour for partial pages") written by Mel
    Gorman.  He explained why partial pages should be preserved instead of
    being discarded when using fadvise(FADV_DONTNEED).
    
    However, the interesting part is that the actual code did NOT work as
    the same as it was described, the partial page was still discarded
    anyway, due to a calculation mistake of `end_index' passed to
    invalidate_mapping_pages().  This mistake has not been fixed until
    recently, that's why we fail to reproduce our problem in old kernels.
    The fix is done in commit 18aba41cbf ("mm/fadvise.c: do not discard
    partial pages with POSIX_FADV_DONTNEED") by Oleg Drokin.
    
    Back to the original testing, our problem becomes that there is a
    special case that, if the page-unaligned `endbyte' is also the end of
    file, it is not necessary at all to preserve the last partial page, as
    we all know no one else will use the rest of it.  It should be safe
    enough if we just discard the whole page.  So we add an EOF check in
    this patch.
    
    We also find a poosbile real world issue in mainline kernel.  Assume
    such scenario: A userspace backup application want to backup a huge
    amount of small files (<4k) at once, the developer might (I guess) want
    to use fadvise(FADV_DONTNEED) to save memory.  However, FADV_DONTNEED
    won't really happen since the only page mapped is a partial page, and
    kernel will preserve it.  Our patch also fixes this problem, since we
    know the endbyte is EOF, so we discard it.
    
    Here is a simple reproducer to reproduce and verify each scenario we
    described above:
    
      test_fadvise.c
      ==============================
      #include <sys/mman.h>
      #include <sys/stat.h>
      #include <fcntl.h>
      #include <stdlib.h>
      #include <string.h>
      #include <stdio.h>
      #include <unistd.h>
    
      int main(int argc, char **argv)
      {
            int i, fd, ret, len;
            struct stat buf;
            void *addr;
            unsigned char *vec;
            char *strbuf;
            ssize_t pagesize = getpagesize();
            ssize_t filesize;
    
            fd = open(argv[1], O_RDWR|O_CREAT, S_IRUSR|S_IWUSR);
            if (fd < 0)
                    return -1;
            filesize = strtoul(argv[2], NULL, 10);
    
            strbuf = malloc(filesize);
            memset(strbuf, 42, filesize);
            write(fd, strbuf, filesize);
            free(strbuf);
            fsync(fd);
    
            len = (filesize + pagesize - 1) / pagesize;
            printf("length of pages: %d\n", len);
    
            addr = mmap(NULL, filesize, PROT_READ, MAP_SHARED, fd, 0);
            if (addr == MAP_FAILED)
                    return -1;
    
            ret = posix_fadvise(fd, 0, filesize, POSIX_FADV_DONTNEED);
            if (ret < 0)
                    return -1;
    
            vec = malloc(len);
            ret = mincore(addr, filesize, (void *)vec);
            if (ret < 0)
                    return -1;
    
            for (i = 0; i < len; i++)
                    printf("pages[%d]: %x\n", i, vec[i] & 0x1);
    
            free(vec);
            close(fd);
    
            return 0;
      }
      ==============================
    
    Test 1: running on kernel with commit 18aba41cbf reverted:
    
      [root@caspar ~]# uname -r
      4.15.0-rc6.revert+
      [root@caspar ~]# ./test_fadvise file1 1024
      length of pages: 1
      pages[0]: 0    # <-- partial page discarded
      [root@caspar ~]# ./test_fadvise file2 8192
      length of pages: 2
      pages[0]: 0
      pages[1]: 0
      [root@caspar ~]# ./test_fadvise file3 10240
      length of pages: 3
      pages[0]: 0
      pages[1]: 0
      pages[2]: 0    # <-- partial page discarded
    
    Test 2: running on mainline kernel:
    
      [root@caspar ~]# uname -r
      4.15.0-rc6+
      [root@caspar ~]# ./test_fadvise test1 1024
      length of pages: 1
      pages[0]: 1    # <-- partial and the only page not discarded
      [root@caspar ~]# ./test_fadvise test2 8192
      length of pages: 2
      pages[0]: 0
      pages[1]: 0
      [root@caspar ~]# ./test_fadvise test3 10240
      length of pages: 3
      pages[0]: 0
      pages[1]: 0
      pages[2]: 1    # <-- partial page not discarded
    
    Test 3: running on kernel with this patch:
    
      [root@caspar ~]# uname -r
      4.15.0-rc6.patched+
      [root@caspar ~]# ./test_fadvise test1 1024
      length of pages: 1
      pages[0]: 0    # <-- partial page and EOF, discarded
      [root@caspar ~]# ./test_fadvise test2 8192
      length of pages: 2
      pages[0]: 0
      pages[1]: 0
      [root@caspar ~]# ./test_fadvise test3 10240
      length of pages: 3
      pages[0]: 0
      pages[1]: 0
      pages[2]: 0    # <-- partial page and EOF, discarded
    
    [akpm@linux-foundation.org: tweak code comment]
    Link: http://lkml.kernel.org/r/5222da9ee20e1695eaabb69f631f200d6e6b8876.1515132470.git.jinli.zjl@alibaba-inc.com
    Signed-off-by: shidao.ytt <shidao.ytt@alibaba-inc.com>
    Signed-off-by: Caspar Zhang <jinli.zjl@alibaba-inc.com>
    Reviewed-by: Oliver Yang <zhiche.yy@alibaba-inc.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab88b8a2846454f7e9aa10d96d99008fe939eedc
Author: Mel Gorman <mgorman@techsingularity.net>
Date:   Wed Jan 31 16:19:52 2018 -0800

    mm: pin address_space before dereferencing it while isolating an LRU page
    
    [ Upstream commit 69d763fc6d3aee787a3e8c8c35092b4f4960fa5d ]
    
    Minchan Kim asked the following question -- what locks protects
    address_space destroying when race happens between inode trauncation and
    __isolate_lru_page? Jan Kara clarified by describing the race as follows
    
    CPU1                                            CPU2
    
    truncate(inode)                                 __isolate_lru_page()
      ...
      truncate_inode_page(mapping, page);
        delete_from_page_cache(page)
          spin_lock_irqsave(&mapping->tree_lock, flags);
            __delete_from_page_cache(page, NULL)
              page_cache_tree_delete(..)
                ...                                   mapping = page_mapping(page);
                page->mapping = NULL;
                ...
          spin_unlock_irqrestore(&mapping->tree_lock, flags);
          page_cache_free_page(mapping, page)
            put_page(page)
              if (put_page_testzero(page)) -> false
    - inode now has no pages and can be freed including embedded address_space
    
                                                      if (mapping && !mapping->a_ops->migratepage)
    - we've dereferenced mapping which is potentially already free.
    
    The race is theoretically possible but unlikely.  Before the
    delete_from_page_cache, truncate_cleanup_page is called so the page is
    likely to be !PageDirty or PageWriteback which gets skipped by the only
    caller that checks the mappping in __isolate_lru_page.  Even if the race
    occurs, a substantial amount of work has to happen during a tiny window
    with no preemption but it could potentially be done using a virtual
    machine to artifically slow one CPU or halt it during the critical
    window.
    
    This patch should eliminate the race with truncation by try-locking the
    page before derefencing mapping and aborting if the lock was not
    acquired.  There was a suggestion from Huang Ying to use RCU as a
    side-effect to prevent mapping being freed.  However, I do not like the
    solution as it's an unconventional means of preserving a mapping and
    it's not a context where rcu_read_lock is obviously protecting rcu data.
    
    Link: http://lkml.kernel.org/r/20180104102512.2qos3h5vqzeisrek@techsingularity.net
    Fixes: c82449352854 ("mm: compaction: make isolate_lru_page() filter-aware again")
    Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
    Acked-by: Minchan Kim <minchan@kernel.org>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e56d3700cff0839fb22a7890f78b370757c42ba7
Author: Yang Shi <yang.s@alibaba-inc.com>
Date:   Wed Jan 31 16:18:28 2018 -0800

    mm: thp: use down_read_trylock() in khugepaged to avoid long block
    
    [ Upstream commit 3b454ad35043dfbd3b5d2bb92b0991d6342afb44 ]
    
    In the current design, khugepaged needs to acquire mmap_sem before
    scanning an mm.  But in some corner cases, khugepaged may scan a process
    which is modifying its memory mapping, so khugepaged blocks in
    uninterruptible state.  But the process might hold the mmap_sem for a
    long time when modifying a huge memory space and it may trigger the
    below khugepaged hung issue:
    
      INFO: task khugepaged:270 blocked for more than 120 seconds.
      Tainted: G E 4.9.65-006.ali3000.alios7.x86_64 #1
      "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
      khugepaged D 0 270 2 0x00000000 
      ffff883f3deae4c0 0000000000000000 ffff883f610596c0 ffff883f7d359440
      ffff883f63818000 ffffc90019adfc78 ffffffff817079a5 d67e5aa8c1860a64
      0000000000000246 ffff883f7d359440 ffffc90019adfc88 ffff883f610596c0
      Call Trace:
        schedule+0x36/0x80
        rwsem_down_read_failed+0xf0/0x150
        call_rwsem_down_read_failed+0x18/0x30
        down_read+0x20/0x40
        khugepaged+0x476/0x11d0
        kthread+0xe6/0x100
        ret_from_fork+0x25/0x30
    
    So it sounds pointless to just block khugepaged waiting for the
    semaphore so replace down_read() with down_read_trylock() to move to
    scan the next mm quickly instead of just blocking on the semaphore so
    that other processes can get more chances to install THP.  Then
    khugepaged can come back to scan the skipped mm when it has finished the
    current round full_scan.
    
    And it appears that the change can improve khugepaged efficiency a
    little bit.
    
    Below is the test result when running LTP on a 24 cores 4GB memory 2
    nodes NUMA VM:
    
                                        pristine          w/ trylock
      full_scan                         197               187
      pages_collapsed                   21                26
      thp_fault_alloc                   40818             44466
      thp_fault_fallback                18413             16679
      thp_collapse_alloc                21                150
      thp_collapse_alloc_failed         14                16
      thp_file_alloc                    369               369
    
    [akpm@linux-foundation.org: coding-style fixes]
    [akpm@linux-foundation.org: tweak comment]
    [arnd@arndb.de: avoid uninitialized variable use]
      Link: http://lkml.kernel.org/r/20171215125129.2948634-1-arnd@arndb.de
    Link: http://lkml.kernel.org/r/1513281203-54878-1-git-send-email-yang.s@alibaba-inc.com
    Signed-off-by: Yang Shi <yang.s@alibaba-inc.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9da97a9537031e0677da3c1accd4f11ff4a92da5
Author: Nitin Gupta <nitin.m.gupta@oracle.com>
Date:   Wed Jan 31 16:18:09 2018 -0800

    sparc64: update pmdp_invalidate() to return old pmd value
    
    [ Upstream commit a8e654f01cb725d0bfd741ebca1bf4c9337969cc ]
    
    It's required to avoid losing dirty and accessed bits.
    
    [akpm@linux-foundation.org: add a `do' to the do-while loop]
    Link: http://lkml.kernel.org/r/20171213105756.69879-9-kirill.shutemov@linux.intel.com
    Signed-off-by: Nitin Gupta <nitin.m.gupta@oracle.com>
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 038ab51ea036e255c614e1c5f58a8c08799ddd64
Author: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Date:   Wed Jan 31 16:17:43 2018 -0800

    asm-generic: provide generic_pmdp_establish()
    
    [ Upstream commit c58f0bb77ed8bf93dfdde762b01cb67eebbdfc29 ]
    
    Patch series "Do not lose dirty bit on THP pages", v4.
    
    Vlastimil noted that pmdp_invalidate() is not atomic and we can lose
    dirty and access bits if CPU sets them after pmdp dereference, but
    before set_pmd_at().
    
    The bug can lead to data loss, but the race window is tiny and I haven't
    seen any reports that suggested that it happens in reality.  So I don't
    think it worth sending it to stable.
    
    Unfortunately, there's no way to address the issue in a generic way.  We
    need to fix all architectures that support THP one-by-one.
    
    All architectures that have THP supported have to provide atomic
    pmdp_invalidate() that returns previous value.
    
    If generic implementation of pmdp_invalidate() is used, architecture
    needs to provide atomic pmdp_estabish().
    
    pmdp_estabish() is not used out-side generic implementation of
    pmdp_invalidate() so far, but I think this can change in the future.
    
    This patch (of 12):
    
    This is an implementation of pmdp_establish() that is only suitable for
    an architecture that doesn't have hardware dirty/accessed bits.  In this
    case we can't race with CPU which sets these bits and non-atomic
    approach is fine.
    
    Link: http://lkml.kernel.org/r/20171213105756.69879-2-kirill.shutemov@linux.intel.com
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: David Daney <david.daney@cavium.com>
    Cc: David Miller <davem@davemloft.net>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Nitin Gupta <nitin.m.gupta@oracle.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vineet Gupta <vgupta@synopsys.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4cf2463f8a11499e0fbb981d4e4cb8a73e01a72f
Author: Yisheng Xie <xieyisheng1@huawei.com>
Date:   Wed Jan 31 16:16:15 2018 -0800

    mm/mempolicy: add nodes_empty check in SYSC_migrate_pages
    
    [ Upstream commit 0486a38bcc4749808edbc848f1bcf232042770fc ]
    
    As in manpage of migrate_pages, the errno should be set to EINVAL when
    none of the node IDs specified by new_nodes are on-line and allowed by
    the process's current cpuset context, or none of the specified nodes
    contain memory.  However, when test by following case:
    
            new_nodes = 0;
            old_nodes = 0xf;
            ret = migrate_pages(pid, old_nodes, new_nodes, MAX);
    
    The ret will be 0 and no errno is set.  As the new_nodes is empty, we
    should expect EINVAL as documented.
    
    To fix the case like above, this patch check whether target nodes AND
    current task_nodes is empty, and then check whether AND
    node_states[N_MEMORY] is empty.
    
    Link: http://lkml.kernel.org/r/1510882624-44342-4-git-send-email-xieyisheng1@huawei.com
    Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Chris Salls <salls@cs.ucsb.edu>
    Cc: Christopher Lameter <cl@linux.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Tan Xiaojun <tanxiaojun@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2851e3bd68de08a2cf17227ecc3aa66d6d2b039a
Author: Yisheng Xie <xieyisheng1@huawei.com>
Date:   Wed Jan 31 16:16:11 2018 -0800

    mm/mempolicy: fix the check of nodemask from user
    
    [ Upstream commit 56521e7a02b7b84a5e72691a1fb15570e6055545 ]
    
    As Xiaojun reported the ltp of migrate_pages01 will fail on arm64 system
    which has 4 nodes[0...3], all have memory and CONFIG_NODES_SHIFT=2:
    
      migrate_pages01    0  TINFO  :  test_invalid_nodes
      migrate_pages01   14  TFAIL  :  migrate_pages_common.c:45: unexpected failure - returned value = 0, expected: -1
      migrate_pages01   15  TFAIL  :  migrate_pages_common.c:55: call succeeded unexpectedly
    
    In this case the test_invalid_nodes of migrate_pages01 will call:
    SYSC_migrate_pages as:
    
      migrate_pages(0, , {0x0000000000000001}, 64, , {0x0000000000000010}, 64) = 0
    
    The new nodes specifies one or more node IDs that are greater than the
    maximum supported node ID, however, the errno is not set to EINVAL as
    expected.
    
    As man pages of set_mempolicy[1], mbind[2], and migrate_pages[3]
    mentioned, when nodemask specifies one or more node IDs that are greater
    than the maximum supported node ID, the errno should set to EINVAL.
    However, get_nodes only check whether the part of bits
    [BITS_PER_LONG*BITS_TO_LONGS(MAX_NUMNODES), maxnode) is zero or not, and
    remain [MAX_NUMNODES, BITS_PER_LONG*BITS_TO_LONGS(MAX_NUMNODES)
    unchecked.
    
    This patch is to check the bits of [MAX_NUMNODES, maxnode) in get_nodes
    to let migrate_pages set the errno to EINVAL when nodemask specifies one
    or more node IDs that are greater than the maximum supported node ID,
    which follows the manpage's guide.
    
    [1] http://man7.org/linux/man-pages/man2/set_mempolicy.2.html
    [2] http://man7.org/linux/man-pages/man2/mbind.2.html
    [3] http://man7.org/linux/man-pages/man2/migrate_pages.2.html
    
    Link: http://lkml.kernel.org/r/1510882624-44342-3-git-send-email-xieyisheng1@huawei.com
    Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
    Reported-by: Tan Xiaojun <tanxiaojun@huawei.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Chris Salls <salls@cs.ucsb.edu>
    Cc: Christopher Lameter <cl@linux.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f5efe59b58f36c55c26521d37643f92b0a0d1da
Author: piaojun <piaojun@huawei.com>
Date:   Wed Jan 31 16:15:32 2018 -0800

    ocfs2: return error when we attempt to access a dirty bh in jbd2
    
    [ Upstream commit d984187e3a1ad7d12447a7ab2c43ce3717a2b5b3 ]
    
    We should not reuse the dirty bh in jbd2 directly due to the following
    situation:
    
    1. When removing extent rec, we will dirty the bhs of extent rec and
       truncate log at the same time, and hand them over to jbd2.
    
    2. The bhs are submitted to jbd2 area successfully.
    
    3. The write-back thread of device help flush the bhs to disk but
       encounter write error due to abnormal storage link.
    
    4. After a while the storage link become normal. Truncate log flush
       worker triggered by the next space reclaiming found the dirty bh of
       truncate log and clear its 'BH_Write_EIO' and then set it uptodate in
       __ocfs2_journal_access():
    
       ocfs2_truncate_log_worker
         ocfs2_flush_truncate_log
           __ocfs2_flush_truncate_log
             ocfs2_replay_truncate_records
               ocfs2_journal_access_di
                 __ocfs2_journal_access // here we clear io_error and set 'tl_bh' uptodata.
    
    5. Then jbd2 will flush the bh of truncate log to disk, but the bh of
       extent rec is still in error state, and unfortunately nobody will
       take care of it.
    
    6. At last the space of extent rec was not reduced, but truncate log
       flush worker have given it back to globalalloc. That will cause
       duplicate cluster problem which could be identified by fsck.ocfs2.
    
    Sadly we can hardly revert this but set fs read-only in case of ruining
    atomicity and consistency of space reclaim.
    
    Link: http://lkml.kernel.org/r/5A6E8092.8090701@huawei.com
    Fixes: acf8fdbe6afb ("ocfs2: do not BUG if buffer not uptodate in __ocfs2_journal_access")
    Signed-off-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Yiwen Jiang <jiangyiwen@huawei.com>
    Reviewed-by: Changwei Ge <ge.changwei@h3c.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1d5fdc1307eeb04b334c5dc23e11dbd6068d90eb
Author: piaojun <piaojun@huawei.com>
Date:   Wed Jan 31 16:14:59 2018 -0800

    ocfs2/acl: use 'ip_xattr_sem' to protect getting extended attribute
    
    [ Upstream commit 16c8d569f5704a84164f30ff01b29879f3438065 ]
    
    The race between *set_acl and *get_acl will cause getting incomplete
    xattr data as below:
    
      processA                                    processB
    
      ocfs2_set_acl
        ocfs2_xattr_set
          __ocfs2_xattr_set_handle
    
                                                  ocfs2_get_acl_nolock
                                                    ocfs2_xattr_get_nolock:
    
    processB may get incomplete xattr data if processA hasn't set_acl done.
    
    So we should use 'ip_xattr_sem' to protect getting extended attribute in
    ocfs2_get_acl_nolock(), as other processes could be changing it
    concurrently.
    
    Link: http://lkml.kernel.org/r/5A5DDCFF.7030001@huawei.com
    Signed-off-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Alex Chen <alex.chen@huawei.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Joseph Qi <jiangqi903@gmail.com>
    Cc: Changwei Ge <ge.changwei@h3c.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2afc4063eaa4c5b2b2c51ad8540db8d08d119c5
Author: piaojun <piaojun@huawei.com>
Date:   Wed Jan 31 16:14:44 2018 -0800

    ocfs2: return -EROFS to mount.ocfs2 if inode block is invalid
    
    [ Upstream commit 025bcbde3634b2c9b316f227fed13ad6ad6817fb ]
    
    If metadata is corrupted such as 'invalid inode block', we will get
    failed by calling 'mount()' and then set filesystem readonly as below:
    
      ocfs2_mount
        ocfs2_initialize_super
          ocfs2_init_global_system_inodes
            ocfs2_iget
              ocfs2_read_locked_inode
                ocfs2_validate_inode_block
                  ocfs2_error
                    ocfs2_handle_error
                      ocfs2_set_ro_flag(osb, 0);  // set readonly
    
    In this situation we need return -EROFS to 'mount.ocfs2', so that user
    can fix it by fsck.  And then mount again.  In addition, 'mount.ocfs2'
    should be updated correspondingly as it only return 1 for all errno.
    And I will post a patch for 'mount.ocfs2' too.
    
    Link: http://lkml.kernel.org/r/5A4302FA.2010606@huawei.com
    Signed-off-by: Jun Piao <piaojun@huawei.com>
    Reviewed-by: Alex Chen <alex.chen@huawei.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Reviewed-by: Changwei Ge <ge.changwei@h3c.com>
    Reviewed-by: Gang He <ghe@suse.com>
    Cc: Mark Fasheh <mfasheh@versity.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9445fde8eec02816603e7b12b5d5beb1158cc907
Author: KarimAllah Ahmed <karahmed@amazon.de>
Date:   Wed Jan 17 19:18:56 2018 +0100

    kvm: Map PFN-type memory regions as writable (if possible)
    
    [ Upstream commit a340b3e229b24a56f1c7f5826b15a3af0f4b13e5 ]
    
    For EPT-violations that are triggered by a read, the pages are also mapped with
    write permissions (if their memory region is also writable). That would avoid
    getting yet another fault on the same page when a write occurs.
    
    This optimization only happens when you have a "struct page" backing the memory
    region. So also enable it for memory regions that do not have a "struct page".
    
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Cc: kvm@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: KarimAllah Ahmed <karahmed@amazon.de>
    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d805047beb94f9174012465e24e20a222b60ec4d
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Tue Jan 30 22:21:48 2018 -0600

    tcp_nv: fix potential integer overflow in tcpnv_acked
    
    [ Upstream commit e4823fbd229bfbba368b40cdadb8f4eeb20604cc ]
    
    Add suffix ULL to constant 80000 in order to avoid a potential integer
    overflow and give the compiler complete information about the proper
    arithmetic to use. Notice that this constant is used in a context that
    expects an expression of type u64.
    
    The current cast to u64 effectively applies to the whole expression
    as an argument of type u64 to be passed to div64_u64, but it does
    not prevent it from being evaluated using 32-bit arithmetic instead
    of 64-bit arithmetic.
    
    Also, once the expression is properly evaluated using 64-bit arithmentic,
    there is no need for the parentheses and the external cast to u64.
    
    Addresses-Coverity-ID: 1357588 ("Unintentional integer overflow")
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eea27e5bcf8edaeb37ac44140ac45a185db60e89
Author: Andy Spencer <aspencer@spacex.com>
Date:   Thu Jan 25 19:37:50 2018 -0800

    gianfar: prevent integer wrapping in the rx handler
    
    [ Upstream commit 202a0a70e445caee1d0ec7aae814e64b1189fa4d ]
    
    When the frame check sequence (FCS) is split across the last two frames
    of a fragmented packet, part of the FCS gets counted twice, once when
    subtracting the FCS, and again when subtracting the previously received
    data.
    
    For example, if 1602 bytes are received, and the first fragment contains
    the first 1600 bytes (including the first two bytes of the FCS), and the
    second fragment contains the last two bytes of the FCS:
    
      'skb->len == 1600' from the first fragment
    
      size  = lstatus & BD_LENGTH_MASK; # 1602
      size -= ETH_FCS_LEN;              # 1598
      size -= skb->len;                 # -2
    
    Since the size is unsigned, it wraps around and causes a BUG later in
    the packet handling, as shown below:
    
      kernel BUG at ./include/linux/skbuff.h:2068!
      Oops: Exception in kernel mode, sig: 5 [#1]
      ...
      NIP [c021ec60] skb_pull+0x24/0x44
      LR [c01e2fbc] gfar_clean_rx_ring+0x498/0x690
      Call Trace:
      [df7edeb0] [c01e2c1c] gfar_clean_rx_ring+0xf8/0x690 (unreliable)
      [df7edf20] [c01e33a8] gfar_poll_rx_sq+0x3c/0x9c
      [df7edf40] [c023352c] net_rx_action+0x21c/0x274
      [df7edf90] [c0329000] __do_softirq+0xd8/0x240
      [df7edff0] [c000c108] call_do_irq+0x24/0x3c
      [c0597e90] [c00041dc] do_IRQ+0x64/0xc4
      [c0597eb0] [c000d920] ret_from_except+0x0/0x18
      --- interrupt: 501 at arch_cpu_idle+0x24/0x5c
    
    Change the size to a signed integer and then trim off any part of the
    FCS that was received prior to the last fragment.
    
    Fixes: 6c389fc931bc ("gianfar: fix size of scatter-gathered frames")
    Signed-off-by: Andy Spencer <aspencer@spacex.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 33d353db125a9b220638066346e642b6bfbca204
Author: Logan Gunthorpe <logang@deltatee.com>
Date:   Mon Dec 18 11:25:05 2017 -0700

    ntb_transport: Fix bug with max_mw_size parameter
    
    [ Upstream commit cbd27448faff4843ac4b66cc71445a10623ff48d ]
    
    When using the max_mw_size parameter of ntb_transport to limit the size of
    the Memory windows, communication cannot be established and the queues
    freeze.
    
    This is because the mw_size that's reported to the peer is correctly
    limited but the size used locally is not. So the MW is initialized
    with a buffer smaller than the window but the TX side is using the
    full window. This means the TX side will be writing to a region of the
    window that points nowhere.
    
    This is easily fixed by applying the same limit to tx_size in
    ntb_transport_init_queue().
    
    Fixes: e26a5843f7f5 ("NTB: Split ntb_hw_intel and ntb_transport drivers")
    Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
    Acked-by: Allen Hubbe <Allen.Hubbe@dell.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Signed-off-by: Jon Mason <jdmason@kudzu.us>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bdae32c794338da368d8ffc740f2a415db71ccad
Author: Leon Romanovsky <leonro@mellanox.com>
Date:   Sun Jan 28 11:25:30 2018 +0200

    RDMA/mlx5: Avoid memory leak in case of XRCD dealloc failure
    
    [ Upstream commit b081808a66345ba725b77ecd8d759bee874cd937 ]
    
    Failure in XRCD FW deallocation command leaves memory leaked and
    returns error to the user which he can't do anything about it.
    
    This patch changes behavior to always free memory and always return
    success to the user.
    
    Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
    Reviewed-by: Majd Dibbiny <majd@mellanox.com>
    Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
    Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f2f95d96b8e59e29701621f94354325479cd91e
Author: Michael Bringmann <mwb@linux.vnet.ibm.com>
Date:   Tue Nov 28 16:58:40 2017 -0600

    powerpc/numa: Ensure nodes initialized for hotplug
    
    [ Upstream commit ea05ba7c559c8e5a5946c3a94a2a266e9a6680a6 ]
    
    This patch fixes some problems encountered at runtime with
    configurations that support memory-less nodes, or that hot-add CPUs
    into nodes that are memoryless during system execution after boot. The
    problems of interest include:
    
    * Nodes known to powerpc to be memoryless at boot, but to have CPUs in
      them are allowed to be 'possible' and 'online'. Memory allocations
      for those nodes are taken from another node that does have memory
      until and if memory is hot-added to the node.
    
    * Nodes which have no resources assigned at boot, but which may still
      be referenced subsequently by affinity or associativity attributes,
      are kept in the list of 'possible' nodes for powerpc. Hot-add of
      memory or CPUs to the system can reference these nodes and bring
      them online instead of redirecting the references to one of the set
      of nodes known to have memory at boot.
    
    Note that this software operates under the context of CPU hotplug. We
    are not doing memory hotplug in this code, but rather updating the
    kernel's CPU topology (i.e. arch_update_cpu_topology /
    numa_update_cpu_topology). We are initializing a node that may be used
    by CPUs or memory before it can be referenced as invalid by a CPU
    hotplug operation. CPU hotplug operations are protected by a range of
    APIs including cpu_maps_update_begin/cpu_maps_update_done,
    cpus_read/write_lock / cpus_read/write_unlock, device locks, and more.
    Memory hotplug operations, including try_online_node, are protected by
    mem_hotplug_begin/mem_hotplug_done, device locks, and more. In the
    case of CPUs being hot-added to a previously memoryless node, the
    try_online_node operation occurs wholly within the CPU locks with no
    overlap. Using HMC hot-add/hot-remove operations, we have been able to
    add and remove CPUs to any possible node without failures. HMC
    operations involve a degree self-serialization, though.
    
    Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com>
    Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f9c15a3af8f5f46114ca250a2305b5b6852b411
Author: Michael Bringmann <mwb@linux.vnet.ibm.com>
Date:   Tue Nov 28 16:58:36 2017 -0600

    powerpc/numa: Use ibm,max-associativity-domains to discover possible nodes
    
    [ Upstream commit a346137e9142b039fd13af2e59696e3d40c487ef ]
    
    On powerpc systems which allow 'hot-add' of CPU or memory resources,
    it may occur that the new resources are to be inserted into nodes that
    were not used for these resources at bootup. In the kernel, any node
    that is used must be defined and initialized. These empty nodes may
    occur when,
    
    * Dedicated vs. shared resources. Shared resources require information
      such as the VPHN hcall for CPU assignment to nodes. Associativity
      decisions made based on dedicated resource rules, such as
      associativity properties in the device tree, may vary from decisions
      made using the values returned by the VPHN hcall.
    
    * memoryless nodes at boot. Nodes need to be defined as 'possible' at
      boot for operation with other code modules. Previously, the powerpc
      code would limit the set of possible nodes to those which have
      memory assigned at boot, and were thus online. Subsequent add/remove
      of CPUs or memory would only work with this subset of possible
      nodes.
    
    * memoryless nodes with CPUs at boot. Due to the previous restriction
      on nodes, nodes that had CPUs but no memory were being collapsed
      into other nodes that did have memory at boot. In practice this
      meant that the node assignment presented by the runtime kernel
      differed from the affinity and associativity attributes presented by
      the device tree or VPHN hcalls. Nodes that might be known to the
      pHyp were not 'possible' in the runtime kernel because they did not
      have memory at boot.
    
    This patch ensures that sufficient nodes are defined to support
    configuration requirements after boot, as well as at boot. This patch
    set fixes a couple of problems.
    
    * Nodes known to powerpc to be memoryless at boot, but to have CPUs in
      them are allowed to be 'possible' and 'online'. Memory allocations
      for those nodes are taken from another node that does have memory
      until and if memory is hot-added to the node. * Nodes which have no
      resources assigned at boot, but which may still be referenced
      subsequently by affinity or associativity attributes, are kept in
      the list of 'possible' nodes for powerpc. Hot-add of memory or CPUs
      to the system can reference these nodes and bring them online
      instead of redirecting to one of the set of nodes that were known to
      have memory at boot.
    
    This patch extracts the value of the lowest domain level (number of
    allocable resources) from the device tree property
    "ibm,max-associativity-domains" to use as the maximum number of nodes
    to setup as possibly available in the system. This new setting will
    override the instruction:
    
        nodes_and(node_possible_map, node_possible_map, node_online_map);
    
    presently seen in the function arch/powerpc/mm/numa.c:initmem_init().
    
    If the "ibm,max-associativity-domains" property is not present at
    boot, no operation will be performed to define or enable additional
    nodes, or enable the above 'nodes_and()'.
    
    Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com>
    Reviewed-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b47544454b7f3a8b209677124bf8a22049ebe27f
Author: Jake Daryll Obina <jake.obina@gmail.com>
Date:   Fri Sep 22 00:00:14 2017 +0800

    jffs2: Fix use-after-free bug in jffs2_iget()'s error handling path
    
    [ Upstream commit 5bdd0c6f89fba430e18d636493398389dadc3b17 ]
    
    If jffs2_iget() fails for a newly-allocated inode, jffs2_do_clear_inode()
    can get called twice in the error handling path, the first call in
    jffs2_iget() itself and the second through iget_failed(). This can result
    to a use-after-free error in the second jffs2_do_clear_inode() call, such
    as shown by the oops below wherein the second jffs2_do_clear_inode() call
    was trying to free node fragments that were already freed in the first
    jffs2_do_clear_inode() call.
    
    [   78.178860] jffs2: error: (1904) jffs2_do_read_inode_internal: CRC failed for read_inode of inode 24 at physical location 0x1fc00c
    [   78.178914] Unable to handle kernel paging request at virtual address 6b6b6b6b6b6b6b7b
    [   78.185871] pgd = ffffffc03a567000
    [   78.188794] [6b6b6b6b6b6b6b7b] *pgd=0000000000000000, *pud=0000000000000000
    [   78.194968] Internal error: Oops: 96000004 [#1] PREEMPT SMP
    ...
    [   78.513147] PC is at rb_first_postorder+0xc/0x28
    [   78.516503] LR is at jffs2_kill_fragtree+0x28/0x90 [jffs2]
    [   78.520672] pc : [<ffffff8008323d28>] lr : [<ffffff8000eb1cc8>] pstate: 60000105
    [   78.526757] sp : ffffff800cea38f0
    [   78.528753] x29: ffffff800cea38f0 x28: ffffffc01f3f8e80
    [   78.532754] x27: 0000000000000000 x26: ffffff800cea3c70
    [   78.536756] x25: 00000000dc67c8ae x24: ffffffc033d6945d
    [   78.540759] x23: ffffffc036811740 x22: ffffff800891a5b8
    [   78.544760] x21: 0000000000000000 x20: 0000000000000000
    [   78.548762] x19: ffffffc037d48910 x18: ffffff800891a588
    [   78.552764] x17: 0000000000000800 x16: 0000000000000c00
    [   78.556766] x15: 0000000000000010 x14: 6f2065646f6e695f
    [   78.560767] x13: 6461657220726f66 x12: 2064656c69616620
    [   78.564769] x11: 435243203a6c616e x10: 7265746e695f6564
    [   78.568771] x9 : 6f6e695f64616572 x8 : ffffffc037974038
    [   78.572774] x7 : bbbbbbbbbbbbbbbb x6 : 0000000000000008
    [   78.576775] x5 : 002f91d85bd44a2f x4 : 0000000000000000
    [   78.580777] x3 : 0000000000000000 x2 : 000000403755e000
    [   78.584779] x1 : 6b6b6b6b6b6b6b6b x0 : 6b6b6b6b6b6b6b6b
    ...
    [   79.038551] [<ffffff8008323d28>] rb_first_postorder+0xc/0x28
    [   79.042962] [<ffffff8000eb5578>] jffs2_do_clear_inode+0x88/0x100 [jffs2]
    [   79.048395] [<ffffff8000eb9ddc>] jffs2_evict_inode+0x3c/0x48 [jffs2]
    [   79.053443] [<ffffff8008201ca8>] evict+0xb0/0x168
    [   79.056835] [<ffffff8008202650>] iput+0x1c0/0x200
    [   79.060228] [<ffffff800820408c>] iget_failed+0x30/0x3c
    [   79.064097] [<ffffff8000eba0c0>] jffs2_iget+0x2d8/0x360 [jffs2]
    [   79.068740] [<ffffff8000eb0a60>] jffs2_lookup+0xe8/0x130 [jffs2]
    [   79.073434] [<ffffff80081f1a28>] lookup_slow+0x118/0x190
    [   79.077435] [<ffffff80081f4708>] walk_component+0xfc/0x28c
    [   79.081610] [<ffffff80081f4dd0>] path_lookupat+0x84/0x108
    [   79.085699] [<ffffff80081f5578>] filename_lookup+0x88/0x100
    [   79.089960] [<ffffff80081f572c>] user_path_at_empty+0x58/0x6c
    [   79.094396] [<ffffff80081ebe14>] vfs_statx+0xa4/0x114
    [   79.098138] [<ffffff80081ec44c>] SyS_newfstatat+0x58/0x98
    [   79.102227] [<ffffff800808354c>] __sys_trace_return+0x0/0x4
    [   79.106489] Code: d65f03c0 f9400001 b40000e1 aa0103e0 (f9400821)
    
    The jffs2_do_clear_inode() call in jffs2_iget() is unnecessary since
    iget_failed() will eventually call jffs2_do_clear_inode() if needed, so
    just remove it.
    
    Fixes: 5451f79f5f81 ("iget: stop JFFS2 from using iget() and read_inode()")
    Reviewed-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Jake Daryll Obina <jake.obina@gmail.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4afb04a10cc24189d90566042fb83f30d278a22
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Mon Jan 22 18:01:42 2018 +0200

    device property: Define type of PROPERTY_ENRTY_*() macros
    
    [ Upstream commit c505cbd45f6e9c539d57dd171d95ec7e5e9f9cd0 ]
    
    Some of the drivers may use the macro at runtime flow, like
    
      struct property_entry p[10];
    ...
      p[index++] = PROPERTY_ENTRY_U8("u8 property", u8_data);
    
    In that case and absence of the data type compiler fails the build:
    
    drivers/char/ipmi/ipmi_dmi.c:79:29: error: Expected ; at end of statement
    drivers/char/ipmi/ipmi_dmi.c:79:29: error: got {
    
    Acked-by: Corey Minyard <cminyard@mvista.com>
    Cc: Corey Minyard <minyard@acm.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42be47ac0320ab695a46392af5010299d5deb2c3
Author: Ngai-Mint Kwan <ngai-mint.kwan@intel.com>
Date:   Wed Jan 24 14:18:22 2018 -0800

    fm10k: fix "failed to kill vid" message for VF
    
    [ Upstream commit cf315ea596ec26d7aa542a9ce354990875a920c0 ]
    
    When a VF is under PF VLAN assignment:
    
    ip link set <pf> vf <#> vlan <vid>
    
    This will remove all previous entries in the VLAN table including those
    generated by VLAN interfaces created on the VF. The issue arises when
    the VF is under PF VLAN assignment and one or more of these VLAN
    interfaces of the VF are deleted. When deleting these VLAN interfaces,
    the following message will be generated in "dmesg":
    
    failed to kill vid 0081/<vid> for device <vf>
    
    This is due to the fact that "ndo_vlan_rx_kill_vid" exits with an error.
    The handler for this ndo is "fm10k_update_vid". Any calls to this
    function while under PF VLAN management will exit prematurely and, thus,
    it will generate the failure message.
    
    Additionally, since "fm10k_update_vid" exits prematurely, none of the
    VLAN update is performed. So, even though the actual VLAN interfaces of
    the VF will be deleted, the active_vlans bitmask is not cleared. When
    the VF is no longer under PF VLAN assignment, the driver mistakenly
    restores the previous entries of the VLAN table based on an
    unsynchronized list of active VLANs.
    
    The solution to this issue involves checking the VLAN update action type
    before exiting "fm10k_update_vid". If the VLAN update action type is to
    "add", this action will not be permitted while the VF is under PF VLAN
    assignment and the VLAN update is abandoned like before.
    
    However, if the VLAN update action type is to "kill", then we need to
    also clear the active_vlans bitmask. However, we don't need to actually
    queue any messages to the PF, because the MAC and VLAN tables have
    already been cleared, and the PF would silently ignore these requests
    anyways.
    
    Signed-off-by: Ngai-Mint Kwan <ngai-mint.kwan@intel.com>
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Krishneil Singh <krishneil.k.singh@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d193635af978a2bbb006414886e664eddc296b5
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jan 10 12:39:03 2018 +0300

    HID: roccat: prevent an out of bounds read in kovaplus_profile_activated()
    
    [ Upstream commit 7ad81482cad67cbe1ec808490d1ddfc420c42008 ]
    
    We get the "new_profile_index" value from the mouse device when we're
    handling raw events.  Smatch taints it as untrusted data and complains
    that we need a bounds check.  This seems like a reasonable warning
    otherwise there is a small read beyond the end of the array.
    
    Fixes: 0e70f97f257e ("HID: roccat: Add support for Kova[+] mouse")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Silvan Jegen <s.jegen@gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3feba5904807315eaf5ce50369923a4a034e4904
Author: Anand Jain <Anand.Jain@oracle.com>
Date:   Tue Jan 9 09:05:43 2018 +0800

    btrfs: fail mount when sb flag is not in BTRFS_SUPER_FLAG_SUPP
    
    [ Upstream commit 6f794e3c5c8f8fdd3b5bb20d9ded894e685b5bbe ]
    
    It appears from the original commit [1] that there isn't any design
    specific reason not to fail the mount instead of just warning. This
    patch will change it to fail.
    
    [1]
     commit 319e4d0661e5323c9f9945f0f8fb5905e5fe74c3
        btrfs: Enhance super validation check
    
    Fixes: 319e4d0661e5323 ("btrfs: Enhance super validation check")
    Signed-off-by: Anand Jain <anand.jain@oracle.com>
    Reviewed-by: Qu Wenruo <wqu@suse.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 186a6519dc94964a4c5c68fca482f20f71551f26
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Tue Jan 2 13:36:41 2018 -0700

    Btrfs: fix scrub to repair raid6 corruption
    
    [ Upstream commit 762221f095e3932669093466aaf4b85ed9ad2ac1 ]
    
    The raid6 corruption is that,
    suppose that all disks can be read without problems and if the content
    that was read out doesn't match its checksum, currently for raid6
    btrfs at most retries twice,
    
    - the 1st retry is to rebuild with all other stripes, it'll eventually
      be a raid5 xor rebuild,
    - if the 1st fails, the 2nd retry will deliberately fail parity p so
      that it will do raid6 style rebuild,
    
    however, the chances are that another non-parity stripe content also
    has something corrupted, so that the above retries are not able to
    return correct content.
    
    We've fixed normal reads to rebuild raid6 correctly with more retries
    in Patch "Btrfs: make raid6 rebuild retry more"[1], this is to fix
    scrub to do the exactly same rebuild process.
    
    [1]: https://patchwork.kernel.org/patch/10091755/
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e23c097653d0d0b3379588cf0d728f82c3a166c3
Author: Nikolay Borisov <nborisov@suse.com>
Date:   Tue Dec 12 11:14:49 2017 +0200

    btrfs: Fix out of bounds access in btrfs_search_slot
    
    [ Upstream commit 9ea2c7c9da13c9073e371c046cbbc45481ecb459 ]
    
    When modifying a tree where the root is at BTRFS_MAX_LEVEL - 1 then
    the level variable is going to be 7 (this is the max height of the
    tree). On the other hand btrfs_cow_block is always called with
    "level + 1" as an index into the nodes and slots arrays. This leads to
    an out of bounds access. Admittdely this will be benign since an OOB
    access of the nodes array will likely read the 0th element from the
    slots array, which in this case is going to be 0 (since we start CoW at
    the top of the tree). The OOB access into the slots array in turn will
    read the 0th and 1st values of the locks array, which would both be 0
    at the time. However, this benign behavior relies on the fact that the
    path being passed hasn't been initialised, if it has already been used to
    query a btree then it could potentially have populated the nodes/slots arrays.
    
    Fix it by explicitly checking if we are at level 7 (the maximum allowed
    index in nodes/slots arrays) and explicitly call the CoW routine with
    NULL for parent's node/slot.
    
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Fixes-coverity-id: 711515
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfae0436c8d07bfcda133d025e0624293aa56c57
Author: Liu Bo <bo.li.liu@oracle.com>
Date:   Wed Nov 15 16:10:28 2017 -0700

    Btrfs: set plug for fsync
    
    [ Upstream commit 343e4fc1c60971b0734de26dbbd475d433950982 ]
    
    Setting plug can merge adjacent IOs before dispatching IOs to the disk
    driver.
    
    Without plug, it'd not be a problem for single disk usecases, but for
    multiple disks using raid profile, a large IO can be split to several
    IOs of stripe length, and plug can be helpful to bring them together
    for each disk so that we can save several disk access.
    
    Moreover, fsync issues synchronous writes, so plug can really take
    effect.
    
    Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5c7751a4ab7cc856f48929d7c5b66194fe17730
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Thu Jan 18 01:43:19 2018 +0000

    ipmi/powernv: Fix error return code in ipmi_powernv_probe()
    
    [ Upstream commit e749d328b0b450aa78d562fa26a0cd8872325dd9 ]
    
    Fix to return a negative error code from the request_irq() error
    handling case instead of 0, as done elsewhere in this function.
    
    Fixes: dce143c3381c ("ipmi/powernv: Convert to irq event interface")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e6d77dfca838d6ef31f1d78ad4288b11908d86d
Author: weiyongjun (A) <weiyongjun1@huawei.com>
Date:   Thu Jan 18 02:23:34 2018 +0000

    mac80211_hwsim: fix possible memory leak in hwsim_new_radio_nl()
    
    [ Upstream commit 0ddcff49b672239dda94d70d0fcf50317a9f4b51 ]
    
    'hwname' is malloced in hwsim_new_radio_nl() and should be freed
    before leaving from the error handling cases, otherwise it will cause
    memory leak.
    
    Fixes: ff4dd73dd2b4 ("mac80211_hwsim: check HWSIM_ATTR_RADIO_NAME length")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Reviewed-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f52bf071758ffa919b0410f7eb5f9d1c0baffc05
Author: Ulf Magnusson <ulfalizer@gmail.com>
Date:   Sun Oct 8 19:35:45 2017 +0200

    kconfig: Fix expr_free() E_NOT leak
    
    [ Upstream commit 5b1374b3b3c2fc4f63a398adfa446fb8eff791a4 ]
    
    Only the E_NOT operand and not the E_NOT node itself was freed, due to
    accidentally returning too early in expr_free(). Outline of leak:
    
            switch (e->type) {
            ...
            case E_NOT:
                    expr_free(e->left.expr);
                    return;
            ...
            }
            *Never reached, 'e' leaked*
            free(e);
    
    Fix by changing the 'return' to a 'break'.
    
    Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:
    
            LEAK SUMMARY:
               definitely lost: 44,448 bytes in 1,852 blocks
               ...
    
    Summary after the fix:
    
            LEAK SUMMARY:
               definitely lost: 1,608 bytes in 67 blocks
               ...
    
    Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3343787005fb5e519bb1cc8976ab6f0ff2d0cb8
Author: Ulf Magnusson <ulfalizer@gmail.com>
Date:   Sun Oct 8 19:35:44 2017 +0200

    kconfig: Fix automatic menu creation mem leak
    
    [ Upstream commit ae7440ef0c8013d68c00dad6900e7cce5311bb1c ]
    
    expr_trans_compare() always allocates and returns a new expression,
    giving the following leak outline:
    
            ...
            *Allocate*
            basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
            ...
            for (menu = parent->next; menu; menu = menu->next) {
                    ...
                    *Copy*
                    dep2 = expr_copy(basedep);
                    ...
                    *Free copy*
                    expr_free(dep2);
            }
            *basedep lost!*
    
    Fix by freeing 'basedep' after the loop.
    
    Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:
    
            LEAK SUMMARY:
               definitely lost: 344,376 bytes in 14,349 blocks
               ...
    
    Summary after the fix:
    
            LEAK SUMMARY:
               definitely lost: 44,448 bytes in 1,852 blocks
               ...
    
    Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0c1ba16ee933c8aacf71ba5fc5e69c427b06f13
Author: Ulf Magnusson <ulfalizer@gmail.com>
Date:   Sun Oct 8 19:11:21 2017 +0200

    kconfig: Don't leak main menus during parsing
    
    [ Upstream commit 0724a7c32a54e3e50d28e19e30c59014f61d4e2c ]
    
    If a 'mainmenu' entry appeared in the Kconfig files, two things would
    leak:
    
            - The 'struct property' allocated for the default "Linux Kernel
              Configuration" prompt.
    
            - The string for the T_WORD/T_WORD_QUOTE prompt after the
              T_MAINMENU token, allocated on the heap in zconf.l.
    
    To fix it, introduce a new 'no_mainmenu_stmt' nonterminal that matches
    if there's no 'mainmenu' and adds the default prompt. That means the
    prompt only gets allocated once regardless of whether there's a
    'mainmenu' statement or not, and managing it becomes simple.
    
    Summary from Valgrind on 'menuconfig' (ARCH=x86) before the fix:
    
            LEAK SUMMARY:
               definitely lost: 344,568 bytes in 14,352 blocks
               ...
    
    Summary after the fix:
    
            LEAK SUMMARY:
               definitely lost: 344,440 bytes in 14,350 blocks
               ...
    
    Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dec8a30a5f49a1699c29c3e320b0d33338724e2
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Sun Dec 24 13:04:07 2017 -0800

    watchdog: sp5100_tco: Fix watchdog disable bit
    
    [ Upstream commit f541c09ebfc61697b586b38c9ebaf4b70defb278 ]
    
    According to all published information, the watchdog disable bit for SB800
    compatible controllers is bit 1 of PM register 0x48, not bit 2. For the
    most part that doesn't matter in practice, since the bit has to be cleared
    to enable watchdog address decoding, which is the default setting, but it
    still needs to be fixed.
    
    Cc: Zoltán Böszörményi <zboszor@pr.hu>
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73541706bfb1e34b06f253ff25c2f40e258413a1
Author: Jan Chochol <jan@chochol.info>
Date:   Fri Jan 5 08:39:12 2018 +0100

    nfs: Do not convert nfs_idmap_cache_timeout to jiffies
    
    [ Upstream commit cbebc6ef4fc830f4040d4140bf53484812d5d5d9 ]
    
    Since commit 57e62324e469 ("NFS: Store the legacy idmapper result in the
    keyring") nfs_idmap_cache_timeout changed units from jiffies to seconds.
    Unfortunately sysctl interface was not updated accordingly.
    
    As a effect updating /proc/sys/fs/nfs/idmap_cache_timeout with some
    value will incorrectly multiply this value by HZ.
    Also reading /proc/sys/fs/nfs/idmap_cache_timeout will show real value
    divided by HZ.
    
    Fixes: 57e62324e469 ("NFS: Store the legacy idmapper result in the keyring")
    Signed-off-by: Jan Chochol <jan@chochol.info>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0a345bd44de0920d19c5b91dea9d43c8951ab23f
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Mon Jan 15 18:10:15 2018 +0100

    net: stmmac: dwmac-meson8b: propagate rate changes to the parent clock
    
    [ Upstream commit fb7d38a70e1d8ffd54f7a7464dcc4889d7e490ad ]
    
    On Meson8b the only valid input clock is MPLL2. The bootloader
    configures that to run at 500002394Hz which cannot be divided evenly
    down to 125MHz using the m250_div clock. Currently the common clock
    framework chooses a m250_div of 2 - with the internal fixed
    "divide by 10" this results in a RGMII TX clock of 125001197Hz (120Hz
    above the requested 125MHz).
    
    Letting the common clock framework propagate the rate changes up to the
    parent of m250_mux allows us to get the best possible clock rate. With
    this patch the common clock framework calculates a rate of
    very-close-to-250MHz (249999701Hz to be exact) for the MPLL2 clock
    (which is the mux input). Dividing that by 2 (which is an internal,
    fixed divider for the RGMII TX clock) gives us an RGMII TX clock of
    124999850Hz (which is only 150Hz off the requested 125MHz, compared to
    1197Hz based on the MPLL2 rate set by u-boot and the Amlogic GPL kernel
    sources).
    
    SoCs from the Meson GX series are not affected by this change because
    the input clock is FCLK_DIV2 whose rate cannot be changed (which is fine
    since it's running at 1GHz, so it's already a multiple of 250MHz and
    125MHz).
    
    Fixes: 566e8251625304 ("net: stmmac: add a glue driver for the Amlogic Meson 8b / GXBB DWMAC")
    Suggested-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
    Tested-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 22fea05c2671edf7de5541134c8a0b2d82b6339e
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Mon Jan 15 18:10:14 2018 +0100

    net: stmmac: dwmac-meson8b: fix setting the RGMII TX clock on Meson8b
    
    [ Upstream commit 433c6cab9d298687c097f6ee82e49157044dc7c6 ]
    
    Meson8b only supports MPLL2 as clock input. The rate of the MPLL2 clock
    set by Odroid-C1's u-boot is close to (but not exactly) 500MHz. The
    exact rate is 500002394Hz, which is calculated in
    drivers/clk/meson/clk-mpll.c using the following formula:
    DIV_ROUND_UP_ULL((u64)parent_rate * SDM_DEN, (SDM_DEN * n2) + sdm)
    Odroid-C1's u-boot configures MPLL2 with the following values:
    - SDM_DEN = 16384
    - SDM = 1638
    - N2 = 5
    
    The 250MHz clock (m250_div) inside dwmac-meson8b driver is derived from
    the MPLL2 clock. Due to MPLL2 running slightly faster than 500MHz the
    common clock framework chooses a divider which is too big to generate
    the 250MHz clock (a divider of 2 would be needed, but this is rounded up
    to a divider of 3). This breaks the RTL8211F RGMII PHY on Odroid-C1
    because it requires a (close to) 125MHz RGMII TX clock (on Gbit speeds,
    the IP block internally divides that down to 25MHz on 100Mbit/s
    connections and 2.5MHz on 10Mbit/s connections - we don't need any
    special configuration for that).
    
    Round the divider to the closest value to prevent this issue on Meson8b.
    This means we'll now end up with a clock rate for the RGMII TX clock of
    125001197Hz (= 125MHz plus 1197Hz), which is close-enough to 125MHz.
    This has no effect on the Meson GX SoCs since there fclk_div2 is used as
    input clock, which has a rate of 1000MHz (and thus is divisible cleanly
    to 250MHz and 125MHz).
    
    Fixes: 566e8251625304 ("net: stmmac: add a glue driver for the Amlogic Meson 8b / GXBB DWMAC")
    Reported-by: Emiliano Ingrassia <ingrassia@epigenesys.com>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Jerome Brunet <jbrunet@baylibre.com>
    Tested-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 64b1a728f5c20883e761d6e2f8e9c7c2641f1507
Author: mulhern <amulhern@redhat.com>
Date:   Mon Nov 27 10:02:39 2017 -0500

    dm thin: fix documentation relative to low water mark threshold
    
    [ Upstream commit 9b28a1102efc75d81298198166ead87d643a29ce ]
    
    Fixes:
    1. The use of "exceeds" when the opposite of exceeds, falls below,
    was meant.
    2. Properly speaking, a table can not exceed a threshold.
    
    It emphasizes the important point, which is that it is the userspace
    daemon's responsibility to check for low free space when a device
    is resumed, since it won't get a special event indicating low free
    space in that situation.
    
    Signed-off-by: mulhern <amulhern@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5c2e607fdc93b771abc52707187794f12561b2c
Author: Peter Xu <peterx@redhat.com>
Date:   Wed Jan 10 13:51:37 2018 +0800

    iommu/vt-d: Use domain instead of cache fetching
    
    [ Upstream commit 9d2e6505f6d6934e681aed502f566198cb25c74a ]
    
    after commit a1ddcbe93010 ("iommu/vt-d: Pass dmar_domain directly into
    iommu_flush_iotlb_psi", 2015-08-12), we have domain pointer as parameter
    to iommu_flush_iotlb_psi(), so no need to fetch it from cache again.
    
    More importantly, a NULL reference pointer bug is reported on RHEL7 (and
    it can be reproduced on some old upstream kernels too, e.g., v4.13) by
    unplugging an 40g nic from a VM (hard to test unplug on real host, but
    it should be the same):
    
    https://bugzilla.redhat.com/show_bug.cgi?id=1531367
    
    [   24.391863] pciehp 0000:00:03.0:pcie004: Slot(0): Attention button pressed
    [   24.393442] pciehp 0000:00:03.0:pcie004: Slot(0): Powering off due to button press
    [   29.721068] i40evf 0000:01:00.0: Unable to send opcode 2 to PF, err I40E_ERR_QUEUE_EMPTY, aq_err OK
    [   29.783557] iommu: Removing device 0000:01:00.0 from group 3
    [   29.784662] BUG: unable to handle kernel NULL pointer dereference at 0000000000000304
    [   29.785817] IP: iommu_flush_iotlb_psi+0xcf/0x120
    [   29.786486] PGD 0
    [   29.786487] P4D 0
    [   29.786812]
    [   29.787390] Oops: 0000 [#1] SMP
    [   29.787876] Modules linked in: ip6t_rpfilter ip6t_REJECT nf_reject_ipv6 xt_conntrack ip_set nfnetlink ebtable_nat ebtable_broute bridge stp llc ip6table_ng
    [   29.795371] CPU: 0 PID: 156 Comm: kworker/0:2 Not tainted 4.13.0 #14
    [   29.796366] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.11.0-1.el7 04/01/2014
    [   29.797593] Workqueue: pciehp-0 pciehp_power_thread
    [   29.798328] task: ffff94f5745b4a00 task.stack: ffffb326805ac000
    [   29.799178] RIP: 0010:iommu_flush_iotlb_psi+0xcf/0x120
    [   29.799919] RSP: 0018:ffffb326805afbd0 EFLAGS: 00010086
    [   29.800666] RAX: ffff94f5bc56e800 RBX: 0000000000000000 RCX: 0000000200000025
    [   29.801667] RDX: ffff94f5bc56e000 RSI: 0000000000000082 RDI: 0000000000000000
    [   29.802755] RBP: ffffb326805afbf8 R08: 0000000000000000 R09: ffff94f5bc86bbf0
    [   29.803772] R10: ffffb326805afba8 R11: 00000000000ffdc4 R12: ffff94f5bc86a400
    [   29.804789] R13: 0000000000000000 R14: 00000000ffdc4000 R15: 0000000000000000
    [   29.805792] FS:  0000000000000000(0000) GS:ffff94f5bfc00000(0000) knlGS:0000000000000000
    [   29.806923] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   29.807736] CR2: 0000000000000304 CR3: 000000003499d000 CR4: 00000000000006f0
    [   29.808747] Call Trace:
    [   29.809156]  flush_unmaps_timeout+0x126/0x1c0
    [   29.809800]  domain_exit+0xd6/0x100
    [   29.810322]  device_notifier+0x6b/0x70
    [   29.810902]  notifier_call_chain+0x4a/0x70
    [   29.812822]  __blocking_notifier_call_chain+0x47/0x60
    [   29.814499]  blocking_notifier_call_chain+0x16/0x20
    [   29.816137]  device_del+0x233/0x320
    [   29.817588]  pci_remove_bus_device+0x6f/0x110
    [   29.819133]  pci_stop_and_remove_bus_device+0x1a/0x20
    [   29.820817]  pciehp_unconfigure_device+0x7a/0x1d0
    [   29.822434]  pciehp_disable_slot+0x52/0xe0
    [   29.823931]  pciehp_power_thread+0x8a/0xa0
    [   29.825411]  process_one_work+0x18c/0x3a0
    [   29.826875]  worker_thread+0x4e/0x3b0
    [   29.828263]  kthread+0x109/0x140
    [   29.829564]  ? process_one_work+0x3a0/0x3a0
    [   29.831081]  ? kthread_park+0x60/0x60
    [   29.832464]  ret_from_fork+0x25/0x30
    [   29.833794] Code: 85 ed 74 0b 5b 41 5c 41 5d 41 5e 41 5f 5d c3 49 8b 54 24 60 44 89 f8 0f b6 c4 48 8b 04 c2 48 85 c0 74 49 45 0f b6 ff 4a 8b 3c f8 <80> bf
    [   29.838514] RIP: iommu_flush_iotlb_psi+0xcf/0x120 RSP: ffffb326805afbd0
    [   29.840362] CR2: 0000000000000304
    [   29.841716] ---[ end trace b10ec0d6900868d3 ]---
    
    This patch fixes that problem if applied to v4.13 kernel.
    
    The bug does not exist on latest upstream kernel since it's fixed as a
    side effect of commit 13cf01744608 ("iommu/vt-d: Make use of iova
    deferred flushing", 2017-08-15).  But IMHO it's still good to have this
    patch upstream.
    
    CC: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Peter Xu <peterx@redhat.com>
    Fixes: a1ddcbe93010 ("iommu/vt-d: Pass dmar_domain directly into iommu_flush_iotlb_psi")
    Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b0f8d7f54ff9e6638b7faee9501560065987d80
Author: Thomas Richter <tmricht@linux.vnet.ibm.com>
Date:   Wed Jan 17 14:16:11 2018 +0100

    perf record: Fix failed memory allocation for get_cpuid_str
    
    [ Upstream commit 81fccd6ca507d3b2012eaf1edeb9b1dbf4bd22db ]
    
    In x86 architecture dependend part function get_cpuid_str() mallocs a
    128 byte buffer, but does not check if the memory allocation succeeded
    or not.
    
    When the memory allocation fails, function __get_cpuid() is called with
    first parameter being a NULL pointer.  However this function references
    its first parameter and operates on a NULL pointer which might cause
    core dumps.
    
    Signed-off-by: Thomas Richter <tmricht@linux.vnet.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Link: http://lkml.kernel.org/r/20180117131611.34319-1-tmricht@linux.vnet.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d23d7b03fd9abdb635e815e86843d52a18ca3278
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Jan 11 19:47:51 2018 -0500

    tools lib traceevent: Fix get_field_str() for dynamic strings
    
    [ Upstream commit d777f8de99b05d399c0e4e51cdce016f26bd971b ]
    
    If a field is a dynamic string, get_field_str() returned just the
    offset/size value and not the string. Have it parse the offset/size
    correctly to return the actual string. Otherwise filtering fails when
    trying to filter fields that are dynamic strings.
    
    Reported-by: Gopanapalli Pradeep <prap_hai@yahoo.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20180112004823.146333275@goodmis.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f32b5f4dded6e71c00f803d32cad0e038756da53
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Mon Jan 15 11:07:58 2018 -0300

    perf callchain: Fix attr.sample_max_stack setting
    
    [ Upstream commit 249d98e567e25dd03e015e2d31e1b7b9648f34df ]
    
    When setting the "dwarf" unwinder for a specific event and not
    specifying the max-stack, the attr.sample_max_stack ended up using an
    uninitialized callchain_param.max_stack, fix it by using designated
    initializers for that callchain_param variable, zeroing all non
    explicitely initialized struct members.
    
    Here is what happened:
    
      # perf trace -vv --no-syscalls --max-stack 4 -e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
      callchain: type DWARF
      callchain: stack dump size 8192
      perf_event_attr:
        type                             2
        size                             112
        config                           0x730
        { sample_period, sample_freq }   1
        sample_type                      IP|TID|TIME|ADDR|CALLCHAIN|CPU|PERIOD|RAW|REGS_USER|STACK_USER|DATA_SRC
        exclude_callchain_user           1
        { wakeup_events, wakeup_watermark } 1
        sample_regs_user                 0xff0fff
        sample_stack_user                8192
        sample_max_stack                 50656
      sys_perf_event_open failed, error -75
      Value too large for defined data type
      # perf trace -vv --no-syscalls --max-stack 4 -e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
      callchain: type DWARF
      callchain: stack dump size 8192
      perf_event_attr:
        type                             2
        size                             112
        config                           0x730
        sample_type                      IP|TID|TIME|ADDR|CALLCHAIN|CPU|PERIOD|RAW|REGS_USER|STACK_USER|DATA_SRC
        exclude_callchain_user           1
        sample_regs_user                 0xff0fff
        sample_stack_user                8192
        sample_max_stack                 30448
      sys_perf_event_open failed, error -75
      Value too large for defined data type
      #
    
    Now the attr.sample_max_stack is set to zero and the above works as
    expected:
    
      # perf trace --no-syscalls --max-stack 4 -e probe_libc:inet_pton/call-graph=dwarf/ ping -6 -c 1 ::1
      PING ::1(::1) 56 data bytes
      64 bytes from ::1: icmp_seq=1 ttl=64 time=0.072 ms
    
      --- ::1 ping statistics ---
      1 packets transmitted, 1 received, 0% packet loss, time 0ms
      rtt min/avg/max/mdev = 0.072/0.072/0.072/0.000 ms
           0.000 probe_libc:inet_pton:(7feb7a998350))
                                             __inet_pton (inlined)
                                             gaih_inet.constprop.7 (/usr/lib64/libc-2.26.so)
                                             __GI_getaddrinfo (inlined)
                                             [0xffffaa39b6108f3f] (/usr/bin/ping)
      #
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Hendrick Brueckner <brueckner@linux.vnet.ibm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Thomas Richter <tmricht@linux.vnet.ibm.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-is9tramondqa9jlxxsgcm9iz@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50efa63d697f5af81386504351a42abc98768677
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Jan 11 19:47:45 2018 -0500

    tools lib traceevent: Simplify pointer print logic and fix %pF
    
    [ Upstream commit 38d70b7ca1769f26c0b79f3c08ff2cc949712b59 ]
    
    When processing %pX in pretty_print(), simplify the logic slightly by
    incrementing the ptr to the format string if isalnum(ptr[1]) is true.
    This follows the logic a bit more closely to what is in the kernel.
    
    Also, this fixes a small bug where %pF was not giving the offset of the
    function.
    
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    Acked-by: Namhyung Kim <namhyung@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Link: http://lkml.kernel.org/r/20180112004822.260262257@goodmis.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c532d83b674a5f7f98d25109545170291d27d99d
Author: Shiraz Saleem <shiraz.saleem@intel.com>
Date:   Thu Jan 11 18:10:51 2018 -0600

    i40iw: Zero-out consumer key on allocate stag for FMR
    
    [ Upstream commit 6376e926af1a8661dd1b2e6d0896e07f84a35844 ]
    
    If the application invalidates the MR before the FMR WR, HW parses the
    consumer key portion of the stag and returns an invalid stag key
    Asynchronous Event (AE) that tears down the QP.
    
    Fix this by zeroing-out the consumer key portion of the allocated stag
    returned to application for FMR.
    
    Fixes: ee855d3b93f3 ("RDMA/i40iw: Add base memory management extensions")
    Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0073fb55b18a22e254135e1f493c6d2c4a2068ed
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Tue Jan 9 13:44:46 2018 -0800

    Input: psmouse - fix Synaptics detection when protocol is disabled
    
    [ Upstream commit 2bc4298f59d2f15175bb568e2d356b5912d0cdd9 ]
    
    When Synaptics protocol is disabled, we still need to try and detect the
    hardware, so we can switch to SMBus device if SMbus is detected, or we know
    that it is Synaptics device and reset it properly for the bare PS/2
    protocol.
    
    Fixes: c378b5119eb0 ("Input: psmouse - factor out common protocol probing code")
    Reported-by: Matteo Croce <mcroce@redhat.com>
    Tested-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c1a1a9154c2055b146eb1c855d7d528a27fa7c0
Author: Alex Williamson <alex.williamson@redhat.com>
Date:   Tue Jan 16 10:05:26 2018 -0700

    PCI: Add function 1 DMA alias quirk for Marvell 9128
    
    [ Upstream commit aa008206634363ef800fbd5f0262016c9ff81dea ]
    
    The Marvell 9128 is the original device generating bug 42679, from which
    many other Marvell DMA alias quirks have been sourced, but we didn't have
    positive confirmation of the fix on 9128 until now.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=42679
    Link: https://www.spinics.net/lists/kvm/msg161459.html
    Reported-by: Binarus <lists@binarus.de>
    Tested-by: Binarus <lists@binarus.de>
    Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e3ae971af7896594df867abb2c07e8a7732a4915
Author: Anna-Maria Gleixner <anna-maria@linutronix.de>
Date:   Thu Dec 21 11:41:37 2017 +0100

    tracing/hrtimer: Fix tracing bugs by taking all clock bases and modes into account
    
    [ Upstream commit 91633eed73a3ac37aaece5c8c1f93a18bae616a9 ]
    
    So far only CLOCK_MONOTONIC and CLOCK_REALTIME were taken into account as
    well as HRTIMER_MODE_ABS/REL in the hrtimer_init tracepoint. The query for
    detecting the ABS or REL timer modes is not valid anymore, it got broken
    by the introduction of HRTIMER_MODE_PINNED.
    
    HRTIMER_MODE_PINNED is not evaluated in the hrtimer_init() call, but for the
    sake of completeness print all given modes.
    
    Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: keescook@chromium.org
    Link: http://lkml.kernel.org/r/20171221104205.7269-9-anna-maria@linutronix.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d65bc9545fd352112c1c0f3c95c68da32a0f1bf8
Author: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Date:   Fri Jan 12 17:36:27 2018 -0700

    netfilter: ipv6: nf_defrag: Pass on packets to stack per RFC2460
    
    [ Upstream commit 83f1999caeb14e15df205e80d210699951733287 ]
    
    ipv6_defrag pulls network headers before fragment header. In case of
    an error, the netfilter layer is currently dropping these packets.
    This results in failure of some IPv6 standards tests which passed on
    older kernels due to the netfilter framework using cloning.
    
    The test case run here is a check for ICMPv6 error message replies
    when some invalid IPv6 fragments are sent. This specific test case is
    listed in https://www.ipv6ready.org/docs/Core_Conformance_Latest.pdf
    in the Extension Header Processing Order section.
    
    A packet with unrecognized option Type 11 is sent and the test expects
    an ICMP error in line with RFC2460 section 4.2 -
    
    11 - discard the packet and, only if the packet's Destination
         Address was not a multicast address, send an ICMP Parameter
         Problem, Code 2, message to the packet's Source Address,
         pointing to the unrecognized Option Type.
    
    Since netfilter layer now drops all invalid IPv6 frag packets, we no
    longer see the ICMP error message and fail the test case.
    
    To fix this, save the transport header. If defrag is unable to process
    the packet due to RFC2460, restore the transport header and allow packet
    to be processed by stack. There is no change for other packet
    processing paths.
    
    Tested by confirming that stack sends an ICMP error when it receives
    these packets. Also tested that fragmented ICMP pings succeed.
    
    v1->v2: Instead of cloning always, save the transport_header and
    restore it in case of this specific error. Update the title and
    commit message accordingly.
    
    Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 017488a29110b857940e1255e86d27b34a858b91
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Thu Oct 26 15:45:47 2017 +0200

    kvm: x86: fix KVM_XEN_HVM_CONFIG ioctl
    
    [ Upstream commit 51776043afa415435c7e4636204fbe4f7edc4501 ]
    
    This ioctl is obsolete (it was used by Xenner as far as I know) but
    still let's not break it gratuitously...  Its handler is copying
    directly into struct kvm.  Go through a bounce buffer instead, with
    the added benefit that we can actually do something useful with the
    flags argument---the previous code was exiting with -EINVAL but still
    doing the copy.
    
    This technically is a userspace ABI breakage, but since no one should be
    using the ioctl, it's a good occasion to see if someone actually
    complains.
    
    Cc: kernel-hardening@lists.openwall.com
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71bff398b0d4ee99dd2a53d75950ad0c70f8c280
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jan 15 10:44:35 2018 +0100

    ALSA: hda - Use IS_REACHABLE() for dependency on input
    
    [ Upstream commit c469652bb5e8fb715db7d152f46d33b3740c9b87 ]
    
    The commit ffcd28d88e4f ("ALSA: hda - Select INPUT for Realtek
    HD-audio codec") introduced the reverse-selection of CONFIG_INPUT for
    Realtek codec in order to avoid the mess with dependency between
    built-in and modules.  Later on, we obtained IS_REACHABLE() macro
    exactly for this kind of problems, and now we can remove th INPUT
    selection in Kconfig and put IS_REACHABLE(INPUT) to the appropriate
    places in the code, so that the driver doesn't need to select other
    subsystem forcibly.
    
    Fixes: ffcd28d88e4f ("ALSA: hda - Select INPUT for Realtek HD-audio codec")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Acked-by: Randy Dunlap <rdunlap@infradead.org> # and build-tested
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 70f254aa39fda3078b61403be13994aa7182ab3d
Author: NeilBrown <neilb@suse.com>
Date:   Wed Dec 13 09:57:09 2017 +1100

    NFSv4: always set NFS_LOCK_LOST when a lock is lost.
    
    [ Upstream commit dce2630c7da73b0634686bca557cc8945cc450c8 ]
    
    There are 2 comments in the NFSv4 code which suggest that
    SIGLOST should possibly be sent to a process.  In these
    cases a lock has been lost.
    The current practice is to set NFS_LOCK_LOST so that
    read/write returns EIO when a lock is lost.
    So change these comments to code when sets NFS_LOCK_LOST.
    
    One case is when lock recovery after apparent server restart
    fails with NFS4ERR_DENIED, NFS4ERR_RECLAIM_BAD, or
    NFS4ERRO_RECLAIM_CONFLICT.  The other case is when a lock
    attempt as part of lease recovery fails with NFS4ERR_DENIED.
    
    In an ideal world, these should not happen.  However I have
    a packet trace showing an NFSv4.1 session getting
    NFS4ERR_BADSESSION after an extended network parition.  The
    NFSv4.1 client treats this like server reboot until/unless
    it get NFS4ERR_NO_GRACE, in which case it switches over to
    "nograce" recovery mode.  In this network trace, the client
    attempts to recover a lock and the server (incorrectly)
    reports NFS4ERR_DENIED rather than NFS4ERR_NO_GRACE.  This
    leads to the ineffective comment and the client then
    continues to write using the OPEN stateid.
    
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 653cf76017f16cf8f52e179cc9126987386cfc83
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Dec 22 10:20:11 2017 +0100

    x86/tsc: Allow TSC calibration without PIT
    
    [ Upstream commit 30c7e5b123673d5e570e238dbada2fb68a87212c ]
    
    Zhang Rui reported that a Surface Pro 4 will fail to boot with
    lapic=notscdeadline. Part of the problem is that that machine doesn't have
    a PIT.
    
    If, for some reason, the TSC init has to fall back to TSC calibration, it
    relies on the PIT to be present.
    
    Allow TSC calibration to reliably fall back to HPET.
    
    The below results in an accurate TSC measurement when forced on a IVB:
    
      tsc: Unable to calibrate against PIT
      tsc: No reference (HPET/PMTIMER) available
      tsc: Unable to calibrate against PIT
      tsc: using HPET reference calibration
      tsc: Detected 2792.451 MHz processor
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: len.brown@intel.com
    Cc: rui.zhang@intel.com
    Link: https://lkml.kernel.org/r/20171222092243.333145937@infradead.org
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 83335517aa23b5b5027f8d7edead8307cc77475c
Author: Hector Martin <marcan@marcan.st>
Date:   Fri Nov 3 20:28:57 2017 +0900

    firewire-ohci: work around oversized DMA reads on JMicron controllers
    
    [ Upstream commit 188775181bc05f29372b305ef96485840e351fde ]
    
    At least some JMicron controllers issue buggy oversized DMA reads when
    fetching context descriptors, always fetching 0x20 bytes at once for
    descriptors which are only 0x10 bytes long. This is often harmless, but
    can cause page faults on modern systems with IOMMUs:
    
    DMAR: [DMA Read] Request device [05:00.0] fault addr fff56000 [fault reason 06] PTE Read access is not set
    firewire_ohci 0000:05:00.0: DMA context IT0 has stopped, error code: evt_descriptor_read
    
    This works around the problem by always leaving 0x10 padding bytes at
    the end of descriptor buffer pages, which should be harmless to do
    unconditionally for controllers in case others have the same behavior.
    
    Signed-off-by: Hector Martin <marcan@marcan.st>
    Reviewed-by: Clemens Ladisch <clemens@ladisch.de>
    Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9baf2bc5df2f61c79033f9a09a34a806e5ebb603
Author: Jim Mattson <jmattson@google.com>
Date:   Wed May 9 14:29:35 2018 -0700

    kvm: x86: IA32_ARCH_CAPABILITIES is always supported
    
    commit 1eaafe91a0df4157521b6417b3dd8430bf5f52f0 upstream.
    
    If there is a possibility that a VM may migrate to a Skylake host,
    then the hypervisor should report IA32_ARCH_CAPABILITIES.RSBA[bit 2]
    as being set (future work, of course). This implies that
    CPUID.(EAX=7,ECX=0):EDX.ARCH_CAPABILITIES[bit 29] should be
    set. Therefore, kvm should report this CPUID bit as being supported
    whether or not the host supports it.  Userspace is still free to clear
    the bit if it chooses.
    
    For more information on RSBA, see Intel's white paper, "Retpoline: A
    Branch Target Injection Mitigation" (Document Number 337131-001),
    currently available at https://bugzilla.kernel.org/show_bug.cgi?id=199511.
    
    Since the IA32_ARCH_CAPABILITIES MSR is emulated in kvm, there is no
    dependency on hardware support for this feature.
    
    Signed-off-by: Jim Mattson <jmattson@google.com>
    Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Fixes: 28c1c9fabf48 ("KVM/VMX: Emulate MSR_IA32_ARCH_CAPABILITIES")
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 772dccdb5986932eaad21798b49186d3ea8071dc
Author: Wei Huang <wei@redhat.com>
Date:   Tue May 1 09:49:54 2018 -0500

    KVM: x86: Update cpuid properly when CR4.OSXAVE or CR4.PKE is changed
    
    commit c4d2188206bafa177ea58e9a25b952baa0bf7712 upstream.
    
    The CPUID bits of OSXSAVE (function=0x1) and OSPKE (func=0x7, leaf=0x0)
    allows user apps to detect if OS has set CR4.OSXSAVE or CR4.PKE. KVM is
    supposed to update these CPUID bits when CR4 is updated. Current KVM
    code doesn't handle some special cases when updates come from emulator.
    Here is one example:
    
      Step 1: guest boots
      Step 2: guest OS enables XSAVE ==> CR4.OSXSAVE=1 and CPUID.OSXSAVE=1
      Step 3: guest hot reboot ==> QEMU reset CR4 to 0, but CPUID.OSXAVE==1
      Step 4: guest os checks CPUID.OSXAVE, detects 1, then executes xgetbv
    
    Step 4 above will cause an #UD and guest crash because guest OS hasn't
    turned on OSXAVE yet. This patch solves the problem by comparing the the
    old_cr4 with cr4. If the related bits have been changed,
    kvm_update_cpuid() needs to be called.
    
    Signed-off-by: Wei Huang <wei@redhat.com>
    Reviewed-by: Bandan Das <bsd@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fcc47bec27412f532ef936152b20483ccbdd22f7
Author: David Hildenbrand <david@redhat.com>
Date:   Wed May 9 16:12:17 2018 +0200

    KVM: s390: vsie: fix < 8k check for the itdba
    
    commit f4a551b72358facbbe5714248dff78404272feee upstream.
    
    By missing an "L", we might detect some addresses to be <8k,
    although they are not.
    
    e.g. for itdba = 100001fff
    !(gpa & ~0x1fffU) -> 1
    !(gpa & ~0x1fffUL) -> 0
    
    So we would report a SIE validity intercept although everything is fine.
    
    Fixes: 166ecb3 ("KVM: s390: vsie: support transactional execution")
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
    Reviewed-by: Cornelia Huck <cohuck@redhat.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
    Cc: stable@vger.kernel.org # v4.8+
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43462d908821d0af30ee3f5e74937034fa9453a5
Author: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Date:   Mon May 21 17:54:49 2018 -0400

    KVM/VMX: Expose SSBD properly to guests
    
    commit 0aa48468d00959c8a37cd3ac727284f4f7359151 upstream.
    
    The X86_FEATURE_SSBD is an synthetic CPU feature - that is
    it bit location has no relevance to the real CPUID 0x7.EBX[31]
    bit position. For that we need the new CPU feature name.
    
    Fixes: 52817587e706 ("x86/cpufeatures: Disentangle SSBD enumeration")
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: kvm@vger.kernel.org
    Cc: "Radim Krčmář" <rkrcmar@redhat.com>
    Cc: stable@vger.kernel.org
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Paolo Bonzini <pbonzini@redhat.com>
    Link: https://lkml.kernel.org/r/20180521215449.26423-2-konrad.wilk@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec1975ac988686eba0f105f87ed0b587da43d384
Author: zhongjiang <zhongjiang@huawei.com>
Date:   Mon Jul 10 15:52:57 2017 -0700

    kernel/signal.c: avoid undefined behaviour in kill_something_info
    
    commit 4ea77014af0d6205b05503d1c7aac6eace11d473 upstream.
    
    When running kill(72057458746458112, 0) in userspace I hit the following
    issue.
    
      UBSAN: Undefined behaviour in kernel/signal.c:1462:11
      negation of -2147483648 cannot be represented in type 'int':
      CPU: 226 PID: 9849 Comm: test Tainted: G    B          ---- -------   3.10.0-327.53.58.70.x86_64_ubsan+ #116
      Hardware name: Huawei Technologies Co., Ltd. RH8100 V3/BC61PBIA, BIOS BLHSV028 11/11/2014
      Call Trace:
        dump_stack+0x19/0x1b
        ubsan_epilogue+0xd/0x50
        __ubsan_handle_negate_overflow+0x109/0x14e
        SYSC_kill+0x43e/0x4d0
        SyS_kill+0xe/0x10
        system_call_fastpath+0x16/0x1b
    
    Add code to avoid the UBSAN detection.
    
    [akpm@linux-foundation.org: tweak comment]
    Link: http://lkml.kernel.org/r/1496670008-59084-1-git-send-email-zhongjiang@huawei.com
    Signed-off-by: zhongjiang <zhongjiang@huawei.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Xishi Qiu <qiuxishi@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 960828aaa08f7a038621f3587cfbe33ccb244b07
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Fri May 25 14:47:57 2018 -0700

    kernel/sys.c: fix potential Spectre v1 issue
    
    commit 23d6aef74da86a33fa6bb75f79565e0a16ee97c2 upstream.
    
    `resource' can be controlled by user-space, hence leading to a potential
    exploitation of the Spectre variant 1 vulnerability.
    
    This issue was detected with the help of Smatch:
    
      kernel/sys.c:1474 __do_compat_sys_old_getrlimit() warn: potential spectre issue 'get_current()->signal->rlim' (local cap)
      kernel/sys.c:1455 __do_sys_old_getrlimit() warn: potential spectre issue 'get_current()->signal->rlim' (local cap)
    
    Fix this by sanitizing *resource* before using it to index
    current->signal->rlim
    
    Notice that given that speculation windows are large, the policy is to
    kill the speculation on the first load and not worry if it can be
    completed with a dependent load/store [1].
    
    [1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
    
    Link: http://lkml.kernel.org/r/20180515030038.GA11822@embeddedor.com
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1fc8ecb94e0f532ed841e18c0073207a33229df
Author: David Hildenbrand <david@redhat.com>
Date:   Fri May 25 14:48:11 2018 -0700

    kasan: fix memory hotplug during boot
    
    commit 3f1959721558a976aaf9c2024d5bc884e6411bf7 upstream.
    
    Using module_init() is wrong.  E.g.  ACPI adds and onlines memory before
    our memory notifier gets registered.
    
    This makes sure that ACPI memory detected during boot up will not result
    in a kernel crash.
    
    Easily reproducible with QEMU, just specify a DIMM when starting up.
    
    Link: http://lkml.kernel.org/r/20180522100756.18478-3-david@redhat.com
    Fixes: 786a8959912e ("kasan: disable memory hotplug")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Acked-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c798bc19e1b42ca7ece9523fcb6a6751f689561
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Fri May 25 14:47:30 2018 -0700

    ipc/shm: fix shmat() nil address after round-down when remapping
    
    commit 8f89c007b6dec16a1793cb88de88fcc02117bbbc upstream.
    
    shmat()'s SHM_REMAP option forbids passing a nil address for; this is in
    fact the very first thing we check for.  Andrea reported that for
    SHM_RND|SHM_REMAP cases we can end up bypassing the initial addr check,
    but we need to check again if the address was rounded down to nil.  As
    of this patch, such cases will return -EINVAL.
    
    Link: http://lkml.kernel.org/r/20180503204934.kk63josdu6u53fbd@linux-n805
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reported-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2ef44a3c1a32656dbae30cd16ec5c22a996a4ca9
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Fri May 25 14:47:27 2018 -0700

    Revert "ipc/shm: Fix shmat mmap nil-page protection"
    
    commit a73ab244f0dad8fffb3291b905f73e2d3eaa7c00 upstream.
    
    Patch series "ipc/shm: shmat() fixes around nil-page".
    
    These patches fix two issues reported[1] a while back by Joe and Andrea
    around how shmat(2) behaves with nil-page.
    
    The first reverts a commit that it was incorrectly thought that mapping
    nil-page (address=0) was a no no with MAP_FIXED.  This is not the case,
    with the exception of SHM_REMAP; which is address in the second patch.
    
    I chose two patches because it is easier to backport and it explicitly
    reverts bogus behaviour.  Both patches ought to be in -stable and ltp
    testcases need updated (the added testcase around the cve can be
    modified to just test for SHM_RND|SHM_REMAP).
    
    [1] lkml.kernel.org/r/20180430172152.nfa564pvgpk3ut7p@linux-n805
    
    This patch (of 2):
    
    Commit 95e91b831f87 ("ipc/shm: Fix shmat mmap nil-page protection")
    worked on the idea that we should not be mapping as root addr=0 and
    MAP_FIXED.  However, it was reported that this scenario is in fact
    valid, thus making the patch both bogus and breaks userspace as well.
    
    For example X11's libint10.so relies on shmat(1, SHM_RND) for lowmem
    initialization[1].
    
    [1] https://cgit.freedesktop.org/xorg/xserver/tree/hw/xfree86/os-support/linux/int10/linux.c#n347
    Link: http://lkml.kernel.org/r/20180503203243.15045-2-dave@stgolabs.net
    Fixes: 95e91b831f87 ("ipc/shm: Fix shmat mmap nil-page protection")
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
    Reported-by: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36017b0c941569e46cbcaf942387b0494f2a9784
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
Date:   Wed May 2 06:42:51 2018 -0700

    IB/hfi1: Use after free race condition in send context error path
    
    commit f9e76ca3771bf23d2142a81a88ddd8f31f5c4c03 upstream.
    
    A pio send egress error can occur when the PSM library attempts to
    to send a bad packet.  That issue is still being investigated.
    
    The pio error interrupt handler then attempts to progress the recovery
    of the errored pio send context.
    
    Code inspection reveals that the handling lacks the necessary locking
    if that recovery interleaves with a PSM close of the "context" object
    contains the pio send context.
    
    The lack of the locking can cause the recovery to access the already
    freed pio send context object and incorrectly deduce that the pio
    send context is actually a kernel pio send context as shown by the
    NULL deref stack below:
    
    [<ffffffff8143d78c>] _dev_info+0x6c/0x90
    [<ffffffffc0613230>] sc_restart+0x70/0x1f0 [hfi1]
    [<ffffffff816ab124>] ? __schedule+0x424/0x9b0
    [<ffffffffc06133c5>] sc_halted+0x15/0x20 [hfi1]
    [<ffffffff810aa3ba>] process_one_work+0x17a/0x440
    [<ffffffff810ab086>] worker_thread+0x126/0x3c0
    [<ffffffff810aaf60>] ? manage_workers.isra.24+0x2a0/0x2a0
    [<ffffffff810b252f>] kthread+0xcf/0xe0
    [<ffffffff810b2460>] ? insert_kthread_work+0x40/0x40
    [<ffffffff816b8798>] ret_from_fork+0x58/0x90
    [<ffffffff810b2460>] ? insert_kthread_work+0x40/0x40
    
    This is the best case scenario and other scenarios can corrupt the
    already freed memory.
    
    Fix by adding the necessary locking in the pio send context error
    handler.
    
    Cc: <stable@vger.kernel.org> # 4.9.x
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50af403619f08f533b0118dda5693507f824aafb
Author: Thomas Hellstrom <thellstrom@vmware.com>
Date:   Wed May 23 16:11:24 2018 +0200

    drm/vmwgfx: Fix 32-bit VMW_PORT_HB_[IN|OUT] macros
    
    commit 938ae7259c908ad031da35d551da297640bb640c upstream.
    
    Depending on whether the kernel is compiled with frame-pointer or not,
    the temporary memory location used for the bp parameter in these macros
    is referenced relative to the stack pointer or the frame pointer.
    Hence we can never reference that parameter when we've modified either
    the stack pointer or the frame pointer, because then the compiler would
    generate an incorrect stack reference.
    
    Fix this by pushing the temporary memory parameter on a known location on
    the stack before modifying the stack- and frame pointers.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com>
    Reviewed-by: Brian Paul <brianp@vmware.com>
    Reviewed-by: Sinclair Yeh <syeh@vmware.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3246d2e53c62447f7b1a5249a6d3a74424fd7873
Author: Joe Jin <joe.jin@oracle.com>
Date:   Thu May 17 12:33:28 2018 -0700

    xen-swiotlb: fix the check condition for xen_swiotlb_free_coherent
    
    commit 4855c92dbb7b3b85c23e88ab7ca04f99b9677b41 upstream.
    
    When run raidconfig from Dom0 we found that the Xen DMA heap is reduced,
    but Dom Heap is increased by the same size. Tracing raidconfig we found
    that the related ioctl() in megaraid_sas will call dma_alloc_coherent()
    to apply memory. If the memory allocated by Dom0 is not in the DMA area,
    it will exchange memory with Xen to meet the requiment. Later drivers
    call dma_free_coherent() to free the memory, on xen_swiotlb_free_coherent()
    the check condition (dev_addr + size - 1 <= dma_mask) is always false,
    it prevents calling xen_destroy_contiguous_region() to return the memory
    to the Xen DMA heap.
    
    This issue introduced by commit 6810df88dcfc2 "xen-swiotlb: When doing
    coherent alloc/dealloc check before swizzling the MFNs.".
    
    Signed-off-by: Joe Jin <joe.jin@oracle.com>
    Tested-by: John Sobecki <john.sobecki@oracle.com>
    Reviewed-by: Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b9c86c9dc8399914650062f6183619b7ec30363
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Sat May 19 22:29:36 2018 +0100

    libata: blacklist Micron 500IT SSD with MU01 firmware
    
    commit 136d769e0b3475d71350aa3648a116a6ee7a8f6c upstream.
    
    While whitelisting Micron M500DC drives, the tweaked blacklist entry
    enabled queued TRIM from M500IT variants also. But these do not support
    queued TRIM. And while using those SSDs with the latest kernel we have
    seen errors and even the partition table getting corrupted.
    
    Some part from the dmesg:
    [    6.727384] ata1.00: ATA-9: Micron_M500IT_MTFDDAK060MBD, MU01, max UDMA/133
    [    6.727390] ata1.00: 117231408 sectors, multi 16: LBA48 NCQ (depth 31/32), AA
    [    6.741026] ata1.00: supports DRM functions and may not be fully accessible
    [    6.759887] ata1.00: configured for UDMA/133
    [    6.762256] scsi 0:0:0:0: Direct-Access     ATA      Micron_M500IT_MT MU01 PQ: 0 ANSI: 5
    
    and then for the error:
    [  120.860334] ata1.00: exception Emask 0x1 SAct 0x7ffc0007 SErr 0x0 action 0x6 frozen
    [  120.860338] ata1.00: irq_stat 0x40000008
    [  120.860342] ata1.00: failed command: SEND FPDMA QUEUED
    [  120.860351] ata1.00: cmd 64/01:00:00:00:00/00:00:00:00:00/a0 tag 0 ncq dma 512 out
             res 40/00:00:00:00:00/00:00:00:00:00/00 Emask 0x5 (timeout)
    [  120.860353] ata1.00: status: { DRDY }
    [  120.860543] ata1: hard resetting link
    [  121.166128] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
    [  121.166376] ata1.00: supports DRM functions and may not be fully accessible
    [  121.186238] ata1.00: supports DRM functions and may not be fully accessible
    [  121.204445] ata1.00: configured for UDMA/133
    [  121.204454] ata1.00: device reported invalid CHS sector 0
    [  121.204541] sd 0:0:0:0: [sda] tag#18 UNKNOWN(0x2003) Result: hostbyte=0x00 driverbyte=0x08
    [  121.204546] sd 0:0:0:0: [sda] tag#18 Sense Key : 0x5 [current]
    [  121.204550] sd 0:0:0:0: [sda] tag#18 ASC=0x21 ASCQ=0x4
    [  121.204555] sd 0:0:0:0: [sda] tag#18 CDB: opcode=0x93 93 08 00 00 00 00 00 04 28 80 00 00 00 30 00 00
    [  121.204559] print_req_error: I/O error, dev sda, sector 272512
    
    After few reboots with these errors, and the SSD is corrupted.
    After blacklisting it, the errors are not seen and the SSD does not get
    corrupted any more.
    
    Fixes: 243918be6393 ("libata: Do not blacklist Micron M500DC")
    Cc: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 31eeaaf57bbc043439d2ca62967e6456d10111ca
Author: Tejun Heo <tj@kernel.org>
Date:   Tue May 8 14:21:56 2018 -0700

    libata: Blacklist some Sandisk SSDs for NCQ
    
    commit 322579dcc865b94b47345ad1b6002ad167f85405 upstream.
    
    Sandisk SSDs SD7SN6S256G and SD8SN8U256G are regularly locking up
    regularly under sustained moderate load with NCQ enabled.  Blacklist
    for now.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Reported-by: Dave Jones <davej@codemonkey.org.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 352f4375c6dfbea7c64cc52f90cec78fdbae318e
Author: Corneliu Doban <corneliu.doban@broadcom.com>
Date:   Fri May 18 15:03:56 2018 -0700

    mmc: sdhci-iproc: fix 32bit writes for TRANSFER_MODE register
    
    commit 5f651b870485ee60f5abbbd85195a6852978894a upstream.
    
    When the host controller accepts only 32bit writes, the value of the
    16bit TRANSFER_MODE register, that has the same 32bit address as the
    16bit COMMAND register, needs to be saved and it will be written
    in a 32bit write together with the command as this will trigger the
    host to send the command on the SD interface.
    When sending the tuning command, TRANSFER_MODE is written and then
    sdhci_set_transfer_mode reads it back to clear AUTO_CMD12 bit and
    write it again resulting in wrong value to be written because the
    initial write value was saved in a shadow and the read-back returned
    a wrong value, from the register.
    Fix sdhci_iproc_readw to return the saved value of TRANSFER_MODE
    when a saved value exist.
    Same fix for read of BLOCK_SIZE and BLOCK_COUNT registers, that are
    saved for a different reason, although a scenario that will cause the
    mentioned problem on this registers is not probable.
    
    Fixes: b580c52d58d9 ("mmc: sdhci-iproc: add IPROC SDHCI driver")
    Signed-off-by: Corneliu Doban <corneliu.doban@broadcom.com>
    Signed-off-by: Scott Branden <scott.branden@broadcom.com>
    Cc: stable@vger.kernel.org # v4.1+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d33d4682d983732aca37e28693e3d5f601a58e1
Author: Srinath Mannam <srinath.mannam@broadcom.com>
Date:   Fri May 18 15:03:55 2018 -0700

    mmc: sdhci-iproc: remove hard coded mmc cap 1.8v
    
    commit 4c94238f37af87a2165c3fb491b4a8b50e90649c upstream.
    
    Remove hard coded mmc cap 1.8v from platform data as it is board specific.
    The 1.8v DDR mmc caps can be enabled using DTS property for those
    boards that support it.
    
    Fixes: b17b4ab8ce38 ("mmc: sdhci-iproc: define MMC caps in platform data")
    Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
    Signed-off-by: Scott Branden <scott.branden@broadcom.com>
    Reviewed-by: Ray Jui <ray.jui@broadcom.com>
    Cc: stable@vger.kernel.org # v4.8+
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d2d3f1ee7c4a1fe3bc43b685e16a1439e6821d5
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Fri May 4 08:23:01 2018 -0400

    do d_instantiate/unlock_new_inode combinations safely
    
    commit 1e2e547a93a00ebc21582c06ca3c6cfea2a309ee upstream.
    
    For anything NFS-exported we do _not_ want to unlock new inode
    before it has grown an alias; original set of fixes got the
    ordering right, but missed the nasty complication in case of
    lockdep being enabled - unlock_new_inode() does
            lockdep_annotate_inode_mutex_key(inode)
    which can only be done before anyone gets a chance to touch
    ->i_mutex.  Unfortunately, flipping the order and doing
    unlock_new_inode() before d_instantiate() opens a window when
    mkdir can race with open-by-fhandle on a guessed fhandle, leading
    to multiple aliases for a directory inode and all the breakage
    that follows from that.
    
            Correct solution: a new primitive (d_instantiate_new())
    combining these two in the right order - lockdep annotate, then
    d_instantiate(), then the rest of unlock_new_inode().  All
    combinations of d_instantiate() with unlock_new_inode() should
    be converted to that.
    
    Cc: stable@kernel.org   # 2.6.29 and later
    Tested-by: Mike Marshall <hubcap@omnibond.com>
    Reviewed-by: Andreas Dilger <adilger@dilger.ca>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 416808fbc20144d1cb76400d97ddafe26c6df9ff
Author: Ben Hutchings <ben.hutchings@codethink.co.uk>
Date:   Thu May 17 22:34:39 2018 +0100

    ALSA: timer: Fix pause event notification
    
    commit 3ae180972564846e6d794e3615e1ab0a1e6c4ef9 upstream.
    
    Commit f65e0d299807 ("ALSA: timer: Call notifier in the same spinlock")
    combined the start/continue and stop/pause functions, and in doing so
    changed the event code for the pause case to SNDRV_TIMER_EVENT_CONTINUE.
    Change it back to SNDRV_TIMER_EVENT_PAUSE.
    
    Fixes: f65e0d299807 ("ALSA: timer: Call notifier in the same spinlock")
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Cc: stable@vger.kernel.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b14cfa26071daa8ad8c58aae85773e7e78647f31
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun May 20 16:46:23 2018 -0400

    aio: fix io_destroy(2) vs. lookup_ioctx() race
    
    commit baf10564fbb66ea222cae66fbff11c444590ffd9 upstream.
    
    kill_ioctx() used to have an explicit RCU delay between removing the
    reference from ->ioctx_table and percpu_ref_kill() dropping the refcount.
    At some point that delay had been removed, on the theory that
    percpu_ref_kill() itself contained an RCU delay.  Unfortunately, that was
    the wrong kind of RCU delay and it didn't care about rcu_read_lock() used
    by lookup_ioctx().  As the result, we could get ctx freed right under
    lookup_ioctx().  Tejun has fixed that in a6d7cff472e ("fs/aio: Add explicit
    RCU grace period when freeing kioctx"); however, that fix is not enough.
    
    Suppose io_destroy() from one thread races with e.g. io_setup() from another;
    CPU1 removes the reference from current->mm->ioctx_table[...] just as CPU2
    has picked it (under rcu_read_lock()).  Then CPU1 proceeds to drop the
    refcount, getting it to 0 and triggering a call of free_ioctx_users(),
    which proceeds to drop the secondary refcount and once that reaches zero
    calls free_ioctx_reqs().  That does
            INIT_RCU_WORK(&ctx->free_rwork, free_ioctx);
            queue_rcu_work(system_wq, &ctx->free_rwork);
    and schedules freeing the whole thing after RCU delay.
    
    In the meanwhile CPU2 has gotten around to percpu_ref_get(), bumping the
    refcount from 0 to 1 and returned the reference to io_setup().
    
    Tejun's fix (that queue_rcu_work() in there) guarantees that ctx won't get
    freed until after percpu_ref_get().  Sure, we'd increment the counter before
    ctx can be freed.  Now we are out of rcu_read_lock() and there's nothing to
    stop freeing of the whole thing.  Unfortunately, CPU2 assumes that since it
    has grabbed the reference, ctx is *NOT* going away until it gets around to
    dropping that reference.
    
    The fix is obvious - use percpu_ref_tryget_live() and treat failure as miss.
    It's not costlier than what we currently do in normal case, it's safe to
    call since freeing *is* delayed and it closes the race window - either
    lookup_ioctx() comes before percpu_ref_kill() (in which case ctx->users
    won't reach 0 until the caller of lookup_ioctx() drops it) or lookup_ioctx()
    fails, ctx->users is unaffected and caller of lookup_ioctx() doesn't see
    the object in question at all.
    
    Cc: stable@kernel.org
    Fixes: a6d7cff472e "fs/aio: Add explicit RCU grace period when freeing kioctx"
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5aba1dc0d56b399284845a33e59b2a8c4462e6ff
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Sun May 6 12:15:20 2018 -0400

    affs_lookup(): close a race with affs_remove_link()
    
    commit 30da870ce4a4e007c901858a96e9e394a1daa74a upstream.
    
    we unlock the directory hash too early - if we are looking at secondary
    link and primary (in another directory) gets removed just as we unlock,
    we could have the old primary moved in place of the secondary, leaving
    us to look into freed entry (and leaving our dentry with ->d_fsdata
    pointing to a freed entry).
    
    Cc: stable@vger.kernel.org # 2.4.4+
    Acked-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 211922cfb229d820edcff93113ff64129c14192d
Author: Colin Ian King <colin.king@canonical.com>
Date:   Mon May 14 18:23:50 2018 +0100

    KVM: Fix spelling mistake: "cop_unsuable" -> "cop_unusable"
    
    commit ba3696e94d9d590d9a7e55f68e81c25dba515191 upstream.
    
    Trivial fix to spelling mistake in debugfs_entries text.
    
    Fixes: 669e846e6c4e ("KVM/MIPS32: MIPS arch specific APIs for KVM")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: kernel-janitors@vger.kernel.org
    Cc: <stable@vger.kernel.org> # 3.10+
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ed5a2130ae0366a3aff0ab45fcbf362d65a1b05
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon May 14 16:49:43 2018 +0100

    MIPS: Fix ptrace(2) PTRACE_PEEKUSR and PTRACE_POKEUSR accesses to o32 FGRs
    
    commit 9a3a92ccfe3620743d4ae57c987dc8e9c5f88996 upstream.
    
    Check the TIF_32BIT_FPREGS task setting of the tracee rather than the
    tracer in determining the layout of floating-point general registers in
    the floating-point context, correcting access to odd-numbered registers
    for o32 tracees where the setting disagrees between the two processes.
    
    Fixes: 597ce1723e0f ("MIPS: Support for 64-bit FP with O32 binaries")
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 3.14+
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1e0cf61e78df2336722b82b322348a36d8d12b5
Author: Maciej W. Rozycki <macro@mips.com>
Date:   Mon Apr 30 15:56:47 2018 +0100

    MIPS: ptrace: Expose FIR register through FP regset
    
    commit 71e909c0cdad28a1df1fa14442929e68615dee45 upstream.
    
    Correct commit 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    and expose the FIR register using the unused 4 bytes at the end of the
    NT_PRFPREG regset.  Without that register included clients cannot use
    the PTRACE_GETREGSET request to retrieve the complete FPU register set
    and have to resort to one of the older interfaces, either PTRACE_PEEKUSR
    or PTRACE_GETFPREGS, to retrieve the missing piece of data.  Also the
    register is irreversibly missing from core dumps.
    
    This register is architecturally hardwired and read-only so the write
    path does not matter.  Ignore data supplied on writes then.
    
    Fixes: 7aeb753b5353 ("MIPS: Implement task_user_regset_view.")
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Maciej W. Rozycki <macro@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 3.13+
    Patchwork: https://patchwork.linux-mips.org/patch/19273/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aa9a00ef3d0deeb5f2091b11b6d06fd6a35332b0
Author: NeilBrown <neil@brown.name>
Date:   Fri Apr 27 09:28:34 2018 +1000

    MIPS: c-r4k: Fix data corruption related to cache coherence
    
    commit 55a2aa08b3af519a9693f99cdf7fa6d8b62d9f65 upstream.
    
    When DMA will be performed to a MIPS32 1004K CPS, the L1-cache for the
    range needs to be flushed and invalidated first.
    The code currently takes one of two approaches.
    1/ If the range is less than the size of the dcache, then HIT type
       requests flush/invalidate cache lines for the particular addresses.
       HIT-type requests a globalised by the CPS so this is safe on SMP.
    
    2/ If the range is larger than the size of dcache, then INDEX type
       requests flush/invalidate the whole cache. INDEX type requests affect
       the local cache only. CPS does not propagate them in any way. So this
       invalidation is not safe on SMP CPS systems.
    
    Data corruption due to '2' can quite easily be demonstrated by
    repeatedly "echo 3 > /proc/sys/vm/drop_caches" and then sha1sum a file
    that is several times the size of available memory. Dropping caches
    means that large contiguous extents (large than dcache) are more likely.
    
    This was not a problem before Linux-4.8 because option 2 was never used
    if CONFIG_MIPS_CPS was defined. The commit which removed that apparently
    didn't appreciate the full consequence of the change.
    
    We could, in theory, globalize the INDEX based flush by sending an IPI
    to other cores. These cache invalidation routines can be called with
    interrupts disabled and synchronous IPI require interrupts to be
    enabled. Asynchronous IPI may not trigger writeback soon enough. So we
    cannot use IPI in practice.
    
    We can already test if IPI would be needed for an INDEX operation with
    r4k_op_needs_ipi(R4K_INDEX). If this is true then we mustn't try the
    INDEX approach as we cannot use IPI. If this is false (e.g. when there
    is only one core and hence one L1 cache) then it is safe to use the
    INDEX approach without IPI.
    
    This patch avoids options 2 if r4k_op_needs_ipi(R4K_INDEX), and so
    eliminates the corruption.
    
    Fixes: c00ab4896ed5 ("MIPS: Remove cpu_has_safe_index_cacheops")
    Signed-off-by: NeilBrown <neil@brown.name>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Paul Burton <paul.burton@mips.com>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 4.8+
    Patchwork: https://patchwork.linux-mips.org/patch/19259/
    Signed-off-by: James Hogan <jhogan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>