commit 8b298d3a0bd5feeb47129c4889356b38b78ab231
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Apr 5 22:34:54 2019 +0200

    Linux 5.0.7

commit e73f145543fa6e1ce0b7a9d99c65caa1b422aac9
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Tue Mar 19 13:02:36 2019 +0900

    kbuild: skip sub-make for in-tree build with GNU Make 4.x
    
    commit 688931a5ad4e55ba0c215248ba510cd67bc3afb4 upstream.
    
    Commit 2b50f7ab6368 ("kbuild: add workaround for Debian make-kpkg")
    annoyed people who want to wrap the top Makefile with GNUmakefile
    to customize it for their use.
    
    On second thought, we do not need to run the sub-make for in-tree
    build with Make 4.x because the 'MAKEFLAGS += -rR' issue only happens
    on GNU Make 3.x.
    
    With this commit, people will get back their workflow, and the Debian
    make-kpkg will still work.
    
    Fixes: 2b50f7ab6368 ("kbuild: add workaround for Debian make-kpkg")
    Reported-by: Andreas Schwab <schwab@suse.de>
    Reported-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Tested-by: Andreas Schwab <schwab@suse.de>
    Tested-by: David Howells <dhowells@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d972d1c0d76da4a04ea9c0a35a3fb853fb141248
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Fri Mar 8 18:13:39 2019 +0900

    kbuild: add workaround for Debian make-kpkg
    
    commit 2b50f7ab63685cd247e32ad321f7338ed130d3d5 upstream.
    
    Since commit 3812b8c5c5d5 ("kbuild: make -r/-R effective in top
    Makefile for old Make versions"), make-kpkg is not working.
    
    make-kpkg directly includes the top Makefile of Linux kernel, and
    appends some debian_* targets.
    
      /usr/share/kernel-package/ruleset/kernel_version.mk:
    
        # Include the kernel makefile
        override dot-config := 1
        include Makefile
        dot-config := 1
    
    I did not know the kernel Makefile was used in that way, and it is
    hard to guarantee the behavior when the kernel Makefile is included
    by another Makefile from a different project.
    
    It looks like Debian Stretch stopped providing make-kpkg. Maybe it is
    obsolete and being replaced with 'make deb-pkg' etc. but still widely
    used.
    
    This commit adds a workaround; if the top Makefile is included by
    another Makefile, skip sub-make in order to make the main part visible.
    'MAKEFLAGS += -rR' does not become effective for GNU Make < 4.0, but
    Debian/Ubuntu is already using newer versions.
    
    The effect of this commit:
    
      Debian 8 (Jessie)  : Fixed
      Debian 9 (Stretch) : make-kpkg (kernel-package) is not provided
      Ubuntu 14.04 LTS   : NOT Fixed
      Ubuntu 16.04 LTS   : Fixed
      Ubuntu 18.04 LTS   : Fixed
    
    This commit cannot fix Ubuntu 14.04 because it installs GNU Make 3.81,
    but its support will end in Apr 2019, which is before the Linux v5.1
    release.
    
    I added warning so that nobody would try to include the top Makefile.
    
    Fixes: 3812b8c5c5d5 ("kbuild: make -r/-R effective in top Makefile for old Make versions")
    Reported-by: Liz Zhang <lizzha@microsoft.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Tested-by: Lili Deng <v-lide@microsoft.com>
    Cc: Manoj Srivastava <srivasta@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 38d2286e52ea5f06fa5a1692fad36db043456291
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:53:06 2019 +0800

    bcache: fix potential div-zero error of writeback_rate_p_term_inverse
    
    [ Upstream commit 5b5fd3c94eef69dcfaa8648198e54c92e5687d6d ]
    
    Current code already uses d_strtoul_nonzero() to convert input string
    to an unsigned integer, to make sure writeback_rate_p_term_inverse
    won't be zero value. But overflow may happen when converting input
    string to an unsigned integer value by d_strtoul_nonzero(), then
    dc->writeback_rate_p_term_inverse can still be set to 0 even if the
    sysfs file input value is not zero, e.g. 4294967296 (a.k.a UINT_MAX+1).
    
    If dc->writeback_rate_p_term_inverse is set to 0, it might cause a
    dev-zero error in following code from __update_writeback_rate(),
            int64_t proportional_scaled =
                    div_s64(error, dc->writeback_rate_p_term_inverse);
    
    This patch replaces d_strtoul_nonzero() by sysfs_strtoul_clamp() and
    limit the value range in [1, UINT_MAX]. Then the unsigned integer
    overflow and dev-zero error can be avoided.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae050638bc97083f43e13186087626754d658cb9
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Jan 7 17:08:21 2019 +0100

    ACPI / video: Extend chassis-type detection with a "Lunch Box" check
    
    [ Upstream commit d693c008e3ca04db5916ff72e68ce661888a913b ]
    
    Commit 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true on
    Win8-ready _desktops_") introduced chassis type detection, limiting the
    lcd_only check for the backlight to devices where the chassis-type
    indicates their is no builtin LCD panel.
    
    The purpose of the lcd_only check is to avoid advertising a backlight
    interface on desktops, since skylake and newer machines seem to always
    have a backlight interface even if there is no LCD panel. The limiting
    of this check to desktops only was done to avoid breaking backlight
    support on some laptops which do not have the lcd flag set.
    
    The Fujitsu ESPRIMO Q910 which is a compact (NUC like) desktop machine
    has a chassis type of 0x10 aka "Lunch Box". Without the lcd_only check
    we end up falsely advertising backlight/brightness control on this
    device. This commit extend the dmi_is_desktop check to return true
    for type 0x10 to fix this.
    
    Fixes: 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true ...")
    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 <sashal@kernel.org>

commit 3e033b1b435a47b16d63ff6bd5159f699b8bf173
Author: Thierry Reding <treding@nvidia.com>
Date:   Wed Feb 20 11:52:14 2019 +0100

    gpio: of: Restrict enable-gpio quirk to regulator-gpio
    
    [ Upstream commit 692ef26e72fcce0c1e73c41683fd3512f3719d55 ]
    
    Commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to
    enable-gpios") breaks the device tree ABI specified in the device tree
    bindings for fixed regulators (compatible "regulator-fixed"). According
    to these bindings the polarity of the GPIO is exclusively controlled by
    the presence or absence of the enable-active-high property. As such the
    polarity quirk implemented in of_gpio_flags_quirks() must be applied to
    the GPIO specified for fixed regulators.
    
    However, commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only
    to enable-gpios") restricted the quirk to the enable-gpios property for
    fixed regulators as well, whereas according to the commit message itself
    it should only apply to "regulator-gpio" compatible device tree nodes.
    
    Fix this by actually implementing what the offending commit intended,
    which is to ensure that the quirk is applied to the GPIO specified by
    the "enable-gpio" property for the "regulator-gpio" bindings only.
    
    This fixes a regression on Jetson TX1 where the fixed regulator for the
    HDMI +5V pin relies on the flags quirk for the proper polarity.
    
    Fixes: 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to enable-gpios")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Tested-by: Marek Vasut <marek.vasut@gmail.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ae42fc868cd5fca29f6f31487dc7d016c923f8fa
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Mar 6 11:52:36 2019 +0100

    appletalk: Fix compile regression
    
    [ Upstream commit 27da0d2ef998e222a876c0cec72aa7829a626266 ]
    
    A bugfix just broke compilation of appletalk when CONFIG_SYSCTL
    is disabled:
    
    In file included from net/appletalk/ddp.c:65:
    net/appletalk/ddp.c: In function 'atalk_init':
    include/linux/atalk.h:164:34: error: expected expression before 'do'
     #define atalk_register_sysctl()  do { } while(0)
                                      ^~
    net/appletalk/ddp.c:1934:7: note: in expansion of macro 'atalk_register_sysctl'
      rc = atalk_register_sysctl();
    
    This is easier to avoid by using conventional inline functions
    as stubs rather than macros. The header already has inline
    functions for other purposes, so I'm changing over all the
    macros for consistency.
    
    Fixes: 6377f787aeb9 ("appletalk: Fix use-after-free in atalk_proc_exit")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a84b7c68966a91f937d609786fd8968dc2b5f085
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Thu Mar 7 21:02:39 2019 -0700

    net: stmmac: Avoid one more sometimes uninitialized Clang warning
    
    [ Upstream commit 1f5d861f7fefa971b2c6e766f77932c86419a319 ]
    
    When building with -Wsometimes-uninitialized, Clang warns:
    
    drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c:111:2: error: variable
    'ns' is used uninitialized whenever 'if' condition is false
    [-Werror,-Wsometimes-uninitialized]
    drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c:111:2: error: variable
    'ns' is used uninitialized whenever '&&' condition is false
    [-Werror,-Wsometimes-uninitialized]
    
    Clang is concerned with the use of stmmac_do_void_callback (which
    stmmac_get_systime wraps), as it may fail to initialize these values if
    the if condition was ever false (meaning the callback doesn't exist).
    It's not wrong because the callback is what initializes ns. While it's
    unlikely that the callback is going to disappear at some point and make
    that condition false, we can easily avoid this warning by zero
    initializing the variable.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/384
    Fixes: df103170854e ("net: stmmac: Avoid sometimes uninitialized Clang warnings")
    Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36b39631cc851b6b90b22a3aa4a09ee79b0718de
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date:   Fri Sep 28 21:03:59 2018 +0300

    drm/dp/mst: Configure no_stop_bit correctly for remote i2c xfers
    
    [ Upstream commit c978ae9bde582e82a04c63a4071701691dd8b35c ]
    
    We aren't supposed to force a stop+start between every i2c msg
    when performing multi message transfers. This should eg. cause
    the DDC segment address to be reset back to 0 between writing
    the segment address and reading the actual EDID extension block.
    
    To quote the E-DDC spec:
    "... this standard requires that the segment pointer be
     reset to 00h when a NO ACK or a STOP condition is received."
    
    Since we're going to touch this might as well consult the
    I2C_M_STOP flag to determine whether we want to force the stop
    or not.
    
    Cc: Brian Vincent <brainn@gmail.com>
    References: https://bugs.freedesktop.org/show_bug.cgi?id=108081
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20180928180403.22499-1-ville.syrjala@linux.intel.com
    Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8826838f43fe879eba8df230e93e2f43ab0b3081
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Sun Dec 30 12:28:42 2018 +0000

    drm: Reorder set_property_atomic to avoid returning with an active ww_ctx
    
    [ Upstream commit 227ad6d957898a88b1746e30234ece64d305f066 ]
    
    Delay the drm_modeset_acquire_init() until after we check for an
    allocation failure so that we can return immediately upon error without
    having to unwind.
    
    WARNING: lock held when returning to user space!
    4.20.0+ #174 Not tainted
    ------------------------------------------------
    syz-executor556/8153 is leaving the kernel with locks still held!
    1 lock held by syz-executor556/8153:
      #0: 000000005100c85c (crtc_ww_class_acquire){+.+.}, at:
    set_property_atomic+0xb3/0x330 drivers/gpu/drm/drm_mode_object.c:462
    
    Reported-by: syzbot+6ea337c427f5083ebdf2@syzkaller.appspotmail.com
    Fixes: 144a7999d633 ("drm: Handle properties in the core for atomic drivers")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Sean Paul <sean@poorly.run>
    Cc: David Airlie <airlied@linux.ie>
    Cc: <stable@vger.kernel.org> # v4.14+
    Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181230122842.21917-1-chris@chris-wilson.co.uk
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a2e1a5b583b8564834cdbc161cd1614cc834e59
Author: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date:   Thu Dec 20 10:45:42 2018 +0900

    ASoC: simple-card-utils: check "reg" property on asoc_simple_card_get_dai_id()
    
    [ Upstream commit a0c426fe143328760c9fd565cd203a37a7b4fde8 ]
    
    We will get DAI ID from "reg" property if it has on DT, otherwise get
    it by counting port/endpoint.
    
    But in below case, we need to get DAI ID = 0 via port reg = <0>, but
    current implementation returns ID = 1, because it can't judge ID = 0 was
    from "non reg" or "reg = <0>".
    Thus, it will count port/endpoint number as "non reg" case.
    
    of_graph_parse_endpoint() implementation itself is not a problem,
    but because asoc_simple_card_get_dai_id() need to count port/endpoint
    number when "non reg" case, it need to know ID = 0 was from
    "non reg" or "reg = <0>".
    This patch fix this issue.
    
            port {
                    reg = <0>;
                    xxxx: endpoint@0 {
                    };
    =>              xxxx: endpoint@1 {
                    };
            };
    
    Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 45040e92500cb70bcb906dc6aa0427166097871c
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Jan 3 18:10:45 2019 -0800

    Input: soc_button_array - fix mapping of the 5th GPIO in a PNP0C40 device
    
    [ Upstream commit e9eb788f9442d1b5d93efdb30c3be071ce8a22b1 ]
    
    The Microsoft documenation for the PNP0C40 device aka the
    "Windows-compatible button array" describes the 5th GpioInt listed in
    the resources as: '5. Interrupt corresponding to the "Rotation Lock"
    button, if supported'.
    
    Notice this describes the 5th entry as a button while we sofar have been
    mapping it to EV_SW, SW_ROTATE_LOCK. On my Point of View TAB P1006W-232
    which actually comes with a rotation-lock button, the button indeed is a
    button and not a slider/switch. An image search for other Windows tablets
    has found 2 more models with a rotation-lock button and on both of those
    it too is a push-button and not a slider/switch.
    
    Further evidence can be found in the HUT extension HUTRR52 from Microsoft
    which adds rotation lock support to the HUT, which describes 2 different
    usages: "0xC9 System Display Rotation Lock Button" and
    "0xCA System Display Rotation Lock Slider Switch" note that switch is seen
    as a separate thing here and the non switch wording is an exact match for
    the "Windows-compatible button array" spec wording.
    
    TL;DR: our current mapping of the 5th GPIO to SW_ROTATE_LOCK is wrong
    because the 5th GPIO is for a push-button not a switch.
    
    This commit fixes this by maping the 5th GPIO to KEY_ROTATE_LOCK_TOGGLE.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ad62489b25aa992113813447657ef5192a93b96
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Sat Dec 22 21:57:40 2018 -0700

    staging: iio: adt7316: fix dac_bits assignment
    
    [ Upstream commit e9de475723de5bf207a5b7b88bdca863393e42c8 ]
    
    The value of dac_bits is used in adt7316_show_DAC() and adt7316_store_DAC(),
    and it should be either 8, 10, or 12 bits depending on the device in use. The
    driver currently only assigns a value to dac_bits in
    adt7316_store_da_high_resolution(). The purpose of the dac high resolution
    option is not to change dac resolution for normal operation. Instead, it
    is specific to an optional feature where one or two of the four dacs can
    be set to output voltage proportional to temperature. If the user chooses
    to set dac a and/or dac b to output voltage proportional to temperature,
    the da_high_resolution attribute can optionally be enabled to use 10 bit
    resolution rather than the default 8 bits. This is only available on the
    10 and 12 bit dac devices. If the user attempts to read or write dacs a
    or b under these settings, the driver's current behaviour is to return an
    error. Dacs c and d continue to operate normally under these conditions.
    With the above in mind, remove the dac_bits assignments from this function
    since the value of dac_bits as used in the driver is not dependent on this
    dac high resolution option.
    
    Since the dac_bits assignments discussed above are currently the only ones
    in this driver, the default value of dac_bits is 0. This results in incorrect
    calculations when the dacs are read or written in adt7316_show_DAC() and
    adt7316_store_DAC(). To correct this, assign a value to dac_bits in
    adt7316_probe() to ensure correct operation as soon as the device is
    registered and available to userspace.
    
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2bece1d313aa1c05e10f827b2c797589fdc985ec
Author: Ben Dooks <ben.dooks@codethink.co.uk>
Date:   Wed Nov 21 16:13:19 2018 +0000

    dmaengine: tegra: avoid overflow of byte tracking
    
    [ Upstream commit e486df39305864604b7e25f2a95d51039517ac57 ]
    
    The dma_desc->bytes_transferred counter tracks the number of bytes
    moved by the DMA channel. This is then used to calculate the information
    passed back in the in the tegra_dma_tx_status callback, which is usually
    fine.
    
    When the DMA channel is configured as continous, then the bytes_transferred
    counter will increase over time and eventually overflow to become negative
    so the residue count will become invalid and the ALSA sound-dma code will
    report invalid hardware pointer values to the application. This results in
    some users becoming confused about the playout position and putting audio
    data in the wrong place.
    
    To fix this issue, always ensure the bytes_transferred field is modulo the
    size of the request. We only do this for the case of the cyclic transfer
    done ISR as anyone attempting to move 2GiB of DMA data in one transfer
    is unlikely.
    
    Note, we don't fix the issue that we should /never/ transfer a negative
    number of bytes so we could make those fields unsigned.
    
    Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
    Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e84e0a8c3f22dba823b33cfd38c65c3fe6e35dd5
Author: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date:   Sun Dec 23 01:42:49 2018 +0900

    clk: rockchip: fix frac settings of GPLL clock for rk3328
    
    [ Upstream commit a0e447b0c50240a90ab84b7126b3c06b0bab4adc ]
    
    This patch fixes settings of GPLL frequency in fractional mode for
    rk3328. In this mode, FOUTVCO is calcurated by following formula:
      FOUTVCO = FREF * FBDIV / REFDIV + ((FREF * FRAC / REFDIV) >> 24)
    
    The problem is in FREF * FRAC >> 24 term. This result always lacks
    one from target value is specified by rate member. For example first
    itme of rk3328_pll_frac_rate originally has
      - rate  : 1016064000
      - refdiv: 3
      - fbdiv : 127
      - frac  : 134217
      - FREF * FBDIV / REFDIV        = 1016000000
      - (FREF * FRAC / REFDIV) >> 24 = 63999
    Thus calculated rate is 1016063999. It seems wrong.
    
    If frac has 134218 (it is increased 1 from original value), second
    term is 64000. All other items have same situation. So this patch
    adds 1 to frac member in all items of rk3328_pll_frac_rate.
    
    Signed-off-by: Katsuhiro Suzuki <katsuhiro@katsuster.net>
    Acked-by: Elaine Zhang <zhangqing@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 25fb6c323b55dbb7ec9227a174c36a13697bcb5d
Author: Marek Vasut <marek.vasut@gmail.com>
Date:   Fri Dec 7 21:28:58 2018 +0100

    ARM: shmobile: Fix R-Car Gen2 regulator quirk
    
    [ Upstream commit 5347a0203709d5039a74d7c94e23519eee478094 ]
    
    The quirk code currently detects all compatible I2C chips with a shared
    IRQ line on all I2C busses, adds them into a list, and registers a bus
    notifier. For every chip for which the bus notifier triggers, the quirk
    code performs I2C transfer on that I2C bus for all addresses in the list.
    The problem is that this may generate transfers to non-existing chips on
    systems with multiple I2C busses.
    
    This patch adds a check to verify that the I2C bus to which the chip with
    shared IRQ is attached to matches the I2C bus of the chip which triggered
    the bus notifier and only starts the I2C transfer if they match.
    
    Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
    Tested-by: Nguyen Viet Dung <dung.nguyen.aj@renesas.com>
    Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9b0f430450cf230e736bc40f95bf34fbdb99cead
Author: Jerome Brunet <jbrunet@baylibre.com>
Date:   Fri Dec 21 17:02:36 2018 +0100

    clk: meson: clean-up clock registration
    
    [ Upstream commit 8d9981efbcab066d17af4d3c85c169200f6f78df ]
    
    Order, ids and size  between the table of regmap clocks and the onecell
    data table could be different.
    
    Set regmap pointer in all the regmap clocks before starting the
    registration using the onecell data, to make sure we don't
    get into an incoherent situation.
    
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Acked-by: Neil Armstrong <narmstrong@baylibre.com>
    Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
    Link: https://lkml.kernel.org/r/20181221160239.26265-3-jbrunet@baylibre.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a644d2d28baf8472368903b28823cf85c9a13a1d
Author: Peter Wu <peter@lekensteyn.nl>
Date:   Sun Dec 23 01:55:07 2018 +0100

    drm/fb-helper: fix leaks in error path of drm_fb_helper_fbdev_setup
    
    [ Upstream commit 00eb5b0da8d27b3c944bfc959c3344d665caae26 ]
    
    After drm_fb_helper_fbdev_setup calls drm_fb_helper_init,
    "dev->fb_helper" will be initialized (and thus drm_fb_helper_fini will
    have some effect). After that, drm_fb_helper_initial_config is called
    which may call the "fb_probe" driver callback.
    
    This driver callback may call drm_fb_helper_defio_init (as is done by
    drm_fb_helper_generic_probe) or set a framebuffer (as is done by bochs)
    as documented. These are normally cleaned up on exit by
    drm_fb_helper_fbdev_teardown which also calls drm_fb_helper_fini.
    
    If an error occurs after "fb_probe", but before setup is complete, then
    calling just drm_fb_helper_fini will leak resources. This was triggered
    by df2052cc922 ("bochs: convert to drm_fb_helper_fbdev_setup/teardown"):
    
        [   50.008030] bochsdrmfb: enable CONFIG_FB_LITTLE_ENDIAN to support this framebuffer
        [   50.009436] bochs-drm 0000:00:02.0: [drm:drm_fb_helper_fbdev_setup] *ERROR* fbdev: Failed to set configuration (ret=-38)
        [   50.011456] [drm] Initialized bochs-drm 1.0.0 20130925 for 0000:00:02.0 on minor 2
        [   50.013604] WARNING: CPU: 1 PID: 1 at drivers/gpu/drm/drm_mode_config.c:477 drm_mode_config_cleanup+0x280/0x2a0
        [   50.016175] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G                T 4.20.0-rc7 #1
        [   50.017732] EIP: drm_mode_config_cleanup+0x280/0x2a0
        ...
        [   50.023155] Call Trace:
        [   50.023155]  ? bochs_kms_fini+0x1e/0x30
        [   50.023155]  ? bochs_unload+0x18/0x40
    
    This can be reproduced with QEMU and CONFIG_FB_LITTLE_ENDIAN=n.
    
    Link: https://lkml.kernel.org/r/20181221083226.GI23332@shao2-debian
    Link: https://lkml.kernel.org/r/20181223004315.GA11455@al
    Fixes: 8741216396b2 ("drm/fb-helper: Add drm_fb_helper_fbdev_setup/teardown()")
    Reported-by: kernel test robot <rong.a.chen@intel.com>
    Cc: Noralf Trønnes <noralf@tronnes.org>
    Signed-off-by: Peter Wu <peter@lekensteyn.nl>
    Reviewed-by: Noralf Trønnes <noralf@tronnes.org>
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181223005507.28328-1-peter@lekensteyn.nl
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c8a8dd1d85ca715ec65169feac54a7a06b8d2a29
Author: Rafael Ávila de Espíndola <rafael@espindo.la>
Date:   Wed Dec 19 11:01:43 2018 -0800

    x86/build: Mark per-CPU symbols as absolute explicitly for LLD
    
    [ Upstream commit d071ae09a4a1414c1433d5ae9908959a7325b0ad ]
    
    Accessing per-CPU variables is done by finding the offset of the
    variable in the per-CPU block and adding it to the address of the
    respective CPU's block.
    
    Section 3.10.8 of ld.bfd's documentation states:
    
      For expressions involving numbers, relative addresses and absolute
      addresses, ld follows these rules to evaluate terms:
    
      Other binary operations, that is, between two relative addresses
      not in the same section, or between a relative address and an
      absolute address, first convert any non-absolute term to an
      absolute address before applying the operator."
    
    Note that LLVM's linker does not adhere to the GNU ld's implementation
    and as such requires implicitly-absolute terms to be explicitly marked
    as absolute in the linker script. If not, it fails currently with:
    
      ld.lld: error: ./arch/x86/kernel/vmlinux.lds:153: at least one side of the expression must be absolute
      ld.lld: error: ./arch/x86/kernel/vmlinux.lds:154: at least one side of the expression must be absolute
      Makefile:1040: recipe for target 'vmlinux' failed
    
    This is not a functional change for ld.bfd which converts the term to an
    absolute symbol anyways as specified above.
    
    Based on a previous submission by Tri Vo <trong@android.com>.
    
    Reported-by: Dmitry Golovin <dima@golovin.in>
    Signed-off-by: Rafael Ávila de Espíndola <rafael@espindo.la>
    [ Update commit message per Boris' and Michael's suggestions. ]
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    [ Massage commit message more, fix typos. ]
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Tested-by: Dmitry Golovin <dima@golovin.in>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Brijesh Singh <brijesh.singh@amd.com>
    Cc: Cao Jin <caoj.fnst@cn.fujitsu.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Joerg Roedel <jroedel@suse.de>
    Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Tri Vo <trong@android.com>
    Cc: dima@golovin.in
    Cc: morbo@google.com
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20181219190145.252035-1-ndesaulniers@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 38af5462fa5179ede1f63b88d3c2e8201392cca1
Author: Zumeng Chen <zumeng.chen@gmail.com>
Date:   Wed Dec 19 15:50:29 2018 +0800

    wlcore: Fix memory leak in case wl12xx_fetch_firmware failure
    
    [ Upstream commit ba2ffc96321c8433606ceeb85c9e722b8113e5a7 ]
    
    Release fw_status, raw_fw_status, and tx_res_if when wl12xx_fetch_firmware
    failed instead of meaningless goto out to avoid the following memory leak
    reports(Only the last one listed):
    
    unreferenced object 0xc28a9a00 (size 512):
      comm "kworker/0:4", pid 31298, jiffies 2783204 (age 203.290s)
      hex dump (first 32 bytes):
        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 00 00 00 00 00 ................
      backtrace:
        [<6624adab>] kmemleak_alloc+0x40/0x74
        [<500ddb31>] kmem_cache_alloc_trace+0x1ac/0x270
        [<db4d731d>] wl12xx_chip_wakeup+0xc4/0x1fc [wlcore]
        [<76c5db53>] wl1271_op_add_interface+0x4a4/0x8f4 [wlcore]
        [<cbf30777>] drv_add_interface+0xa4/0x1a0 [mac80211]
        [<65bac325>] ieee80211_reconfig+0x9c0/0x1644 [mac80211]
        [<2817c80e>] ieee80211_restart_work+0x90/0xc8 [mac80211]
        [<7e1d425a>] process_one_work+0x284/0x42c
        [<55f9432e>] worker_thread+0x2fc/0x48c
        [<abb582c6>] kthread+0x148/0x160
        [<63144b13>] ret_from_fork+0x14/0x2c
        [< (null)>] (null)
        [<1f6e7715>] 0xffffffff
    
    Signed-off-by: Zumeng Chen <zumeng.chen@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ab79dc3ef0244c9b3d712d0cef17b74c363d6069
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Jan 7 14:33:27 2019 +0100

    brcmfmac: Use firmware_request_nowarn for the clm_blob
    
    [ Upstream commit 4ad0be160544ffbdafb7cec39bb8e6dd0a97317a ]
    
    The linux-firmware brcmfmac firmware files contain an embedded table with
    per country allowed channels and strength info.
    
    For recent hardware these versions of the firmware are specially build for
    linux-firmware, the firmware files directly available from Cypress rely on
    a separate clm_blob file for this info.
    
    For some unknown reason Cypress refuses to provide the standard firmware
    files + clm_blob files it uses elsewhere for inclusion into linux-firmware,
    instead relying on these special builds with the clm_blob info embedded.
    This means that the linux-firmware firmware versions often lag behind,
    but I digress.
    
    The brcmfmac driver does support the separate clm_blob file and always
    tries to load this. Currently we use request_firmware for this. This means
    that on any standard install, using the standard combo of linux-kernel +
    linux-firmware, we will get a warning:
    "Direct firmware load for ... failed with error -2"
    
    On top of this, brcmfmac itself prints: "no clm_blob available (err=-2),
    device may have limited channels available".
    
    This commit switches to firmware_request_nowarn, fixing almost any brcmfmac
    device logging the warning (it leaves the brcmfmac info message in place).
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f836093a2eeb48e565d2484523b5aceda072da72
Author: Ondrej Mosnacek <omosnace@redhat.com>
Date:   Fri Dec 21 21:18:53 2018 +0100

    selinux: do not override context on context mounts
    
    [ Upstream commit 53e0c2aa9a59a48e3798ef193d573ade85aa80f5 ]
    
    Ignore all selinux_inode_notifysecctx() calls on mounts with SBLABEL_MNT
    flag unset. This is achived by returning -EOPNOTSUPP for this case in
    selinux_inode_setsecurtity() (because that function should not be called
    in such case anyway) and translating this error to 0 in
    selinux_inode_notifysecctx().
    
    This fixes behavior of kernfs-based filesystems when mounted with the
    'context=' option. Before this patch, if a node's context had been
    explicitly set to a non-default value and later the filesystem has been
    remounted with the 'context=' option, then this node would show up as
    having the manually-set context and not the mount-specified one.
    
    Steps to reproduce:
        # mount -t cgroup2 cgroup2 /sys/fs/cgroup/unified
        # chcon unconfined_u:object_r:user_home_t:s0 /sys/fs/cgroup/unified/cgroup.stat
        # ls -lZ /sys/fs/cgroup/unified
        total 0
        -r--r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13 10:41 cgroup.controllers
        -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13 10:41 cgroup.max.depth
        -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13 10:41 cgroup.max.descendants
        -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13 10:41 cgroup.procs
        -r--r--r--. 1 root root unconfined_u:object_r:user_home_t:s0 0 Dec 13 10:41 cgroup.stat
        -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13 10:41 cgroup.subtree_control
        -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13 10:41 cgroup.threads
        # umount /sys/fs/cgroup/unified
        # mount -o context=system_u:object_r:tmpfs_t:s0 -t cgroup2 cgroup2 /sys/fs/cgroup/unified
    
    Result before:
        # ls -lZ /sys/fs/cgroup/unified
        total 0
        -r--r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13 10:41 cgroup.controllers
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13 10:41 cgroup.max.depth
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13 10:41 cgroup.max.descendants
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13 10:41 cgroup.procs
        -r--r--r--. 1 root root unconfined_u:object_r:user_home_t:s0 0 Dec 13 10:41 cgroup.stat
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13 10:41 cgroup.subtree_control
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13 10:41 cgroup.threads
    
    Result after:
        # ls -lZ /sys/fs/cgroup/unified
        total 0
        -r--r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41 cgroup.controllers
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41 cgroup.max.depth
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41 cgroup.max.descendants
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41 cgroup.procs
        -r--r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41 cgroup.stat
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41 cgroup.subtree_control
        -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41 cgroup.threads
    
    Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
    Reviewed-by: Stephen Smalley <sds@tycho.nsa.gov>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 993f96415a72731d8f3b7211dee44cefc47d44ff
Author: George Rimar <grimar@accesssoftek.com>
Date:   Fri Jan 11 12:10:12 2019 -0800

    x86/build: Specify elf_i386 linker emulation explicitly for i386 objects
    
    [ Upstream commit 927185c124d62a9a4d35878d7f6d432a166b74e3 ]
    
    The kernel uses the OUTPUT_FORMAT linker script command in it's linker
    scripts. Most of the time, the -m option is passed to the linker with
    correct architecture, but sometimes (at least for x86_64) the -m option
    contradicts the OUTPUT_FORMAT directive.
    
    Specifically, arch/x86/boot and arch/x86/realmode/rm produce i386 object
    files, but are linked with the -m elf_x86_64 linker flag when building
    for x86_64.
    
    The GNU linker manpage doesn't explicitly state any tie-breakers between
    -m and OUTPUT_FORMAT. But with BFD and Gold linkers, OUTPUT_FORMAT
    overrides the emulation value specified with the -m option.
    
    LLVM lld has a different behavior, however. When supplied with
    contradicting -m and OUTPUT_FORMAT values it fails with the following
    error message:
    
      ld.lld: error: arch/x86/realmode/rm/header.o is incompatible with elf_x86_64
    
    Therefore, just add the correct -m after the incorrect one (it overrides
    it), so the linker invocation looks like this:
    
      ld -m elf_x86_64 -z max-page-size=0x200000 -m elf_i386 --emit-relocs -T \
        realmode.lds header.o trampoline_64.o stack.o reboot.o -o realmode.elf
    
    This is not a functional change for GNU ld, because (although not
    explicitly documented) OUTPUT_FORMAT overrides -m EMULATION.
    
    Tested by building x86_64 kernel with GNU gcc/ld toolchain and booting
    it in QEMU.
    
     [ bp: massage and clarify text. ]
    
    Suggested-by: Dmitry Golovin <dima@golovin.in>
    Signed-off-by: George Rimar <grimar@accesssoftek.com>
    Signed-off-by: Tri Vo <trong@android.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Tested-by: Tri Vo <trong@android.com>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Michael Matz <matz@suse.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: morbo@google.com
    Cc: ndesaulniers@google.com
    Cc: ruiu@google.com
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190111201012.71210-1-trong@android.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16d4d75d8b6e5262ca65710620f421975f889555
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Mon Dec 17 20:42:58 2018 +0100

    drm/nouveau: Stop using drm_crtc_force_disable
    
    [ Upstream commit 934c5b32a5e43d8de2ab4f1566f91d7c3bf8cb64 ]
    
    The correct way for legacy drivers to update properties that need to
    do a full modeset, is to do a full modeset.
    
    Note that we don't need to call the drm_mode_config_internal helper
    because we're not changing any of the refcounted paramters.
    
    v2: Fixup error handling (Ville). Since the old code didn't bother
    I decided to just delete it instead of adding even more code for just
    error handling.
    
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1)
    Cc: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20181217194303.14397-2-daniel.vetter@ffwll.ch
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bfb59eabe2c940c6869f128200f2047d46215845
Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Date:   Fri Jan 4 09:56:10 2019 +0100

    drm: Auto-set allow_fb_modifiers when given modifiers at plane init
    
    [ Upstream commit 890880ddfdbe256083170866e49c87618b706ac7 ]
    
    When drivers pass non-empty lists of modifiers for initializing their
    planes, we can infer that they allow framebuffer modifiers and set the
    driver's allow_fb_modifiers mode config element.
    
    In case the allow_fb_modifiers element was not set (some drivers tend
    to set them after registering planes), the modifiers will still be
    registered but won't be available to userspace unless the flag is set
    later. However in that case, the IN_FORMATS blob won't be created.
    
    In order to avoid this case and generally reduce the trouble associated
    with the flag, always set allow_fb_modifiers when a non-empty list of
    format modifiers is passed at plane init.
    
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
    Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190104085610.5829-1-paul.kocialkowski@bootlin.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 778c82db727adb780bbfcbc303149bd7b764194c
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sat Jan 12 13:59:13 2019 +0100

    pinctrl: meson: meson8b: add the eth_rxd2 and eth_rxd3 pins
    
    [ Upstream commit 6daae00243e622dd3feec7965bfe421ad6dd317e ]
    
    Gigabit Ethernet requires the Ethernet TXD0..3 and RXD0..3 data lines.
    Add the missing eth_rxd2 and eth_rxd3 definitions so we don't have to
    rely on the bootloader to set them up correctly.
    
    The vendor u-boot sources for Odroid-C1 use the following Ethernet
    pinmux configuration:
      SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_6, 0x3f4f);
      SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_7, 0xf00000);
    This translates to the following pin groups in the mainline kernel:
    - register 6 bit  0: eth_rxd1 (DIF_0_P)
    - register 6 bit  1: eth_rxd0 (DIF_0_N)
    - register 6 bit  2: eth_rx_dv (DIF_1_P)
    - register 6 bit  3: eth_rx_clk (DIF_1_N)
    - register 6 bit  6: eth_tx_en (DIF_3_P)
    - register 6 bit  8: eth_ref_clk (DIF_3_N)
    - register 6 bit  9: eth_mdc (DIF_4_P)
    - register 6 bit 10: eth_mdio_en (DIF_4_N)
    - register 6 bit 11: eth_tx_clk (GPIOH_9)
    - register 6 bit 12: eth_txd2 (GPIOH_8)
    - register 6 bit 13: eth_txd3 (GPIOH_7)
    - register 7 bit 20: eth_txd0_0 (GPIOH_6)
    - register 7 bit 21: eth_txd1_0 (GPIOH_5)
    - register 7 bit 22: eth_rxd3 (DIF_2_P)
    - register 7 bit 23: eth_rxd2 (DIF_2_N)
    
    All functions except eth_rxd2 and eth_rxd3 are already supported by the
    pinctrl-meson8b driver.
    
    Suggested-by: Jianxin Pan <jianxin.pan@amlogic.com>
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Reviewed-by: Kevin Hilman <khilman@baylibre.com>
    Tested-by: Emiliano Ingrassia <ingrassia@epigenesys.com>
    Reviewed-by: Emiliano Ingrassia <ingrassia@epigenesys.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1048bfd8bf67f889efd67090fdf08489a835a06b
Author: Axel Lin <axel.lin@ingics.com>
Date:   Thu Jan 10 17:26:16 2019 +0800

    regulator: act8865: Fix act8600_sudcdc_voltage_ranges setting
    
    [ Upstream commit f01a7beb6791f1c419424c1a6958b7d0a289c974 ]
    
    The act8600_sudcdc_voltage_ranges setting does not match the datasheet.
    
    The problems in below entry:
      REGULATOR_LINEAR_RANGE(19000000, 191, 255, 400000),
    
    1. The off-by-one min_sel causes wrong volatage calculation.
       The min_sel should be 192.
    2. According to the datasheet[1] Table 7. (on page 43):
       The selector 248 (0b11111000) ~ 255 (0b11111111) are 41.400V.
    
    Also fix off-by-one for ACT8600_SUDCDC_VOLTAGE_NUM.
    
    [1] https://active-semi.com/wp-content/uploads/ACT8600_Datasheet.pdf
    
    Fixes: df3a950e4e73 ("regulator: act8865: Add act8600 support")
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e78d5e16f1d6ea80c67c0eb1631f86add4896c26
Author: Richard Guy Briggs <rgb@redhat.com>
Date:   Mon Dec 10 17:17:50 2018 -0500

    audit: hand taken context to audit_kill_trees for syscall logging
    
    [ Upstream commit 9e36a5d49c3a6fc4a2e0ba2dc11b27c4a8ae6303 ]
    
    Since the context is derived from the task parameter handed to
    __audit_free(), hand the context to audit_kill_trees() so it can be used
    to associate with a syscall record.  This requires adding the context
    parameter to kill_rules() rather than using the current audit_context.
    
    The callers of trim_marked() and evict_chunk() still have their context.
    
    The EOE record was being issued prior to the pruning of the killed_tree
    list.
    
    Move the kill_trees call before the audit_log_exit call in
    __audit_free() and __audit_syscall_exit() so that any pruned trees
    CONFIG_CHANGE records are included with the associated syscall event by
    the user library due to the EOE record flagging the end of the event.
    
    See: https://github.com/linux-audit/audit-kernel/issues/50
    See: https://github.com/linux-audit/audit-kernel/issues/59
    
    Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
    [PM: fixed merge fuzz in kernel/audit_tree.c]
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a43ea8ca186574f871c79f05fa7d04fad173d731
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Mon Jan 7 16:09:40 2019 +0300

    PCI: pciehp: Assign ctrl->slot_ctrl before writing it to hardware
    
    [ Upstream commit 25bd879ec16ad3b83a5b1c3f16faa55e696bfccb ]
    
    Shameerali reported that running v4.20-rc1 as QEMU guest, the PCIe hotplug
    port times out during boot:
    
      pciehp 0000:00:01.0:pcie004: Timeout on hotplug command 0x03f1 (issued 1016 msec ago)
      pciehp 0000:00:01.0:pcie004: Timeout on hotplug command 0x03f1 (issued 1024 msec ago)
      pciehp 0000:00:01.0:pcie004: Failed to check link status
      pciehp 0000:00:01.0:pcie004: Timeout on hotplug command 0x02f1 (issued 2520 msec ago)
    
    The issue was bisected down to commit 720d6a671a6e ("PCI: pciehp: Do not
    handle events if interrupts are masked") and was further analyzed by the
    reporter to be caused by the fact that pciehp first updates the hardware
    and only then cache the ctrl->slot_ctrl in pcie_do_write_cmd().  If the
    interrupt happens before we cache the value, pciehp_isr() reads value 0 and
    decides that the interrupt was not meant for it causing the above timeout
    to trigger.
    
    Fix by moving ctrl->slot_ctrl assignment to happen before it is written to
    the hardware.
    
    Fixes: 720d6a671a6e ("PCI: pciehp: Do not handle events if interrupts are masked")
    Link: https://lore.kernel.org/linux-pci/5FC3163CFD30C246ABAA99954A238FA8387DD344@FRAEML521-MBX.china.huawei.com
    Reported-by: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5d1f1c0148de0d484941a661cb2f99534be4b1f
Author: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
Date:   Sat Dec 29 10:46:01 2018 -0500

    media: s5p-jpeg: Check for fmt_ver_flag when doing fmt enumeration
    
    [ Upstream commit 49710c32cd9d6626a77c9f5f978a5f58cb536b35 ]
    
    Previously when doing format enumeration, it was returning all
     formats supported by driver, even if they're not supported by hw.
    Add missing check for fmt_ver_flag, so it'll be fixed and only those
     supported by hw will be returned. Similar thing is already done
     in s5p_jpeg_find_format.
    
    It was found by using v4l2-compliance tool and checking result
     of VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS test
    and using v4l2-ctl to get list of all supported formats.
    
    Tested on s5pv210-galaxys (Samsung i9000 phone).
    
    Fixes: bb677f3ac434 ("[media] Exynos4 JPEG codec v4l2 driver")
    
    Signed-off-by: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
    Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    [hverkuil-cisco@xs4all.nl: fix a few alignment issues]
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68ec6a13ef0d745d7e6f962df4f09f2b215a676e
Author: Steve Longerbeam <slongerbeam@gmail.com>
Date:   Mon Jan 14 20:10:19 2019 -0500

    media: rcar-vin: Allow independent VIN link enablement
    
    [ Upstream commit c5ff0edb8e2270a75935c73217fb0de1abd2d910 ]
    
    There is a block of code in rvin_group_link_notify() that prevents
    enabling a link to a VIN node if any entity in the media graph is
    in use. This prevents enabling a VIN link even if there is an in-use
    entity somewhere in the graph that is independent of the link's
    pipeline.
    
    For example, the code block will prevent enabling a link from
    the first rcar-csi2 receiver to a VIN node even if there is an
    enabled link somewhere far upstream on the second independent
    rcar-csi2 receiver pipeline.
    
    If this code block is meant to prevent modifying a link if any entity
    in the graph is actively involved in streaming (because modifying
    the CHSEL register fields can disrupt any/all running streams), then
    the entities stream counts should be checked rather than the use counts.
    
    (There is already such a check in __media_entity_setup_link() that verifies
    the stream_count of the link's source and sink entities are both zero,
    but that is insufficient, since there should be no running streams in
    the entire graph).
    
    Modify the code block to check the entity stream_count instead of the
    use_count (and elaborate on the comment). VIN node links can now be
    enabled even if there are other independent in-use entities that are
    not streaming.
    
    Fixes: c0cc5aef31 ("media: rcar-vin: add link notify for Gen3")
    
    Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
    Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebd0f3066c35bd27d3a4b224135e638eeaf70b8d
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Jan 11 14:46:15 2019 +0100

    netfilter: physdev: relax br_netfilter dependency
    
    [ Upstream commit 8e2f311a68494a6677c1724bdcb10bada21af37c ]
    
    Following command:
      iptables -D FORWARD -m physdev ...
    causes connectivity loss in some setups.
    
    Reason is that iptables userspace will probe kernel for the module revision
    of the physdev patch, and physdev has an artificial dependency on
    br_netfilter (xt_physdev use makes no sense unless a br_netfilter module
    is loaded).
    
    This causes the "phydev" module to be loaded, which in turn enables the
    "call-iptables" infrastructure.
    
    bridged packets might then get dropped by the iptables ruleset.
    
    The better fix would be to change the "call-iptables" defaults to 0 and
    enforce explicit setting to 1, but that breaks backwards compatibility.
    
    This does the next best thing: add a request_module call to checkentry.
    This was a stray '-D ... -m physdev' won't activate br_netfilter
    anymore.
    
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d7e6e93b95f2ba9f328f1976c4ada11548eb15fa
Author: Shunyong Yang <shunyong.yang@hxt-semitech.com>
Date:   Mon Jan 7 09:32:14 2019 +0800

    dmaengine: qcom_hidma: initialize tx flags in hidma_prep_dma_*
    
    [ Upstream commit 875aac8a46424e5b73a9ff7f40b83311b609e407 ]
    
    In async_tx_test_ack(), it uses flags in struct dma_async_tx_descriptor
    to check the ACK status. As hidma reuses the descriptor in a free list
    when hidma_prep_dma_*(memcpy/memset) is called, the flag will keep ACKed
    if the descriptor has been used before. This will cause a BUG_ON in
    async_tx_quiesce().
    
      kernel BUG at crypto/async_tx/async_tx.c:282!
      Internal error: Oops - BUG: 0 1 SMP
      ...
      task: ffff8017dd3ec000 task.stack: ffff8017dd3e8000
      PC is at async_tx_quiesce+0x54/0x78 [async_tx]
      LR is at async_trigger_callback+0x98/0x110 [async_tx]
    
    This patch initializes flags in dma_async_tx_descriptor by the flags
    passed from the caller when hidma_prep_dma_*(memcpy/memset) is called.
    
    Cc: Joey Zheng <yu.zheng@hxt-semitech.com>
    Reviewed-by: Sinan Kaya <okaya@kernel.org>
    Signed-off-by: Shunyong Yang <shunyong.yang@hxt-semitech.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1bac8b82d95cfe1d43fc30236f99da224ceccc2a
Author: Shunyong Yang <shunyong.yang@hxt-semitech.com>
Date:   Mon Jan 7 09:34:02 2019 +0800

    dmaengine: qcom_hidma: assign channel cookie correctly
    
    [ Upstream commit 546c0547555efca8ba8c120716c325435e29df1b ]
    
    When dma_cookie_complete() is called in hidma_process_completed(),
    dma_cookie_status() will return DMA_COMPLETE in hidma_tx_status(). Then,
    hidma_txn_is_success() will be called to use channel cookie
    mchan->last_success to do additional DMA status check. Current code
    assigns mchan->last_success after dma_cookie_complete(). This causes
    a race condition of dma_cookie_status() returns DMA_COMPLETE before
    mchan->last_success is assigned correctly. The race will cause
    hidma_tx_status() return DMA_ERROR but the transaction is actually a
    success. Moreover, in async_tx case, it will cause a timeout panic
    in async_tx_quiesce().
    
     Kernel panic - not syncing: async_tx_quiesce: DMA error waiting for
     transaction
     ...
     Call trace:
     [<ffff000008089994>] dump_backtrace+0x0/0x1f4
     [<ffff000008089bac>] show_stack+0x24/0x2c
     [<ffff00000891e198>] dump_stack+0x84/0xa8
     [<ffff0000080da544>] panic+0x12c/0x29c
     [<ffff0000045d0334>] async_tx_quiesce+0xa4/0xc8 [async_tx]
     [<ffff0000045d03c8>] async_trigger_callback+0x70/0x1c0 [async_tx]
     [<ffff0000048b7d74>] raid_run_ops+0x86c/0x1540 [raid456]
     [<ffff0000048bd084>] handle_stripe+0x5e8/0x1c7c [raid456]
     [<ffff0000048be9ec>] handle_active_stripes.isra.45+0x2d4/0x550 [raid456]
     [<ffff0000048beff4>] raid5d+0x38c/0x5d0 [raid456]
     [<ffff000008736538>] md_thread+0x108/0x168
     [<ffff0000080fb1cc>] kthread+0x10c/0x138
     [<ffff000008084d34>] ret_from_fork+0x10/0x18
    
    Cc: Joey Zheng <yu.zheng@hxt-semitech.com>
    Reviewed-by: Sinan Kaya <okaya@kernel.org>
    Signed-off-by: Shunyong Yang <shunyong.yang@hxt-semitech.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56d276b536141152bb4c6d2e58248d28296553c4
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Thu Jan 10 12:15:35 2019 +0100

    dmaengine: imx-dma: fix warning comparison of distinct pointer types
    
    [ Upstream commit 9227ab5643cb8350449502dd9e3168a873ab0e3b ]
    
    The warning got introduced by commit 930507c18304 ("arm64: add basic
    Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning
    haven't been seen before since size_t was 'unsigned int' when built on
    arm32.
    
    ../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:
    ../include/linux/kernel.h:846:29: warning: comparison of distinct pointer types lacks a cast
       (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                                 ^~
    ../include/linux/kernel.h:860:4: note: in expansion of macro ‘__typecheck’
       (__typecheck(x, y) && __no_side_effects(x, y))
        ^~~~~~~~~~~
    ../include/linux/kernel.h:870:24: note: in expansion of macro ‘__safe_cmp’
      __builtin_choose_expr(__safe_cmp(x, y), \
                            ^~~~~~~~~~
    ../include/linux/kernel.h:879:19: note: in expansion of macro ‘__careful_cmp’
     #define min(x, y) __careful_cmp(x, y, <)
                       ^~~~~~~~~~~~~
    ../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’
      now = min(d->len, sg_dma_len(sg));
            ^~~
    
    Rework so that we use min_t and pass in the size_t that returns the
    minimum of two values, using the specified type.
    
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Acked-by: Olof Johansson <olof@lixom.net>
    Reviewed-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 964065d234c7f52f8e6ab26ee96bf928bf064999
Author: Valentin Schneider <valentin.schneider@arm.com>
Date:   Wed Dec 19 18:23:15 2018 +0000

    cpu/hotplug: Mute hotplug lockdep during init
    
    [ Upstream commit ce48c457b95316b9a01b5aa9d4456ce820df94b4 ]
    
    Since we've had:
    
      commit cb538267ea1e ("jump_label/lockdep: Assert we hold the hotplug lock for _cpuslocked() operations")
    
    we've been getting some lockdep warnings during init, such as on HiKey960:
    
    [    0.820495] WARNING: CPU: 4 PID: 0 at kernel/cpu.c:316 lockdep_assert_cpus_held+0x3c/0x48
    [    0.820498] Modules linked in:
    [    0.820509] CPU: 4 PID: 0 Comm: swapper/4 Tainted: G S                4.20.0-rc5-00051-g4cae42a #34
    [    0.820511] Hardware name: HiKey960 (DT)
    [    0.820516] pstate: 600001c5 (nZCv dAIF -PAN -UAO)
    [    0.820520] pc : lockdep_assert_cpus_held+0x3c/0x48
    [    0.820523] lr : lockdep_assert_cpus_held+0x38/0x48
    [    0.820526] sp : ffff00000a9cbe50
    [    0.820528] x29: ffff00000a9cbe50 x28: 0000000000000000
    [    0.820533] x27: 00008000b69e5000 x26: ffff8000bff4cfe0
    [    0.820537] x25: ffff000008ba69e0 x24: 0000000000000001
    [    0.820541] x23: ffff000008fce000 x22: ffff000008ba70c8
    [    0.820545] x21: 0000000000000001 x20: 0000000000000003
    [    0.820548] x19: ffff00000a35d628 x18: ffffffffffffffff
    [    0.820552] x17: 0000000000000000 x16: 0000000000000000
    [    0.820556] x15: ffff00000958f848 x14: 455f3052464d4d34
    [    0.820559] x13: 00000000769dde98 x12: ffff8000bf3f65a8
    [    0.820564] x11: 0000000000000000 x10: ffff00000958f848
    [    0.820567] x9 : ffff000009592000 x8 : ffff00000958f848
    [    0.820571] x7 : ffff00000818ffa0 x6 : 0000000000000000
    [    0.820574] x5 : 0000000000000000 x4 : 0000000000000001
    [    0.820578] x3 : 0000000000000000 x2 : 0000000000000001
    [    0.820582] x1 : 00000000ffffffff x0 : 0000000000000000
    [    0.820587] Call trace:
    [    0.820591]  lockdep_assert_cpus_held+0x3c/0x48
    [    0.820598]  static_key_enable_cpuslocked+0x28/0xd0
    [    0.820606]  arch_timer_check_ool_workaround+0xe8/0x228
    [    0.820610]  arch_timer_starting_cpu+0xe4/0x2d8
    [    0.820615]  cpuhp_invoke_callback+0xe8/0xd08
    [    0.820619]  notify_cpu_starting+0x80/0xb8
    [    0.820625]  secondary_start_kernel+0x118/0x1d0
    
    We've also had a similar warning in sched_init_smp() for every
    asymmetric system that would enable the sched_asym_cpucapacity static
    key, although that was singled out in:
    
      commit 40fa3780bac2 ("sched/core: Take the hotplug lock in sched_init_smp()")
    
    Those warnings are actually harmless, since we cannot have hotplug
    operations at the time they appear. Instead of starting to sprinkle
    useless hotplug lock operations in the init codepaths, mute the
    warnings until they start warning about real problems.
    
    Suggested-by: Peter Zijlstra <peterz@infradead.org>
    Signed-off-by: Valentin Schneider <valentin.schneider@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: cai@gmx.us
    Cc: daniel.lezcano@linaro.org
    Cc: dietmar.eggemann@arm.com
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: longman@redhat.com
    Cc: marc.zyngier@arm.com
    Cc: mark.rutland@arm.com
    Link: https://lkml.kernel.org/r/1545243796-23224-2-git-send-email-valentin.schneider@arm.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8376acca6f18200f68945548c59a9518c80e25e0
Author: Takeshi Kihara <takeshi.kihara.df@renesas.com>
Date:   Wed Dec 12 19:19:35 2018 +0900

    pinctrl: sh-pfc: r8a77995: Fix MOD_SEL bit numbering
    
    [ Upstream commit 5219aa33caec2f7b68eda2b7e4ab8e276f323254 ]
    
    MOD_SEL register bit numbering was different from R-Car D3 SoC and
    R-Car H3/M3-[WN] SoCs.
    
    MOD_SEL 1-bit      H3/M3-[WN]  D3
    ===============    ==========  =====
    Set Value = H'0    b'0         b'0
    Set Value = H'1    b'1         b'1
    
    MOD_SEL 2-bits     H3/M3-[WN]  D3
    ===============    ==========  =====
    Set Value = H'0    b'00        b'00
    Set Value = H'1    b'01        b'10
    Set Value = H'2    b'10        b'01
    Set Value = H'3    b'11        b'11
    
    MOD_SEL 3-bits     H3/M3-[WN]  D3
    ===============    ==========  =====
    Set Value = H'0    b'000       b'000
    Set Value = H'1    b'001       b'100
    Set Value = H'2    b'010       b'010
    Set Value = H'3    b'011       b'110
    Set Value = H'4    b'100       b'001
    Set Value = H'5    b'101       b'101
    Set Value = H'6    b'110       b'011
    Set Value = H'7    b'111       b'111
    
    This patch replaces the #define name and value of MOD_SEL.
    
    Signed-off-by: Takeshi Kihara <takeshi.kihara.df@renesas.com>
    Fixes: 794a67117646 ("pinctrl: sh-pfc: Initial R8A77995 PFC support")
    [shimoda: split a patch per SoC and revise the commit log]
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    [geert: Use a macro to do the actual reordering]
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e848354f28b7bfc4419af2fcee45503282a8edbd
Author: Takeshi Kihara <takeshi.kihara.df@renesas.com>
Date:   Wed Dec 12 19:19:34 2018 +0900

    pinctrl: sh-pfc: r8a77990: Fix MOD_SEL bit numbering
    
    [ Upstream commit 3e3eebeacad79bda8a9664c86c04f5201e86fece ]
    
    MOD_SEL register bit numbering was different from R-Car E3 SoC and
    R-Car H3/M3-[WN] SoCs.
    
    MOD_SEL 1-bit      H3/M3-[WN]  E3
    ===============    ==========  =====
    Set Value = H'0    b'0         b'0
    Set Value = H'1    b'1         b'1
    
    MOD_SEL 2-bits     H3/M3-[WN]  E3
    ===============    ==========  =====
    Set Value = H'0    b'00        b'00
    Set Value = H'1    b'01        b'10
    Set Value = H'2    b'10        b'01
    Set Value = H'3    b'11        b'11
    
    MOD_SEL 3-bits     H3/M3-[WN]  E3
    ===============    ==========  =====
    Set Value = H'0    b'000       b'000
    Set Value = H'1    b'001       b'100
    Set Value = H'2    b'010       b'010
    Set Value = H'3    b'011       b'110
    Set Value = H'4    b'100       b'001
    Set Value = H'5    b'101       b'101
    Set Value = H'6    b'110       b'011
    Set Value = H'7    b'111       b'111
    
    This patch replaces the #define name and value of MOD_SEL.
    
    Signed-off-by: Takeshi Kihara <takeshi.kihara.df@renesas.com>
    Fixes: 6d4036a1e3b3 ("pinctrl: sh-pfc: Initial R8A77990 PFC support")
    [shimoda: Split a patch per SoC and revise the commit log]
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    [geert: Use macros to do the actual reordering]
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d7ff2ae8fd6a95b1d04a7cf67b5644df03664c7
Author: Xingyu Chen <xingyu.chen@amlogic.com>
Date:   Thu Jan 17 11:23:14 2019 +0100

    pinctrl: meson: fix G12A ao pull registers base address
    
    [ Upstream commit e66dd48e8b0dee104d16417d30361074b08baca8 ]
    
    Since Meson G12A SoC, Introduce new ao registers AO_RTI_PULL_UP_EN_REG
    and AO_GPIO_O.
    
    These bits of controlling output level are remapped to the new register
    AO_GPIO_O, and the AO_GPIO_O_EN_N support only controlling output enable.
    
    These bits of controlling pull enable are remapped to the new register
    AO_RTI_PULL_UP_EN_REG, and the AO_RTI_PULL_UP_REG support only controlling
    pull type(up/down).
    
    The new layout of ao gpio/pull registers is as follows:
    - AO_GPIO_O_EN_N        [offset: 0x9 << 2]
    - AO_GPIO_I             [offset: 0xa << 2]
    - AO_RTI_PULL_UP_REG    [offset: 0xb << 2]
    - AO_RTI_PULL_UP_EN_REG [offset: 0xc << 2]
    - AO_GPIO_O             [offset: 0xd << 2]
    
    From above, we can see ao GPIO registers region has been separated by the
    ao pull registers. In order to ensure the continuity of the region on
    software, the ao GPIO and ao pull registers use the same base address, but
    can be identified by the offset.
    
    Fixes: 29ae0952e85f ("pinctrl: meson-g12a: add pinctrl driver support")
    Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com>
    Signed-off-by: Jianxin Pan <jianxin.pan@amlogic.com>
    Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e17a340f9598595eaaaff9ed5327dc912585ed68
Author: Buland Singh <bsingh@redhat.com>
Date:   Thu Dec 20 17:35:24 2018 +0530

    hpet: Fix missing '=' character in the __setup() code of hpet_mmap_enable
    
    [ Upstream commit 24d48a61f2666630da130cc2ec2e526eacf229e3 ]
    
    Commit '3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap for
    user processes")' introduced a new kernel command line parameter hpet_mmap,
    that is required to expose the memory map of the HPET registers to
    user-space. Unfortunately the kernel command line parameter 'hpet_mmap' is
    broken and never takes effect due to missing '=' character in the __setup()
    code of hpet_mmap_enable.
    
    Before this patch:
    
    dmesg output with the kernel command line parameter hpet_mmap=1
    
    [    0.204152] HPET mmap disabled
    
    dmesg output with the kernel command line parameter hpet_mmap=0
    
    [    0.204192] HPET mmap disabled
    
    After this patch:
    
    dmesg output with the kernel command line parameter hpet_mmap=1
    
    [    0.203945] HPET mmap enabled
    
    dmesg output with the kernel command line parameter hpet_mmap=0
    
    [    0.204652] HPET mmap disabled
    
    Fixes: 3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap for user processes")
    Signed-off-by: Buland Singh <bsingh@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 283a29de66c328cbab7e64bb876f3199d5f0edab
Author: Chao Yu <yuchao0@huawei.com>
Date:   Wed Jan 16 09:51:28 2019 +0800

    f2fs: fix to initialize variable to avoid UBSAN/smatch warning
    
    [ Upstream commit f9aa52a8cbe09fe25244d59c29660bbe635df613 ]
    
    As Dan Carpenter as below:
    
    The patch df634f444ee9: "f2fs: use rb_*_cached friends" from Oct 4,
    2018, leads to the following static checker warning:
    
            fs/f2fs/extent_cache.c:606 f2fs_update_extent_tree_range()
            error: uninitialized symbol 'leftmost'.
    
    And also Eric Biggers, and Kyungtae Kim reported, there is an UBSAN
    warning described as below:
    
    We report a bug in linux-4.20.2: "UBSAN: Undefined behaviour in
    fs/f2fs/extent_cache.c"
    
    kernel config: https://kt0755.github.io/etc/config_v4.20_stable
    repro: https://kt0755.github.io/etc/repro.4a3e7.c (f2fs is mounted on
    /mnt/f2fs/)
    
    This arose in f2fs_update_extent_tree_range (fs/f2fs/extent_cache.c:605).
    It seems that, for some reason, its last argument became "24"
    although that was supposed to be bool type.
    
    =========================================
    UBSAN: Undefined behaviour in fs/f2fs/extent_cache.c:605:4
    load of value 24 is not a valid value for type '_Bool'
    CPU: 0 PID: 6774 Comm: syz-executor5 Not tainted 4.20.2 #1
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xb1/0x118 lib/dump_stack.c:113
     ubsan_epilogue+0x12/0x94 lib/ubsan.c:159
     __ubsan_handle_load_invalid_value+0x17a/0x1be lib/ubsan.c:457
     f2fs_update_extent_tree_range+0x1d4a/0x1d50 fs/f2fs/extent_cache.c:605
     f2fs_update_extent_cache+0x2b6/0x350 fs/f2fs/extent_cache.c:804
     f2fs_update_data_blkaddr+0x61/0x70 fs/f2fs/data.c:656
     f2fs_outplace_write_data+0x1d6/0x4b0 fs/f2fs/segment.c:3140
     f2fs_convert_inline_page+0x86d/0x2060 fs/f2fs/inline.c:163
     f2fs_convert_inline_inode+0x6b5/0xad0 fs/f2fs/inline.c:208
     f2fs_preallocate_blocks+0x78b/0xb00 fs/f2fs/data.c:982
     f2fs_file_write_iter+0x31b/0xf40 fs/f2fs/file.c:3062
     call_write_iter include/linux/fs.h:1857 [inline]
     new_sync_write fs/read_write.c:474 [inline]
     __vfs_write+0x538/0x6e0 fs/read_write.c:487
     vfs_write+0x1b3/0x520 fs/read_write.c:549
     ksys_write+0xde/0x1c0 fs/read_write.c:598
     __do_sys_write fs/read_write.c:610 [inline]
     __se_sys_write fs/read_write.c:607 [inline]
     __x64_sys_write+0x7e/0xc0 fs/read_write.c:607
     do_syscall_64+0xbe/0x4f0 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x4497b9
    Code: e8 8c 9f 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48
    89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d
    01 f0 ff ff 0f 83 9b 6b fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f1ea15edc68 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 00007f1ea15ee6cc RCX: 00000000004497b9
    RDX: 0000000000001000 RSI: 0000000020000140 RDI: 0000000000000013
    RBP: 000000000071bea0 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff
    R13: 000000000000bb50 R14: 00000000006f4bf0 R15: 00007f1ea15ee700
    =========================================
    
    As I checked, this uninitialized variable won't cause extent cache
    corruption, but in order to avoid such kind of warning of both UBSAN
    and smatch, fix to initialize related variable.
    
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reported-by: Eric Biggers <ebiggers@google.com>
    Reported-by: Kyungtae Kim <kt0755@gmail.com>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3d1a731bcec75fd433bd22d3176b43a5385572c1
Author: Sheng Yong <shengyong1@huawei.com>
Date:   Tue Jan 15 20:02:15 2019 +0000

    f2fs: UBSAN: set boolean value iostat_enable correctly
    
    [ Upstream commit ac92985864e187a1735502f6a02f54eaa655b2aa ]
    
    When setting /sys/fs/f2fs/<DEV>/iostat_enable with non-bool value, UBSAN
    reports the following warning.
    
    [ 7562.295484] ================================================================================
    [ 7562.296531] UBSAN: Undefined behaviour in fs/f2fs/f2fs.h:2776:10
    [ 7562.297651] load of value 64 is not a valid value for type '_Bool'
    [ 7562.298642] CPU: 1 PID: 7487 Comm: dd Not tainted 4.20.0-rc4+ #79
    [ 7562.298653] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
    [ 7562.298662] Call Trace:
    [ 7562.298760]  dump_stack+0x46/0x5b
    [ 7562.298811]  ubsan_epilogue+0x9/0x40
    [ 7562.298830]  __ubsan_handle_load_invalid_value+0x72/0x90
    [ 7562.298863]  f2fs_file_write_iter+0x29f/0x3f0
    [ 7562.298905]  __vfs_write+0x115/0x160
    [ 7562.298922]  vfs_write+0xa7/0x190
    [ 7562.298934]  ksys_write+0x50/0xc0
    [ 7562.298973]  do_syscall_64+0x4a/0xe0
    [ 7562.298992]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    [ 7562.299001] RIP: 0033:0x7fa45ec19c00
    [ 7562.299004] Code: 73 01 c3 48 8b 0d 88 92 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d dd eb 2c 00 00 75 10 b8 01 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 ce 8f 01 00 48 89 04 24
    [ 7562.299044] RSP: 002b:00007ffca52b49e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    [ 7562.299052] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fa45ec19c00
    [ 7562.299059] RDX: 0000000000000400 RSI: 000000000093f000 RDI: 0000000000000001
    [ 7562.299065] RBP: 000000000093f000 R08: 0000000000000004 R09: 0000000000000000
    [ 7562.299071] R10: 00007ffca52b47b0 R11: 0000000000000246 R12: 0000000000000400
    [ 7562.299077] R13: 000000000093f000 R14: 000000000093f400 R15: 0000000000000000
    [ 7562.299091] ================================================================================
    
    So, if iostat_enable is enabled, set its value as true.
    
    Signed-off-by: Sheng Yong <shengyong1@huawei.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9f59ff251b4efcc16ea2de9ef17e60f77a25b08
Author: Song Hongyan <hongyan.song@intel.com>
Date:   Tue Jan 22 09:06:26 2019 +0800

    HID: intel-ish: ipc: handle PIMR before ish_wakeup also clear PISR busy_clear bit
    
    [ Upstream commit 2edefc056e4f0e6ec9508dd1aca2c18fa320efef ]
    
    Host driver should handle interrupt mask register earlier than wake up ish FW
    else there will be conditions when FW interrupt comes, host PIMR register still
    not set ready, so move the interrupt mask setting before ish_wakeup.
    
    Clear PISR busy_clear bit in ish_irq_handler. If not clear, there will be
    conditions host driver received a busy_clear interrupt (before the busy_clear
    mask bit is ready), it will return IRQ_NONE after check_generated_interrupt,
    the interrupt will never be cleared, causing the DEVICE not sending following
    IRQ.
    
    Since PISR clear should not be called for the CHV device we do this change.
    After the change, both ISH2HOST interrupt and busy_clear interrupt will be
    considered as interrupt from ISH, busy_clear interrupt will return IRQ_HANDLED
    from IPC_IS_BUSY check.
    
    Signed-off-by: Song Hongyan <hongyan.song@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 931480457bb363aa6390cbb2eaa1dfac4b38ec44
Author: Stanislav Fomichev <sdf@google.com>
Date:   Thu Jan 24 08:54:29 2019 -0800

    selftests/bpf: suppress readelf stderr when probing for BTF support
    
    [ Upstream commit 2f0921262ba943fe9d9f59037a033927d8c4789b ]
    
    Before:
    $ make -s -C tools/testing/selftests/bpf
    readelf: Error: Missing knowledge of 32-bit reloc types used in DWARF
    sections of machine number 247
    readelf: Warning: unable to apply unsupported reloc type 10 to section
    .debug_info
    readelf: Warning: unable to apply unsupported reloc type 1 to section
    .debug_info
    readelf: Warning: unable to apply unsupported reloc type 10 to section
    .debug_info
    
    After:
    $ make -s -C tools/testing/selftests/bpf
    
    v2:
    * use llvm-readelf instead of redirecting binutils' readelf stderr to
      /dev/null
    
    Signed-off-by: Stanislav Fomichev <sdf@google.com>
    Acked-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e01bc8baa867eb574fa31f712cd8d5a5012f88a6
Author: Timo Alho <talho@nvidia.com>
Date:   Sun Dec 30 17:58:08 2018 +0200

    soc/tegra: fuse: Fix illegal free of IO base address
    
    [ Upstream commit 51294bf6b9e897d595466dcda5a3f2751906a200 ]
    
    On cases where device tree entries for fuse and clock provider are in
    different order, fuse driver needs to defer probing. This leads to
    freeing incorrect IO base address as the fuse->base variable gets
    overwritten once during first probe invocation. This leads to the
    following spew during boot:
    
    [    3.082285] Trying to vfree() nonexistent vm area (00000000cfe8fd94)
    [    3.082308] WARNING: CPU: 5 PID: 126 at /hdd/l4t/kernel/stable/mm/vmalloc.c:1511 __vunmap+0xcc/0xd8
    [    3.082318] Modules linked in:
    [    3.082330] CPU: 5 PID: 126 Comm: kworker/5:1 Tainted: G S                4.19.7-tegra-gce119d3 #1
    [    3.082340] Hardware name: quill (DT)
    [    3.082353] Workqueue: events deferred_probe_work_func
    [    3.082364] pstate: 40000005 (nZcv daif -PAN -UAO)
    [    3.082372] pc : __vunmap+0xcc/0xd8
    [    3.082379] lr : __vunmap+0xcc/0xd8
    [    3.082385] sp : ffff00000a1d3b60
    [    3.082391] x29: ffff00000a1d3b60 x28: 0000000000000000
    [    3.082402] x27: 0000000000000000 x26: ffff000008e8b610
    [    3.082413] x25: 0000000000000000 x24: 0000000000000009
    [    3.082423] x23: ffff000009221a90 x22: ffff000009f6d000
    [    3.082432] x21: 0000000000000000 x20: 0000000000000000
    [    3.082442] x19: ffff000009f6d000 x18: ffffffffffffffff
    [    3.082452] x17: 0000000000000000 x16: 0000000000000000
    [    3.082462] x15: ffff0000091396c8 x14: 0720072007200720
    [    3.082471] x13: 0720072007200720 x12: 0720072907340739
    [    3.082481] x11: 0764076607380765 x10: 0766076307300730
    [    3.082491] x9 : 0730073007300730 x8 : 0730073007280720
    [    3.082501] x7 : 0761076507720761 x6 : 0000000000000102
    [    3.082510] x5 : 0000000000000000 x4 : 0000000000000000
    [    3.082519] x3 : ffffffffffffffff x2 : ffff000009150ff8
    [    3.082528] x1 : 3d95b1429fff5200 x0 : 0000000000000000
    [    3.082538] Call trace:
    [    3.082545]  __vunmap+0xcc/0xd8
    [    3.082552]  vunmap+0x24/0x30
    [    3.082561]  __iounmap+0x2c/0x38
    [    3.082569]  tegra_fuse_probe+0xc8/0x118
    [    3.082577]  platform_drv_probe+0x50/0xa0
    [    3.082585]  really_probe+0x1b0/0x288
    [    3.082593]  driver_probe_device+0x58/0x100
    [    3.082601]  __device_attach_driver+0x98/0xf0
    [    3.082609]  bus_for_each_drv+0x64/0xc8
    [    3.082616]  __device_attach+0xd8/0x130
    [    3.082624]  device_initial_probe+0x10/0x18
    [    3.082631]  bus_probe_device+0x90/0x98
    [    3.082638]  deferred_probe_work_func+0x74/0xb0
    [    3.082649]  process_one_work+0x1e0/0x318
    [    3.082656]  worker_thread+0x228/0x450
    [    3.082664]  kthread+0x128/0x130
    [    3.082672]  ret_from_fork+0x10/0x18
    [    3.082678] ---[ end trace 0810fe6ba772c1c7 ]---
    
    Fix this by retaining the value of fuse->base until driver has
    successfully probed.
    
    Signed-off-by: Timo Alho <talho@nvidia.com>
    Acked-by: Jon Hunter <jonathanh@nvidia.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf381e06af420236e34f34b8264a9cd3b2fed11a
Author: David Tolnay <dtolnay@gmail.com>
Date:   Mon Jan 7 14:36:11 2019 -0800

    hwrng: virtio - Avoid repeated init of completion
    
    [ Upstream commit aef027db48da56b6f25d0e54c07c8401ada6ce21 ]
    
    The virtio-rng driver uses a completion called have_data to wait for a
    virtio read to be fulfilled by the hypervisor. The completion is reset
    before placing a buffer on the virtio queue and completed by the virtio
    callback once data has been written into the buffer.
    
    Prior to this commit, the driver called init_completion on this
    completion both during probe as well as when registering virtio buffers
    as part of a hwrng read operation. The second of these init_completion
    calls should instead be reinit_completion because the have_data
    completion has already been inited by probe. As described in
    Documentation/scheduler/completion.txt, "Calling init_completion() twice
    on the same completion object is most likely a bug".
    
    This bug was present in the initial implementation of virtio-rng in
    f7f510ec1957 ("virtio: An entropy device, as suggested by hpa"). Back
    then the have_data completion was a single static completion rather than
    a member of one of potentially multiple virtrng_info structs as
    implemented later by 08e53fbdb85c ("virtio-rng: support multiple
    virtio-rng devices"). The original driver incorrectly used
    init_completion rather than INIT_COMPLETION to reset have_data during
    read.
    
    Tested by running `head -c48 /dev/random | hexdump` within crosvm, the
    Chrome OS virtual machine monitor, and confirming that the virtio-rng
    driver successfully produces random bytes from the host.
    
    Signed-off-by: David Tolnay <dtolnay@gmail.com>
    Tested-by: David Tolnay <dtolnay@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64ef5941a6f844831188df020f2de258adbac278
Author: Akinobu Mita <akinobu.mita@gmail.com>
Date:   Tue Jan 15 12:05:41 2019 -0200

    media: mt9m111: set initial frame size other than 0x0
    
    [ Upstream commit 29856308137de1c21eda89411695f4fc6e9780ff ]
    
    This driver sets initial frame width and height to 0x0, which is invalid.
    So set it to selection rectangle bounds instead.
    
    This is detected by v4l2-compliance detected.
    
    Cc: Enrico Scholz <enrico.scholz@sigma-chemnitz.de>
    Cc: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Cc: Marco Felsch <m.felsch@pengutronix.de>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9acd16abab2347753bafd7ff322721c6bcd997f1
Author: Tony Jones <tonyj@suse.de>
Date:   Wed Jan 23 16:52:24 2019 -0800

    perf script python: Add trace_context extension module to sys.modules
    
    [ Upstream commit cc437642255224e4140fed1f3e3156fc8ad91903 ]
    
    In Python3, the result of PyModule_Create (called from
    scripts/python/Perf-Trace-Util/Context.c) is not automatically added to
    sys.modules.  See: https://bugs.python.org/issue4592
    
    Below is the observed behavior without the fix:
    
      # ldd /usr/bin/perf | grep -i python
            libpython3.6m.so.1.0 => /usr/lib64/libpython3.6m.so.1.0 (0x00007f8e1dfb2000)
    
      # perf record /bin/false
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.015 MB perf.data (17 samples) ]
    
      # perf script -g python | cat
      generated Python script: perf-script.py
    
      # perf script -s ./perf-script.py
      Traceback (most recent call last):
        File "./perf-script.py", line 18, in <module>
          from perf_trace_context import *
      ModuleNotFoundError: No module named 'perf_trace_context'
      Error running python script ./perf-script.py
      #
    
    Committer notes:
    
    To build with python3 use:
    
      $ make -C tools/perf PYTHON=python3
    
    Use a non-const variable to pass the 'name' arg to
    PyImport_AppendInittab(), as python2.6 has that as 'char *', which ends
    up trowing this in some environments:
    
       CC       /tmp/build/perf/util/parse-branch-options.o
      util/scripting-engines/trace-event-python.c: In function 'python_start_script':
      util/scripting-engines/trace-event-python.c:1520:2: error: passing argument 1 of 'PyImport_AppendInittab' discards 'const' qualifier from pointer target type [-Werror]
        PyImport_AppendInittab("perf_trace_context", initfunc);
        ^
      In file included from /usr/include/python2.6/Python.h:130:0,
                       from util/scripting-engines/trace-event-python.c:22:
      /usr/include/python2.6/import.h:54:17: note: expected 'char *' but argument is of type 'const char *'
       PyAPI_FUNC(int) PyImport_AppendInittab(char *name, void (*initfunc)(void));
                       ^
      cc1: all warnings being treated as errors
    
    Signed-off-by: Tony Jones <tonyj@suse.de>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jaroslav Škarvada <jskarvad@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
    Fixes: 66dfdff03d19 ("perf tools: Add Python 3 support")
    Link: http://lkml.kernel.org/r/20190124005229.16146-2-tonyj@suse.de
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8febc5d310326bd0b7c601eef4526ebdc5d08ecd
Author: Tony Jones <tonyj@suse.de>
Date:   Wed Jan 23 16:52:25 2019 -0800

    perf script python: Use PyBytes for attr in trace-event-python
    
    [ Upstream commit 72e0b15cb24a497d7d0d4707cf51ff40c185ae8c ]
    
    With Python3.  PyUnicode_FromStringAndSize is unsafe to call on attr and will
    return NULL.  Use _PyBytes_FromStringAndSize (as with raw_buf).
    
    Below is the observed behavior without the fix.  Note it is first necessary
    to apply the prior fix (Add trace_context extension module to sys,modules):
    
      # ldd /usr/bin/perf | grep -i python
              libpython3.6m.so.1.0 => /usr/lib64/libpython3.6m.so.1.0 (0x00007f8e1dfb2000)
    
      # perf record -e raw_syscalls:sys_enter /bin/false
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.018 MB perf.data (21 samples) ]
    
      # perf script -g python | cat
      generated Python script: perf-script.py
    
      # perf script -s ./perf-script.py
      in trace_begin
      Segmentation fault (core dumped)
    
    Signed-off-by: Tony Jones <tonyj@suse.de>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jaroslav Škarvada <jskarvad@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com>
    Fixes: 66dfdff03d19 ("perf tools: Add Python 3 support")
    Link: http://lkml.kernel.org/r/20190124005229.16146-3-tonyj@suse.de
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f4264f58eb8e429f89a7b70b5787c6531083d46
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Jan 24 15:39:15 2019 +0100

    perf trace: Fixup etcsnoop example
    
    [ Upstream commit 1d59cb1bbd4cbe5a8f8032242cdacea5658129cf ]
    
    Where we don't have "raw_syscalls:sys_enter", so we need to look for a
    "*syscalls:sys_enter*" to initialize the offsets for the
    __augmented_syscalls__ evsel, which is the case with etcsnoop, that was
    segfaulting, fixed:
    
      # trace -e /home/acme/git/perf/tools/perf/examples/bpf/etcsnoop.c
         0.000 (         ): gnome-shell/2105 openat(dfd: CWD, filename: "/etc/localtime")                       ...
       631.834 (         ): cat/6521 openat(dfd: CWD, filename: "/etc/ld.so.cache", flags: RDONLY|CLOEXEC) ...
       632.637 (         ): bash/6521 openat(dfd: CWD, filename: "/etc/passwd")                          ...
      ^C#
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: b9b6a2ea2baf ("perf trace: Do not hardcode the size of the tracepoint common_ fields")
    Link: https://lkml.kernel.org/n/tip-0tjwcit8qitsmh4nyvf2b0jo@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 631e6859c9ac9bfd8de67e211adcad2ac6f4bc73
Author: Jérôme de Bretagne <jerome.debretagne@gmail.com>
Date:   Sun Jan 6 18:56:44 2019 +0100

    platform/x86: intel-hid: Missing power button release on some Dell models
    
    [ Upstream commit e97a34563d18606ee5db93e495382a967f999cd4 ]
    
    Power button suspend for some Dell models was added in:
    
    commit 821b85366284 ("platform/x86: intel-hid: Power button suspend on Dell Latitude 7275")
    
    by checking against the power button press notification (0xCE) to report
    the power button press event. The corresponding power button release
    notification (0xCF) was caught and ignored to stop it from being reported
    as an "unknown event" in the logs.
    
    The missing button release event is creating issues on Android-x86, as
    reported on the project mailing list for a Dell Latitude 5175 model, since
    the events are expected in down/up pairs.
    
    Report the power button release event to fix this issue.
    
    Link: https://groups.google.com/forum/#!topic/android-x86/aSwZK9Nf9Ro
    Tested-by: Tristian Celestin <tristian.celestin@outlook.com>
    Tested-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
    Signed-off-by: Jérôme de Bretagne <jerome.debretagne@gmail.com>
    Reviewed-by: Mario Limonciello <mario.limonciello@dell.com>
    [dvhart: corrected commit reference format per checkpatch]
    Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3ea0a48aa0809fe64b6004383cc669200d3c1a4b
Author: Roger Quadros <rogerq@ti.com>
Date:   Thu Jan 10 17:04:28 2019 +0200

    usb: dwc3: gadget: Fix OTG events when gadget driver isn't loaded
    
    [ Upstream commit 169e3b68cadb5775daca009ced4faf01ffd97dcf ]
    
    On v3.10a in dual-role mode, if port is in device mode
    and gadget driver isn't loaded, the OTG event interrupts don't
    come through.
    
    It seems that if the core is configured to be OTG2.0 only,
    then we can't leave the DCFG.DEVSPD at Super-speed (default)
    if we expect OTG to work properly. It must be set to High-speed.
    
    Fix this issue by configuring DCFG.DEVSPD to the supported
    maximum speed at gadget init. Device tree still needs to provide
    correct supported maximum speed for this to work.
    
    This issue wasn't present on v2.40a but is seen on v3.10a.
    It doesn't cause any side effects on v2.40a.
    
    Signed-off-by: Roger Quadros <rogerq@ti.com>
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bce56838a25d9fd4aade72874e28c741d7cc9c14
Author: Axel Lin <axel.lin@ingics.com>
Date:   Sun Jan 27 16:51:22 2019 +0800

    regulator: mcp16502: Include linux/gpio/consumer.h to fix build error
    
    [ Upstream commit f3c6a1a194317f3a31ee2b2067bb0a41de64bc8b ]
    
    Fix below build error:
    drivers/regulator/mcp16502.c: In function ‘mcp16502_gpio_set_mode’:
    drivers/regulator/mcp16502.c:135:3: error: implicit declaration of function ‘gpiod_set_value’; did you mean ‘gpio_set_value’? [-Werror=implicit-function-declaration]
       gpiod_set_value(mcp->lpm, 0);
       ^~~~~~~~~~~~~~~
       gpio_set_value
    drivers/regulator/mcp16502.c: In function ‘mcp16502_probe’:
    drivers/regulator/mcp16502.c:486:13: error: implicit declaration of function ‘devm_gpiod_get’; did you mean ‘devm_gpio_free’? [-Werror=implicit-function-declaration]
      mcp->lpm = devm_gpiod_get(dev, "lpm", GPIOD_OUT_LOW);
                 ^~~~~~~~~~~~~~
                 devm_gpio_free
    drivers/regulator/mcp16502.c:486:40: error: ‘GPIOD_OUT_LOW’ undeclared (first use in this function); did you mean ‘GPIOF_INIT_LOW’?
      mcp->lpm = devm_gpiod_get(dev, "lpm", GPIOD_OUT_LOW);
                                            ^~~~~~~~~~~~~
                                            GPIOF_INIT_LOW
    
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f8d78138dd5555ecc5a9303e2e5a56c0ca303641
Author: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Date:   Mon Jan 28 20:40:58 2019 +0900

    ALSA: dice: add support for Solid State Logic Duende Classic/Mini
    
    [ Upstream commit b2e9e1c8810ee05c95f4d55800b8afae70ab01b4 ]
    
    Duende Classic was produced by Solid State Logic in 2006, as a
    first model of Duende DSP series. The following model, Duende Mini
    was produced in 2008. They are designed to receive isochronous
    packets for PCM frames via IEEE 1394 bus, perform signal processing by
    downloaded program, then transfer isochronous packets for converted
    PCM frames.
    
    These two models includes the same embedded board, consists of several
    ICs below:
     - Texus Instruments Inc, TSB41AB3 for physical layer of IEEE 1394 bus
     - WaveFront semiconductor, DICE II STD ASIC for link/protocol layer
     - Altera MAX 3000A CPLD for programs
     - Analog devices, SHARC ADSP-21363 for signal processing (4 chips)
    
    This commit adds support for the two models to ALSA dice driver. Like
    support for the other devices, packet streaming is just available.
    Userspace applications should be developed if full features became
    available; e.g. program uploader and parameter controller.
    
    $ ./hinawa-config-rom-printer /dev/fw1
    { 'bus-info': { 'adj': False,
                    'bmc': False,
                    'chip_ID': 349771402425,
                    'cmc': True,
                    'cyc_clk_acc': 255,
                    'generation': 1,
                    'imc': True,
                    'isc': True,
                    'link_spd': 2,
                    'max_ROM': 1,
                    'max_rec': 512,
                    'name': '1394',
                    'node_vendor_ID': 20674,
                    'pmc': False},
      'root-directory': [ ['VENDOR', 20674],
                          ['DESCRIPTOR', 'Solid State Logic'],
                          ['MODEL', 112],
                          ['DESCRIPTOR', 'Duende board'],
                          [ 'NODE_CAPABILITIES',
                            { 'addressing': {'64': True, 'fix': True, 'prv': True},
                              'misc': {'int': False, 'ms': False, 'spt': True},
                              'state': { 'atn': False,
                                         'ded': False,
                                         'drq': True,
                                         'elo': False,
                                         'init': False,
                                         'lst': True,
                                         'off': False},
                              'testing': {'bas': False, 'ext': False}}],
                          [ 'UNIT',
                            [ ['SPECIFIER_ID', 20674],
                              ['VERSION', 1],
                              ['MODEL', 112],
                              ['DESCRIPTOR', 'Duende board']]]]}
    
    Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 504dfdea9c398c42005864c9b18fc8bacf232577
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Mon Jan 14 16:04:10 2019 -0500

    drm/amd/display: Enable vblank interrupt during CRC capture
    
    [ Upstream commit 428da2bdb05d76c48d0bd8fbfa2e4c102685be08 ]
    
    [Why]
    In order to read CRC events when CRC capture is enabled the vblank
    interrput handler needs to be running for the CRTC. The handler is
    enabled while there is an active vblank reference.
    
    When running IGT tests there will often be no active vblank reference
    but the test expects to read a CRC value. This is valid usage (and
    works on i915 since they have a CRC interrupt handler) so the reference
    to the vblank should be grabbed while capture is active.
    
    This issue was found running:
    
    igt@kms_plane_multiple@atomic-pipe-b-tiling-none
    
    The pipe-b is the only one in the initial commit and was not previously
    active so no vblank reference is grabbed. The vblank interrupt is
    not enabled and the test times out.
    
    [How]
    Keep a reference to the vblank as long as CRC capture is enabled.
    If userspace never explicitly disables it then the reference is
    also dropped when removing the CRTC from the context (stream = NULL).
    
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
    Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com>
    Acked-by: Leo Li <sunpeng.li@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b32cff3dd08623589da4c175e2de459131f6e6d9
Author: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Date:   Mon Oct 29 13:43:36 2018 -0500

    powerpc/pseries: Perform full re-add of CPU for topology update post-migration
    
    [ Upstream commit 81b61324922c67f73813d8a9c175f3c153f6a1c6 ]
    
    On pseries systems, performing a partition migration can result in
    altering the nodes a CPU is assigned to on the destination system. For
    exampl, pre-migration on the source system CPUs are in node 1 and 3,
    post-migration on the destination system CPUs are in nodes 2 and 3.
    
    Handling the node change for a CPU can cause corruption in the slab
    cache if we hit a timing where a CPUs node is changed while cache_reap()
    is invoked. The corruption occurs because the slab cache code appears
    to rely on the CPU and slab cache pages being on the same node.
    
    The current dynamic updating of a CPUs node done in arch/powerpc/mm/numa.c
    does not prevent us from hitting this scenario.
    
    Changing the device tree property update notification handler that
    recognizes an affinity change for a CPU to do a full DLPAR remove and
    add of the CPU instead of dynamically changing its node resolves this
    issue.
    
    Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: Michael W. Bringmann <mwb@linux.vnet.ibm.com>
    Tested-by: Michael W. Bringmann <mwb@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ee0088f920b1862f998542228572729bb19dce8
Author: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Date:   Mon Jan 28 19:01:10 2019 +0100

    tty: increase the default flip buffer limit to 2*640K
    
    [ Upstream commit 7ab57b76ebf632bf2231ccabe26bea33868118c6 ]
    
    We increase the default limit for buffer memory allocation by a factor of
    10 to 640K to prevent data loss when using fast serial interfaces.
    
    For example when using RS485 without flow-control at speeds of 1Mbit/s
    an upwards we've run into problems such as applications being too slow
    to read out this buffer (on embedded devices based on imx53 or imx6).
    
    If you want to write transmitted data to a slow SD card and thus have
    realtime requirements, this limit can become a problem.
    
    That shouldn't be the case and 640K buffers fix such problems for us.
    
    This value is a maximum limit for allocation only. It has no effect
    on systems that currently run fine. When transmission is slow enough
    applications and hardware can keep up and increasing this limit
    doesn't change anything.
    
    It only _allows_ to allocate more than 2*64K in cases we currently fail to
    allocate memory despite having some.
    
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9c61474aa777169923f7d62f1830c655d859064
Author: Chen-Yu Tsai <wens@csie.org>
Date:   Sun Jan 27 22:50:54 2019 +0800

    backlight: pwm_bl: Use gpiod_get_value_cansleep() to get initial state
    
    [ Upstream commit cec2b18832e26bc866bef2be22eff4e25bbc4034 ]
    
    gpiod_get_value() gives out a warning if access to the underlying gpiochip
    requires sleeping, which is common for I2C based chips:
    
        WARNING: CPU: 0 PID: 77 at drivers/gpio/gpiolib.c:2500 gpiod_get_value+0xd0/0x100
        Modules linked in:
        CPU: 0 PID: 77 Comm: kworker/0:2 Not tainted 4.14.0-rc3-00589-gf32897915d48-dirty #90
        Hardware name: Allwinner sun4i/sun5i Families
        Workqueue: events deferred_probe_work_func
        [<c010ec50>] (unwind_backtrace) from [<c010b784>] (show_stack+0x10/0x14)
        [<c010b784>] (show_stack) from [<c0797224>] (dump_stack+0x88/0x9c)
        [<c0797224>] (dump_stack) from [<c0125b08>] (__warn+0xe8/0x100)
        [<c0125b08>] (__warn) from [<c0125bd0>] (warn_slowpath_null+0x20/0x28)
        [<c0125bd0>] (warn_slowpath_null) from [<c037069c>] (gpiod_get_value+0xd0/0x100)
        [<c037069c>] (gpiod_get_value) from [<c03778d0>] (pwm_backlight_probe+0x238/0x508)
        [<c03778d0>] (pwm_backlight_probe) from [<c0411a2c>] (platform_drv_probe+0x50/0xac)
        [<c0411a2c>] (platform_drv_probe) from [<c0410224>] (driver_probe_device+0x238/0x2e8)
        [<c0410224>] (driver_probe_device) from [<c040e820>] (bus_for_each_drv+0x44/0x94)
        [<c040e820>] (bus_for_each_drv) from [<c040ff0c>] (__device_attach+0xb0/0x114)
        [<c040ff0c>] (__device_attach) from [<c040f4f8>] (bus_probe_device+0x84/0x8c)
        [<c040f4f8>] (bus_probe_device) from [<c040f944>] (deferred_probe_work_func+0x50/0x14c)
        [<c040f944>] (deferred_probe_work_func) from [<c013be84>] (process_one_work+0x1ec/0x414)
        [<c013be84>] (process_one_work) from [<c013ce5c>] (worker_thread+0x2b0/0x5a0)
        [<c013ce5c>] (worker_thread) from [<c0141908>] (kthread+0x14c/0x154)
        [<c0141908>] (kthread) from [<c0107ab0>] (ret_from_fork+0x14/0x24)
    
    This was missed in commit 0c9501f823a4 ("backlight: pwm_bl: Handle gpio
    that can sleep"). The code was then moved to a separate function in
    commit 7613c922315e ("backlight: pwm_bl: Move the checks for initial power
    state to a separate function").
    
    The only usage of gpiod_get_value() is during the probe stage, which is
    safe to sleep in. Switch to gpiod_get_value_cansleep().
    
    Fixes: 0c9501f823a4 ("backlight: pwm_bl: Handle gpio that can sleep")
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
    Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b8498a26ffdbc37d8e42010d2f0c5a624222c64e
Author: Oleg Nesterov <oleg@redhat.com>
Date:   Mon Jan 28 17:00:13 2019 +0100

    cgroup/pids: turn cgroup_subsys->free() into cgroup_subsys->release() to fix the accounting
    
    [ Upstream commit 51bee5abeab2058ea5813c5615d6197a23dbf041 ]
    
    The only user of cgroup_subsys->free() callback is pids_cgrp_subsys which
    needs pids_free() to uncharge the pid.
    
    However, ->free() is called from __put_task_struct()->cgroup_free() and this
    is too late. Even the trivial program which does
    
            for (;;) {
                    int pid = fork();
                    assert(pid >= 0);
                    if (pid)
                            wait(NULL);
                    else
                            exit(0);
            }
    
    can run out of limits because release_task()->call_rcu(delayed_put_task_struct)
    implies an RCU gp after the task/pid goes away and before the final put().
    
    Test-case:
    
            mkdir -p /tmp/CG
            mount -t cgroup2 none /tmp/CG
            echo '+pids' > /tmp/CG/cgroup.subtree_control
    
            mkdir /tmp/CG/PID
            echo 2 > /tmp/CG/PID/pids.max
    
            perl -e 'while ($p = fork) { wait; } $p // die "fork failed: $!\n"' &
            echo $! > /tmp/CG/PID/cgroup.procs
    
    Without this patch the forking process fails soon after migration.
    
    Rename cgroup_subsys->free() to cgroup_subsys->release() and move the callsite
    into the new helper, cgroup_release(), called by release_task() which actually
    frees the pid(s).
    
    Reported-by: Herton R. Krzesinski <hkrzesin@redhat.com>
    Reported-by: Jan Stancek <jstancek@redhat.com>
    Signed-off-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 07232db69580586fa82740f6a50d15012d9ed244
Author: Nicolai Stange <nstange@suse.de>
Date:   Tue Jan 22 10:57:21 2019 -0500

    powerpc/64s: Clear on-stack exception marker upon exception return
    
    [ Upstream commit eddd0b332304d554ad6243942f87c2fcea98c56b ]
    
    The ppc64 specific implementation of the reliable stacktracer,
    save_stack_trace_tsk_reliable(), bails out and reports an "unreliable
    trace" whenever it finds an exception frame on the stack. Stack frames
    are classified as exception frames if the STACK_FRAME_REGS_MARKER
    magic, as written by exception prologues, is found at a particular
    location.
    
    However, as observed by Joe Lawrence, it is possible in practice that
    non-exception stack frames can alias with prior exception frames and
    thus, that the reliable stacktracer can find a stale
    STACK_FRAME_REGS_MARKER on the stack. It in turn falsely reports an
    unreliable stacktrace and blocks any live patching transition to
    finish. Said condition lasts until the stack frame is
    overwritten/initialized by function call or other means.
    
    In principle, we could mitigate this by making the exception frame
    classification condition in save_stack_trace_tsk_reliable() stronger:
    in addition to testing for STACK_FRAME_REGS_MARKER, we could also take
    into account that for all exceptions executing on the kernel stack
      - their stack frames's backlink pointers always match what is saved
        in their pt_regs instance's ->gpr[1] slot and that
      - their exception frame size equals STACK_INT_FRAME_SIZE, a value
        uncommonly large for non-exception frames.
    
    However, while these are currently true, relying on them would make
    the reliable stacktrace implementation more sensitive towards future
    changes in the exception entry code. Note that false negatives, i.e.
    not detecting exception frames, would silently break the live patching
    consistency model.
    
    Furthermore, certain other places (diagnostic stacktraces, perf, xmon)
    rely on STACK_FRAME_REGS_MARKER as well.
    
    Make the exception exit code clear the on-stack
    STACK_FRAME_REGS_MARKER for those exceptions running on the "normal"
    kernel stack and returning to kernelspace: because the topmost frame
    is ignored by the reliable stack tracer anyway, returns to userspace
    don't need to take care of clearing the marker.
    
    Furthermore, as I don't have the ability to test this on Book 3E or 32
    bits, limit the change to Book 3S and 64 bits.
    
    Fixes: df78d3f61480 ("powerpc/livepatch: Implement reliable stack tracing for the consistency model")
    Reported-by: Joe Lawrence <joe.lawrence@redhat.com>
    Signed-off-by: Nicolai Stange <nstange@suse.de>
    Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cf651d7007c17bf1bb23fa3a2cb5d1dd2e301c65
Author: Stanislav Fomichev <sdf@google.com>
Date:   Mon Jan 28 09:21:16 2019 -0800

    selftests/bpf: skip verifier tests for unsupported program types
    
    [ Upstream commit 8184d44c9a577a2f1842ed6cc844bfd4a9981d8e ]
    
    Use recently introduced bpf_probe_prog_type() to skip tests in the
    test_verifier() if bpf_verify_program() fails. The skipped test is
    indicated in the output.
    
    Example:
    
    ...
    679/p bpf_get_stack return R0 within range SKIP (unsupported program
    type 5)
    680/p ld_abs: invalid op 1 OK
    ...
    Summary: 863 PASSED, 165 SKIPPED, 3 FAILED
    
    Signed-off-by: Stanislav Fomichev <sdf@google.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08619450dbfe30bacc1816cb9083bb09b7f9315b
Author: Valdis Kletnieks <valdis.kletnieks@vt.edu>
Date:   Tue Jan 29 01:04:25 2019 -0500

    bpf: fix missing prototype warnings
    
    [ Upstream commit 116bfa96a255123ed209da6544f74a4f2eaca5da ]
    
    Compiling with W=1 generates warnings:
    
      CC      kernel/bpf/core.o
    kernel/bpf/core.c:721:12: warning: no previous prototype for ?bpf_jit_alloc_exec_limit? [-Wmissing-prototypes]
      721 | u64 __weak bpf_jit_alloc_exec_limit(void)
          |            ^~~~~~~~~~~~~~~~~~~~~~~~
    kernel/bpf/core.c:757:14: warning: no previous prototype for ?bpf_jit_alloc_exec? [-Wmissing-prototypes]
      757 | void *__weak bpf_jit_alloc_exec(unsigned long size)
          |              ^~~~~~~~~~~~~~~~~~
    kernel/bpf/core.c:762:13: warning: no previous prototype for ?bpf_jit_free_exec? [-Wmissing-prototypes]
      762 | void __weak bpf_jit_free_exec(void *addr)
          |             ^~~~~~~~~~~~~~~~~
    
    All three are weak functions that archs can override, provide
    proper prototypes for when a new arch provides their own.
    
    Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
    Acked-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b3b22aa7c558e713a179710a6f1e2fdbef44b20
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Tue Jan 29 12:06:34 2019 +0100

    block, bfq: fix queue removal from weights tree
    
    [ Upstream commit 9dee8b3b057e1da26f85f1842f2aaf3bb200fb94 ]
    
    bfq maintains an ordered list, through a red-black tree, of unique
    weights of active bfq_queues. This list is used to detect whether there
    are active queues with differentiated weights. The weight of a queue is
    removed from the list when both the following two conditions become
    true:
    
    (1) the bfq_queue is flagged as inactive
    (2) the has no in-flight request any longer;
    
    Unfortunately, in the rare cases where condition (2) becomes true before
    condition (1), the removal fails, because the function to remove the
    weight of the queue (bfq_weights_tree_remove) is rightly invoked in the
    path that deactivates the bfq_queue, but mistakenly invoked *before* the
    function that actually performs the deactivation (bfq_deactivate_bfqq).
    
    This commits moves the invocation of bfq_weights_tree_remove for
    condition (1) to after bfq_deactivate_bfqq. As a consequence of this
    move, it is necessary to add a further reference to the queue when the
    weight of a queue is added, because the queue might otherwise be freed
    before bfq_weights_tree_remove is invoked. This commit adds this
    reference and makes all related modifications.
    
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c581587af7177800ccbfea087c4ec22f781d9f14
Author: Paolo Valente <paolo.valente@linaro.org>
Date:   Tue Jan 29 12:06:38 2019 +0100

    block, bfq: fix in-service-queue check for queue merging
    
    [ Upstream commit 058fdecc6de7cdecbf4c59b851e80eb2d6c5295f ]
    
    When a new I/O request arrives for a bfq_queue, say Q, bfq checks
    whether that request is close to
    (a) the head request of some other queue waiting to be served, or
    (b) the last request dispatched for the in-service queue (in case Q
    itself is not the in-service queue)
    
    If a queue, say Q2, is found for which the above condition holds, then
    bfq merges Q and Q2, to hopefully get a more sequential I/O in the
    resulting merged queue, and thus a possibly higher throughput.
    
    Case (b) is checked by comparing the new request for Q with the last
    request dispatched, assuming that the latter necessarily belonged to the
    in-service queue. Unfortunately, this assumption is no longer always
    correct, since commit d0edc2473be9 ("block, bfq: inject other-queue I/O
    into seeky idle queues on NCQ flash").
    
    When the assumption does not hold, queues that must not be merged may be
    merged, causing unexpected loss of control on per-queue service
    guarantees.
    
    This commit solves this problem by adding an extra field, which stores
    the actual last request dispatched for the in-service queue, and by
    using this new field to correctly check case (b).
    
    Signed-off-by: Paolo Valente <paolo.valente@linaro.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 721360c972a3c84a9cf00cd6fc5231360fa6e435
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Tue Apr 10 11:35:36 2018 +0100

    ARM: avoid Cortex-A9 livelock on tight dmb loops
    
    [ Upstream commit 5388a5b82199facacd3d7ac0d05aca6e8f902fed ]
    
    machine_crash_nonpanic_core() does this:
    
            while (1)
                    cpu_relax();
    
    because the kernel has crashed, and we have no known safe way to deal
    with the CPU.  So, we place the CPU into an infinite loop which we
    expect it to never exit - at least not until the system as a whole is
    reset by some method.
    
    In the absence of erratum 754327, this code assembles to:
    
            b       .
    
    In other words, an infinite loop.  When erratum 754327 is enabled,
    this becomes:
    
    1:      dmb
            b       1b
    
    It has been observed that on some systems (eg, OMAP4) where, if a
    crash is triggered, the system tries to kexec into the panic kernel,
    but fails after taking the secondary CPU down - placing it into one
    of these loops.  This causes the system to livelock, and the most
    noticable effect is the system stops after issuing:
    
            Loading crashdump kernel...
    
    to the system console.
    
    The tested as working solution I came up with was to add wfe() to
    these infinite loops thusly:
    
            while (1) {
                    cpu_relax();
                    wfe();
            }
    
    which, without 754327 builds to:
    
    1:      wfe
            b       1b
    
    or with 754327 is enabled:
    
    1:      dmb
            wfe
            b       1b
    
    Adding "wfe" does two things depending on the environment we're running
    under:
    - where we're running on bare metal, and the processor implements
      "wfe", it stops us spinning endlessly in a loop where we're never
      going to do any useful work.
    - if we're running in a VM, it allows the CPU to be given back to the
      hypervisor and rescheduled for other purposes (maybe a different VM)
      rather than wasting CPU cycles inside a crashed VM.
    
    However, in light of erratum 794072, Will Deacon wanted to see 10 nops
    as well - which is reasonable to cover the case where we have erratum
    754327 enabled _and_ we have a processor that doesn't implement the
    wfe hint.
    
    So, we now end up with:
    
    1:      wfe
            b       1b
    
    when erratum 754327 is disabled, or:
    
    1:      dmb
            nop
            nop
            nop
            nop
            nop
            nop
            nop
            nop
            nop
            nop
            wfe
            b       1b
    
    when erratum 754327 is enabled.  We also get the dmb + 10 nop
    sequence elsewhere in the kernel, in terminating loops.
    
    This is reasonable - it means we get the workaround for erratum
    794072 when erratum 754327 is enabled, but still relinquish the dead
    processor - either by placing it in a lower power mode when wfe is
    implemented as such or by returning it to the hypervisior, or in the
    case where wfe is a no-op, we use the workaround specified in erratum
    794072 to avoid the problem.
    
    These as two entirely orthogonal problems - the 10 nops addresses
    erratum 794072, and the wfe is an optimisation that makes the system
    more efficient when crashed either in terms of power consumption or
    by allowing the host/other VMs to make use of the CPU.
    
    I don't see any reason not to use kexec() inside a VM - it has the
    potential to provide automated recovery from a failure of the VMs
    kernel with the opportunity for saving a crashdump of the failure.
    A panic() with a reboot timeout won't do that, and reading the
    libvirt documentation, setting on_reboot to "preserve" won't either
    (the documentation states "The preserve action for an on_reboot event
    is treated as a destroy".)  Surely it has to be a good thing to
    avoiding having CPUs spinning inside a VM that is doing no useful
    work.
    
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34164dfc56a4c0b23c1f921ceef9cdc4402731eb
Author: Vladimir Murzin <vladimir.murzin@arm.com>
Date:   Fri Jan 25 15:18:37 2019 +0100

    ARM: 8830/1: NOMMU: Toggle only bits in EXC_RETURN we are really care of
    
    [ Upstream commit 72cd4064fccaae15ab84d40d4be23667402df4ed ]
    
    ARMv8M introduces support for Security extension to M class, among
    other things it affects exception handling, especially, encoding of
    EXC_RETURN.
    
    The new bits have been added:
    
    Bit [6] Secure or Non-secure stack
    Bit [5] Default callee register stacking
    Bit [0] Exception Secure
    
    which conflicts with hard-coded value of EXC_RETURN:
    
    In fact, we only care of few bits:
    
    Bit [3]  Mode (0 - Handler, 1 - Thread)
    Bit [2]  Stack pointer selection (0 - Main, 1 - Process)
    
    We can toggle only those bits and left other bits as they were on
    exception entry.
    
    It is basically, what patch does - saves EXC_RETURN when we do
    transition form Thread to Handler mode (it is first svc), so later
    saved value is used instead of EXC_RET_THREADMODE_PROCESSSTACK.
    
    Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f7a2659378e7740f586038b5f1e02b15669cacdd
Author: Stanislaw Gruszka <sgruszka@redhat.com>
Date:   Tue Jan 22 13:47:54 2019 +0100

    mt7601u: bump supported EEPROM version
    
    [ Upstream commit 3bd1505fed71d834f45e87b32ff07157fdda47e0 ]
    
    As reported by Michael eeprom 0d is supported and work with the driver.
    
    Dump of /sys/kernel/debug/ieee80211/phy1/mt7601u/eeprom_param
    with 0d EEPORM looks like this:
    
    RSSI offset: 0 0
    Reference temp: f9
    LNA gain: 8
    Reg channels: 1-14
    Per rate power:
             raw:05 bw20:05 bw40:05
             raw:05 bw20:05 bw40:05
             raw:03 bw20:03 bw40:03
             raw:03 bw20:03 bw40:03
             raw:04 bw20:04 bw40:04
             raw:00 bw20:00 bw40:00
             raw:00 bw20:00 bw40:00
             raw:00 bw20:00 bw40:00
             raw:02 bw20:02 bw40:02
             raw:00 bw20:00 bw40:00
    Per channel power:
             tx_power  ch1:09 ch2:09
             tx_power  ch3:0a ch4:0a
             tx_power  ch5:0a ch6:0a
             tx_power  ch7:0b ch8:0b
             tx_power  ch9:0b ch10:0b
             tx_power  ch11:0b ch12:0b
             tx_power  ch13:0b ch14:0b
    
    Reported-and-tested-by: Michael <ZeroBeat@gmx.de>
    Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
    Acked-by: Jakub Kicinski <kubakici@wp.pl>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1fc3215635411abc5843b607895592c705742b6
Author: Stephen Boyd <swboyd@chromium.org>
Date:   Thu Jan 3 11:06:02 2019 -0800

    drm/msm/dpu: Convert to a chained irq chip
    
    [ Upstream commit 070e64dc1bbc879b7e0e9fffccd9dd139baf89f0 ]
    
    Devices that make up DPU, i.e. graphics card, request their interrupts
    from this "virtual" interrupt chip. The interrupt chip builds upon a GIC
    SPI interrupt that raises high when any of the interrupts in the DPU's
    irq status register are triggered. From the kernel's perspective this is
    a chained irq chip, so requesting a flow handler for the GIC SPI and
    then calling generic IRQ handling code from that irq handler is not
    completely proper. It's better to convert this to a chained irq so that
    the GIC SPI irq doesn't appear in /proc/interrupts, can't have CPU
    affinity changed, and won't be accounted for with irq stats. Doing this
    also silences a recursive lockdep warning because we can specify a
    different lock class for the chained interrupts, silencing a warning
    that is easy to see with 'threadirqs' on the kernel commandline.
    
     WARNING: inconsistent lock state
     4.19.10 #76 Tainted: G        W
     --------------------------------
     inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
     irq/40-dpu_mdss/203 [HC0[0]:SC0[2]:HE1:SE0] takes:
     0000000053ea9021 (&irq_desc_lock_class){?.-.}, at: handle_level_irq+0x34/0x26c
     {IN-HARDIRQ-W} state was registered at:
       lock_acquire+0x244/0x360
       _raw_spin_lock+0x64/0xa0
       handle_fasteoi_irq+0x54/0x2ec
       generic_handle_irq+0x44/0x5c
       __handle_domain_irq+0x9c/0x11c
       gic_handle_irq+0x208/0x260
       el1_irq+0xb4/0x130
       arch_cpu_idle+0x178/0x3cc
       default_idle_call+0x3c/0x54
       do_idle+0x1a8/0x3dc
       cpu_startup_entry+0x24/0x28
       rest_init+0x240/0x270
       start_kernel+0x5a8/0x6bc
     irq event stamp: 18
     hardirqs last  enabled at (17): [<ffffff9042385e80>] _raw_spin_unlock_irq+0x40/0xc0
     hardirqs last disabled at (16): [<ffffff904237a1f4>] __schedule+0x20c/0x1bbc
     softirqs last  enabled at (0): [<ffffff9040f318d0>] copy_process+0xb50/0x3964
     softirqs last disabled at (18): [<ffffff9041036364>] local_bh_disable+0x8/0x20
    
     other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(&irq_desc_lock_class);
       <Interrupt>
         lock(&irq_desc_lock_class);
    
      *** DEADLOCK ***
    
     no locks held by irq/40-dpu_mdss/203.
    
     stack backtrace:
     CPU: 0 PID: 203 Comm: irq/40-dpu_mdss Tainted: G        W         4.19.10 #76
     Call trace:
      dump_backtrace+0x0/0x2f8
      show_stack+0x20/0x2c
      __dump_stack+0x20/0x28
      dump_stack+0xcc/0x10c
      mark_lock+0xbe0/0xe24
      __lock_acquire+0x4cc/0x2708
      lock_acquire+0x244/0x360
      _raw_spin_lock+0x64/0xa0
      handle_level_irq+0x34/0x26c
      generic_handle_irq+0x44/0x5c
      dpu_mdss_irq+0x64/0xec
      irq_forced_thread_fn+0x58/0x9c
      irq_thread+0x120/0x1dc
      kthread+0x248/0x260
      ret_from_fork+0x10/0x18
     ------------[ cut here ]------------
     irq 169 handler irq_default_primary_handler+0x0/0x18 enabled interrupts
    
    Cc: Sean Paul <seanpaul@chromium.org>
    Cc: Jordan Crouse <jcrouse@codeaurora.org>
    Cc: Jayant Shekhar <jshekhar@codeaurora.org>
    Cc: Rajesh Yadav <ryadav@codeaurora.org>
    Cc: Jeykumar Sankaran <jsanka@codeaurora.org>
    Signed-off-by: Stephen Boyd <swboyd@chromium.org>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0442dc492e57c39ca41d672aef0a041137aa182
Author: Alexey Khoroshilov <khoroshilov@ispras.ru>
Date:   Sat Dec 8 01:57:04 2018 +0300

    soc: qcom: gsbi: Fix error handling in gsbi_probe()
    
    [ Upstream commit 8cd09a3dd3e176c62da67efcd477a44a8d87185e ]
    
    If of_platform_populate() fails in gsbi_probe(),
    gsbi->hclk is left undisabled.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    
    Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Signed-off-by: Andy Gross <andy.gross@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 65ae5c0808c7441bf50658803e1731ebe269b738
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Sat Feb 2 10:41:16 2019 +0100

    efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted
    
    [ Upstream commit 4e46c2a956215482418d7b315749fb1b6c6bc224 ]
    
    The UEFI spec revision 2.7 errata A section 8.4 has the following to
    say about the virtual memory runtime services:
    
      "This section contains function definitions for the virtual memory
      support that may be optionally used by an operating system at runtime.
      If an operating system chooses to make EFI runtime service calls in a
      virtual addressing mode instead of the flat physical mode, then the
      operating system must use the services in this section to switch the
      EFI runtime services from flat physical addressing to virtual
      addressing."
    
    So it is pretty clear that calling SetVirtualAddressMap() is entirely
    optional, and so there is no point in doing so unless it achieves
    anything useful for us.
    
    This is not the case for 64-bit ARM. The identity mapping used by the
    firmware is arbitrarily converted into another permutation of userland
    addresses (i.e., bits [63:48] cleared), and the runtime code could easily
    deal with the original layout in exactly the same way as it deals with
    the converted layout. However, due to constraints related to page size
    differences if the OS is not running with 4k pages, and related to
    systems that may expose the individual sections of PE/COFF runtime
    modules as different memory regions, creating the virtual layout is a
    bit fiddly, and requires us to sort the memory map and reason about
    adjacent regions with identical memory types etc etc.
    
    So the obvious fix is to stop calling SetVirtualAddressMap() altogether
    on arm64 systems. However, to avoid surprises, which are notoriously
    hard to diagnose when it comes to OS<->firmware interactions, let's
    start by making it an opt-out feature, and implement support for the
    'efi=novamap' kernel command line parameter on ARM and arm64 systems.
    
    ( Note that 32-bit ARM generally does require SetVirtualAddressMap() to be
      used, given that the physical memory map and the kernel virtual address
      map are not guaranteed to be non-overlapping like on arm64. However,
      having support for efi=novamap,noruntime on 32-bit ARM, combined with
      the recently proposed support for earlycon=efifb, is likely to be useful
      to diagnose boot issues on such systems if they have no accessible serial
      port. )
    
    Tested-by: Jeffrey Hugo <jhugo@codeaurora.org>
    Tested-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Tested-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Cc: Alexander Graf <agraf@suse.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Cc: Leif Lindholm <leif.lindholm@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190202094119.13230-8-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6416e05b81903221eef92be91af916b28b2c64a0
Author: Mathieu Malaterre <malat@debian.org>
Date:   Fri Dec 15 13:46:39 2017 +0100

    ARM: dts: lpc32xx: Remove leading 0x and 0s from bindings notation
    
    [ Upstream commit 3e3380d0675d5e20b0af067d60cb947a4348bf9b ]
    
    Improve the DTS files by removing all the leading "0x" and zeros to fix
    the following dtc warnings:
    
    Warning (unit_address_format): Node /XXX unit name should not have leading "0x"
    
    and
    
    Warning (unit_address_format): Node /XXX unit name should not have leading 0s
    
    Converted using the following command:
    
    find . -type f \( -iname *.dts -o -iname *.dtsi \) -exec sed -i -e "s/@\([0-9a-fA-FxX\.;:#]+\)\s*{/@\L\1 {/g" -e "s/@0x\(.*\) {/@\1 {/g" -e "s/@0+\(.*\) {/@\1 {/g" {} +
    
    For simplicity, two sed expressions were used to solve each warnings
    separately.
    
    To make the regex expression more robust a few other issues were resolved,
    namely setting unit-address to lower case, and adding a whitespace before
    the opening curly brace:
    
    https://elinux.org/Device_Tree_Linux#Linux_conventions
    
    This will solve as a side effect warning:
    
    Warning (simple_bus_reg): Node /XXX@<UPPER> simple-bus unit address format error, expected "<lower>"
    
    This is a follow up to commit 4c9847b7375a ("dt-bindings: Remove leading 0x from bindings notation")
    
    Reported-by: David Daney <ddaney@caviumnetworks.com>
    Suggested-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Mathieu Malaterre <malat@debian.org>
    [vzapolskiy: fixed commit message to pass checkpatch.pl test]
    Signed-off-by: Vladimir Zapolskiy <vz@mleia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 897a3b9ef31d839b8f48d50bce2112de3e6e0fe7
Author: Shayenne Moura <shayenneluzmoura@gmail.com>
Date:   Wed Jan 30 14:06:36 2019 -0200

    drm/vkms: Bugfix extra vblank frame
    
    [ Upstream commit def35e7c592616bc09be328de8795e5e624a3cf8 ]
    
    kms_flip tests are breaking on vkms when simulate vblank because vblank
    event sequence count returns one extra frame after arm vblank event to
    make a page flip.
    
    When vblank interrupt happens, userspace processes the vblank event and
    issues the next page flip command. Kernel calls queue_work to call
    commit_planes and arm the new page flip. The next vblank picks up the
    newly armed vblank event and vblank interrupt happens again.
    
    The arm and vblank event are asynchronous, then, on the next vblank, we
    receive x+2 from `get_vblank_timestamp`, instead x+1, although timestamp
    and vblank seqno matches.
    
    Function `get_vblank_timestamp` is reached by 2 ways:
    
      - from `drm_mode_page_flip_ioctl`: driver is doing one atomic
        operation to synchronize planes in the same output. There is no
        vblank simulation, the `drm_crtc_arm_vblank_event` function adds 1
        on vblank count, and the variable in_vblank_irq is false
      - from `vkms_vblank_simulate`: since the driver is doing a vblank
        simulation, the variable in_vblank_irq is true.
    
    Fix this problem subtracting one vblank period from vblank_time when
    `get_vblank_timestamp` is called from trace `drm_mode_page_flip_ioctl`,
    i.e., is not a real vblank interrupt, and getting the timestamp and
    vblank seqno when it is a real vblank interrupt.
    
    The reason for all this is that get_vblank_timestamp always supplies the
    timestamp for the next vblank event. The hrtimer is the vblank
    simulator, and it needs the correct previous value to present the next
    vblank. Since this is how hw timestamp registers work and what the
    vblank core expects.
    
    Signed-off-by: Shayenne Moura <shayenneluzmoura@gmail.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Reviewed-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
    Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/171e6e1c239cbca0c3df7183ed8acdfeeace9cf4.1548856186.git.shayenneluzmoura@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1c76c3cf30609b0dca9fb421fefcf9f7dab3ef52
Author: Shayenne Moura <shayenneluzmoura@gmail.com>
Date:   Wed Jan 30 14:07:11 2019 -0200

    drm/vkms: Bugfix racing hrtimer vblank handle
    
    [ Upstream commit ba420afab565bdc7b028ddd4f222260f2de7a1db ]
    
    When the vblank irq happens, kernel time subsystem executes
    `vkms_vblank_simulate`. In parallel or not, it prepares all stuff
    necessary to the next vblank with arm, and it must flush these stuff
    before the next vblank irq. However, vblank counter is ahead when arm is
    executed in parallel with handle vblank.
    
    CPU 0:                                  CPU 1:
     |                                       |
    atomic_commit_tail is ongoing            |
     |                                       |
     |                                      hrtimer: vkms_vblank_simulate()
     |                                       |
     |                                      drm_crtc_handle_vblank()
     |                                       |
    drm_crtc_arm_vblank()                    |
     |                                       |
    ->get_vblank_timestamp()                 |
     |                                       |
     |                                      hrtimer_forward_now()
    
    Then, we should guarantee that the vblank interval time is correct (not
    changed) before finish the vblank handle.
    
    Fix the bug including the call to `hrtimer_forward_now()` in the same
    lock of `drm_crtc_handle_vblank()` to ensure that the timestamp update
    is correct when finish the vblank handle.
    
    Signed-off-by: Shayenne Moura <shayenneluzmoura@gmail.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Reviewed-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
    Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/e2e4b8f3a5cab7b2dba75bf1930f86b0a4ee08c9.1548856186.git.shayenneluzmoura@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5ca05ecd29548658b35935632a39bf8cd1899afc
Author: Andrea Parri <andrea.parri@amarulasolutions.com>
Date:   Mon Jan 21 16:52:40 2019 +0100

    sched/core: Use READ_ONCE()/WRITE_ONCE() in move_queued_task()/task_rq_lock()
    
    [ Upstream commit c546951d9c9300065bad253ecdf1ac59ce9d06c8 ]
    
    move_queued_task() synchronizes with task_rq_lock() as follows:
    
            move_queued_task()              task_rq_lock()
    
            [S] ->on_rq = MIGRATING         [L] rq = task_rq()
            WMB (__set_task_cpu())          ACQUIRE (rq->lock);
            [S] ->cpu = new_cpu             [L] ->on_rq
    
    where "[L] rq = task_rq()" is ordered before "ACQUIRE (rq->lock)" by an
    address dependency and, in turn, "ACQUIRE (rq->lock)" is ordered before
    "[L] ->on_rq" by the ACQUIRE itself.
    
    Use READ_ONCE() to load ->cpu in task_rq() (c.f., task_cpu()) to honor
    this address dependency.  Also, mark the accesses to ->cpu and ->on_rq
    with READ_ONCE()/WRITE_ONCE() to comply with the LKMM.
    
    Signed-off-by: Andrea Parri <andrea.parri@amarulasolutions.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul E. McKenney <paulmck@linux.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Link: https://lkml.kernel.org/r/20190121155240.27173-1-andrea.parri@amarulasolutions.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e634952fe7446732f00c91d27e559e81895ff38
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Sat Feb 2 10:41:12 2019 +0100

    efi/memattr: Don't bail on zero VA if it equals the region's PA
    
    [ Upstream commit 5de0fef0230f3c8d75cff450a71740a7bf2db866 ]
    
    The EFI memory attributes code cross-references the EFI memory map with
    the more granular EFI memory attributes table to ensure that they are in
    sync before applying the strict permissions to the regions it describes.
    
    Since we always install virtual mappings for the EFI runtime regions to
    which these strict permissions apply, we currently perform a sanity check
    on the EFI memory descriptor, and ensure that the EFI_MEMORY_RUNTIME bit
    is set, and that the virtual address has been assigned.
    
    However, in cases where a runtime region exists at physical address 0x0,
    and the virtual mapping equals the physical mapping, e.g., when running
    in mixed mode on x86, we encounter a memory descriptor with the runtime
    attribute and virtual address 0x0, and incorrectly draw the conclusion
    that a runtime region exists for which no virtual mapping was installed,
    and give up altogether. The consequence of this is that firmware mappings
    retain their read-write-execute permissions, making the system more
    vulnerable to attacks.
    
    So let's only bail if the virtual address of 0x0 has been assigned to a
    physical region that does not reside at address 0x0.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: Sai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Cc: Alexander Graf <agraf@suse.de>
    Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
    Cc: Jeffrey Hugo <jhugo@codeaurora.org>
    Cc: Lee Jones <lee.jones@linaro.org>
    Cc: Leif Lindholm <leif.lindholm@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Peter Jones <pjones@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Fixes: 10f0d2f577053 ("efi: Implement generic support for the Memory ...")
    Link: http://lkml.kernel.org/r/20190202094119.13230-4-ard.biesheuvel@linaro.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd288d329d1796d6f4e328803e487af97f7f81e9
Author: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Date:   Tue Jan 29 10:12:45 2019 -0500

    sched/debug: Initialize sd_sysctl_cpus if !CONFIG_CPUMASK_OFFSTACK
    
    [ Upstream commit 1ca4fa3ab604734e38e2a3000c9abf788512ffa7 ]
    
    register_sched_domain_sysctl() copies the cpu_possible_mask into
    sd_sysctl_cpus, but only if sd_sysctl_cpus hasn't already been
    allocated (ie, CONFIG_CPUMASK_OFFSTACK is set).  However, when
    CONFIG_CPUMASK_OFFSTACK is not set, sd_sysctl_cpus is left
    uninitialized (all zeroes) and the kernel may fail to initialize
    sched_domain sysctl entries for all possible CPUs.
    
    This is visible to the user if the kernel is booted with maxcpus=n, or
    if ACPI tables have been modified to leave CPUs offline, and then
    checking for missing /proc/sys/kernel/sched_domain/cpu* entries.
    
    Fix this by separating the allocation and initialization, and adding a
    flag to initialize the possible CPU entries while system booting only.
    
    Tested-by: Syuuichirou Ishii <ishii.shuuichir@jp.fujitsu.com>
    Tested-by: Tarumizu, Kohei <tarumizu.kohei@jp.fujitsu.com>
    Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
    Acked-by: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Masayoshi Mizuma <msys.mizuma@gmail.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190129151245.5073-1-msys.mizuma@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0da521452109f8ed6a75bee4d19973dcc71a6b85
Author: wen yang <yellowriver2010@hotmail.com>
Date:   Sat Feb 2 14:53:16 2019 +0000

    ASoC: fsl-asoc-card: fix object reference leaks in fsl_asoc_card_probe
    
    [ Upstream commit 11907e9d3533648615db08140e3045b829d2c141 ]
    
    The of_find_device_by_node() takes a reference to the underlying device
    structure, we should release that reference.
    
    Signed-off-by: Wen Yang <yellowriver2010@hotmil.com>
    Cc: Timur Tabi <timur@kernel.org>
    Cc: Nicolin Chen <nicoleotsuka@gmail.com>
    Cc: Xiubo Li <Xiubo.Lee@gmail.com>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: Liam Girdwood <lgirdwood@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: alsa-devel@alsa-project.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a838b44f70f349dfa1ee7f4fa9c1d65cc17f397
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Tue Dec 11 21:20:43 2018 +0100

    iwlwifi: mvm: fix RFH config command with >=10 CPUs
    
    [ Upstream commit dbf592f3d14fb7d532cb7c820b1065cf33e02aaa ]
    
    If we have >=10 (logical) CPUs, our command size exceeds the
    internal buffer size and the command fails; fix that by using
    IWL_HCMD_DFL_NOCOPY for the command that's allocated anyway.
    
    While at it, also fix the leak of cmd, and use struct_size()
    to calculate its size.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Fixes: 8edbfaa19835 ("iwlwifi: mvm: configure multi RX queue")
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9bd4debdd54474e3147b40675c705a88ff9a976b
Author: Stefan Roese <sr@denx.de>
Date:   Fri Feb 1 11:17:09 2019 +0100

    staging: spi: mt7621: Add return code check on device_reset()
    
    [ Upstream commit 46c337872f34bc6387b0c29a4964f562c70139e3 ]
    
    This patch adds a return code check on device_reset() and removes the
    compile warning.
    
    Signed-off-by: Stefan Roese <sr@denx.de>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Sankalp Negi <sankalpnegi2310@gmail.com>
    Cc: Chuanhong Guo <gch981213@gmail.com>
    Cc: John Crispin <john@phrozen.org>
    Reviewed-by: NeilBrown <neil@brown.name>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3aa0518aacaa545e4778e7efb160c70d34984a3a
Author: Thierry Reding <treding@nvidia.com>
Date:   Fri Jan 25 14:11:42 2019 +0100

    i2c: of: Try to find an I2C adapter matching the parent
    
    [ Upstream commit e814e688413aabd7b0d75e2a8ed1caa472951dec ]
    
    If an I2C adapter doesn't match the provided device tree node, also try
    matching the parent's device tree node. This allows finding an adapter
    based on the device node of the parent device that was used to register
    it.
    
    This fixes a regression on Tegra124-based Chromebooks (Nyan) where the
    eDP controller registers an I2C adapter that is used to read to EDID.
    After commit 993a815dcbb2 ("dt-bindings: panel: Add missing .txt
    suffix") this stopped working because the I2C adapter could no longer
    be found. The approach in this patch fixes the regression without
    introducing the issues that the above commit solved.
    
    Fixes: 17ab7806de0c ("drm: don't link DP aux i2c adapter to the hardware device node")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Tested-by: Tristan Bastian <tristan-c.bastian@gmx.de>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c1ac30ee10cf3d08ed8eba7df8f8c3b2c3eef1b9
Author: Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
Date:   Fri Feb 1 13:02:26 2019 +0530

    platform/x86: intel_pmc_core: Fix PCH IP sts reading
    
    [ Upstream commit 0e68eeea9894feeba2edf7ec63e4551b87f39621 ]
    
    A previous commit "platform/x86: intel_pmc_core: Make the driver PCH
    family agnostic <c977b98bbef5898ed3d30b08ea67622e9e82082a>" provided
    better abstraction to this driver but has some fundamental issues.
    
    e.g. the following condition
    
    for (index = 0; index < pmcdev->map->ppfear_buckets &&
            index < PPFEAR_MAX_NUM_ENTRIES; index++, iter++)
    
    is wrong because for CNL, PPFEAR_MAX_NUM_ENTRIES is hardcoded as 5 which
    is _wrong_ and even though ppfear_buckets is 8, the loop fails to read
    all eight registers needed for CNL PCH i.e. PPFEAR0 and PPFEAR1. This
    patch refactors the pfear show logic to correctly read PCH IP power
    gating status for Cannonlake and beyond.
    
    Cc: "David E. Box" <david.e.box@intel.com>
    Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Fixes: c977b98bbef5 ("platform/x86: intel_pmc_core: Make the driver PCH family agnostic")
    Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b503ea08fe0dcf03a5e78a558ea0bd7b5dcbd164
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Tue Dec 11 15:59:37 2018 +0800

    e1000e: Exclude device from suspend direct complete optimization
    
    [ Upstream commit 59f58708c5047289589cbf6ee95146b76cf57d1e ]
    
    e1000e sets different WoL settings in system suspend callback and
    runtime suspend callback.
    
    The suspend direct complete optimization leaves e1000e in runtime
    suspended state with wrong WoL setting during system suspend.
    
    To fix this, we need to disable suspend direct complete optimization to
    let e1000e always use suspend callback to set correct WoL during system
    suspend.
    
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.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 <sashal@kernel.org>

commit 7f0a3a436e88a71b96694c029f01a9a8eade3d5d
Author: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Date:   Mon Jan 14 16:29:30 2019 +0300

    e1000e: fix cyclic resets at link up with active tx
    
    [ Upstream commit 0f9e980bf5ee1a97e2e401c846b2af989eb21c61 ]
    
    I'm seeing series of e1000e resets (sometimes endless) at system boot
    if something generates tx traffic at this time. In my case this is
    netconsole who sends message "e1000e 0000:02:00.0: Some CPU C-states
    have been disabled in order to enable jumbo frames" from e1000e itself.
    As result e1000_watchdog_task sees used tx buffer while carrier is off
    and start this reset cycle again.
    
    [   17.794359] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
    [   17.794714] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [   22.936455] e1000e 0000:02:00.0 eth1: changing MTU from 1500 to 9000
    [   23.033336] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   26.102364] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
    [   27.174495] 8021q: 802.1Q VLAN Support v1.8
    [   27.174513] 8021q: adding VLAN 0 to HW filter on device eth1
    [   30.671724] cgroup: cgroup: disabling cgroup2 socket matching due to net_prio or net_cls activation
    [   30.898564] netpoll: netconsole: local port 6666
    [   30.898566] netpoll: netconsole: local IPv6 address 2a02:6b8:0:80b:beae:c5ff:fe28:23f8
    [   30.898567] netpoll: netconsole: interface 'eth1'
    [   30.898568] netpoll: netconsole: remote port 6666
    [   30.898568] netpoll: netconsole: remote IPv6 address 2a02:6b8:b000:605c:e61d:2dff:fe03:3790
    [   30.898569] netpoll: netconsole: remote ethernet address b0:a8:6e:f4:ff:c0
    [   30.917747] console [netcon0] enabled
    [   30.917749] netconsole: network logging started
    [   31.453353] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   34.185730] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   34.321840] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   34.465822] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   34.597423] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   34.745417] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   34.877356] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   35.005441] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   35.157376] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   35.289362] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   35.417441] e1000e 0000:02:00.0: Some CPU C-states have been disabled in order to enable jumbo frames
    [   37.790342] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
    
    This patch flushes tx buffers only once when carrier is off
    rather than at each watchdog iteration.
    
    Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e4fba6d30f830fec0bc40cbb174b3af86370f95
Author: Mathieu Poirier <mathieu.poirier@linaro.org>
Date:   Thu Jan 31 11:47:08 2019 -0700

    perf/aux: Make perf_event accessible to setup_aux()
    
    [ Upstream commit 840018668ce2d96783356204ff282d6c9b0e5f66 ]
    
    When pmu::setup_aux() is called the coresight PMU needs to know which
    sink to use for the session by looking up the information in the
    event's attr::config2 field.
    
    As such simply replace the cpu information by the complete perf_event
    structure and change all affected customers.
    
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Reviewed-by: Suzuki Poulouse <suzuki.poulose@arm.com>
    Acked-by: Peter Zijlstra <peterz@infradead.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-s390@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190131184714.20388-2-mathieu.poirier@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 81ee4eab3117dc40e655a45c82cf13854b46076b
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Wed Jan 23 13:50:17 2019 -0500

    drm/amd/display: Disconnect mpcc when changing tg
    
    [ Upstream commit 77476360f173c127c191bfe8ca8113130ef283b8 ]
    
    [Why]
    This fixes an mpc programming error for the following sequence of
    atomic commits when pipe split is enabled:
    
    Commit 1: CRTC0 (plane 4, plane 3)
    
    Pipe 0: old_plane_state = A0, new_plane_state = A1,   new_tg = T0
    Pipe 1: old_plane_state = B0, new_plane_state = B1,   new_tg = T0
    Pipe 2: old_plane_state = A0, new_plane_state = A1,   new_tg = T0
    Pipe 3: old_plane_state = B0, new_plane_state = B1,   new_tg = T0
    
    Commit 2: CRTC0 (plane 3), CRTC1 (plane 2)
    
    Pipe 0: old_plane_state = A1, new_plane_state = A2,   new_tg = T0
    Pipe 1: old_plane_state = B1, new_plane_state = B2,   new_tg = T1
    Pipe 2: old_plane_state = A1, new_plane_state = NULL, new_tg = NULL
    Pipe 3: old_plane_state = B1, new_plane_state = NULL, new_tg = NULL
    
    In the second commit the assertion for mpcc in use is hit because
    mpcc disconnect never occurs for pipe 1. This is because the stream
    changes for pipe 1 and the opp_list is empty.
    
    This sequence occurs when running the
    "igt@kms_plane_multiple@atomic-pipe-A-tiling-none" test with two
    displays connected.
    
    [How]
    Expand the reset condition to include:
    
    "old_pipe_ctx->stream_res.tg != new_pipe_ctx->stream_res.tg"
    
    ...but only when the plane state is non-NULL for both old and new.
    
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
    Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c730d6c156c61ec425b3771c5d70a63fb3a75e32
Author: Breno Leitao <leitao@debian.org>
Date:   Wed Jan 30 10:46:00 2019 -0200

    powerpc/ptrace: Mitigate potential Spectre v1
    
    [ Upstream commit ebb0e13ead2ddc186a80b1b0235deeefc5a1a667 ]
    
    'regno' is directly controlled by user space, hence leading to a potential
    exploitation of the Spectre variant 1 vulnerability.
    
    On PTRACE_SETREGS and PTRACE_GETREGS requests, user space passes the
    register number that would be read or written. This register number is
    called 'regno' which is part of the 'addr' syscall parameter.
    
    This 'regno' value is checked against the maximum pt_regs structure size,
    and then used to dereference it, which matches the initial part of a
    Spectre v1 (and Spectre v1.1) attack. The dereferenced value, then,
    is returned to userspace in the GETREGS case.
    
    This patch sanitizes 'regno' before using it to dereference pt_reg.
    
    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
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Acked-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e74000fd6563fe882c9a7780bc4f6a989c7affe
Author: Kairui Song <kasong@redhat.com>
Date:   Tue Feb 5 01:38:52 2019 +0800

    x86/kexec: Fill in acpi_rsdp_addr from the first kernel
    
    [ Upstream commit ccec81e4251f5a5421e02874e394338a897056ca ]
    
    When efi=noruntime or efi=oldmap is used on the kernel command line, EFI
    services won't be available in the second kernel, therefore the second
    kernel will not be able to get the ACPI RSDP address from firmware by
    calling EFI services and so it won't boot.
    
    Commit
    
      e6e094e053af ("x86/acpi, x86/boot: Take RSDP address from boot params if available")
    
    added an acpi_rsdp_addr field to boot_params which stores the RSDP
    address for other kernel users.
    
    Recently, after
    
      3a63f70bf4c3 ("x86/boot: Early parse RSDP and save it in boot_params")
    
    the acpi_rsdp_addr will always be filled with a valid RSDP address.
    
    So fill in that value into the second kernel's boot_params thus ensuring
    that the second kernel receives the RSDP value from the first kernel.
    
     [ bp: massage commit message. ]
    
    Signed-off-by: Kairui Song <kasong@redhat.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: AKASHI Takahiro <takahiro.akashi@linaro.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Chao Fan <fanc.fnst@cn.fujitsu.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: kexec@lists.infradead.org
    Cc: Philipp Rudo <prudo@linux.vnet.ibm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Cc: Yannik Sembritzki <yannik@sembritzki.me>
    Link: https://lkml.kernel.org/r/20190204173852.4863-1-kasong@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90c93fbede11ba262bea4e377b0c65a9d6f72d4e
Author: Breno Leitao <leitao@debian.org>
Date:   Tue Feb 5 15:12:34 2019 -0200

    bpf: test_maps: fix possible out of bound access warning
    
    [ Upstream commit dd9cef43c222df7c0d76d34451808e789952379d ]
    
    When compiling test_maps selftest with GCC-8, it warns that an array
    might be indexed with a negative value, which could cause a negative
    out of bound access, depending on parameters of the function. This
    is the GCC-8 warning:
    
            gcc -Wall -O2 -I../../../include/uapi -I../../../lib -I../../../lib/bpf -I../../../../include/generated -DHAVE_GENHDR -I../../../include    test_maps.c /home/breno/Devel/linux/tools/testing/selftests/bpf/libbpf.a -lcap -lelf -lrt -lpthread -o /home/breno/Devel/linux/tools/testing/selftests/bpf/test_maps
            In file included from test_maps.c:16:
            test_maps.c: In function ‘run_all_tests’:
            test_maps.c:1079:10: warning: array subscript -1 is below array bounds of ‘pid_t[<Ube20> + 1]’ [-Warray-bounds]
               assert(waitpid(pid[i], &status, 0) == pid[i]);
                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
            test_maps.c:1059:6: warning: array subscript -1 is below array bounds of ‘pid_t[<Ube20> + 1]’ [-Warray-bounds]
               pid[i] = fork();
               ~~~^~~
    
    This patch simply guarantees that the task(s) variables are unsigned,
    thus, they could never be a negative number (which they are not in
    current code anyway), hence avoiding an out of bound access warning.
    
    Signed-off-by: Breno Leitao <leitao@debian.org>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c60bf6e7594c838225f7b014da899c415a45f91c
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Wed Jan 23 14:55:58 2019 -0500

    drm/amd/display: Don't re-program planes for DPMS changes
    
    [ Upstream commit 5062b797db4103218fa00ee254417b8ecaab7401 ]
    
    [Why]
    There are opt1c lock warnings and CRTC read timeouts when running the
    "igt@kms_plane@plane-position-hole-dpms-pipe-*" tests. These are
    caused by trying to reprogram planes that are not in the current
    context.
    
    DPMS off removes the stream from the context. In this case:
    
    new_crtc_state->active_changed = true
    new_crtc_state->mode_changed = false
    
    The planes are reprogrammed before the stream is removed from the
    context because stream_state->mode_changed = false.
    
    For DPMS adds the stream and planes back to the context:
    
    new_crtc_state->active_changed = true
    new_crtc_state->mode_changed = false
    
    The planes are also reprogrammed here before the stream is added to the
    context because stream_state->mode_changed = true. They were not
    previously in the current context so warnings occur here.
    
    [How]
    Set stream_state->mode_changed = true when
    new_crtc_state->active_changed = true too.
    
    This prevents reprogramming before the context is applied in DC. The
    programming will be done after the context is applied.
    
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Acked-by: Tony Cheng <Tony.Cheng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ada81ebc5f35b0d31b2978fb56a8bd5c6c360717
Author: Julia Lawall <julia.lawall@lip6.fr>
Date:   Mon Jan 14 17:44:56 2019 +0100

    drm: rcar-du: add missing of_node_put
    
    [ Upstream commit 4c6d8fc20b09f9684743afd72e4dbc3f15524479 ]
    
    Add an of_node_put when the result of of_graph_get_remote_port_parent is
    not available.
    
    Add a second of_node_put if no encoder is selected (encoder remains NULL).
    
    The semantic match that finds the first problem is as follows
    (http://coccinelle.lip6.fr):
    
    // <smpl>
    @r exists@
    local idexpression e;
    expression x;
    @@
    e = of_graph_get_remote_port_parent(...);
    ... when != x = e
        when != true e == NULL
        when != of_node_put(e)
        when != of_fwnode_handle(e)
    (
    return e;
    |
    *return ...;
    )
    // </smpl>
    
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7208136a41f9282e7f6853fc44d3b22398366b91
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Wed Feb 6 21:13:49 2019 -0800

    cdrom: Fix race condition in cdrom_sysctl_register
    
    [ Upstream commit f25191bb322dec8fa2979ecb8235643aa42470e1 ]
    
    The following traceback is sometimes seen when booting an image in qemu:
    
    [   54.608293] cdrom: Uniform CD-ROM driver Revision: 3.20
    [   54.611085] Fusion MPT base driver 3.04.20
    [   54.611877] Copyright (c) 1999-2008 LSI Corporation
    [   54.616234] Fusion MPT SAS Host driver 3.04.20
    [   54.635139] sysctl duplicate entry: /dev/cdrom//info
    [   54.639578] CPU: 0 PID: 266 Comm: kworker/u4:5 Not tainted 5.0.0-rc5 #1
    [   54.639578] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
    [   54.641273] Workqueue: events_unbound async_run_entry_fn
    [   54.641273] Call Trace:
    [   54.641273]  dump_stack+0x67/0x90
    [   54.641273]  __register_sysctl_table+0x50b/0x570
    [   54.641273]  ? rcu_read_lock_sched_held+0x6f/0x80
    [   54.641273]  ? kmem_cache_alloc_trace+0x1c7/0x1f0
    [   54.646814]  __register_sysctl_paths+0x1c8/0x1f0
    [   54.646814]  cdrom_sysctl_register.part.7+0xc/0x5f
    [   54.646814]  register_cdrom.cold.24+0x2a/0x33
    [   54.646814]  sr_probe+0x4bd/0x580
    [   54.646814]  ? __driver_attach+0xd0/0xd0
    [   54.646814]  really_probe+0xd6/0x260
    [   54.646814]  ? __driver_attach+0xd0/0xd0
    [   54.646814]  driver_probe_device+0x4a/0xb0
    [   54.646814]  ? __driver_attach+0xd0/0xd0
    [   54.646814]  bus_for_each_drv+0x73/0xc0
    [   54.646814]  __device_attach+0xd6/0x130
    [   54.646814]  bus_probe_device+0x9a/0xb0
    [   54.646814]  device_add+0x40c/0x670
    [   54.646814]  ? __pm_runtime_resume+0x4f/0x80
    [   54.646814]  scsi_sysfs_add_sdev+0x81/0x290
    [   54.646814]  scsi_probe_and_add_lun+0x888/0xc00
    [   54.646814]  ? scsi_autopm_get_host+0x21/0x40
    [   54.646814]  __scsi_add_device+0x116/0x130
    [   54.646814]  ata_scsi_scan_host+0x93/0x1c0
    [   54.646814]  async_run_entry_fn+0x34/0x100
    [   54.646814]  process_one_work+0x237/0x5e0
    [   54.646814]  worker_thread+0x37/0x380
    [   54.646814]  ? rescuer_thread+0x360/0x360
    [   54.646814]  kthread+0x118/0x130
    [   54.646814]  ? kthread_create_on_node+0x60/0x60
    [   54.646814]  ret_from_fork+0x3a/0x50
    
    The only sensible explanation is that cdrom_sysctl_register() is called
    twice, once from the module init function and once from register_cdrom().
    cdrom_sysctl_register() is not mutex protected and may happily execute
    twice if the second call is made before the first call is complete.
    
    Use a static atomic to ensure that the function is executed exactly once.
    
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e00ff3abfaafe750e768bab36dc8d0ee0b09df22
Author: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Date:   Fri Feb 8 19:24:47 2019 +0100

    fbdev: fbmem: fix memory access if logo is bigger than the screen
    
    [ Upstream commit a5399db139cb3ad9b8502d8b1bd02da9ce0b9df0 ]
    
    There is no clipping on the x or y axis for logos larger that the framebuffer
    size. Therefore: a logo bigger than screen size leads to invalid memory access:
    
    [    1.254664] Backtrace:
    [    1.254728] [<c02714e0>] (cfb_imageblit) from [<c026184c>] (fb_show_logo+0x620/0x684)
    [    1.254763]  r10:00000003 r9:00027fd8 r8:c6a40000 r7:c6a36e50 r6:00000000 r5:c06b81e4
    [    1.254774]  r4:c6a3e800
    [    1.254810] [<c026122c>] (fb_show_logo) from [<c026c1e4>] (fbcon_switch+0x3fc/0x46c)
    [    1.254842]  r10:c6a3e824 r9:c6a3e800 r8:00000000 r7:c6a0c000 r6:c070b014 r5:c6a3e800
    [    1.254852]  r4:c6808c00
    [    1.254889] [<c026bde8>] (fbcon_switch) from [<c029c8f8>] (redraw_screen+0xf0/0x1e8)
    [    1.254918]  r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:c070d5a0 r5:00000080
    [    1.254928]  r4:c6808c00
    [    1.254961] [<c029c808>] (redraw_screen) from [<c029d264>] (do_bind_con_driver+0x194/0x2e4)
    [    1.254991]  r9:00000000 r8:00000000 r7:00000014 r6:c070d5a0 r5:c070d5a0 r4:c070d5a0
    
    So prevent displaying a logo bigger than screen size and avoid invalid
    memory access.
    
    Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
    Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e48664da19f78ce1d3f6aad2acc4513da9da76f
Author: Heiner Kallweit <hkallweit1@gmail.com>
Date:   Wed Feb 6 19:39:52 2019 +0100

    net: phy: consider latched link-down status in polling mode
    
    [ Upstream commit 93c0970493c71f264e6c3c7caf1ff24a9e1de786 ]
    
    The link status value latches link-down events. To get the current
    status we read the register twice in genphy_update_link(). There's
    a potential risk that we miss a link-down event in polling mode.
    This may cause issues if the user e.g. connects his machine to a
    different network.
    
    On the other hand reading the latched value may cause issues in
    interrupt mode. Following scenario:
    
    - After boot link goes up
    - phy_start() is called triggering an aneg restart, hence link goes
      down and link-down info is latched.
    - After aneg has finished link goes up and triggers an interrupt.
      Interrupt handler reads link status, means it reads the latched
      "link is down" info. But there won't be another interrupt as long
      as link stays up, therefore phylib will never recognize that link
      is up.
    
    Deal with both scenarios by reading the register twice in interrupt
    mode only.
    
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c230484a376754802038f8650b1d5c2951831bd1
Author: Raju Rangoju <rajur@chelsio.com>
Date:   Wed Feb 6 22:54:44 2019 +0530

    iw_cxgb4: fix srqidx leak during connection abort
    
    [ Upstream commit f368ff188ae4b3ef6f740a15999ea0373261b619 ]
    
    When an application aborts the connection by moving QP from RTS to ERROR,
    then iw_cxgb4's modify_rc_qp() RTS->ERROR logic sets the
    *srqidxp to 0 via t4_set_wq_in_error(&qhp->wq, 0), and aborts the
    connection by calling c4iw_ep_disconnect().
    
    c4iw_ep_disconnect() does the following:
     1. sends up a close_complete_upcall(ep, -ECONNRESET) to libcxgb4.
     2. sends abort request CPL to hw.
    
    But, since the close_complete_upcall() is sent before sending the
    ABORT_REQ to hw, libcxgb4 would fail to release the srqidx if the
    connection holds one. Because, the srqidx is passed up to libcxgb4 only
    after corresponding ABORT_RPL is processed by kernel in abort_rpl().
    
    This patch handle the corner-case by moving the call to
    close_complete_upcall() from c4iw_ep_disconnect() to abort_rpl().  So that
    libcxgb4 is notified about the -ECONNRESET only after abort_rpl(), and
    libcxgb4 can relinquish the srqidx properly.
    
    Signed-off-by: Raju Rangoju <rajur@chelsio.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3e45ebf5a16c140c73d6d895fc347f1f224ecdc8
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Fri Feb 8 15:35:43 2019 +0000

    net: marvell: mvpp2: fix stuck in-band SGMII negotiation
    
    [ Upstream commit 316734fdcf70900a83065360cff11a5826919067 ]
    
    It appears that the mvpp22 can get stuck with SGMII negotiation.  The
    symptoms are that in-band negotiation never completes and the partner
    (eg, PHY) never reports SGMII link up, or if it supports negotiation
    bypass, goes into negotiation bypass mode (which will happen when the
    PHY sees that the MAC is alive but gets no response.)
    
    Triggering the PHY end of the link to re-negotiate results in the
    bypass bit clearing on the PHY, and then re-setting - indicating that
    the problem is at the mvpp22 GMAC end.
    
    Asserting the GMAC reset and de-asserting it resolves the issue.
    Arrange to assert the GMAC reset at probe time, and deassert it only
    after we have configured the GMAC for the appropriate mode.  This
    resolves the issue.
    
    Tested-by: Sven Auhagen <sven.auhagen@voleatech.de>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c0ed048685060a00a74e983f5359a6c3e3f0fe9d
Author: Thomas Gleixner <tglx@linutronix.de>
Date:   Fri Feb 8 14:48:03 2019 +0100

    genirq: Avoid summation loops for /proc/stat
    
    [ Upstream commit 1136b0728969901a091f0471968b2b76ed14d9ad ]
    
    Waiman reported that on large systems with a large amount of interrupts the
    readout of /proc/stat takes a long time to sum up the interrupt
    statistics. In principle this is not a problem. but for unknown reasons
    some enterprise quality software reads /proc/stat with a high frequency.
    
    The reason for this is that interrupt statistics are accounted per cpu. So
    the /proc/stat logic has to sum up the interrupt stats for each interrupt.
    
    This can be largely avoided for interrupts which are not marked as
    'PER_CPU' interrupts by simply adding a per interrupt summation counter
    which is incremented along with the per interrupt per cpu counter.
    
    The PER_CPU interrupts need to avoid that and use only per cpu accounting
    because they share the interrupt number and the interrupt descriptor and
    concurrent updates would conflict or require unwanted synchronization.
    
    Reported-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Waiman Long <longman@redhat.com>
    Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: Davidlohr Bueso <dbueso@suse.de>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Miklos Szeredi <miklos@szeredi.hu>
    Cc: Daniel Colascione <dancol@google.com>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: Randy Dunlap <rdunlap@infradead.org>
    Link: https://lkml.kernel.org/r/20190208135020.925487496@linutronix.de
    
    8<-------------
    
    v2: Undo the unintentional layout change of struct irq_desc.
    
     include/linux/irqdesc.h |    1 +
     kernel/irq/chip.c       |   12 ++++++++++--
     kernel/irq/internals.h  |    8 +++++++-
     kernel/irq/irqdesc.c    |    7 ++++++-
     4 files changed, 24 insertions(+), 4 deletions(-)
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c984b1e68b0cc31ca8620467ffeb74ef9f98f2f7
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:52:59 2019 +0800

    bcache: improve sysfs_strtoul_clamp()
    
    [ Upstream commit 596b5a5dd1bc2fa019fdaaae522ef331deef927f ]
    
    Currently sysfs_strtoul_clamp() is defined as,
     82 #define sysfs_strtoul_clamp(file, var, min, max)                   \
     83 do {                                                               \
     84         if (attr == &sysfs_ ## file)                               \
     85                 return strtoul_safe_clamp(buf, var, min, max)      \
     86                         ?: (ssize_t) size;                         \
     87 } while (0)
    
    The problem is, if bit width of var is less then unsigned long, min and
    max may not protect var from integer overflow, because overflow happens
    in strtoul_safe_clamp() before checking min and max.
    
    To fix such overflow in sysfs_strtoul_clamp(), to make min and max take
    effect, this patch adds an unsigned long variable, and uses it to macro
    strtoul_safe_clamp() to convert an unsigned long value in range defined
    by [min, max]. Then assign this value to var. By this method, if bit
    width of var is less than unsigned long, integer overflow won't happen
    before min and max are checking.
    
    Now sysfs_strtoul_clamp() can properly handle smaller data type like
    unsigned int, of cause min and max should be defined in range of
    unsigned int too.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5db086d7c05f3e0b35d1cec0aab9f003f261cc5e
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:53:05 2019 +0800

    bcache: fix potential div-zero error of writeback_rate_i_term_inverse
    
    [ Upstream commit c3b75a2199cdbfc1c335155fe143d842604b1baa ]
    
    dc->writeback_rate_i_term_inverse can be set via sysfs interface. It is
    in type unsigned int, and convert from input string by d_strtoul(). The
    problem is d_strtoul() does not check valid range of the input, if
    4294967296 is written into sysfs file writeback_rate_i_term_inverse,
    an overflow of unsigned integer will happen and value 0 is set to
    dc->writeback_rate_i_term_inverse.
    
    In writeback.c:__update_writeback_rate(), there are following lines of
    code,
          integral_scaled = div_s64(dc->writeback_rate_integral,
                          dc->writeback_rate_i_term_inverse);
    If dc->writeback_rate_i_term_inverse is set to 0 via sysfs interface,
    a div-zero error might be triggered in the above code.
    
    Therefore we need to add a range limitation in the sysfs interface,
    this is what this patch does, use sysfs_stroul_clamp() to replace
    d_strtoul() and restrict the input range in [1, UINT_MAX].
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d4db0c5ee0b4c21c36b3556a20e44d5e1a372e2b
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:53:01 2019 +0800

    bcache: fix input overflow to sequential_cutoff
    
    [ Upstream commit 8c27a3953e92eb0b22dbb03d599f543a05f9574e ]
    
    People may set sequential_cutoff of a cached device via sysfs file,
    but current code does not check input value overflow. E.g. if value
    4294967295 (UINT_MAX) is written to file sequential_cutoff, its value
    is 4GB, but if 4294967296 (UINT_MAX + 1) is written into, its value
    will be 0. This is an unexpected behavior.
    
    This patch replaces d_strtoi_h() by sysfs_strtoul_clamp() to convert
    input string to unsigned integer value, and limit its range in
    [0, UINT_MAX]. Then the input overflow can be fixed.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f48bb10d7615020d04bf527cb3b3e7a41288fac5
Author: Coly Li <colyli@suse.de>
Date:   Sat Feb 9 12:53:10 2019 +0800

    bcache: fix input overflow to cache set sysfs file io_error_halflife
    
    [ Upstream commit a91fbda49f746119828f7e8ad0f0aa2ab0578f65 ]
    
    Cache set sysfs entry io_error_halflife is used to set c->error_decay.
    c->error_decay is in type unsigned int, and it is converted by
    strtoul_or_return(), therefore overflow to c->error_decay is possible
    for a large input value.
    
    This patch fixes the overflow by using strtoul_safe_clamp() to convert
    input string to an unsigned long value in range [0, UINT_MAX], then
    divides by 88 and set it to c->error_decay.
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 83a6f919bbb75b381a9b306f0444c798f2f893d4
Author: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Date:   Fri Jan 18 15:49:36 2019 +0100

    sched/topology: Fix percpu data types in struct sd_data & struct s_data
    
    [ Upstream commit 99687cdbb3f6c8e32bcc7f37496e811f30460e48 ]
    
    The percpu members of struct sd_data and s_data are declared as:
    
            struct ... ** __percpu member;
    
    So their type is:
    
            __percpu pointer to pointer to struct ...
    
    But looking at how they're used, their type should be:
    
            pointer to __percpu pointer to struct ...
    
    and they should thus be declared as:
    
            struct ... * __percpu *member;
    
    So fix the placement of '__percpu' in the definition of these
    structures.
    
    This addresses a bunch of Sparse's warnings like:
    
            warning: incorrect type in initializer (different address spaces)
              expected void const [noderef] <asn:3> *__vpp_verify
              got struct sched_domain **
    
    Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190118144936.79158-1-luc.vanoostenryck@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9738742e4e3852ba69a93aa26a00c88dbe61ff08
Author: John Stultz <john.stultz@linaro.org>
Date:   Tue Feb 5 10:24:40 2019 -0800

    usb: f_fs: Avoid crash due to out-of-scope stack ptr access
    
    [ Upstream commit 54f64d5c983f939901dacc8cfc0983727c5c742e ]
    
    Since the 5.0 merge window opened, I've been seeing frequent
    crashes on suspend and reboot with the trace:
    
    [   36.911170] Unable to handle kernel paging request at virtual address ffffff801153d660
    [   36.912769] Unable to handle kernel paging request at virtual address ffffff800004b564
    ...
    [   36.950666] Call trace:
    [   36.950670]  queued_spin_lock_slowpath+0x1cc/0x2c8
    [   36.950681]  _raw_spin_lock_irqsave+0x64/0x78
    [   36.950692]  complete+0x28/0x70
    [   36.950703]  ffs_epfile_io_complete+0x3c/0x50
    [   36.950713]  usb_gadget_giveback_request+0x34/0x108
    [   36.950721]  dwc3_gadget_giveback+0x50/0x68
    [   36.950723]  dwc3_thread_interrupt+0x358/0x1488
    [   36.950731]  irq_thread_fn+0x30/0x88
    [   36.950734]  irq_thread+0x114/0x1b0
    [   36.950739]  kthread+0x104/0x130
    [   36.950747]  ret_from_fork+0x10/0x1c
    
    I isolated this down to in ffs_epfile_io():
    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/gadget/function/f_fs.c#n1065
    
    Where the completion done is setup on the stack:
      DECLARE_COMPLETION_ONSTACK(done);
    
    Then later we setup a request and queue it, and wait for it:
      if (unlikely(wait_for_completion_interruptible(&done))) {
        /*
        * To avoid race condition with ffs_epfile_io_complete,
        * dequeue the request first then check
        * status. usb_ep_dequeue API should guarantee no race
        * condition with req->complete callback.
        */
        usb_ep_dequeue(ep->ep, req);
        interrupted = ep->status < 0;
      }
    
    The problem is, that we end up being interrupted, dequeue the
    request, and exit.
    
    But then the irq triggers and we try calling complete() on the
    context pointer which points to now random stack space, which
    results in the panic.
    
    Alan Stern pointed out there is a bug here, in that the snippet
    above "assumes that usb_ep_dequeue() waits until the request has
    been completed." And that:
    
        wait_for_completion(&done);
    
    Is needed right after the usb_ep_dequeue().
    
    Thus this patch implements that change. With it I no longer see
    the crashes on suspend or reboot.
    
    This issue seems to have been uncovered by behavioral changes in
    the dwc3 driver in commit fec9095bdef4e ("usb: dwc3: gadget:
    remove wait_end_transfer").
    
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Felipe Balbi <balbi@kernel.org>
    Cc: Zeng Tao <prime.zeng@hisilicon.com>
    Cc: Jack Pham <jackp@codeaurora.org>
    Cc: Thinh Nguyen <thinh.nguyen@synopsys.com>
    Cc: Chen Yu <chenyu56@huawei.com>
    Cc: Jerry Zhang <zhangjerry@google.com>
    Cc: Lars-Peter Clausen <lars@metafoo.de>
    Cc: Vincent Pelletier <plr.vincent@gmail.com>
    Cc: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Linux USB List <linux-usb@vger.kernel.org>
    Suggested-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit db5177729062ed8d38a6646ffdf94313e605b204
Author: Rakesh Pillai <pillair@codeaurora.org>
Date:   Fri Feb 8 15:50:24 2019 +0200

    ath10k: fix shadow register implementation for WCN3990
    
    [ Upstream commit 1863008369ae0407508033b4b00f98b985adeb15 ]
    
    WCN3990 supports shadow registers write operation support
    for copy engine for regular operation in powersave mode.
    
    Since WCN3990 is a 64-bit target, the shadow register
    implementation needs to be done in the copy engine handlers
    for 64-bit target. Currently the shadow register implementation
    is present in the 32-bit target handlers of copy engine.
    
    Fix the shadow register copy engine write operation
    implementation for 64-bit target(WCN3990).
    
    Tested HW: WCN3990
    Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1
    
    Fixes: b7ba83f7c414 ("ath10k: add support for shadow register for WNC3990")
    Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 31f3d84c6d9f3339ba2ac42f873306b2495ddf5f
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Date:   Fri Feb 8 17:29:53 2019 -0600

    ALSA: PCM: check if ops are defined before suspending PCM
    
    [ Upstream commit d9c0b2afe820fa3b3f8258a659daee2cc71ca3ef ]
    
    BE dai links only have internal PCM's and their substream ops may
    not be set. Suspending these PCM's will result in their
     ops->trigger() being invoked and cause a kernel oops.
    So skip suspending PCM's if their ops are NULL.
    
    [ NOTE: this change is required now for following the recent PCM core
      change to get rid of snd_pcm_suspend() call.  Since DPCM BE takes
      the runtime carried from FE while keeping NULL ops, it can hit this
      bug.  See details at:
         https://github.com/thesofproject/linux/pull/582
      -- tiwai ]
    
    Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6c896df369d1ab1189fdbb58272652f1b7f1ffe9
Author: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Date:   Sat Dec 29 15:35:56 2018 +0100

    ARM: dts: meson8b: fix the Ethernet data line signals in eth_rgmii_pins
    
    [ Upstream commit 29f0023d01f063feacfc404f0446905aee4f82ee ]
    
    According to the Odroid-C1+ schematics the Ethernet TXD1 signal is
    routed to GPIOH_5 and the TXD0 signal is routed to GPIOH_6.
    The public S805 datasheet shows that TXD0 can be routed to DIF_2_P and
    TXD1 can be routed to DIF_2_N instead.
    
    The pin groups eth_txd0_0 (GPIOH_6) and eth_txd0_1 (DIF_2_P) are both
    configured as Ethernet TXD0 and TXD1 data lines in meson8b.dtsi. At the
    same time eth_txd1_0 (GPIOH_5) and eth_txd1_1 (DIF_2_N) are configured
    as TXD0 and TXD1 data lines as well.
    This results in a bad Ethernet receive performance. Presumably this is
    due to the eth_txd0 and eth_txd1 signal being routed to the wrong pins.
    As a result of that data can only be transmitted on eth_txd2 and
    eth_txd3. However, I have no scope to fully confirm this assumption.
    
    The vendor u-boot sources for Odroid-C1 use the following Ethernet
    pinmux configuration:
      SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_6, 0x3f4f);
      SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_7, 0xf00000);
    This translates to the following pin groups in the mainline kernel:
    - register 6 bit  0: eth_rxd1 (DIF_0_P)
    - register 6 bit  1: eth_rxd0 (DIF_0_N)
    - register 6 bit  2: eth_rx_dv (DIF_1_P)
    - register 6 bit  3: eth_rx_clk (DIF_1_N)
    - register 6 bit  6: eth_tx_en (DIF_3_P)
    - register 6 bit  8: eth_ref_clk (DIF_3_N)
    - register 6 bit  9: eth_mdc (DIF_4_P)
    - register 6 bit 10: eth_mdio_en (DIF_4_N)
    - register 6 bit 11: eth_tx_clk (GPIOH_9)
    - register 6 bit 12: eth_txd2 (GPIOH_8)
    - register 6 bit 13: eth_txd3 (GPIOH_7)
    - register 7 bit 20: eth_txd0_0 (GPIOH_6)
    - register 7 bit 21: eth_txd1_0 (GPIOH_5)
    - register 7 bit 22: eth_rxd3 (DIF_2_P)
    - register 7 bit 23: eth_rxd2 (DIF_2_N)
    
    Drop the eth_txd0_1 and eth_txd1_1 groups from eth_rgmii_pins to fix the
    Ethernet transmit performance on Odroid-C1. Also add the eth_rxd2 and
    eth_rxd3 groups so we don't rely on the bootloader to set them up.
    
    iperf3 statistics before this change:
    - transmitting from Odroid-C1: 741 Mbits/sec (0 retries)
    - receiving on Odroid-C1: 199 Mbits/sec (1713 retries)
    
    iperf3 statistics after this change:
    - transmitting from Odroid-C1: 667 Mbits/sec (0 retries)
    - receiving on Odroid-C1: 750 Mbits/sec (0 retries)
    
    Fixes: b96446541d8390 ("ARM: dts: meson8b: extend ethernet controller description")
    Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
    Cc: Emiliano Ingrassia <ingrassia@epigenesys.com>
    Cc: Linus Lüssing <linus.luessing@c0d3.blue>
    Tested-by: Emiliano Ingrassia <ingrassia@epigenesys.com>
    Reviewed-by: Emiliano Ingrassia <ingrassia@epigenesys.com>
    Signed-off-by: Kevin Hilman <khilman@baylibre.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c716b08e06cafe9e6b713cd5e34dc8cf2286dab8
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Sat Feb 2 03:34:36 2019 +0100

    ARM: 8833/1: Ensure that NEON code always compiles with Clang
    
    [ Upstream commit de9c0d49d85dc563549972edc5589d195cd5e859 ]
    
    While building arm32 allyesconfig, I ran into the following errors:
    
      arch/arm/lib/xor-neon.c:17:2: error: You should compile this file with
      '-mfloat-abi=softfp -mfpu=neon'
    
      In file included from lib/raid6/neon1.c:27:
      /home/nathan/cbl/prebuilt/lib/clang/8.0.0/include/arm_neon.h:28:2:
      error: "NEON support not enabled"
    
    Building V=1 showed NEON_FLAGS getting passed along to Clang but
    __ARM_NEON__ was not getting defined. Ultimately, it boils down to Clang
    only defining __ARM_NEON__ when targeting armv7, rather than armv6k,
    which is the '-march' value for allyesconfig.
    
    >From lib/Basic/Targets/ARM.cpp in the Clang source:
    
      // This only gets set when Neon instructions are actually available, unlike
      // the VFP define, hence the soft float and arch check. This is subtly
      // different from gcc, we follow the intent which was that it should be set
      // when Neon instructions are actually available.
      if ((FPU & NeonFPU) && !SoftFloat && ArchVersion >= 7) {
        Builder.defineMacro("__ARM_NEON", "1");
        Builder.defineMacro("__ARM_NEON__");
        // current AArch32 NEON implementations do not support double-precision
        // floating-point even when it is present in VFP.
        Builder.defineMacro("__ARM_NEON_FP",
                            "0x" + Twine::utohexstr(HW_FP & ~HW_FP_DP));
      }
    
    Ard Biesheuvel recommended explicitly adding '-march=armv7-a' at the
    beginning of the NEON_FLAGS definitions so that __ARM_NEON__ always gets
    definined by Clang. This doesn't functionally change anything because
    that code will only run where NEON is supported, which is implicitly
    armv7.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/287
    
    Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Stefan Agner <stefan@agner.ch>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f74b0a4bf14c15d6bef9d3bdfe90512a6652599e
Author: Chieh-Min Wang <chiehminw@synology.com>
Date:   Tue Feb 12 00:59:55 2019 +0100

    netfilter: conntrack: fix cloned unconfirmed skb->_nfct race in __nf_conntrack_confirm
    
    [ Upstream commit 13f5251fd17088170c18844534682d9cab5ff5aa ]
    
    For bridge(br_flood) or broadcast/multicast packets, they could clone
    skb with unconfirmed conntrack which break the rule that unconfirmed
    skb->_nfct is never shared.  With nfqueue running on my system, the race
    can be easily reproduced with following warning calltrace:
    
    [13257.707525] CPU: 0 PID: 12132 Comm: main Tainted: P        W       4.4.60 #7744
    [13257.707568] Hardware name: Qualcomm (Flattened Device Tree)
    [13257.714700] [<c021f6dc>] (unwind_backtrace) from [<c021bce8>] (show_stack+0x10/0x14)
    [13257.720253] [<c021bce8>] (show_stack) from [<c0449e10>] (dump_stack+0x94/0xa8)
    [13257.728240] [<c0449e10>] (dump_stack) from [<c022a7e0>] (warn_slowpath_common+0x94/0xb0)
    [13257.735268] [<c022a7e0>] (warn_slowpath_common) from [<c022a898>] (warn_slowpath_null+0x1c/0x24)
    [13257.743519] [<c022a898>] (warn_slowpath_null) from [<c06ee450>] (__nf_conntrack_confirm+0xa8/0x618)
    [13257.752284] [<c06ee450>] (__nf_conntrack_confirm) from [<c0772670>] (ipv4_confirm+0xb8/0xfc)
    [13257.761049] [<c0772670>] (ipv4_confirm) from [<c06e7a60>] (nf_iterate+0x48/0xa8)
    [13257.769725] [<c06e7a60>] (nf_iterate) from [<c06e7af0>] (nf_hook_slow+0x30/0xb0)
    [13257.777108] [<c06e7af0>] (nf_hook_slow) from [<c07f20b4>] (br_nf_post_routing+0x274/0x31c)
    [13257.784486] [<c07f20b4>] (br_nf_post_routing) from [<c06e7a60>] (nf_iterate+0x48/0xa8)
    [13257.792556] [<c06e7a60>] (nf_iterate) from [<c06e7af0>] (nf_hook_slow+0x30/0xb0)
    [13257.800458] [<c06e7af0>] (nf_hook_slow) from [<c07e5580>] (br_forward_finish+0x94/0xa4)
    [13257.808010] [<c07e5580>] (br_forward_finish) from [<c07f22ac>] (br_nf_forward_finish+0x150/0x1ac)
    [13257.815736] [<c07f22ac>] (br_nf_forward_finish) from [<c06e8df0>] (nf_reinject+0x108/0x170)
    [13257.824762] [<c06e8df0>] (nf_reinject) from [<c06ea854>] (nfqnl_recv_verdict+0x3d8/0x420)
    [13257.832924] [<c06ea854>] (nfqnl_recv_verdict) from [<c06e940c>] (nfnetlink_rcv_msg+0x158/0x248)
    [13257.841256] [<c06e940c>] (nfnetlink_rcv_msg) from [<c06e5564>] (netlink_rcv_skb+0x54/0xb0)
    [13257.849762] [<c06e5564>] (netlink_rcv_skb) from [<c06e4ec8>] (netlink_unicast+0x148/0x23c)
    [13257.858093] [<c06e4ec8>] (netlink_unicast) from [<c06e5364>] (netlink_sendmsg+0x2ec/0x368)
    [13257.866348] [<c06e5364>] (netlink_sendmsg) from [<c069fb8c>] (sock_sendmsg+0x34/0x44)
    [13257.874590] [<c069fb8c>] (sock_sendmsg) from [<c06a03dc>] (___sys_sendmsg+0x1ec/0x200)
    [13257.882489] [<c06a03dc>] (___sys_sendmsg) from [<c06a11c8>] (__sys_sendmsg+0x3c/0x64)
    [13257.890300] [<c06a11c8>] (__sys_sendmsg) from [<c0209b40>] (ret_fast_syscall+0x0/0x34)
    
    The original code just triggered the warning but do nothing. It will
    caused the shared conntrack moves to the dying list and the packet be
    droppped (nf_ct_resolve_clash returns NF_DROP for dying conntrack).
    
    - Reproduce steps:
    
    +----------------------------+
    |          br0(bridge)       |
    |                            |
    +-+---------+---------+------+
      | eth0|   | eth1|   | eth2|
      |     |   |     |   |     |
      +--+--+   +--+--+   +---+-+
         |         |          |
         |         |          |
      +--+-+     +-+--+    +--+-+
      | PC1|     | PC2|    | PC3|
      +----+     +----+    +----+
    
    iptables -A FORWARD -m mark --mark 0x1000000/0x1000000 -j NFQUEUE --queue-num 100 --queue-bypass
    
    ps: Our nfq userspace program will set mark on packets whose connection
    has already been processed.
    
    PC1 sends broadcast packets simulated by hping3:
    
    hping3 --rand-source --udp 192.168.1.255 -i u100
    
    - Broadcast racing flow chart is as follow:
    
    br_handle_frame
      BR_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, br_handle_frame_finish)
      // skb->_nfct (unconfirmed conntrack) is constructed at PRE_ROUTING stage
      br_handle_frame_finish
        // check if this packet is broadcast
        br_flood_forward
          br_flood
            list_for_each_entry_rcu(p, &br->port_list, list) // iterate through each port
              maybe_deliver
                deliver_clone
                  skb = skb_clone(skb)
                  __br_forward
                    BR_HOOK(NFPROTO_BRIDGE, NF_BR_FORWARD,...)
                    // queue in our nfq and received by our userspace program
                    // goto __nf_conntrack_confirm with process context on CPU 1
        br_pass_frame_up
          BR_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN,...)
          // goto __nf_conntrack_confirm with softirq context on CPU 0
    
    Because conntrack confirm can happen at both INPUT and POSTROUTING
    stage.  So with NFQUEUE running, skb->_nfct with the same unconfirmed
    conntrack could race on different core.
    
    This patch fixes a repeating kernel splat, now it is only displayed
    once.
    
    Signed-off-by: Chieh-Min Wang <chiehminw@synology.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c4ea4a79f8b229bc3d318944e27618e1b05492b5
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Wed Feb 13 01:14:37 2019 +0900

    kprobes: Prohibit probing on RCU debug routine
    
    [ Upstream commit a39f15b9644fac3f950f522c39e667c3af25c588 ]
    
    Since kprobe itself depends on RCU, probing on RCU debug
    routine can cause recursive breakpoint bugs.
    
    Prohibit probing on RCU debug routines.
    
    int3
     ->do_int3()
       ->ist_enter()
         ->RCU_LOCKDEP_WARN()
           ->debug_lockdep_rcu_enabled() -> int3
    
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andrea Righi <righi.andrea@gmail.com>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/154998807741.31052.11229157537816341591.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 170d4294760489519bc657a7bcbb0160da8f5b4c
Author: Andrea Righi <righi.andrea@gmail.com>
Date:   Wed Feb 13 01:15:34 2019 +0900

    kprobes: Prohibit probing on bsearch()
    
    [ Upstream commit 02106f883cd745523f7766d90a739f983f19e650 ]
    
    Since kprobe breakpoing handler is using bsearch(), probing on this
    routine can cause recursive breakpoint problem.
    
    int3
     ->do_int3()
       ->ftrace_int3_handler()
         ->ftrace_location()
           ->ftrace_location_range()
             ->bsearch() -> int3
    
    Prohibit probing on bsearch().
    
    Signed-off-by: Andrea Righi <righi.andrea@gmail.com>
    Acked-by: Masami Hiramatsu <mhiramat@kernel.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: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/154998813406.31052.8791425358974650922.stgit@devbox
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34968a446c4ee2163c129c27154fd88940c2c3ca
Author: Tycho Andersen <tycho@tycho.ws>
Date:   Fri Jan 18 17:12:15 2019 -0700

    selftests: skip seccomp get_metadata test if not real root
    
    [ Upstream commit 3aa415dd2128e478ea3225b59308766de0e94d6b ]
    
    The get_metadata() test requires real root, so let's skip it if we're not
    real root.
    
    Note that I used XFAIL here because that's what the test does later if
    CONFIG_CHEKCKPOINT_RESTORE happens to not be enabled. After looking at the
    code, there doesn't seem to be a nice way to skip tests defined as TEST(),
    since there's no return code (I tried exit(KSFT_SKIP), but that didn't work
    either...). So let's do it this way to be consistent, and easier to fix
    when someone comes along and fixes it.
    
    Signed-off-by: Tycho Andersen <tycho@tycho.ws>
    Acked-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7981a5b4df776ca9be9747266784ebfc9fb7ad8a
Author: Shuah Khan <shuah@kernel.org>
Date:   Thu Jan 31 11:54:16 2019 -0700

    selftests: ir: fix warning: "%s" directive output may be truncated ’ directive output may be truncated
    
    [ Upstream commit ed675ed9da6d951322efd72d739d6b5ce1c18f02 ]
    
    Fix the following warning by sizing the buffer to max. of sysfs
    path max. size + d_name max. size.
    
    gcc -Wall -O2 -I../../../include/uapi ir_loopback.c  -o ../tools/testing/selftests/ir/ir_loopback
    ir_loopback.c: In function ‘lirc_open’:
    ir_loopback.c:71:37: warning: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 95 [-Wformat-truncation=]
        snprintf(buf, sizeof(buf), "/dev/%s", dent->d_name);
                                         ^~
    In file included from /usr/include/stdio.h:862:0,
                     from ir_loopback.c:14:
    /usr/include/x86_64-linux-gnu/bits/stdio2.h:64:10: note: ‘__builtin___snprintf_chk’ output between 6 and 261 bytes into a destination of size 100
       return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            __bos (__s), __fmt, __va_arg_pack ());
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Shuah Khan <shuah@kernel.org>
    Acked-by: Sean Young <sean@mess.org>
    Signed-off-by: Shuah Khan <shuah@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7b27cb19942eb4ea77e3e291168b788d2cfa4003
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Mon Jan 7 17:08:20 2019 +0100

    ACPI / video: Refactor and fix dmi_is_desktop()
    
    [ Upstream commit cecf3e3e0803462335e25d083345682518097334 ]
    
    This commit refactors the chassis-type detection introduced by
    commit 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true on
    Win8-ready _desktops_") (where desktop means anything without a builtin
    screen).
    
    The DMI chassis_type is an unsigned integer, so rather then doing a
    whole bunch of string-compares on it, convert it to an int and feed
    the result to a switch case.
    
    Note the switch case uses hex values, this is done because the spec
    uses hex values too. This changes the check for "Main Server Chassis"
    from checking for 11 decimal to 11 hexadecimal, this is a bug fix,
    the original check for 11 decimal was wrong.
    
    Fixes: 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true ...")
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    [ rjw: Drop redundant return statements ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4f9f04ca4f832c1f017256e2b95880644b88f6a9
Author: Sara Sharon <sara.sharon@intel.com>
Date:   Thu Dec 13 14:47:40 2018 +0200

    iwlwifi: pcie: fix emergency path
    
    [ Upstream commit c6ac9f9fb98851f47b978a9476594fc3c477a34d ]
    
    Allocator swaps the pending requests with 0 when it starts
    working. This means that relying on it n RX path to decide if
    to move to emergency is not always a good idea, since it may
    be zero, but there are still a lot of unallocated RBs in the
    system. Change allocator to decrement the pending requests on
    real time. It is more expensive since it accesses the atomic
    variable more times, but it gives the RX path a better idea
    of the system's status.
    
    Reported-by: Ilan Peer <ilan.peer@intel.com>
    Signed-off-by: Sara Sharon <sara.sharon@intel.com>
    Fixes: 868a1e863f95 ("iwlwifi: pcie: avoid empty free RB queue")
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2392dcb54ad2512d67e11e6669aaa0e12048f427
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Feb 12 14:37:15 2019 -0300

    perf coresight: Do not test for libopencsd by default
    
    [ Upstream commit 1c3b28fd7ae80c8f6bf1a09e1848e20a953c9ce4 ]
    
    Since it is not yet that generally available, avoid testing for the
    presence of libcoresight in the fast path test-all.bin feature test.
    
      # dnf search opencsd
      No matches found.
      # dnf search OpenCSD
      No matches found.
      # cat /etc/fedora-release
      Fedora release 29 (Twenty Nine)
      #
    
    I.e. right now, in my system test-all.bin is failing all the time since
    Fedora29 doesn't have libopencsd available:
    
      $ cat /tmp/build/perf/feature/test-all.make.output
      In file included from test-all.c:174:
      test-libopencsd.c:2:10: fatal error: opencsd/c_api/opencsd_c_api.h: No such file or directory
       #include <opencsd/c_api/opencsd_c_api.h>
                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      compilation terminated.
    
    See:
    
      6ab2b762befd ("perf build: Disable libbabeltrace check by default")
    
    For the rationale, as soon as libopencsd becomes more generally packaged
    and available, we do the same thing we did with babeltrace, enabling it
    by default, as done in:
    
      24787afbcd01 ("perf tools: Enable LIBBABELTRACE by default")
    
    For now, to explicitely ask for opencsd, make sure you have it installed
    and use:
    
       make -C tools/perf CORESIGHT=1
    
    The feature test output will be there as an empty file:
    
      $ ls -la /tmp/build/perf/feature/test-libopencsd.make.output
    
    Because the binary used for the feature check was successfully built:
    
      $ ls -la /tmp/build/perf/feature/test-libopencsd.bin
      -rwxrwxr-x. 1 acme acme 18336 Feb 12 14:49 /tmp/build/perf/feature/test-libopencsd.bin
      $ ldd /tmp/build/perf/feature/test-libopencsd.bin
            linux-vdso.so.1 (0x00007fffe18cc000)
            libopencsd_c_api.so.0 => /lib64/libopencsd_c_api.so.0 (0x00007fb8e67f6000)
            libopencsd.so.0 => /lib64/libopencsd.so.0 (0x00007fb8e676f000)
            libc.so.6 => /lib64/libc.so.6 (0x00007fb8e65a9000)
            libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fb8e6411000)
            libm.so.6 => /lib64/libm.so.6 (0x00007fb8e628d000)
            libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb8e6272000)
            /lib64/ld-linux-x86-64.so.2 (0x00007fb8e6828000)
      $
    
    And the resulting perf binary will be linked with it:
    
      -rw-rw-r--. 1 acme acme 0 Feb 12 14:49 /tmp/build/perf/feature/test-libopencsd.make.output
      $ ldd ~/bin/perf | grep opencsd
            libopencsd_c_api.so.0 => /lib64/libopencsd_c_api.so.0 (0x00007fd43097f000)
            libopencsd.so.0 => /lib64/libopencsd.so.0 (0x00007fd4308f8000)
      $
    
    To make sure this gets built before pushing things upstream I have a
    ubuntu:19.04-x-arm64 container that has:
    
      [root@quaco x-arm64]# grep CORESIGHT Dockerfile
      ENV EXTRA_MAKE_ARGS=CORESIGHT=1
      [root@quaco x-arm64]#
    
    So that I always build with libopencsd before pushing things upstream.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Kim Phillips <kim.phillips@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Mike Leach <mike.leach@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Link: https://lkml.kernel.org/n/tip-20vyy39jw9jgrijesi30fgox@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 528033f554c805b987a6a9f0661c55b2d95b6785
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Mon Feb 11 11:06:27 2019 +0100

    perf report: Add s390 diagnosic sampling descriptor size
    
    [ Upstream commit 2187d87eacd46f6214ce3dc9cfd7a558375a4153 ]
    
    On IBM z13 machine types 2964 and 2965 the descriptor
    sizes for sampling and diagnostic sampling entries
    might be missing in the trailer entry and are set to zero.
    
    This leads to a perf report failure when processing diagnostic
    sampling entries.
    
    This patch adds missing descriptor sizes when the trailer entry
    contains zero for these fields.
    
    Output before:
      [root@s38lp82 perf]#  ./perf report --stdio | fgrep Samples
      0xabbf0 [0x8]: failed to process type: 68
      Error:
      failed to process sample
      [root@s38lp82 perf]#
    
    Output after:
      [root@s38lp82 perf]#  ./perf report --stdio | fgrep Samples
      # Total Lost Samples: 0
      # Samples: 3K of event 'SF_CYCLES_BASIC_DIAG'
      # Samples: 162  of event 'CF_DIAG'
      [root@s38lp82 perf]#
    
    Fixes: 2b1444f2e28b ("perf report: Add raw report support for s390 auxiliary trace")
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Link: http://lkml.kernel.org/r/20190211100627.85714-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 59c09689808e1f4a67cf9e884a955c9d251ee5d8
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Feb 12 10:18:36 2019 -0300

    perf trace: Check if the 'fd' is negative when mapping it to pathname
    
    [ Upstream commit 051074867434cc520c08f188479d4757dcfdaef8 ]
    
    We were crashing when processing a negative fd:
    
      Program received signal SIGSEGV, Segmentation fault.
      0x0000000000609bbf in syscall_arg__scnprintf_ioctl_cmd (bf=0x1172eca "", size=2038, arg=0x7fffffff8360) at trace/beauty/ioctl.c:182
      182                   if (file->dev_maj == USB_DEVICE_MAJOR)
      Missing separate debuginfos, use: dnf debuginfo-install bzip2-libs-1.0.6-28.fc29.x86_64 elfutils-libelf-0.174-5.fc29.x86_64 elfutils-libs-0.174-5.fc29.x86_64 glib2-2.58.3-1.fc29.x86_64 libbabeltrace-1.5.6-1.fc29.x86_64 libunwind-1.2.1-6.fc29.x86_64 libuuid-2.32.1-1.fc29.x86_64 libxcrypt-4.4.3-2.fc29.x86_64 numactl-libs-2.0.12-1.fc29.x86_64 openssl-libs-1.1.1a-1.fc29.x86_64 pcre-8.42-6.fc29.x86_64 perl-libs-5.28.1-427.fc29.x86_64 popt-1.16-15.fc29.x86_64 python2-libs-2.7.15-11.fc29.x86_64 slang-2.3.2-4.fc29.x86_64 xz-libs-5.2.4-3.fc29.x86_64
      (gdb) bt
      #0  0x0000000000609bbf in syscall_arg__scnprintf_ioctl_cmd (bf=0x1172eca "", size=2038, arg=0x7fffffff8360) at trace/beauty/ioctl.c:182
      #1  0x000000000048e295 in syscall__scnprintf_val (sc=0x123b500, bf=0x1172eca "", size=2038, arg=0x7fffffff8360, val=21519)
          at builtin-trace.c:1594
      #2  0x000000000048e60d in syscall__scnprintf_args (sc=0x123b500, bf=0x1172ec6 "-1, ", size=2042, args=0x7ffff6a7c034 "\377\377\377\377",
          augmented_args=0x7ffff6a7c064, augmented_args_size=4, trace=0x7fffffffa8d0, thread=0x1175cd0) at builtin-trace.c:1661
      #3  0x000000000048f04e in trace__sys_enter (trace=0x7fffffffa8d0, evsel=0xb260b0, event=0x7ffff6a7bfe8, sample=0x7fffffff84f0)
          at builtin-trace.c:1880
      #4  0x00000000004915a4 in trace__handle_event (trace=0x7fffffffa8d0, event=0x7ffff6a7bfe8, sample=0x7fffffff84f0) at builtin-trace.c:2590
      #5  0x0000000000491eed in __trace__deliver_event (trace=0x7fffffffa8d0, event=0x7ffff6a7bfe8) at builtin-trace.c:2818
      #6  0x0000000000492030 in trace__deliver_event (trace=0x7fffffffa8d0, event=0x7ffff6a7bfe8) at builtin-trace.c:2845
      #7  0x0000000000492896 in trace__run (trace=0x7fffffffa8d0, argc=0, argv=0x7fffffffdb58) at builtin-trace.c:3040
      #8  0x000000000049603a in cmd_trace (argc=0, argv=0x7fffffffdb58) at builtin-trace.c:3952
      #9  0x00000000004d5103 in main (argc=1, argv=0x7fffffffdb58) at perf.c:474
      (gdb) p fd
      $1 = -1
      (gdb) p file
      $7 = (struct file *) 0xfffffffffffffff0
      (gdb) p ((struct thread_trace *)arg->thread)->files.table + fd
      $8 = (struct file *) 0xfffffffffffffff0
      (gdb)
    
    Check for that and return NULL instead.
    
    This problem was introduced recently, the other codepaths leading to
    thread_trace__files_entry() check for negative fds, like thread__fd_path(),
    but we need to do it at thread_trace__files_entry() as more users are now
    calling it directly.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: 2d473389f87a ("perf trace beauty: Export function to get the files for a thread")
    Link: https://lkml.kernel.org/n/tip-oq7bvaaf07gsd4yqty3107u2@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b4fdbce8ca4f96ea707bd8355fb9df87796be31
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Feb 12 10:51:31 2019 -0300

    perf beauty waitid options: Fix up prefix showing logic
    
    [ Upstream commit 1da7e0022784b0e05b49bf73521fa2cc4633af85 ]
    
    When introducing the possibility for selecting if the common prefix to
    options such as the waitid ones, i.e. all 'waitid' options start with
    'W', so, to make it make it more compact if configured to suppress it,
    'perf trace' will do so, other examples include mmap's PROT_ prefix for
    its 'prot' argument, etc, which, when showing the syscall argument name
    ends up producing duplicated info that clutters the screen, i.e.:
    
      # perf trace -e mmap --max-events 2 sleep 1
         0.000 ( 0.014 ms): sleep/20886 mmap(len: 112595, prot: PROT_READ, flags: MAP_PRIVATE, fd: 3) = 0x7f3e986d2000
         0.041 ( 0.005 ms): sleep/20886 mmap(len: 8192, prot: PROT_READ|PROT_WRITE, flags: MAP_PRIVATE|MAP_ANONYMOUS) = 0x7f3e986d0000
      #
    
    So it is possible to suppress that and make it more compact by having
    this in your ~/.perfconfig:
    
      # cat ~/.perfconfig
      [trace]
            show_prefix = no
      #
    
      # perf trace -e mmap --max-events 2 sleep 1
         0.000 ( 0.014 ms): sleep/8009 mmap(len: 112595, prot: READ, flags: PRIVATE, fd: 3) = 0x7ff2373de000
         0.040 ( 0.005 ms): sleep/8009 mmap(len: 8192, prot: READ|WRITE, flags: PRIVATE|ANONYMOUS) = 0x7ff2373dc000
      #
    
    To have it look more like strace's output, we instead want to suppress
    the arg name and show the prefix, so use:
    
      # cat ~/.perfconfig
      [trace]
            show_prefix = yes
            show_arg_names = no
      #
      # perf trace -e mmap --max-events 2 sleep 1
         0.000 ( 0.006 ms): sleep/15513 mmap(NULL, 112595, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7a9b6d3000
         0.020 ( 0.002 ms): sleep/15513 mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS) = 0x7f7a9b6d1000
      #
    
    When this logic was introduced a bug came with it when processing the
    waitid 'option' arg that ended up expecting 3 strings when just two were
    being provided, fix it.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: c65c83ffe904 ("perf trace: Allow asking for not suppressing common string prefixes")
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 336eb093ba1635bb50f117eeb85a16ab40d37afb
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Thu Feb 14 12:01:04 2019 -0300

    tools build: Add test-reallocarray.c to test-all.c to fix the build
    
    [ Upstream commit a96c03e8cdcf123384319f312d0a08a7a760bb35 ]
    
    When a test is in the FEATURE_TESTS_BASIC list in tools/build/Makefile.feature
    must be added to tools/build/feature/test-all.c, because the successfull
    compilation and linking of that test-all.bin file means that all the
    features listed in FEATURE_TESTS_BASIC are present in the system, so we
    don't have to go on feature by feature test building them.
    
    Since reallocarray() is expected to be present in modern systems, it has
    a place in FEATURE_TESTS_BASIC, so that we speed up the build process
    building just that file.
    
    For older systems, such as ubuntu:16.04 (build failure reported by Jin
    Yao) debian:8, and for the current flagship RHEL distro, RHEL7, the
    build will fail as test-all.bin (without test-reallocarray.c included)
    passes but reallocarray() isn't present, making the build fail with:
    
        CC       /tmp/build/perf/libbpf.o
        MKDIR    /tmp/build/perf/fs/
        CC       /tmp/build/perf/fs/tracing_path.o
        LD       /tmp/build/perf/fd/libapi-in.o
        CC       /tmp/build/perf/bpf.o
      libbpf.c: In function 'bpf_object__add_program':
      libbpf.c:367:10: error: implicit declaration of function 'reallocarray' [-Werror=implicit-function-declaration]
        progs = reallocarray(progs, nr_progs + 1, sizeof(progs[0]));
                ^
      libbpf.c:367:2: error: nested extern declaration of 'reallocarray' [-Werror=nested-externs]
        progs = reallocarray(progs, nr_progs + 1, sizeof(progs[0]));
        ^
      libbpf.c:367:8: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
        progs = reallocarray(progs, nr_progs + 1, sizeof(progs[0]));
              ^
      libbpf.c: In function 'bpf_object__elf_collect':
      libbpf.c:887:10: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
          reloc = reallocarray(reloc, nr_reloc,
                ^
      libbpf.c: In function 'bpf_program__reloc_text':
      libbpf.c:1394:12: error: assignment makes pointer from integer without a cast [-Werror=int-conversion]
         new_insn = reallocarray(prog->insns, new_cnt, sizeof(*insn));
                  ^
        CC       /tmp/build/perf/nlattr.o
    
    Even with:
    
      $ grep reallocarray /tmp/build/perf/FEATURE-DUMP
      feature-reallocarray=1
      $
    
    Which ubuntu:16.04.5 LTS doesn't have:
    
      perfbuilder@38a153a1bba8:/$ head -2 /etc/os-release
      NAME="Ubuntu"
      VERSION="16.04.5 LTS (Xenial Xerus)"
      perfbuilder@38a153a1bba8:/$ find /usr/include/ -name "*.h" | xargs grep -w reallocarray
      perfbuilder@38a153a1bba8:/$
    
    Fix it by including it to test-all.c, which ends up forcing the
    individual tests to be triggered and for the build process to notice
    that indeed reallocarray() is not there:
    
      perfbuilder@38a153a1bba8:/$ cat /tmp/build/perf/feature/test-all.make.output
      In file included from test-all.c:178:0:
      test-reallocarray.c: In function 'main_test_reallocarray':
      test-reallocarray.c:7:11: error: implicit declaration of function 'reallocarray' [-Werror=implicit-function-declaration]
        return !!reallocarray(NULL, 1, 1);
                 ^
      cc1: all warnings being treated as errors
      perfbuilder@38a153a1bba8:/$
    
    That is the only test that is failing on Ubuntu 16.03.5 LTS, so all
    tests are forced:
    
      perfbuilder@38a153a1bba8:/tmp/build/perf/feature$ ls -lSr *.make.output
      <SNIP successful tests>
      -rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 15:00 test-dwarf.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 14:16 test-cplus-demangle.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 15:00 test-bpf.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 15:00 test-backtrace.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder 104 Feb 14 15:00 test-bionic.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder 107 Feb 14 15:00 test-libunwind-x86.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder 115 Feb 14 15:00 test-libunwind-aarch64.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder 122 Feb 14 15:00 test-libbabeltrace.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder 254 Feb 14 15:00 test-reallocarray.make.output
      -rw-r--r--. 1 perfbuilder perfbuilder 312 Feb 14 15:00 test-all.make.output
      perfbuilder@38a153a1bba8:/tmp/build/perf/feature$
    
    And that reallocarray() one shows:
    
      perfbuilder@38a153a1bba8:/tmp/build/perf/feature$ cat test-reallocarray.make.output
      test-reallocarray.c: In function 'main':
      test-reallocarray.c:7:11: error: implicit declaration of function 'reallocarray' [-Werror=implicit-function-declaration]
        return !!reallocarray(NULL, 1, 1);
                 ^
      cc1: all warnings being treated as errors
      perfbuilder@38a153a1bba8:/tmp/build/perf/feature$
    
    Which now generates the expected result:
    
      perfbuilder@38a153a1bba8:~$ grep reallocarray /tmp/build/perf/FEATURE-DUMP
      feature-reallocarray=0
      perfbuilder@38a153a1bba8:~$
    
    The fallback mechanism kicks in and libbpf and perf are again buildable
    in systems without reallocarray():
    
      $ cat tools/include/tools/libc_compat.h
      // SPDX-License-Identifier: (LGPL-2.0+ OR BSD-2-Clause)
      /* Copyright (C) 2018 Netronome Systems, Inc. */
    
      #ifndef __TOOLS_LIBC_COMPAT_H
      #define __TOOLS_LIBC_COMPAT_H
    
      #include <stdlib.h>
      #include <linux/overflow.h>
    
      #ifdef COMPAT_NEED_REALLOCARRAY
      static inline void *reallocarray(void *ptr, size_t nmemb, size_t size)
      {
              size_t bytes;
    
              if (unlikely(check_mul_overflow(nmemb, size, &bytes)))
                      return NULL;
              return realloc(ptr, bytes);
      }
      #endif
      #endif
      $
    
    Reported-by: Jin Yao <yao.jin@linux.intel.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexei Starovoitov <ast@fb.com>
    Cc: Andrii Nakryiko <andrii.nakryiko@gmail.com>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jakub Kicinski <jakub.kicinski@netronome.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Yonghong Song <yhs@fb.com>
    Fixes: 531b014e7a2f ("tools: bpf: make use of reallocarray")
    Link: https://lkml.kernel.org/n/tip-aonqku8axii8rxki5g11w40b@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17e987679232684ef2668016a4bf66646d9547fa
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Feb 12 11:20:56 2019 -0300

    tools build: Add -lrt to FEATURE_CHECK_LDFLAGS-libaio
    
    [ Upstream commit aa8f9c517ebce7a0959da064ef2660ea03f133f8 ]
    
    Since we need it to resolve the AIO symbols, otherwise we fail with:
    
      $ cat /tmp/build/perf/feature/test-all.make.output
      /usr/bin/ld: /tmp/ccEqrj36.o: undefined reference to symbol 'aio_return64@@GLIBC_2.2.5'
      /usr/bin/ld: //usr/lib64/librt.so.1: error adding symbols: DSO missing from command line
      collect2: error: ld returned 1 exit status
      $
    
    When we added the aio support in 'perf record' only the test-libaio.bin
    target got the -lrt, i.e. the feature detection slow path. Fix it.
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 2a07d814747b ("tools build feature: Check if libaio is available")
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1cbdd24017989710d64ffdaa070aa8c9d8e7b6e0
Author: Michal Kazior <michal@plume.com>
Date:   Mon Feb 11 10:29:27 2019 +0100

    leds: lp55xx: fix null deref on firmware load failure
    
    [ Upstream commit 5ddb0869bfc1bca6cfc592c74c64a026f936638c ]
    
    I've stumbled upon a kernel crash and the logs
    pointed me towards the lp5562 driver:
    
    > <4>[306013.841294] lp5562 0-0030: Direct firmware load for lp5562 failed with error -2
    > <4>[306013.894990] lp5562 0-0030: Falling back to user helper
    > ...
    > <3>[306073.924886] lp5562 0-0030: firmware request failed
    > <1>[306073.939456] Unable to handle kernel NULL pointer dereference at virtual address 00000000
    > <4>[306074.251011] PC is at _raw_spin_lock+0x1c/0x58
    > <4>[306074.255539] LR is at release_firmware+0x6c/0x138
    > ...
    
    After taking a look I noticed firmware_release()
    could be called with either NULL or a dangling
    pointer.
    
    Fixes: 10c06d178df11 ("leds-lp55xx: support firmware interface")
    Signed-off-by: Michal Kazior <michal@plume.com>
    Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34cbc429c56d8c93ba60c7fa0a437005903bce13
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Feb 14 16:27:14 2019 -0500

    jbd2: fix race when writing superblock
    
    [ Upstream commit 538bcaa6261b77e71d37f5596c33127c1a3ec3f7 ]
    
    The jbd2 superblock is lockless now, so there is probably a race
    condition between writing it so disk and modifing contents of it, which
    may lead to checksum error. The following race is the one case that we
    have captured.
    
    jbd2                                fsstress
    jbd2_journal_commit_transaction
     jbd2_journal_update_sb_log_tail
      jbd2_write_superblock
       jbd2_superblock_csum_set         jbd2_journal_revoke
                                         jbd2_journal_set_features(revork)
                                         modify superblock
       submit_bh(checksum incorrect)
    
    Fix this by locking the buffer head before modifing it.  We always
    write the jbd2 superblock after we modify it, so this just means
    calling the lock_buffer() a little earlier.
    
    This checksum corruption problem can be reproduced by xfstests
    generic/475.
    
    Reported-by: zhangyi (F) <yi.zhang@huawei.com>
    Suggested-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9489ac42680c7dc5ea1a4410bf136336397b1fee
Author: Niklas Cassel <niklas.cassel@linaro.org>
Date:   Fri Feb 15 11:55:33 2019 +0100

    regulator: core: Take lock before applying system load
    
    [ Upstream commit e5e21f70bfd3a201e627b48aed82793d1bcd6f78 ]
    
    Take the regulator lock before applying system load.
    
    Fixes the following lockdep splat:
    
    [    5.583581] WARNING: CPU: 1 PID: 16 at drivers/regulator/core.c:925 drms_uA_update+0x114/0x360
    [    5.588467] Modules linked in:
    [    5.596833] CPU: 1 PID: 16 Comm: kworker/1:0 Not tainted 5.0.0-rc6-next-20190213-00002-g0fce66ab480f #18
    [    5.599933] Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
    [    5.609544] Workqueue: events qcom_channel_state_worker
    [    5.616209] pstate: 60000005 (nZCv daif -PAN -UAO)
    [    5.621152] pc : drms_uA_update+0x114/0x360
    [    5.626006] lr : drms_uA_update+0x110/0x360
    [    5.630084] sp : ffff0000124b3490
    [    5.634242] x29: ffff0000124b3490 x28: ffff800005326e00
    [    5.637735] x27: ffff0000124b35f8 x26: 000000000032bc48
    [    5.643117] x25: ffff800004c7e800 x24: ffff800004c6d500
    [    5.648411] x23: ffff800004c38a80 x22: 00000000000000d1
    [    5.653706] x21: 00000000001ab3f0 x20: ffff800004c7e800
    [    5.659001] x19: ffff0000114c3000 x18: ffffffffffffffff
    [    5.664297] x17: 0000000000000000 x16: 0000000000000000
    [    5.669592] x15: ffff0000114c3808 x14: 0720072007200720
    [    5.674888] x13: 00000000199c9b28 x12: ffff80002bcccc40
    [    5.680183] x11: ffff000012286000 x10: ffff0000114c3808
    [    5.685477] x9 : 0720072007200720 x8 : ffff000010e9e808
    [    5.690772] x7 : ffff0000106da568 x6 : 0000000000000000
    [    5.696067] x5 : 0000000000000000 x4 : 0000000000000000
    [    5.701362] x3 : 0000000000000004 x2 : 0000000000000000
    [    5.706658] x1 : 0000000000000000 x0 : 0000000000000000
    [    5.711952] Call trace:
    [    5.717223]  drms_uA_update+0x114/0x360
    [    5.719405]  regulator_register+0xb30/0x1140
    [    5.723230]  devm_regulator_register+0x4c/0xa8
    [    5.727745]  rpm_reg_probe+0xfc/0x1b0
    [    5.731992]  platform_drv_probe+0x50/0xa0
    [    5.735727]  really_probe+0x20c/0x2b8
    [    5.739718]  driver_probe_device+0x58/0x100
    [    5.743368]  __device_attach_driver+0x90/0xd0
    [    5.747363]  bus_for_each_drv+0x64/0xc8
    [    5.751870]  __device_attach+0xd8/0x138
    [    5.755516]  device_initial_probe+0x10/0x18
    [    5.759341]  bus_probe_device+0x98/0xa0
    [    5.763502]  device_add+0x3d0/0x640
    [    5.767319]  of_device_add+0x48/0x58
    [    5.770793]  of_platform_device_create_pdata+0xb0/0x128
    [    5.774629]  of_platform_bus_create+0x174/0x370
    [    5.779569]  of_platform_populate+0x78/0xe0
    [    5.784082]  qcom_smd_rpm_probe+0x80/0xa0
    [    5.788245]  rpmsg_dev_probe+0x114/0x1a0
    [    5.792411]  really_probe+0x20c/0x2b8
    [    5.796401]  driver_probe_device+0x58/0x100
    [    5.799964]  __device_attach_driver+0x90/0xd0
    [    5.803960]  bus_for_each_drv+0x64/0xc8
    [    5.808468]  __device_attach+0xd8/0x138
    [    5.812115]  device_initial_probe+0x10/0x18
    [    5.815936]  bus_probe_device+0x98/0xa0
    [    5.820099]  device_add+0x3d0/0x640
    [    5.823916]  device_register+0x1c/0x28
    [    5.827391]  rpmsg_register_device+0x4c/0x90
    [    5.831216]  qcom_channel_state_worker+0x170/0x298
    [    5.835651]  process_one_work+0x294/0x6e8
    [    5.840241]  worker_thread+0x40/0x450
    [    5.844318]  kthread+0x11c/0x120
    [    5.847961]  ret_from_fork+0x10/0x18
    [    5.851260] irq event stamp: 9090
    [    5.854820] hardirqs last  enabled at (9089): [<ffff000010160798>] console_unlock+0x3e0/0x5b0
    [    5.858086] hardirqs last disabled at (9090): [<ffff0000100817cc>] do_debug_exception+0x104/0x140
    [    5.866596] softirqs last  enabled at (9086): [<ffff000010082024>] __do_softirq+0x474/0x574
    [    5.875446] softirqs last disabled at (9079): [<ffff0000100f2254>] irq_exit+0x13c/0x148
    [    5.883598] ---[ end trace 6984ef7f081afa21 ]---
    
    Fixes: fa94e48e13a1 ("regulator: core: Apply system load even if no consumer loads")
    Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7440c206c38fd91956cbc2f36942e38a29ad193c
Author: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Date:   Wed Jan 30 02:53:19 2019 +0100

    drm/sched: Fix entities with 0 rqs.
    
    [ Upstream commit 1decbf6bb0b4dc56c9da6c5e57b994ebfc2be3aa ]
    
    Some blocks in amdgpu can have 0 rqs.
    
    Job creation already fails with -ENOENT when entity->rq is NULL,
    so jobs cannot be pushed. Without a rq there is no scheduler to
    pop jobs, and rq selection already does the right thing with a
    list of length 0.
    
    So the operations we need to fix are:
      - Creation, do not set rq to rq_list[0] if the list can have length 0.
      - Do not flush any jobs when there is no rq.
      - On entity destruction handle the rq = NULL case.
      - on set_priority, do not try to change the rq if it is NULL.
    
    Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa6c9fcac011bf67a43bb36bccb54aebd69fff83
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Fri Feb 15 17:55:51 2019 +0100

    efi: Fix build error due to enum collision between efi.h and ima.h
    
    [ Upstream commit 5c418dc789a3898717ebf2caa5716ba91a7150b2 ]
    
    The following commit:
    
      a893ea15d764 ("tpm: move tpm_chip definition to include/linux/tpm.h")
    
    introduced a build error when both IMA and EFI are enabled:
    
        In file included from ../security/integrity/ima/ima_fs.c:30:
        ../security/integrity/ima/ima.h:176:7: error: redeclaration of enumerator "NONE"
    
    What happens is that both headers (ima.h and efi.h) defines the same
    'NONE' constant, and it broke when they started getting included from
    the same file:
    
    Rework to prefix the EFI enum with 'EFI_*'.
    
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190215165551.12220-2-ard.biesheuvel@linaro.org
    [ Cleaned up the changelog a bit. ]
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55d7152d37dccfa9add45df82fd45c373e032f46
Author: Tejun Heo <tj@kernel.org>
Date:   Fri Feb 15 11:01:31 2019 -0800

    cgroup, rstat: Don't flush subtree root unless necessary
    
    [ Upstream commit b4ff1b44bcd384d22fcbac6ebaf9cc0d33debe50 ]
    
    cgroup_rstat_cpu_pop_updated() is used to traverse the updated cgroups
    on flush.  While it was only visiting updated ones in the subtree, it
    was visiting @root unconditionally.  We can easily check whether @root
    is updated or not by looking at its ->updated_next just as with the
    cgroups in the subtree.
    
    * Remove the unnecessary cgroup_parent() test.  The system root cgroup
      is never updated and thus its ->updated_next is always NULL.  No
      need to test whether cgroup_parent() exists in addition to
      ->updated_next.
    
    * Terminate traverse if ->updated_next is NULL.  This can only happen
      for subtree @root and there's no reason to visit it if it's not
      marked updated.
    
    This reduces cpu consumption when reading a lot of rstat backed files.
    In a micro benchmark reading stat from ~1600 cgroups, the sys time was
    lowered by >40%.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2fe8be270932ea0ab076aa42c0ecc914f6ae1753
Author: Hong Liu <hong.liu@intel.com>
Date:   Tue Feb 12 20:05:20 2019 +0800

    HID: intel-ish-hid: avoid binding wrong ishtp_cl_device
    
    [ Upstream commit 0d28f49412405d87d3aae83da255070a46e67627 ]
    
    When performing a warm reset in ishtp bus driver, the ishtp_cl_device
    will not be removed, its fw_client still points to the already freed
    ishtp_device.fw_clients array.
    
    Later after driver finishing ishtp client enumeration, this dangling
    pointer may cause driver to bind the wrong ishtp_cl_device to the new
    client, causing wrong callback to be called for messages intended for
    the new client.
    
    This helps in development of firmware where frequent switching of
    firmwares is required without Linux reboot.
    
    Signed-off-by: Hong Liu <hong.liu@intel.com>
    Tested-by: Hongyan Song <hongyan.song@intel.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e6eef52400547322907c2e5e4eb8a825f8ed4e59
Author: Aurelien Jarno <aurelien@aurel32.net>
Date:   Thu Dec 6 20:05:34 2018 +0100

    vfs: fix preadv64v2 and pwritev64v2 compat syscalls with offset == -1
    
    [ Upstream commit cc4b1242d7e3b42eed73881fc749944146493e4f ]
    
    The preadv2 and pwritev2 syscalls are supposed to emulate the readv and
    writev syscalls when offset == -1. Therefore the compat code should
    check for offset before calling do_compat_preadv64 and
    do_compat_pwritev64. This is the case for the preadv2 and pwritev2
    syscalls, but handling of offset == -1 is missing in their 64-bit
    equivalent.
    
    This patch fixes that, calling do_compat_readv and do_compat_writev when
    offset == -1. This fixes the following glibc tests on x32:
     - misc/tst-preadvwritev2
     - misc/tst-preadvwritev64v2
    
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: H.J. Lu <hjl.tools@gmail.com>
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a8254b01ca211c784019d8d2ad3da1238a32a0e5
Author: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
Date:   Thu Feb 14 16:23:20 2019 +0200

    xen/gntdev: Do not destroy context while dma-bufs are in use
    
    [ Upstream commit fa13e665e02874c0a5f4d06d6967ae34a6cb3d6a ]
    
    If there are exported DMA buffers which are still in use and
    grant device is closed by either normal user-space close or by
    a signal this leads to the grant device context to be destroyed,
    thus making it not possible to correctly destroy those exported
    buffers when they are returned back to gntdev and makes the module
    crash:
    
    [  339.617540] [<ffff00000854c0d8>] dmabuf_exp_ops_release+0x40/0xa8
    [  339.617560] [<ffff00000867a6e8>] dma_buf_release+0x60/0x190
    [  339.617577] [<ffff0000082211f0>] __fput+0x88/0x1d0
    [  339.617589] [<ffff000008221394>] ____fput+0xc/0x18
    [  339.617607] [<ffff0000080ed4e4>] task_work_run+0x9c/0xc0
    [  339.617622] [<ffff000008089714>] do_notify_resume+0xfc/0x108
    
    Fix this by referencing gntdev on each DMA buffer export and
    unreferencing on buffer release.
    
    Signed-off-by: Oleksandr Andrushchenko <oleksandr_andrushchenko@epam.com>
    Reviewed-by: Boris Ostrovsky@oracle.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6318df6b0cc3cf97faa498bee488603a5476553
Author: Marek Vasut <marek.vasut+renesas@gmail.com>
Date:   Sat Feb 16 14:46:27 2019 +0100

    gpio: of: Apply regulator-gpio quirk only to enable-gpios
    
    [ Upstream commit 0e7d6f94016407fd7e1ae472e254d64d4454e9c8 ]
    
    Since commit d6cd33ad7102 ("regulator: gpio: Convert to use descriptors")
    the GPIO regulator had inverted the polarity of the control GPIO. This
    problem manifested itself on systems with DT containing the following
    description (snippet from salvator-common.dtsi):
    
            gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
            gpios-states = <1>;
            states = <3300000 1
                      1800000 0>;
    
    Prior to the aforementioned commit, the gpio-regulator code used
    gpio_request_array() to claim the GPIO(s) specified in the "gpios"
    DT node, while the commit changed that to devm_gpiod_get_index().
    
    The legacy gpio_request_array() calls gpio_request_one() and then
    gpiod_request(), which parses the DT flags of the "gpios" node and
    populates the GPIO descriptor flags field accordingly.
    
    The new devm_gpiod_get_index() calls gpiod_get_index(), then
    of_find_gpio(), of_get_named_gpiod_flags() with flags != NULL,
    and then of_gpio_flags_quirks(). Since commit a603a2b8d86e
    ("gpio: of: Add special quirk to parse regulator flags"),
    of_gpio_flags_quirks() contains a quirk for regulator-gpio
    which was never triggered by the legacy gpio_request_array()
    code path, but is triggered by devm_gpiod_get_index() code
    path.
    
    This quirk checks whether a GPIO is associated with a fixed
    or gpio-regulator and if so, checks two additional conditions.
    First, whether such GPIO is active-low, and if so, ignores the
    active-low flag. Second, whether the regulator DT node does
    have an "enable-active-high" property and if the property is
    NOT present, sets the GPIO flags as active-low.
    
    The second check triggers a problem, since it is applied to all
    GPIOs associated with a gpio-regulator, rather than only on the
    "enable" GPIOs, as the old code did. This changes the way the
    gpio-regulator interprets the DT description of the control
    GPIOs.
    
    The old code using gpio_request_array() explicitly parsed the
    "enable-active-high" DT property and only applied it to the
    GPIOs described in the "enable-gpios" DT node, and only if
    those were present.
    
    This patch fixes the quirk code by only applying the quirk
    to "enable-gpios", thus restoring the old behavior.
    
    Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: Jan Kotas <jank@cadence.com>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Cc: linux-renesas-soc@vger.kernel.org
    To: linux-gpio@vger.kernel.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7d361b8dbafe46eb5669e30dafe1a73baa2ee835
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Sun Feb 10 22:49:15 2019 +0100

    mt76: usb: do not run mt76u_queues_deinit twice
    
    [ Upstream commit b3098121c42caaf3aea239b8655cf52d45be116f ]
    
    Do not call mt76u_queues_deinit routine in mt76u_alloc_queues error path
    since it will be run in mt76x0u_register_device or
    mt76x2u_register_device error path. Current implementation triggers the
    following kernel warning:
    
    [   67.005516] WARNING: CPU: 2 PID: 761 at lib/refcount.c:187 refcount_sub_and_test_checked+0xa4/0xb8
    [   67.019513] refcount_t: underflow; use-after-free.
    [   67.099872] Hardware name: BCM2835
    [   67.106268] Backtrace:
    [   67.111584] [<8010c91c>] (dump_backtrace) from [<8010cc00>] (show_stack+0x20/0x24)
    [   67.124974]  r6:60000013 r5:ffffffff r4:00000000 r3:a50bade6
    [   67.132226] [<8010cbe0>] (show_stack) from [<807ca5f4>] (dump_stack+0xc8/0x114)
    [   67.141225] [<807ca52c>] (dump_stack) from [<8011e65c>] (__warn+0xf4/0x120)
    [   67.149849]  r9:000000bb r8:804d0138 r7:00000009 r6:8099dc84 r5:00000000 r4:b66c7b58
    [   67.160767] [<8011e568>] (__warn) from [<8011e6d0>] (warn_slowpath_fmt+0x48/0x50)
    [   67.171436]  r9:7f65e128 r8:80d1419c r7:80c0bac4 r6:b97b3044 r5:b7368e00 r4:00000000
    [   67.182433] [<8011e68c>] (warn_slowpath_fmt) from [<804d0138>] (refcount_sub_and_test_checked+0xa4/0xb8)
    [   67.195221]  r3:80c91c25 r2:8099dc94
    [   67.200370]  r4:00000000
    [   67.204397] [<804d0094>] (refcount_sub_and_test_checked) from [<804d0164>] (refcount_dec_and_test_checked+0x18/0x1c)
    [   67.218046]  r4:b7368e00 r3:00000001
    [   67.223125] [<804d014c>] (refcount_dec_and_test_checked) from [<805db49c>] (usb_free_urb+0x20/0x4c)
    [   67.235358] [<805db47c>] (usb_free_urb) from [<7f639804>] (mt76u_buf_free+0x98/0xac [mt76_usb])
    [   67.247302]  r4:00000001 r3:00000001
    [   67.252468] [<7f63976c>] (mt76u_buf_free [mt76_usb]) from [<7f639ef8>] (mt76u_queues_deinit+0x44/0x100 [mt76_usb])
    [   67.266102]  r8:b8fe8600 r7:b5dac480 r6:b5dace20 r5:00000001 r4:00000000 r3:00000080
    [   67.277132] [<7f639eb4>] (mt76u_queues_deinit [mt76_usb]) from [<7f65c040>] (mt76x0u_cleanup+0x40/0x4c [mt76x0u])
    [   67.290737]  r7:b5dac480 r6:b8fe8600 r5:ffffffea r4:b5dace20
    [   67.298069] [<7f65c000>] (mt76x0u_cleanup [mt76x0u]) from [<7f65c564>] (mt76x0u_probe+0x1f0/0x354 [mt76x0u])
    [   67.311174]  r4:b5dace20 r3:00000000
    [   67.316312] [<7f65c374>] (mt76x0u_probe [mt76x0u]) from [<805e0b6c>] (usb_probe_interface+0x104/0x240)
    [   67.328915]  r7:00000000 r6:7f65e034 r5:b6634800 r4:b8fe8620
    [   67.336276] [<805e0a68>] (usb_probe_interface) from [<8056a8bc>] (really_probe+0x224/0x2f8)
    [   67.347965]  r10:b65f0a00 r9:00000019 r8:7f65e034 r7:80d3e124 r6:00000000 r5:80d3e120
    [   67.359175]  r4:b8fe8620 r3:805e0a68
    [   67.364384] [<8056a698>] (really_probe) from [<8056ab60>] (driver_probe_device+0x6c/0x180)
    [   67.375974]  r10:b65f0a00 r9:7f65e2c0 r8:b8fe8620 r7:00000000 r6:7f65e034 r5:7f65e034
    [   67.387170]  r4:b8fe8620 r3:00000000
    [   67.392378] [<8056aaf4>] (driver_probe_device) from [<8056ad54>] (__driver_attach+0xe0/0xe4)
    [   67.404097]  r9:7f65e2c0 r8:7f65d22c r7:00000000 r6:b8fe8654 r5:7f65e034 r4:b8fe8620
    [   67.415122] [<8056ac74>] (__driver_attach) from [<8056880c>] (bus_for_each_dev+0x68/0xa0)
    [   67.426628]  r6:8056ac74 r5:7f65e034 r4:00000000 r3:00000027
    [   67.434017] [<805687a4>] (bus_for_each_dev) from [<8056a1cc>] (driver_attach+0x28/0x30)
    [   67.445394]  r6:80c6ddc8 r5:b7368f80 r4:7f65e034
    [   67.451703] [<8056a1a4>] (driver_attach) from [<80569c24>] (bus_add_driver+0x194/0x21c)
    [   67.463081] [<80569a90>] (bus_add_driver) from [<8056b504>] (driver_register+0x8c/0x124)
    [   67.474560]  r7:80c6ddc8 r6:7f65e034 r5:00000000 r4:7f65e034
    [   67.481964] [<8056b478>] (driver_register) from [<805df510>] (usb_register_driver+0x74/0x140)
    [   67.493901]  r5:00000000 r4:7f65e000
    [   67.499131] [<805df49c>] (usb_register_driver) from [<7f661024>] (mt76x0_driver_init+0x24/0x1000 [mt76x0u])
    [   67.512258]  r9:00000001 r8:7f65e308 r7:00000000 r6:80c08d48 r5:7f661000 r4:7f65e2c0
    [   67.523404] [<7f661000>] (mt76x0_driver_init [mt76x0u]) from [<80102f6c>] (do_one_initcall+0x4c/0x210)
    [   67.536142] [<80102f20>] (do_one_initcall) from [<801ae63c>] (do_init_module+0x6c/0x21c)
    [   67.547639]  r8:7f65e308 r7:80c08d48 r6:b65f0ac0 r5:7f65e2c0 r4:7f65e2c0
    [   67.556129] [<801ae5d0>] (do_init_module) from [<801ad68c>] (load_module+0x1d10/0x2304)
    
    Fixes: b40b15e1521f ("mt76: add usb support to mt76 layer")
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af1ef012b95f522f81a5d9b3c33361a0e2400972
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Fri Feb 8 11:17:47 2019 -0500

    media: rockchip/vpu: Correct return type for mem2mem buffer helpers
    
    [ Upstream commit 29701c3612fa025d5e8dc64c7a4ae8dc4763912e ]
    
    Fix the assigned type of mem2mem buffer handling API.
    Namely, these functions:
    
     v4l2_m2m_next_buf
     v4l2_m2m_last_buf
     v4l2_m2m_buf_remove
     v4l2_m2m_next_src_buf
     v4l2_m2m_next_dst_buf
     v4l2_m2m_last_src_buf
     v4l2_m2m_last_dst_buf
     v4l2_m2m_src_buf_remove
     v4l2_m2m_dst_buf_remove
    
    return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
    
    Fixing this is necessary to fix the mem2mem buffer handling API,
    changing the return to the correct struct vb2_v4l2_buffer instead
    of a void pointer.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d544b0856f3f88de078066e135fbfb0398fdf7ed
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Fri Feb 8 11:17:39 2019 -0500

    media: mtk-jpeg: Correct return type for mem2mem buffer helpers
    
    [ Upstream commit 1b275e4e8b70dbff9850874b30831c1bd8d3c504 ]
    
    Fix the assigned type of mem2mem buffer handling API.
    Namely, these functions:
    
     v4l2_m2m_next_buf
     v4l2_m2m_last_buf
     v4l2_m2m_buf_remove
     v4l2_m2m_next_src_buf
     v4l2_m2m_next_dst_buf
     v4l2_m2m_last_src_buf
     v4l2_m2m_last_dst_buf
     v4l2_m2m_src_buf_remove
     v4l2_m2m_dst_buf_remove
    
    return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
    
    Fixing this is necessary to fix the mem2mem buffer handling API,
    changing the return to the correct struct vb2_v4l2_buffer instead
    of a void pointer.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 569ce17b4cd9508451cff9caa14b0b9e47c4f61c
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Fri Feb 8 11:17:42 2019 -0500

    media: mx2_emmaprp: Correct return type for mem2mem buffer helpers
    
    [ Upstream commit 8d20dcefe471763f23ad538369ec65b51993ffff ]
    
    Fix the assigned type of mem2mem buffer handling API.
    Namely, these functions:
    
     v4l2_m2m_next_buf
     v4l2_m2m_last_buf
     v4l2_m2m_buf_remove
     v4l2_m2m_next_src_buf
     v4l2_m2m_next_dst_buf
     v4l2_m2m_last_src_buf
     v4l2_m2m_last_dst_buf
     v4l2_m2m_src_buf_remove
     v4l2_m2m_dst_buf_remove
    
    return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
    
    Fixing this is necessary to fix the mem2mem buffer handling API,
    changing the return to the correct struct vb2_v4l2_buffer instead
    of a void pointer.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 76499752191f6190a13909261f6cdb96cb4e4b57
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Fri Feb 8 11:17:44 2019 -0500

    media: s5p-g2d: Correct return type for mem2mem buffer helpers
    
    [ Upstream commit 30fa627b32230737bc3f678067e2adfecf956987 ]
    
    Fix the assigned type of mem2mem buffer handling API.
    Namely, these functions:
    
     v4l2_m2m_next_buf
     v4l2_m2m_last_buf
     v4l2_m2m_buf_remove
     v4l2_m2m_next_src_buf
     v4l2_m2m_next_dst_buf
     v4l2_m2m_last_src_buf
     v4l2_m2m_last_dst_buf
     v4l2_m2m_src_buf_remove
     v4l2_m2m_dst_buf_remove
    
    return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
    
    Fixing this is necessary to fix the mem2mem buffer handling API,
    changing the return to the correct struct vb2_v4l2_buffer instead
    of a void pointer.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8852dab94f0450ba7e265a9f8044e4f17e55d5b7
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Fri Feb 8 11:17:43 2019 -0500

    media: rockchip/rga: Correct return type for mem2mem buffer helpers
    
    [ Upstream commit da2d3a4e4adabc6ccfb100bc9abd58ee9cd6c4b7 ]
    
    Fix the assigned type of mem2mem buffer handling API.
    Namely, these functions:
    
     v4l2_m2m_next_buf
     v4l2_m2m_last_buf
     v4l2_m2m_buf_remove
     v4l2_m2m_next_src_buf
     v4l2_m2m_next_dst_buf
     v4l2_m2m_last_src_buf
     v4l2_m2m_last_dst_buf
     v4l2_m2m_src_buf_remove
     v4l2_m2m_dst_buf_remove
    
    return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
    
    Fixing this is necessary to fix the mem2mem buffer handling API,
    changing the return to the correct struct vb2_v4l2_buffer instead
    of a void pointer.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f31e32fd5a5e68b450715d7eaf737cd91ac0aeb
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Fri Feb 8 11:17:45 2019 -0500

    media: s5p-jpeg: Correct return type for mem2mem buffer helpers
    
    [ Upstream commit 4a88f89885c7cf65c62793f385261a6e3315178a ]
    
    Fix the assigned type of mem2mem buffer handling API.
    Namely, these functions:
    
     v4l2_m2m_next_buf
     v4l2_m2m_last_buf
     v4l2_m2m_buf_remove
     v4l2_m2m_next_src_buf
     v4l2_m2m_next_dst_buf
     v4l2_m2m_last_src_buf
     v4l2_m2m_last_dst_buf
     v4l2_m2m_src_buf_remove
     v4l2_m2m_dst_buf_remove
    
    return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
    
    Fixing this is necessary to fix the mem2mem buffer handling API,
    changing the return to the correct struct vb2_v4l2_buffer instead
    of a void pointer.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 21ad47c398359a91b52865a9c61853fc612f161f
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Fri Feb 8 11:17:46 2019 -0500

    media: sh_veu: Correct return type for mem2mem buffer helpers
    
    [ Upstream commit 43c145195c7fc3025ee7ecfc67112ac1c82af7c2 ]
    
    Fix the assigned type of mem2mem buffer handling API.
    Namely, these functions:
    
     v4l2_m2m_next_buf
     v4l2_m2m_last_buf
     v4l2_m2m_buf_remove
     v4l2_m2m_next_src_buf
     v4l2_m2m_next_dst_buf
     v4l2_m2m_last_src_buf
     v4l2_m2m_last_dst_buf
     v4l2_m2m_src_buf_remove
     v4l2_m2m_dst_buf_remove
    
    return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
    
    Fixing this is necessary to fix the mem2mem buffer handling API,
    changing the return to the correct struct vb2_v4l2_buffer instead
    of a void pointer.
    
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a6d9661c5d1614d0de3d6dab93e18e109fb0d9f6
Author: Akinobu Mita <akinobu.mita@gmail.com>
Date:   Sun Feb 17 10:17:47 2019 -0500

    media: ov7740: fix runtime pm initialization
    
    [ Upstream commit 12aceee1f412c3ddc7750155fec06c906f14ab51 ]
    
    The runtime PM of this device is enabled after v4l2_ctrl_handler_setup(),
    and this makes this device's runtime PM usage count a negative value.
    
    The ov7740_set_ctrl() tries to do something only if the device's runtime
    PM usage counter is nonzero.
    
    ov7740_set_ctrl()
    {
            if (!pm_runtime_get_if_in_use(&client->dev))
                    return 0;
    
            <do something>;
    
            pm_runtime_put(&client->dev);
    
            return ret;
    }
    
    However, the ov7740_set_ctrl() is called by v4l2_ctrl_handler_setup()
    while the runtime PM of this device is not yet enabled.  In this case,
    the pm_runtime_get_if_in_use() returns -EINVAL (!= 0).
    
    Therefore we can't bail out of this function and the usage count is
    decreased by pm_runtime_put() without increment.
    
    This fixes this problem by enabling the runtime PM of this device before
    v4l2_ctrl_handler_setup() so that the ov7740_set_ctrl() is always called
    when the runtime PM is enabled.
    
    Cc: Wenyou Yang <wenyou.yang@microchip.com>
    Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
    Tested-by: Eugen Hristev <eugen.hristev@microchip.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ed83655ce8c29ac61a0d0b73aef5faea02b397cf
Author: Wen Yang <yellowriver2010@hotmail.com>
Date:   Mon Feb 18 15:13:47 2019 +0000

    SoC: imx-sgtl5000: add missing put_device()
    
    [ Upstream commit 8fa857da9744f513036df1c43ab57f338941ae7d ]
    
    The of_find_device_by_node() takes a reference to the underlying device
    structure, we should release that reference.
    
    Detected by coccinelle with the following warnings:
    ./sound/soc/fsl/imx-sgtl5000.c:169:1-7: ERROR: missing put_device;
    call of_find_device_by_node on line 105, but without a corresponding
    object release within this function.
    ./sound/soc/fsl/imx-sgtl5000.c:177:1-7: ERROR: missing put_device;
    call of_find_device_by_node on line 105, but without a corresponding
    object release within this function.
    
    Signed-off-by: Wen Yang <yellowriver2010@hotmail.com>
    Cc: Timur Tabi <timur@kernel.org>
    Cc: Nicolin Chen <nicoleotsuka@gmail.com>
    Cc: Xiubo Li <Xiubo.Lee@gmail.com>
    Cc: Fabio Estevam <festevam@gmail.com>
    Cc: Liam Girdwood <lgirdwood@gmail.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: Shawn Guo <shawnguo@kernel.org>
    Cc: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
    Cc: NXP Linux Team <linux-imx@nxp.com>
    Cc: alsa-devel@alsa-project.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a75ad663203b761996cf0f2b7724f5e00de5bf24
Author: He Kuang <hekuang@huawei.com>
Date:   Tue Feb 19 21:05:31 2019 +0800

    perf report: Don't shadow inlined symbol with different addr range
    
    [ Upstream commit 7346195e8643482968f547483e0d823ec1982fab ]
    
    We can't assume inlined symbols with the same name are equal, because
    their address range may be different. This will cause the symbols with
    different addresses be shadowed when adding to the hist entry, and lead
    to ERANGE error when checking the symbol address during sample parse,
    the addr should be within the range of [sym.start, sym.end].
    
    The error message is like: "0x36aea60 [0x8]: failed to process type: 68".
    
    The second parameter of symbol__new() is the length of the fake symbol
    for the inline frame, which is the subtraction of the end and start
    address of base_sym.
    
    Signed-off-by: He Kuang <hekuang@huawei.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Milian Wolff <milian.wolff@kdab.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: aa441895f7b4 ("perf report: Compare symbol name for inlined frames when sorting")
    Link: http://lkml.kernel.org/r/20190219130531.15692-1-hekuang@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c3a8705881ccd39b813ca5ed7af25859a7f6625b
Author: Brian Norris <briannorris@chromium.org>
Date:   Thu Feb 14 16:31:29 2019 -0800

    mwifiex: don't advertise IBSS features without FW support
    
    [ Upstream commit 6f21ab30469d670de620f758330aca9f3433f693 ]
    
    As it is, doing something like
    
      # iw phy phy0 interface add foobar type ibss
    
    on a firmware that doesn't have ad-hoc support just yields failures of
    HostCmd_CMD_SET_BSS_MODE, which happened to return a '-1' error code
    (-EPERM? not really right...) and sometimes may even crash the firmware
    along the way.
    
    Let's parse the firmware capability flag while registering the wiphy, so
    we don't allow attempting IBSS at all, and we get a proper -EOPNOTSUPP
    from nl80211 instead.
    
    Fixes: e267e71e68ae ("mwifiex: Disable adhoc feature based on firmware capability")
    Signed-off-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aa8c73c8682f54d327b3ca6b936f097ce88f8f3a
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Tue Feb 19 16:36:39 2019 +0100

    perf test: Fix failure of 'evsel-tp-sched' test on s390
    
    [ Upstream commit 03d309711d687460d1345de8a0363f45b1c8cd11 ]
    
    Commit 489338a717a0 ("perf tests evsel-tp-sched: Fix bitwise operator")
    causes test case 14 "Parse sched tracepoints fields" to fail on s390.
    
    This test succeeds on x86.
    
    In fact this test now fails on all architectures with type char treated
    as type unsigned char.
    
    The root cause is the signed-ness of character arrays in the tracepoints
    sched_switch for structure members prev_comm and next_comm.
    
    On s390 the output of:
    
     [root@m35lp76 perf]# cat /sys/kernel/debug/tracing/events/sched/sched_switch/format
     name: sched_switch
     ID: 287
     format:
       field:unsigned short common_type; offset:0; size:2;  signed:0;
       ...
       field:char prev_comm[16]; offset:8; size:16; signed:0;
       ...
       field:char next_comm[16]; offset:40; size:16; signed:0;
    
    reveals the character arrays prev_comm and next_comm are per
    default unsigned char and have values in the range of 0..255.
    
    On x86 both fields are signed as this output shows:
     [root@f29]# cat /sys/kernel/debug/tracing/events/sched/sched_switch/format
     name: sched_switch
     ID: 287
     format:
       field:unsigned short common_type; offset:0; size:2;  signed:0;
       ...
       field:char prev_comm[16]; offset:8; size:16; signed:1;
       ...
       field:char next_comm[16]; offset:40; size:16; signed:1;
    
    and the character arrays prev_comm and next_comm are per default signed
    char and have values in the range of -1..127.  The implementation of
    type char is architecture specific.
    
    Since the character arrays in both tracepoints sched_switch and
    sched_wakeup should contain ascii characters, simply omit the check for
    signedness in the test case.
    
    Output before:
    
      [root@m35lp76 perf]# ./perf test -F 14
      14: Parse sched tracepoints fields                        :
      --- start ---
      sched:sched_switch: "prev_comm" signedness(0) is wrong, should be 1
      sched:sched_switch: "next_comm" signedness(0) is wrong, should be 1
      sched:sched_wakeup: "comm" signedness(0) is wrong, should be 1
      ---- end ----
      14: Parse sched tracepoints fields                        : FAILED!
      [root@m35lp76 perf]#
    
    Output after:
    
      [root@m35lp76 perf]# ./perf test -Fv 14
      14: Parse sched tracepoints fields                        :
      --- start ---
      ---- end ----
      Parse sched tracepoints fields: Ok
      [root@m35lp76 perf]#
    
    Fixes: 489338a717a0 ("perf tests evsel-tp-sched: Fix bitwise operator")
    
    Signed-off-by: Thomas Richter <tmricht@linux.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/20190219153639.31267-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 16a94480fb03646424ce7db0c26f73fa3b24a5ce
Author: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Date:   Fri Jan 25 15:23:09 2019 -0500

    drm/amd/display: Clear stream->mode_changed after commit
    
    [ Upstream commit d8d2f174bcc2c26c3485c70e0c6fe22b27bce739 ]
    
    [Why]
    The stream->mode_changed flag can persist in the following sequence
    of atomic commits:
    
    Commit 1:
    Enable CRTC0 (mode_changed = true), Enable CRTC1 (mode_changed = true)
    
    Commit 2:
    Disable CRTC1 (mode_changed = false)
    
    In this sequence we want to keep the exiting CRTC0 but it's not in the
    atomic state for the commit since it hasn't been modified. In this case
    the stream->mode_changed flag persists as true and we don't re-program
    the planes for the existing stream.
    
    [How]
    The flag needs to be cleared and it makes the most sense to do it within
    DC after the state has been committed. Nothing following dc_commit_state
    should think that the stream's mode has changed.
    
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Leo Li <sunpeng.li@amd.com>
    Acked-by: Tony Cheng <Tony.Cheng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 456736ab1b7879b719b3d34ddfe78666789eab31
Author: Sedat Dilek <sedat.dilek@gmail.com>
Date:   Fri Feb 15 13:19:20 2019 +0100

    scsi: fcoe: make use of fip_mode enum complete
    
    [ Upstream commit 8beb90aaf334a6efa3e924339926b5f93a234dbb ]
    
    commit 1917d42d14b7 ("fcoe: use enum for fip_mode") introduces a separate
    enum for the fip_mode that shall be used during initialisation handling
    until it is passed to fcoe_ctrl_link_up to set the initial fip_state.  That
    change was incomplete and gcc quietly converted in various places between
    the fip_mode and the fip_state enum values with implicit enum conversions,
    which fortunately cannot cause any issues in the actual code's execution.
    
    clang however warns about these implicit enum conversions in the scsi
    drivers. This commit consolidates the use of the two enums, guided by
    clang's enum-conversion warnings.
    
    This commit now completes the use of the fip_mode: It expects and uses
    fip_mode in {bnx2fc,fcoe}_interface_create and fcoe_ctlr_init, and it calls
    fcoe_ctrl_set_set() with the correct values in fcoe_ctlr_link_up().  It
    also breaks the association between FIP_MODE_AUTO and FIP_ST_AUTO to
    indicate these two enums are distinct.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/151
    Fixes: 1917d42d14b7 ("fcoe: use enum for fip_mode")
    Reported-by: Dmitry Golovin <dima@golovin.in>
    Original-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
    CC: Lukas Bulwahn <lukas.bulwahn@gmail.com>
    CC: Nick Desaulniers <ndesaulniers@google.com>
    CC: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Suggested-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com>
    Signed-off-by: Hannes Reinecke <hare@suse.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 952613125def6dc9b33982f84c497a3f00aac601
Author: Jason Yan <yanaijie@huawei.com>
Date:   Fri Feb 15 19:50:27 2019 +0800

    scsi: megaraid_sas: return error when create DMA pool failed
    
    [ Upstream commit bcf3b67d16a4c8ffae0aa79de5853435e683945c ]
    
    when create DMA pool for cmd frames failed, we should return -ENOMEM,
    instead of 0.
    In some case in:
    
        megasas_init_adapter_fusion()
    
        -->megasas_alloc_cmds()
           -->megasas_create_frame_pool
              create DMA pool failed,
            --> megasas_free_cmds() [1]
    
        -->megasas_alloc_cmds_fusion()
           failed, then goto fail_alloc_cmds.
        -->megasas_free_cmds() [2]
    
    we will call megasas_free_cmds twice, [1] will kfree cmd_list,
    [2] will use cmd_list.it will cause a problem:
    
    Unable to handle kernel NULL pointer dereference at virtual address
    00000000
    pgd = ffffffc000f70000
    [00000000] *pgd=0000001fbf893003, *pud=0000001fbf893003,
    *pmd=0000001fbf894003, *pte=006000006d000707
    Internal error: Oops: 96000005 [#1] SMP
     Modules linked in:
     CPU: 18 PID: 1 Comm: swapper/0 Not tainted
     task: ffffffdfb9290000 ti: ffffffdfb923c000 task.ti: ffffffdfb923c000
     PC is at megasas_free_cmds+0x30/0x70
     LR is at megasas_free_cmds+0x24/0x70
     ...
     Call trace:
     [<ffffffc0005b779c>] megasas_free_cmds+0x30/0x70
     [<ffffffc0005bca74>] megasas_init_adapter_fusion+0x2f4/0x4d8
     [<ffffffc0005b926c>] megasas_init_fw+0x2dc/0x760
     [<ffffffc0005b9ab0>] megasas_probe_one+0x3c0/0xcd8
     [<ffffffc0004a5abc>] local_pci_probe+0x4c/0xb4
     [<ffffffc0004a5c40>] pci_device_probe+0x11c/0x14c
     [<ffffffc00053a5e4>] driver_probe_device+0x1ec/0x430
     [<ffffffc00053a92c>] __driver_attach+0xa8/0xb0
     [<ffffffc000538178>] bus_for_each_dev+0x74/0xc8
      [<ffffffc000539e88>] driver_attach+0x28/0x34
     [<ffffffc000539a18>] bus_add_driver+0x16c/0x248
     [<ffffffc00053b234>] driver_register+0x6c/0x138
     [<ffffffc0004a5350>] __pci_register_driver+0x5c/0x6c
     [<ffffffc000ce3868>] megasas_init+0xc0/0x1a8
     [<ffffffc000082a58>] do_one_initcall+0xe8/0x1ec
     [<ffffffc000ca7be8>] kernel_init_freeable+0x1c8/0x284
     [<ffffffc0008d90b8>] kernel_init+0x1c/0xe4
    
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    Acked-by: Sumit Saxena <sumit.saxena@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a3c1a668a01458ec9d638a1d89eba85a20b7bfad
Author: Sebastian Ott <sebott@linux.ibm.com>
Date:   Thu Feb 14 14:46:23 2019 +0100

    s390/ism: ignore some errors during deregistration
    
    [ Upstream commit 0ff06c44efeede4acd068847d3bf8cf894b6c664 ]
    
    Prior to dma unmap/free operations the ism driver tries to ensure
    that the memory is no longer accessed by the HW. When errors
    during deregistration of memory regions from the HW occur the ism
    driver will not unmap/free this memory.
    
    When we receive notification from the hypervisor that a PCI function
    has been detached we can no longer access the device and would never
    unmap/free these memory regions which led to complaints by the DMA
    debug API.
    
    Treat this kind of errors during the deregistration of memory regions
    from the HW as success since it is already ensured that the memory
    is no longer accessed by HW.
    
    Reported-by: Karsten Graul <kgraul@linux.ibm.com>
    Reported-by: Hans Wippel <hwippel@linux.ibm.com>
    Signed-off-by: Sebastian Ott <sebott@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d1db4825e3c55ccf162f92eb1bcbd12f77c6a67
Author: Ross Lagerwall <ross.lagerwall@citrix.com>
Date:   Mon Jan 28 10:04:24 2019 +0000

    efi: cper: Fix possible out-of-bounds access
    
    [ Upstream commit 45b14a4ffcc1e0b5caa246638f942cbe7eaea7ad ]
    
    When checking a generic status block, we iterate over all the generic
    data blocks. The loop condition only checks that the start of the
    generic data block is valid (within estatus->data_length) but not the
    whole block. Because the size of data blocks (excluding error data) may
    vary depending on the revision and the revision is contained within the
    data block, ensure that enough of the current data block is valid before
    dereferencing any members otherwise an out-of-bounds access may occur if
    estatus->data_length is invalid.
    
    This relies on the fact that struct acpi_hest_generic_data_v300 is a
    superset of the earlier version.  Also rework the other checks to avoid
    potential underflow.
    
    Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
    Acked-by: Borislav Petkov <bp@suse.de>
    Tested-by: Tyler Baicar <baicar.tyler@gmail.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99bb2d19853aa7039fa13d4f61c1affdb41f88d2
Author: Erwan Velu <erwanaliasr1@gmail.com>
Date:   Wed Feb 20 11:10:17 2019 +0100

    cpufreq: acpi-cpufreq: Report if CPU doesn't support boost technologies
    
    [ Upstream commit 1222d527f314c86a3b59a522115d62facc5a7965 ]
    
    There is some rare cases where CPB (and possibly IDA) are missing on
    processors.
    
    This is the case fixed by commit f7f3dc00f612 ("x86/cpu/AMD: Fix
    erratum 1076 (CPB bit)") and following.
    
    In such context, the boost status isn't reported by
    /sys/devices/system/cpu/cpufreq/boost.
    
    This commit is about printing a message to report that the CPU
    doesn't expose the boost capabilities.
    
    This message could help debugging platforms hit by this phenomena.
    
    Signed-off-by: Erwan Velu <e.velu@criteo.com>
    [ rjw: Change the message text somewhat ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e7b5f9dc7a7db4e8ea36ae9f9ef266cf5f62fb8
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Feb 19 16:46:51 2019 +0100

    ASoC: qcom: Fix of-node refcount unbalance in qcom_snd_parse_of()
    
    [ Upstream commit 70b773219a32c7b8f3e53e041bc023ad99fd81f4 ]
    
    Although qcom_snd_parse_of() tries to manage the of-node refcount,
    there are still a few places that lead to the unblanced refcount in
    the error code path.  Namely,
    
    - for_each_child_of_node() needs to unreference the iterator node if
      aborting the loop in the middle,
    - cpu, codec and platform node objects have to be unreferenced at each
      iteration,
    - platform and codec node objects have to be referred before jumping
      to the error handling code that unreference them unconditionally.
    
    This patch tries to address these by moving the assignment of platform
    and codec node objects to the beginning of the loop and adding the
    of_node_put() calls adequately.
    
    Fixes: c25e295cd77b ("ASoC: qcom: Add support to parse common audio device nodes")
    Cc: Patrick Lai <plai@codeaurora.org>
    Cc: Banajit Goswami <bgoswami@codeaurora.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a332ad5f006fee3ff35883d38424a164da02a73f
Author: Michael Ellerman <mpe@ellerman.id.au>
Date:   Thu Feb 7 13:43:26 2019 +1100

    powerpc/44x: Force PCI on for CURRITUCK
    
    [ Upstream commit aa7150ba378650d0e9d84b8e4d805946965a5926 ]
    
    The recent rework of PCI kconfig symbols exposed an existing bug in
    the CURRITUCK kconfig logic.
    
    It selects PPC4xx_PCI_EXPRESS which depends on PCI, but PCI is user
    selectable and might be disabled, leading to a warning:
    
      WARNING: unmet direct dependencies detected for PPC4xx_PCI_EXPRESS
        Depends on [n]: PCI [=n] && 4xx [=y]
        Selected by [y]:
        - CURRITUCK [=y] && PPC_47x [=y]
    
    Prior to commit eb01d42a7778 ("PCI: consolidate PCI config entry in
    drivers/pci") PCI was enabled by default for currituck_defconfig so we
    didn't see the warning. The bad logic was still there, it just
    required someone disabling PCI in their .config to hit it.
    
    Fix it by forcing PCI on for CURRITUCK, which seems was always the
    expectation anyway.
    
    Fixes: eb01d42a7778 ("PCI: consolidate PCI config entry in drivers/pci")
    Reported-by: Randy Dunlap <rdunlap@infradead.org>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4974ca47f15c7320208ae4ac99da83edf4385c4a
Author: Wei Li <liwei391@huawei.com>
Date:   Thu Feb 21 17:57:16 2019 +0800

    perf annotate: Fix getting source line failure
    
    [ Upstream commit 11db1ad4513d6205d2519e1a30ff4cef746e3243 ]
    
    The output of "perf annotate -l --stdio xxx" changed since commit 425859ff0de33
    ("perf annotate: No need to calculate notes->start twice") removed notes->start
    assignment in symbol__calc_lines(). It will get failed in
    find_address_in_section() from symbol__tty_annotate() subroutine as the
    a2l->addr is wrong. So the annotate summary doesn't report the line number of
    source code correctly.
    
    Before fix:
    
      liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ cat common_while_1.c
      void hotspot_1(void)
      {
            volatile int i;
    
            for (i = 0; i < 0x10000000; i++);
            for (i = 0; i < 0x10000000; i++);
            for (i = 0; i < 0x10000000; i++);
      }
    
      int main(void)
      {
            hotspot_1();
    
            return 0;
      }
      liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ gcc common_while_1.c -g -o common_while_1
    
      liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf record ./common_while_1
      [ perf record: Woken up 2 times to write data ]
      [ perf record: Captured and wrote 0.488 MB perf.data (12498 samples) ]
      liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf annotate -l -s hotspot_1 --stdio
    
      Sorted summary for file /home/liwei/main_code/hulk_work/hulk/tools/perf/common_while_1
      ----------------------------------------------
    
       19.30 common_while_1[32]
       19.03 common_while_1[4e]
       19.01 common_while_1[16]
        5.04 common_while_1[13]
        4.99 common_while_1[4b]
        4.78 common_while_1[2c]
        4.77 common_while_1[10]
        4.66 common_while_1[2f]
        4.59 common_while_1[51]
        4.59 common_while_1[35]
        4.52 common_while_1[19]
        4.20 common_while_1[56]
        0.51 common_while_1[48]
       Percent |      Source code & Disassembly of common_while_1 for cycles:ppp (12480 samples, percent: local period)
      -----------------------------------------------------------------------------------------------------------------
             :
             :
             :
             :         Disassembly of section .text:
             :
             :         00000000000005fa <hotspot_1>:
             :         hotspot_1():
             :         void hotspot_1(void)
             :         {
        0.00 :   5fa:   push   %rbp
        0.00 :   5fb:   mov    %rsp,%rbp
             :                 volatile int i;
             :
             :                 for (i = 0; i < 0x10000000; i++);
        0.00 :   5fe:   movl   $0x0,-0x4(%rbp)
        0.00 :   605:   jmp    610 <hotspot_1+0x16>
        0.00 :   607:   mov    -0x4(%rbp),%eax
       common_while_1[10]    4.77 :   60a:   add    $0x1,%eax
       common_while_1[13]    5.04 :   60d:   mov    %eax,-0x4(%rbp)
       common_while_1[16]   19.01 :   610:   mov    -0x4(%rbp),%eax
       common_while_1[19]    4.52 :   613:   cmp    $0xfffffff,%eax
          0.00 :   618:   jle    607 <hotspot_1+0xd>
               :                 for (i = 0; i < 0x10000000; i++);
      ...
    
    After fix:
    
      liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf record ./common_while_1
      [ perf record: Woken up 2 times to write data ]
      [ perf record: Captured and wrote 0.488 MB perf.data (12500 samples) ]
      liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf annotate -l -s hotspot_1 --stdio
    
      Sorted summary for file /home/liwei/main_code/hulk_work/hulk/tools/perf/common_while_1
      ----------------------------------------------
    
       33.34 common_while_1.c:5
       33.34 common_while_1.c:6
       33.32 common_while_1.c:7
       Percent |      Source code & Disassembly of common_while_1 for cycles:ppp (12482 samples, percent: local period)
      -----------------------------------------------------------------------------------------------------------------
             :
             :
             :
             :         Disassembly of section .text:
             :
             :         00000000000005fa <hotspot_1>:
             :         hotspot_1():
             :         void hotspot_1(void)
             :         {
        0.00 :   5fa:   push   %rbp
        0.00 :   5fb:   mov    %rsp,%rbp
             :                 volatile int i;
             :
             :                 for (i = 0; i < 0x10000000; i++);
        0.00 :   5fe:   movl   $0x0,-0x4(%rbp)
        0.00 :   605:   jmp    610 <hotspot_1+0x16>
        0.00 :   607:   mov    -0x4(%rbp),%eax
       common_while_1.c:5    4.70 :   60a:   add    $0x1,%eax
        4.89 :   60d:   mov    %eax,-0x4(%rbp)
       common_while_1.c:5   19.03 :   610:   mov    -0x4(%rbp),%eax
       common_while_1.c:5    4.72 :   613:   cmp    $0xfffffff,%eax
        0.00 :   618:   jle    607 <hotspot_1+0xd>
             :                 for (i = 0; i < 0x10000000; i++);
        0.00 :   61a:   movl   $0x0,-0x4(%rbp)
        0.00 :   621:   jmp    62c <hotspot_1+0x32>
        0.00 :   623:   mov    -0x4(%rbp),%eax
       common_while_1.c:6    4.54 :   626:   add    $0x1,%eax
        4.73 :   629:   mov    %eax,-0x4(%rbp)
       common_while_1.c:6   19.54 :   62c:   mov    -0x4(%rbp),%eax
       common_while_1.c:6    4.54 :   62f:   cmp    $0xfffffff,%eax
      ...
    
    Signed-off-by: Wei Li <liwei391@huawei.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Fixes: 425859ff0de33 ("perf annotate: No need to calculate notes->start twice")
    Link: http://lkml.kernel.org/r/20190221095716.39529-1-liwei391@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1a4faefc4680025d13f02c3ea8051498b0151099
Author: Katsuhiro Suzuki <katsuhiro@katsuster.net>
Date:   Mon Feb 11 00:38:06 2019 +0900

    clk: fractional-divider: check parent rate only if flag is set
    
    [ Upstream commit d13501a2bedfbea0983cc868d3f1dc692627f60d ]
    
    Custom approximation of fractional-divider may not need parent clock
    rate checking. For example Rockchip SoCs work fine using grand parent
    clock rate even if target rate is greater than parent.
    
    This patch checks parent clock rate only if CLK_SET_RATE_PARENT flag
    is set.
    
    For detailed example, clock tree of Rockchip I2S audio hardware.
      - Clock rate of CPLL is 1.2GHz, GPLL is 491.52MHz.
      - i2s1_div is integer divider can divide N (N is 1~128).
        Input clock is CPLL or GPLL. Initial divider value is N = 1.
        Ex) PLL = CPLL, N = 10, i2s1_div output rate is
          CPLL / 10 = 1.2GHz / 10 = 120MHz
      - i2s1_frac is fractional divider can divide input to x/y, x and
        y are 16bit integer.
    
    CPLL --> | selector | ---> i2s1_div -+--> | selector | --> I2S1 MCLK
    GPLL --> |          | ,--------------'    |          |
                          `--> i2s1_frac ---> |          |
    
    Clock mux system try to choose suitable one from i2s1_div and
    i2s1_frac for master clock (MCLK) of I2S1.
    
    Bad scenario as follows:
      - Try to set MCLK to 8.192MHz (32kHz audio replay)
        Candidate setting is
        - i2s1_div: GPLL / 60 = 8.192MHz
        i2s1_div candidate is exactly same as target clock rate, so mux
        choose this clock source. i2s1_div output rate is changed
        491.52MHz -> 8.192MHz
    
      - After that try to set to 11.2896MHz (44.1kHz audio replay)
        Candidate settings are
        - i2s1_div : CPLL / 107 = 11.214945MHz
        - i2s1_frac: i2s1_div   = 8.192MHz
          This is because clk_fd_round_rate() thinks target rate
          (11.2896MHz) is higher than parent rate (i2s1_div = 8.192MHz)
          and returns parent clock rate.
    
    Above is current upstreamed behavior. Clock mux system choose
    i2s1_div, but this clock rate is not acceptable for I2S driver, so
    users cannot replay audio.
    
    Expected behavior is:
      - Try to set master clock to 11.2896MHz (44.1kHz audio replay)
        Candidate settings are
        - i2s1_div : CPLL / 107          = 11.214945MHz
        - i2s1_frac: i2s1_div * 147/6400 = 11.2896MHz
                     Change i2s1_div to GPLL / 1 = 491.52MHz at same
                     time.
    
    If apply this commit, clk_fd_round_rate() calls custom approximate
    function of Rockchip even if target rate is higher than parent.
    Custom function changes both grand parent (i2s1_div) and parent
    (i2s_frac) settings at same time. Clock mux system can choose
    i2s1_frac and audio works fine.
    
    Signed-off-by: Katsuhiro Suzuki <katsuhiro@katsuster.net>
    Reviewed-by: Heiko Stuebner <heiko@sntech.de>
    [sboyd@kernel.org: Make function into a macro instead]
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 869a72e08b8688f730e717d71d8d01869bca6e64
Author: Håkon Bugge <haakon.bugge@oracle.com>
Date:   Sun Feb 17 15:45:12 2019 +0100

    IB/mlx4: Increase the timeout for CM cache
    
    [ Upstream commit 2612d723aadcf8281f9bf8305657129bd9f3cd57 ]
    
    Using CX-3 virtual functions, either from a bare-metal machine or
    pass-through from a VM, MAD packets are proxied through the PF driver.
    
    Since the VF drivers have separate name spaces for MAD Transaction Ids
    (TIDs), the PF driver has to re-map the TIDs and keep the book keeping
    in a cache.
    
    Following the RDMA Connection Manager (CM) protocol, it is clear when
    an entry has to evicted form the cache. But life is not perfect,
    remote peers may die or be rebooted. Hence, it's a timeout to wipe out
    a cache entry, when the PF driver assumes the remote peer has gone.
    
    During workloads where a high number of QPs are destroyed concurrently,
    excessive amount of CM DREQ retries has been observed
    
    The problem can be demonstrated in a bare-metal environment, where two
    nodes have instantiated 8 VFs each. This using dual ported HCAs, so we
    have 16 vPorts per physical server.
    
    64 processes are associated with each vPort and creates and destroys
    one QP for each of the remote 64 processes. That is, 1024 QPs per
    vPort, all in all 16K QPs. The QPs are created/destroyed using the
    CM.
    
    When tearing down these 16K QPs, excessive CM DREQ retries (and
    duplicates) are observed. With some cat/paste/awk wizardry on the
    infiniband_cm sysfs, we observe as sum of the 16 vPorts on one of the
    nodes:
    
    cm_rx_duplicates:
          dreq  2102
    cm_rx_msgs:
          drep  1989
          dreq  6195
           rep  3968
           req  4224
           rtu  4224
    cm_tx_msgs:
          drep  4093
          dreq 27568
           rep  4224
           req  3968
           rtu  3968
    cm_tx_retries:
          dreq 23469
    
    Note that the active/passive side is equally distributed between the
    two nodes.
    
    Enabling pr_debug in cm.c gives tons of:
    
    [171778.814239] <mlx4_ib> mlx4_ib_multiplex_cm_handler: id{slave:
    1,sl_cm_id: 0xd393089f} is NULL!
    
    By increasing the CM_CLEANUP_CACHE_TIMEOUT from 5 to 30 seconds, the
    tear-down phase of the application is reduced from approximately 90 to
    50 seconds. Retries/duplicates are also significantly reduced:
    
    cm_rx_duplicates:
          dreq  2460
    []
    cm_tx_retries:
          dreq  3010
           req    47
    
    Increasing the timeout further didn't help, as these duplicates and
    retries stems from a too short CMA timeout, which was 20 (~4 seconds)
    on the systems. By increasing the CMA timeout to 22 (~17 seconds), the
    numbers fell down to about 10 for both of them.
    
    Adjustment of the CMA timeout is not part of this commit.
    
    Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com>
    Acked-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 55bbe8fa7bfdd4230fb2731a66d9ecedab49d62b
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Fri Feb 22 14:08:40 2019 +0100

    i2c: designware: Do not allow i2c_dw_xfer() calls while suspended
    
    [ Upstream commit 2751541555382dfa7661bcfaac3ee0fac49f505d ]
    
    On most Intel Bay- and Cherry-Trail systems the PMIC is connected over I2C
    and the PMIC is accessed through various means by the _PS0 and _PS3 ACPI
    methods (power on / off methods) of various devices.
    
    This leads to suspend/resume ordering problems where a device may be
    resumed and get its _PS0 method executed before the I2C controller is
    resumed. On Cherry Trail this leads to errors like these:
    
         i2c_designware 808622C1:06: controller timed out
         ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
         ACPI Error: Method parse/execution failed \_SB.P18W._ON, AE_ERROR
         video LNXVIDEO:00: Failed to change power state to D0
    
    But on Bay Trail this caused I2C reads to seem to succeed, but they end
    up returning wrong data, which ends up getting written back by the typical
    read-modify-write cycle done to turn on various power-resources.
    
    Debugging the problems caused by this silent data corruption is quite
    nasty. This commit adds a check which disallows i2c_dw_xfer() calls to
    happen until the controller's resume method has completed.
    
    Which turns the silent data corruption into getting these errors in
    dmesg instead:
    
        i2c_designware 80860F41:04: Error i2c_dw_xfer call while suspended
        ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
        ACPI Error: Method parse/execution failed \_SB.PCI0.GFX0._PS0, AE_ERROR
    
    Which is much better.
    
    Note the above errors are an example of issues which this patch will
    help to debug, the actual fix requires fixing the suspend order and
    this has been fixed by a different commit.
    
    Note the setting / clearing of the suspended flag in the suspend / resume
    methods is NOT protected by i2c_lock_bus(). This is intentional as these
    methods get called from i2c_dw_xfer() (through pm_runtime_get/put) a nd
    i2c_dw_xfer() is called with the i2c_bus_lock held, so otherwise we would
    deadlock. This means that there is a theoretical race between a non runtime
    suspend and the suspended check in i2c_dw_xfer(), this is not a problem
    since normally we should not hit the race and this check is primarily a
    debugging tool so hitting the check if there are suspend/resume ordering
    problems does not need to be 100% reliable.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 600c30ca6124929eff74dd5c2c12e6e50dedaebf
Author: Dongli Zhang <dongli.zhang@oracle.com>
Date:   Fri Feb 22 22:10:20 2019 +0800

    loop: set GENHD_FL_NO_PART_SCAN after blkdev_reread_part()
    
    [ Upstream commit 758a58d0bc67457f1215321a536226654a830eeb ]
    
    Commit 0da03cab87e6
    ("loop: Fix deadlock when calling blkdev_reread_part()") moves
    blkdev_reread_part() out of the loop_ctl_mutex. However,
    GENHD_FL_NO_PART_SCAN is set before __blkdev_reread_part(). As a result,
    __blkdev_reread_part() will fail the check of GENHD_FL_NO_PART_SCAN and
    will not rescan the loop device to delete all partitions.
    
    Below are steps to reproduce the issue:
    
    step1 # dd if=/dev/zero of=tmp.raw bs=1M count=100
    step2 # losetup -P /dev/loop0 tmp.raw
    step3 # parted /dev/loop0 mklabel gpt
    step4 # parted -a none -s /dev/loop0 mkpart primary 64s 1
    step5 # losetup -d /dev/loop0
    
    Step5 will not be able to delete /dev/loop0p1 (introduced by step4) and
    there is below kernel warning message:
    
    [  464.414043] __loop_clr_fd: partition scan of loop0 failed (rc=-22)
    
    This patch sets GENHD_FL_NO_PART_SCAN after blkdev_reread_part().
    
    Fixes: 0da03cab87e6 ("loop: Fix deadlock when calling blkdev_reread_part()")
    Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 540f120998dff8c22e4a5ff734732f4550f2765b
Author: Vadim Pasternak <vadimp@mellanox.com>
Date:   Sun Feb 17 18:15:30 2019 +0000

    platform/mellanox: mlxreg-hotplug: Fix KASAN warning
    
    [ Upstream commit e4c275f77624961b56cce397814d9d770a45ac59 ]
    
    Fix the following KASAN warning produced when booting a 64-bit kernel:
    [   13.334750] BUG: KASAN: stack-out-of-bounds in find_first_bit+0x19/0x70
    [   13.342166] Read of size 8 at addr ffff880235067178 by task kworker/2:1/42
    [   13.342176] CPU: 2 PID: 42 Comm: kworker/2:1 Not tainted 4.20.0-rc1+ #106
    [   13.342179] Hardware name: Mellanox Technologies Ltd. MSN2740/Mellanox x86 SFF board, BIOS 5.6.5 06/07/2016
    [   13.342190] Workqueue: events deferred_probe_work_func
    [   13.342194] Call Trace:
    [   13.342206]  dump_stack+0xc7/0x15b
    [   13.342214]  ? show_regs_print_info+0x5/0x5
    [   13.342220]  ? kmsg_dump_rewind_nolock+0x59/0x59
    [   13.342234]  ? _raw_write_lock_irqsave+0x100/0x100
    [   13.351593]  print_address_description+0x73/0x260
    [   13.351603]  kasan_report+0x260/0x380
    [   13.351611]  ? find_first_bit+0x19/0x70
    [   13.351619]  find_first_bit+0x19/0x70
    [   13.351630]  mlxreg_hotplug_work_handler+0x73c/0x920 [mlxreg_hotplug]
    [   13.351639]  ? __lock_text_start+0x8/0x8
    [   13.351646]  ? _raw_write_lock_irqsave+0x80/0x100
    [   13.351656]  ? mlxreg_hotplug_remove+0x1e0/0x1e0 [mlxreg_hotplug]
    [   13.351663]  ? regmap_volatile+0x40/0xb0
    [   13.351668]  ? regcache_write+0x4c/0x90
    [   13.351676]  ? mlxplat_mlxcpld_reg_write+0x24/0x30 [mlx_platform]
    [   13.351681]  ? _regmap_write+0xea/0x220
    [   13.351688]  ? __mutex_lock_slowpath+0x10/0x10
    [   13.351696]  ? devm_add_action+0x70/0x70
    [   13.351701]  ? mutex_unlock+0x1d/0x40
    [   13.351710]  mlxreg_hotplug_probe+0x82e/0x989 [mlxreg_hotplug]
    [   13.351723]  ? mlxreg_hotplug_work_handler+0x920/0x920 [mlxreg_hotplug]
    [   13.351731]  ? sysfs_do_create_link_sd.isra.2+0xf4/0x190
    [   13.351737]  ? sysfs_rename_link_ns+0xf0/0xf0
    [   13.351743]  ? devres_close_group+0x2b0/0x2b0
    [   13.351749]  ? pinctrl_put+0x20/0x20
    [   13.351755]  ? acpi_dev_pm_attach+0x2c/0xd0
    [   13.351763]  platform_drv_probe+0x70/0xd0
    [   13.351771]  really_probe+0x480/0x6e0
    [   13.351778]  ? device_attach+0x10/0x10
    [   13.351784]  ? __lock_text_start+0x8/0x8
    [   13.351790]  ? _raw_write_lock_irqsave+0x80/0x100
    [   13.351797]  ? _raw_write_lock_irqsave+0x80/0x100
    [   13.351806]  ? __driver_attach+0x190/0x190
    [   13.351812]  driver_probe_device+0x17d/0x1a0
    [   13.351819]  ? __driver_attach+0x190/0x190
    [   13.351825]  bus_for_each_drv+0xd6/0x130
    [   13.351831]  ? bus_rescan_devices+0x20/0x20
    [   13.351837]  ? __mutex_lock_slowpath+0x10/0x10
    [   13.351845]  __device_attach+0x18c/0x230
    [   13.351852]  ? device_bind_driver+0x70/0x70
    [   13.351859]  ? __mutex_lock_slowpath+0x10/0x10
    [   13.351866]  bus_probe_device+0xea/0x110
    [   13.351874]  deferred_probe_work_func+0x1c9/0x290
    [   13.351882]  ? driver_deferred_probe_add+0x1d0/0x1d0
    [   13.351889]  ? preempt_notifier_dec+0x20/0x20
    [   13.351897]  ? read_word_at_a_time+0xe/0x20
    [   13.351904]  ? strscpy+0x151/0x290
    [   13.351912]  ? set_work_pool_and_clear_pending+0x9c/0xf0
    [   13.351918]  ? __switch_to_asm+0x34/0x70
    [   13.351924]  ? __switch_to_asm+0x40/0x70
    [   13.351929]  ? __switch_to_asm+0x34/0x70
    [   13.351935]  ? __switch_to_asm+0x40/0x70
    [   13.351942]  process_one_work+0x5cc/0xa00
    [   13.351952]  ? pwq_dec_nr_in_flight+0x1e0/0x1e0
    [   13.351960]  ? pci_mmcfg_check_reserved+0x80/0xb8
    [   13.351967]  ? run_rebalance_domains+0x250/0x250
    [   13.351980]  ? stack_access_ok+0x35/0x80
    [   13.351986]  ? deref_stack_reg+0xa1/0xe0
    [   13.351994]  ? schedule+0xcd/0x250
    [   13.352000]  ? worker_enter_idle+0x2d6/0x330
    [   13.352006]  ? __schedule+0xeb0/0xeb0
    [   13.352014]  ? fork_usermode_blob+0x130/0x130
    [   13.352019]  ? mutex_lock+0xa7/0x100
    [   13.352026]  ? _raw_spin_lock_irq+0x98/0xf0
    [   13.352032]  ? _raw_read_unlock_irqrestore+0x30/0x30
    [   13.352037] i2c i2c-2: Added multiplexed i2c bus 11
    [   13.352043]  worker_thread+0x181/0xa80
    [   13.352052]  ? __switch_to_asm+0x34/0x70
    [   13.352058]  ? __switch_to_asm+0x40/0x70
    [   13.352064]  ? process_one_work+0xa00/0xa00
    [   13.352070]  ? __switch_to_asm+0x34/0x70
    [   13.352076]  ? __switch_to_asm+0x40/0x70
    [   13.352081]  ? __switch_to_asm+0x34/0x70
    [   13.352086]  ? __switch_to_asm+0x40/0x70
    [   13.352092]  ? __switch_to_asm+0x34/0x70
    [   13.352097]  ? __switch_to_asm+0x40/0x70
    [   13.352105]  ? __schedule+0x3d6/0xeb0
    [   13.352112]  ? migrate_swap_stop+0x470/0x470
    [   13.352119]  ? save_stack+0x89/0xb0
    [   13.352127]  ? kmem_cache_alloc_trace+0xe5/0x570
    [   13.352132]  ? kthread+0x59/0x1d0
    [   13.352138]  ? ret_from_fork+0x35/0x40
    [   13.352154]  ? __schedule+0xeb0/0xeb0
    [   13.352161]  ? remove_wait_queue+0x150/0x150
    [   13.352169]  ? _raw_write_lock_irqsave+0x80/0x100
    [   13.352175]  ? __lock_text_start+0x8/0x8
    [   13.352183]  ? process_one_work+0xa00/0xa00
    [   13.352188]  kthread+0x1a4/0x1d0
    [   13.352195]  ? kthread_create_worker_on_cpu+0xc0/0xc0
    [   13.352202]  ret_from_fork+0x35/0x40
    
    [   13.353879] The buggy address belongs to the page:
    [   13.353885] page:ffffea0008d419c0 count:0 mapcount:0 mapping:0000000000000000 index:0x0
    [   13.353890] flags: 0x2ffff8000000000()
    [   13.353897] raw: 02ffff8000000000 ffffea0008d419c8 ffffea0008d419c8 0000000000000000
    [   13.353903] raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    [   13.353905] page dumped because: kasan: bad access detected
    
    [   13.353908] Memory state around the buggy address:
    [   13.353912]  ffff880235067000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   13.353917]  ffff880235067080: 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 04
    [   13.353921] >ffff880235067100: f2 f2 f2 f2 f2 f2 f2 04 f2 f2 f2 f2 f2 f2 f2 04
    [   13.353923]                                                                 ^
    [   13.353927]  ffff880235067180: f2 f2 f2 f2 f2 f2 f2 04 f2 f2 f2 00 00 00 00 00
    [   13.353931]  ffff880235067200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    [   13.353933] ==================================================================
    
    The warning is caused by the below loop:
            for_each_set_bit(bit, (unsigned long *)&asserted, 8) {
    while "asserted" is declared as 'unsigned'.
    
    The casting of 32-bit unsigned integer pointer to a 64-bit unsigned long
    pointer. There are two problems here.
    It causes the access of four extra byte, which can corrupt memory
    The 32-bit pointer address may not be 64-bit aligned.
    
    The fix changes variable "asserted" to "unsigned long".
    
    Fixes: 1f976f6978bf ("platform/x86: Move Mellanox platform hotplug driver to platform/mellanox")
    Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
    Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a21f5c44cb8e6b5ecd0bc3592bc4984ca98a1020
Author: Yang Fan <nullptr.cpp@gmail.com>
Date:   Sat Jan 19 19:16:33 2019 +0800

    platform/x86: ideapad-laptop: Fix no_hw_rfkill_list for Lenovo RESCUER R720-15IKBN
    
    [ Upstream commit 4d9b2864a415fec39150bc13efc730c7eb88711e ]
    
    Commit ae7c8cba3221 ("platform/x86: ideapad-laptop: add lenovo RESCUER
    R720-15IKBN to no_hw_rfkill_list") added
        DMI_MATCH(DMI_BOARD_NAME, "80WW")
    for Lenovo RESCUER R720-15IKBN.
    
    But DMI_BOARD_NAME does not match 80WW on Lenovo RESCUER R720-15IKBN,
    thus cause Wireless LAN still be hard blocked.
    
    On Lenovo RESCUER R720-15IKBN:
        ~$ cat /sys/class/dmi/id/sys_vendor
        LENOVO
        ~$ cat /sys/class/dmi/id/board_name
        Provence-5R3
        ~$ cat /sys/class/dmi/id/product_name
        80WW
        ~$ cat /sys/class/dmi/id/product_version
        Lenovo R720-15IKBN
    
    So on Lenovo RESCUER R720-15IKBN:
        DMI_SYS_VENDOR should match "LENOVO",
        DMI_BOARD_NAME should match "Provence-5R3",
        DMI_PRODUCT_NAME should match "80WW",
        DMI_PRODUCT_VERSION should match "Lenovo R720-15IKBN".
    
    Fix it, and in according with other entries in no_hw_rfkill_list,
    use DMI_PRODUCT_VERSION instead of DMI_BOARD_NAME.
    
    Fixes: ae7c8cba3221 ("platform/x86: ideapad-laptop: add lenovo RESCUER R720-15IKBN to no_hw_rfkill_list")
    Signed-off-by: Yang Fan <nullptr.cpp@gmail.com>
    Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2427570b374a58f24f7d9eba7269cef0481f4d5
Author: Jim Broadus <jbroadus@gmail.com>
Date:   Tue Feb 19 11:30:27 2019 -0800

    i2c: Allow recovery of the initial IRQ by an I2C client device.
    
    [ Upstream commit 93b6604c5a669d84e45fe5129294875bf82eb1ff ]
    
    A previous change allowed I2C client devices to discover new IRQs upon
    reprobe by clearing the IRQ in i2c_device_remove. However, if an IRQ was
    assigned in i2c_new_device, that information is lost.
    
    For example, the touchscreen and trackpad devices on a Dell Inspiron laptop
    are I2C devices whose IRQs are defined by ACPI extended IRQ types. The
    client device structures are initialized during an ACPI walk. After
    removing the i2c_hid device, modprobe fails.
    
    This change caches the initial IRQ value in i2c_new_device and then resets
    the client device IRQ to the initial value in i2c_device_remove.
    
    Fixes: 6f108dd70d30 ("i2c: Clear client->irq in i2c_device_remove")
    Signed-off-by: Jim Broadus <jbroadus@gmail.com>
    Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    [wsa: this is an easy to backport fix for the regression. We will
    refactor the code to handle irq assignments better in general.]
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6f93033d93d12b3947177d5059bbca9a7d7f9cd9
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Feb 21 20:09:26 2019 -0800

    mlxsw: spectrum: Avoid -Wformat-truncation warnings
    
    [ Upstream commit ab2c4e2581ad32c28627235ff0ae8c5a5ea6899f ]
    
    Give precision identifiers to the two snprintf() formatting the priority
    and TC strings to avoid producing these two warnings:
    
    drivers/net/ethernet/mellanox/mlxsw/spectrum.c: In function
    'mlxsw_sp_port_get_prio_strings':
    drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2132:37: warning: '%d'
    directive output may be truncated writing between 1 and 3 bytes into a
    region of size between 0 and 31 [-Wformat-truncation=]
       snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
                                         ^~
    drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2132:3: note: 'snprintf'
    output between 3 and 36 bytes into a destination of size 32
       snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         mlxsw_sp_port_hw_prio_stats[i].str, prio);
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/net/ethernet/mellanox/mlxsw/spectrum.c: In function
    'mlxsw_sp_port_get_tc_strings':
    drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2143:37: warning: '%d'
    directive output may be truncated writing between 1 and 11 bytes into a
    region of size between 0 and 31 [-Wformat-truncation=]
       snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
                                         ^~
    drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2143:3: note: 'snprintf'
    output between 3 and 44 bytes into a destination of size 32
       snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         mlxsw_sp_port_hw_tc_stats[i].str, tc);
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Reviewed-by: Ido Schimmel <idosch@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a782956c2a305551a49962ad6bd784d14af769e7
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Feb 21 20:09:28 2019 -0800

    e1000e: Fix -Wformat-truncation warnings
    
    [ Upstream commit 135e7245479addc6b1f5d031e3d7e2ddb3d2b109 ]
    
    Provide precision hints to snprintf() since we know the destination
    buffer size of the RX/TX ring names are IFNAMSIZ + 5 - 1. This fixes the
    following warnings:
    
    drivers/net/ethernet/intel/e1000e/netdev.c: In function
    'e1000_request_msix':
    drivers/net/ethernet/intel/e1000e/netdev.c:2109:13: warning: 'snprintf'
    output may be truncated before the last format character
    [-Wformat-truncation=]
         "%s-rx-0", netdev->name);
                 ^
    drivers/net/ethernet/intel/e1000e/netdev.c:2107:3: note: 'snprintf'
    output between 6 and 21 bytes into a destination of size 20
       snprintf(adapter->rx_ring->name,
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(adapter->rx_ring->name) - 1,
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "%s-rx-0", netdev->name);
         ~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/net/ethernet/intel/e1000e/netdev.c:2125:13: warning: 'snprintf'
    output may be truncated before the last format character
    [-Wformat-truncation=]
         "%s-tx-0", netdev->name);
                 ^
    drivers/net/ethernet/intel/e1000e/netdev.c:2123:3: note: 'snprintf'
    output between 6 and 21 bytes into a destination of size 20
       snprintf(adapter->tx_ring->name,
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         sizeof(adapter->tx_ring->name) - 1,
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         "%s-tx-0", netdev->name);
         ~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cae3c93ad96b7e25817563d8c7c969de074a0ebb
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu Feb 21 20:09:29 2019 -0800

    veth: Fix -Wformat-truncation
    
    [ Upstream commit abdf47aab4123ece48877cab4153db44fe4dc340 ]
    
    Provide a precision hint to snprintf() in order to eliminate a
    -Wformat-truncation warning provided below. A maximum of 11 characters
    is allowed to reach a maximum of 32 - 1 characters given a possible
    maximum value of queues using up to UINT_MAX which occupies 10
    characters. Incidentally 11 is the number of characters for
    "xdp_packets" which is the largest string we append.
    
    drivers/net/veth.c: In function 'veth_get_strings':
    drivers/net/veth.c:118:47: warning: '%s' directive output may be
    truncated writing up to 31 bytes into a region of size between 12 and 21
    [-Wformat-truncation=]
         snprintf(p, ETH_GSTRING_LEN, "rx_queue_%u_%s",
                                                   ^~
    drivers/net/veth.c:118:5: note: 'snprintf' output between 12 and 52
    bytes into a destination of size 32
         snprintf(p, ETH_GSTRING_LEN, "rx_queue_%u_%s",
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           i, veth_rq_stats_desc[j].desc);
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd8ab7cdbcda54e49a9d466e6c7fbed54a288762
Author: Shiju Jose <shiju.jose@huawei.com>
Date:   Sat Feb 23 17:22:18 2019 +0800

    net: hns3: fix setting of the hns reset_type for rdma hw errors
    
    [ Upstream commit eb4c2ccbad6c688be791e0c08640a40124558c03 ]
    
    Presently the hns reset_type for the roce errors is set
    in the hclge_log_and_clear_rocee_ras_error function.
    This function is also called to detect and clear roce errors
    while enabling the rdma error interrupts. However there is no hns
    reset requested for this case. This can cause issue of wrong
    reset_type used with subsequent hns reset as the
    reset_type set in the above case was not cleared.
    
    This patch moves setting of hns reset_type for the roce errors from
    hclge_log_and_clear_rocee_ras_error function
    to hclge_handle_rocee_ras_error.
    
    Fixes: 630ba007f475 ("net: hns3: add handling of RDMA RAS errors")
    Reported-by: Huazhong Tan <tanhuazhong@huawei.com>
    Reported-by: Xiaofei Tan <tanxiaofei@huawei.com>
    Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
    Signed-off-by: Peng Li <lipeng321@huawei.com>
    Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 660b8b783aed59c72aeac5bb0394983f74e90fab
Author: Andrew Lunn <andrew@lunn.ch>
Date:   Sat Feb 23 17:43:56 2019 +0100

    net: dsa: mv88e6xxx: Add lockdep classes to fix false positive splat
    
    [ Upstream commit f6d9758b12660484b6639364cc406da92a918c96 ]
    
    The following false positive lockdep splat has been observed.
    
    ======================================================
    WARNING: possible circular locking dependency detected
    4.20.0+ #302 Not tainted
    ------------------------------------------------------
    systemd-udevd/160 is trying to acquire lock:
    edea6080 (&chip->reg_lock){+.+.}, at: __setup_irq+0x640/0x704
    
    but task is already holding lock:
    edff0340 (&desc->request_mutex){+.+.}, at: __setup_irq+0xa0/0x704
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 (&desc->request_mutex){+.+.}:
           mutex_lock_nested+0x1c/0x24
           __setup_irq+0xa0/0x704
           request_threaded_irq+0xd0/0x150
           mv88e6xxx_probe+0x41c/0x694 [mv88e6xxx]
           mdio_probe+0x2c/0x54
           really_probe+0x200/0x2c4
           driver_probe_device+0x5c/0x174
           __driver_attach+0xd8/0xdc
           bus_for_each_dev+0x58/0x7c
           bus_add_driver+0xe4/0x1f0
           driver_register+0x7c/0x110
           mdio_driver_register+0x24/0x58
           do_one_initcall+0x74/0x2e8
           do_init_module+0x60/0x1d0
           load_module+0x1968/0x1ff4
           sys_finit_module+0x8c/0x98
           ret_fast_syscall+0x0/0x28
           0xbedf2ae8
    
    -> #0 (&chip->reg_lock){+.+.}:
           __mutex_lock+0x50/0x8b8
           mutex_lock_nested+0x1c/0x24
           __setup_irq+0x640/0x704
           request_threaded_irq+0xd0/0x150
           mv88e6xxx_g2_irq_setup+0xcc/0x1b4 [mv88e6xxx]
           mv88e6xxx_probe+0x44c/0x694 [mv88e6xxx]
           mdio_probe+0x2c/0x54
           really_probe+0x200/0x2c4
           driver_probe_device+0x5c/0x174
           __driver_attach+0xd8/0xdc
           bus_for_each_dev+0x58/0x7c
           bus_add_driver+0xe4/0x1f0
           driver_register+0x7c/0x110
           mdio_driver_register+0x24/0x58
           do_one_initcall+0x74/0x2e8
           do_init_module+0x60/0x1d0
           load_module+0x1968/0x1ff4
           sys_finit_module+0x8c/0x98
           ret_fast_syscall+0x0/0x28
           0xbedf2ae8
    
    other info that might help us debug this:
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock(&desc->request_mutex);
                                   lock(&chip->reg_lock);
                                   lock(&desc->request_mutex);
      lock(&chip->reg_lock);
    
    &desc->request_mutex refer to two different mutex. #1 is the GPIO for
    the chip interrupt. #2 is the chained interrupt between global 1 and
    global 2.
    
    Add lockdep classes to the GPIO interrupt to avoid this.
    
    Reported-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9cf94eca1be344a6bdbd6fcd70873a851d52f07
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sun Feb 3 00:14:33 2019 +0200

    mmc: omap: fix the maximum timeout setting
    
    [ Upstream commit a6327b5e57fdc679c842588c3be046c0b39cc127 ]
    
    When running OMAP1 kernel on QEMU, MMC access is annoyingly noisy:
    
            MMC: CTO of 0xff and 0xfe cannot be used!
            MMC: CTO of 0xff and 0xfe cannot be used!
            MMC: CTO of 0xff and 0xfe cannot be used!
            [ad inf.]
    
    Emulator warnings appear to be valid. The TI document SPRU680 [1]
    ("OMAP5910 Dual-Core Processor MultiMedia Card/Secure Data Memory Card
    (MMC/SD) Reference Guide") page 36 states that the maximum timeout is 253
    cycles and "0xff and 0xfe cannot be used".
    
    Fix by using 0xfd as the maximum timeout.
    
    Tested using QEMU 2.5 (Siemens SX1 machine, OMAP310), and also checked on
    real hardware using Palm TE (OMAP310), Nokia 770 (OMAP1710) and Nokia N810
    (OMAP2420) that MMC works as before.
    
    [1] http://www.ti.com/lit/ug/spru680/spru680.pdf
    
    Fixes: 730c9b7e6630f ("[MMC] Add OMAP MMC host driver")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 895927dc1c6aaab1a49b2ce936ee9140593d06c3
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Nov 21 14:03:10 2018 -0500

    btrfs: don't enospc all tickets on flush failure
    
    [ Upstream commit f91587e4151e84f798f37839dddd3e4152fb4c76 ]
    
    With the introduction of the per-inode block_rsv it became possible to
    have really really large reservation requests made because of data
    fragmentation.  Since the ticket stuff assumed that we'd always have
    relatively small reservation requests it just killed all tickets if we
    were unable to satisfy the current request.
    
    However, this is generally not the case anymore.  So fix this logic to
    instead see if we had a ticket that we were able to give some
    reservation to, and if we were continue the flushing loop again.
    
    Likewise we make the tickets use the space_info_add_old_bytes() method
    of returning what reservation they did receive in hopes that it could
    satisfy reservations down the line.
    
    Reviewed-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8f6019b404c89400fdffd186d17ffcf42973e2b8
Author: Qu Wenruo <wqu@suse.com>
Date:   Fri Jan 25 07:55:27 2019 +0800

    btrfs: qgroup: Make qgroup async transaction commit more aggressive
    
    [ Upstream commit f5fef4593653dfa2a865c485bb81415de51d5c99 ]
    
    [BUG]
    Btrfs qgroup will still hit EDQUOT under the following case:
    
      $ dev=/dev/test/test
      $ mnt=/mnt/btrfs
      $ umount $mnt &> /dev/null
      $ umount $dev &> /dev/null
    
      $ mkfs.btrfs -f $dev
      $ mount $dev $mnt -o nospace_cache
    
      $ btrfs subv create $mnt/subv
      $ btrfs quota enable $mnt
      $ btrfs quota rescan -w $mnt
      $ btrfs qgroup limit -e 1G $mnt/subv
    
      $ fallocate -l 900M $mnt/subv/padding
      $ sync
    
      $ rm $mnt/subv/padding
    
      # Hit EDQUOT
      $ xfs_io -f -c "pwrite 0 512M" $mnt/subv/real_file
    
    [CAUSE]
    Since commit a514d63882c3 ("btrfs: qgroup: Commit transaction in advance
    to reduce early EDQUOT"), btrfs is not forced to commit transaction to
    reclaim more quota space.
    
    Instead, we just check pertrans metadata reservation against some
    threshold and try to do asynchronously transaction commit.
    
    However in above case, the pertrans metadata reservation is pretty small
    thus it will never trigger asynchronous transaction commit.
    
    [FIX]
    Instead of only accounting pertrans metadata reservation, we calculate
    how much free space we have, and if there isn't much free space left,
    commit transaction asynchronously to try to free some space.
    
    This may slow down the fs when we have less than 32M free qgroup space,
    but should reduce a lot of false EDQUOT, so the cost should be
    acceptable.
    
    Signed-off-by: Qu Wenruo <wqu@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a27e9ef2338f5dfdb039a3ce8aa3b4c11c7caca
Author: Andi Kleen <ak@linux.intel.com>
Date:   Sun Feb 24 07:37:12 2019 -0800

    perf script: Handle missing fields with -F +..
    
    [ Upstream commit 4b6ac811bce46c83811b83cdf87b41251596b9fc ]
    
    When using -F + syntax to add a field the existing defaults are
    currently all marked user_set. This can cause errors when some field is
    missing in the perf.data
    
    This patch tracks the actually user set fields separately, so that we don't
    error out in this case.
    
    Before:
    
      % perf record true
      % perf script -F +metric
      Samples for 'cycles:ppp' event do not have CPU attribute set. Cannot print 'cpu' field.
      %
    
    After:
    
      5 perf record true
      % perf script -F +metric
                  perf 28936 278636.237688:          1 cycles:ppp:  ffffffff8117da99 perf_event_exec+0x59 (/lib/modules/4.20.0-odilo/build/vmlinux)
      ...
      %
    
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: Jiri Olsa <jolsa@kernel.org>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/20190224153722.27020-2-andi@firstfloor.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 565e4ecefeae67d0b1575dd6016b161deda00db5
Author: Jacob Keller <jacob.e.keller@intel.com>
Date:   Fri Feb 8 12:50:33 2019 -0800

    ice: fix ice_remove_rule_internal vsi_list handling
    
    [ Upstream commit f9264dd687f8d3f9104c9900f8f3e5e419f27c55 ]
    
    When adding multiple VLANs to the same VSI, the ice_add_vlan code will
    share the VSI list, so as not to create multiple unnecessary VSI lists.
    
    Consider the following flow
    
      ice_add_vlan(hw, <VSI 0 VID 7, VSI 0 VID 8, VSI 0 VID 9>)
    
    Where we add three VLAN filters for VIDs 7, 8, and 9, all for VSI 0.
    
    The ice_add_vlan will create a single vsi_list and share it among all
    the filters.
    
    Later, if we try to remove a VLAN,
    
      ice_remove_vlan(hw, <VSI 0 VID 7>)
    
    Then the removal code will update the vsi_list and remove VSI 0 from it.
    But, since the vsi_list is shared, this breaks the list for the other
    users who reference it. We actually even free the VSI list memory, and
    may result in segmentation faults.
    
    This is due to the way that VLAN rule share VSI lists with reference
    counts, and is caused because we call ice_rem_update_vsi_list even when
    the ref_cnt is greater than one.
    
    To fix this, handle the case where ref_cnt is greater than one
    separately. In this case, we need to remove the associated rule without
    modifying the vsi_list, since it is currently being referenced by
    another rule. Instead, we just need to decrement the VSI list ref_cnt.
    
    The case for handling sharing of VSI lists with multiple VSIs is not
    currently supported by this code. No such rules will be created today,
    and this code will require changes if/when such code is added.
    
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Reviewed-by: Bruce Allan <bruce.w.allan@intel.com>
    Signed-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b3425e19f61492291de9abe2b987aed167982973
Author: Marek Behún <marek.behun@nic.cz>
Date:   Mon Feb 25 12:39:54 2019 +0100

    net: dsa: mv88e6xxx: Default CMODE to 1000BaseX only on 6390X
    
    [ Upstream commit 65b034cf5c1766492aa107958149b440889480be ]
    
    Commit 787799a9d555 sets the SERDES interfaces of 6390 and 6390X to
    1000BaseX, but this is only needed on 6390X, since there are SERDES
    interfaces which can be used on lower ports on 6390.
    
    This commit fixes this by returning to previous behaviour on 6390.
    (Previous behaviour means that CMODE is not set at all if requested mode
    is NA).
    
    This is needed on Turris MOX, where the 88e6190 is connected to CPU in
    2500BaseX mode.
    
    Fixes: 787799a9d555 ("net: dsa: mv88e6xxx: Default ports 9/10 6390X CMODE to 1000BaseX")
    Signed-off-by: Marek Behún <marek.behun@nic.cz>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 13fe58e28c216dd09793c23fbe7645c4db9a3470
Author: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Date:   Tue Feb 26 10:09:34 2019 +0530

    powerpc/hugetlb: Handle mmap_min_addr correctly in get_unmapped_area callback
    
    [ Upstream commit 5330367fa300742a97e20e953b1f77f48392faae ]
    
    After we ALIGN up the address we need to make sure we didn't overflow
    and resulted in zero address. In that case, we need to make sure that
    the returned address is greater than mmap_min_addr.
    
    This fixes selftest va_128TBswitch --run-hugetlb reporting failures when
    run as non root user for
    
    mmap(-1, MAP_HUGETLB)
    
    The bug is that a non-root user requesting address -1 will be given address 0
    which will then fail, whereas they should have been given something else that
    would have succeeded.
    
    We also avoid the first mmap(-1, MAP_HUGETLB) returning NULL address as mmap address
    with this change. So we think this is not a security issue, because it only affects
    whether we choose an address below mmap_min_addr, not whether we
    actually allow that address to be mapped. ie. there are existing capability
    checks to prevent a user mapping below mmap_min_addr and those will still be
    honoured even without this fix.
    
    Fixes: 484837601d4d ("powerpc/mm: Add radix support for hugetlb")
    Reviewed-by: Laurent Dufour <ldufour@linux.vnet.ibm.com>
    Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 957b2d2317e99b7e4af0a1203a0ebbb1f8267cd7
Author: Nicolas Boichat <drinkcat@chromium.org>
Date:   Mon Jan 28 17:43:01 2019 +0800

    iommu/io-pgtable-arm-v7s: Only kmemleak_ignore L2 tables
    
    [ Upstream commit 032ebd8548c9d05e8d2bdc7a7ec2fe29454b0ad0 ]
    
    L1 tables are allocated with __get_dma_pages, and therefore already
    ignored by kmemleak.
    
    Without this, the kernel would print this error message on boot,
    when the first L1 table is allocated:
    
    [    2.810533] kmemleak: Trying to color unknown object at 0xffffffd652388000 as Black
    [    2.818190] CPU: 5 PID: 39 Comm: kworker/5:0 Tainted: G S                4.19.16 #8
    [    2.831227] Workqueue: events deferred_probe_work_func
    [    2.836353] Call trace:
    ...
    [    2.852532]  paint_ptr+0xa0/0xa8
    [    2.855750]  kmemleak_ignore+0x38/0x6c
    [    2.859490]  __arm_v7s_alloc_table+0x168/0x1f4
    [    2.863922]  arm_v7s_alloc_pgtable+0x114/0x17c
    [    2.868354]  alloc_io_pgtable_ops+0x3c/0x78
    ...
    
    Fixes: e5fc9753b1a8314 ("iommu/io-pgtable: Add ARMv7 short descriptor support")
    Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit af6366bb82e6d5d6cd705d4f85378ea036b1a3c6
Author: Stefan Agner <stefan@agner.ch>
Date:   Mon Feb 18 00:58:29 2019 +0100

    ARM: 8845/1: use unified assembler in c files
    
    [ Upstream commit b7e8c9397cd4efe6567d2728f091f1b728025533 ]
    
    Use unified assembler syntax (UAL) in inline assembler. Divided
    syntax is considered deprecated. This will also allow to build
    the kernel using LLVM's integrated assembler.
    
    When compiling non-Thumb2 GCC always emits a ".syntax divided"
    at the beginning of the inline assembly which makes the
    assembler fail. Since GCC 5 there is the -masm-syntax-unified
    GCC option which make GCC assume unified syntax asm and hence
    emits ".syntax unified" even in ARM mode. However, the option
    is broken since GCC version 6 (see GCC PR88648 [1]). Work
    around by adding ".syntax unified" as part of the inline
    assembly.
    
    [0] https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#index-masm-syntax-unified
    [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88648
    
    Signed-off-by: Stefan Agner <stefan@agner.ch>
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbda5b6625bda33a1369a6aadf756287fd70c1d8
Author: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date:   Wed Feb 13 17:14:42 2019 +0100

    ARM: 8840/1: use a raw_spinlock_t in unwind
    
    [ Upstream commit 74ffe79ae538283bbf7c155e62339f1e5c87b55a ]
    
    Mostly unwind is done with irqs enabled however SLUB may call it with
    irqs disabled while creating a new SLUB cache.
    
    I had system freeze while loading a module which called
    kmem_cache_create() on init. That means SLUB's __slab_alloc() disabled
    interrupts and then
    
    ->new_slab_objects()
     ->new_slab()
      ->setup_object()
       ->setup_object_debug()
        ->init_tracking()
         ->set_track()
          ->save_stack_trace()
           ->save_stack_trace_tsk()
            ->walk_stackframe()
             ->unwind_frame()
              ->unwind_find_idx()
               =>spin_lock_irqsave(&unwind_lock);
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8cada074059ffc05a34b1268b349efa8f38f5199
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Sun Feb 24 12:58:02 2019 +0100

    serial: 8250_pxa: honor the port number from devicetree
    
    [ Upstream commit fe9ed6d2483fda55465f32924fb15bce0fac3fac ]
    
    Like the other OF-enabled drivers, use the port number from the firmware if
    the devicetree specifies an alias:
    
      aliases {
          ...
          serial2 = &uart2; /* Should be ttyS2 */
      }
    
    This is how the deprecated pxa.c driver behaved, switching to 8250_pxa
    messes up the numbering.
    
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1e084b9e2037489865c7ee18dd4e3c19b958904f
Author: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Date:   Mon Feb 25 10:54:01 2019 -0700

    coresight: etm4x: Add support to enable ETMv4.2
    
    [ Upstream commit 5666dfd1d8a45a167f0d8b4ef47ea7f780b1f24a ]
    
    SDM845 has ETMv4.2 and can use the existing etm4x driver.
    But the current etm driver checks only for ETMv4.0 and
    errors out for other etm4x versions. This patch adds this
    missing support to enable SoC's with ETMv4x to use same
    driver by checking only the ETM architecture major version
    number.
    
    Without this change, we get below error during etm probe:
    
    / # dmesg | grep etm
    [    6.660093] coresight-etm4x: probe of 7040000.etm failed with error -22
    [    6.666902] coresight-etm4x: probe of 7140000.etm failed with error -22
    [    6.673708] coresight-etm4x: probe of 7240000.etm failed with error -22
    [    6.680511] coresight-etm4x: probe of 7340000.etm failed with error -22
    [    6.687313] coresight-etm4x: probe of 7440000.etm failed with error -22
    [    6.694113] coresight-etm4x: probe of 7540000.etm failed with error -22
    [    6.700914] coresight-etm4x: probe of 7640000.etm failed with error -22
    [    6.707717] coresight-etm4x: probe of 7740000.etm failed with error -22
    
    With this change, etm probe is successful:
    
    / # dmesg | grep etm
    [    6.659198] coresight-etm4x 7040000.etm: CPU0: ETM v4.2 initialized
    [    6.665848] coresight-etm4x 7140000.etm: CPU1: ETM v4.2 initialized
    [    6.672493] coresight-etm4x 7240000.etm: CPU2: ETM v4.2 initialized
    [    6.679129] coresight-etm4x 7340000.etm: CPU3: ETM v4.2 initialized
    [    6.685770] coresight-etm4x 7440000.etm: CPU4: ETM v4.2 initialized
    [    6.692403] coresight-etm4x 7540000.etm: CPU5: ETM v4.2 initialized
    [    6.699024] coresight-etm4x 7640000.etm: CPU6: ETM v4.2 initialized
    [    6.705646] coresight-etm4x 7740000.etm: CPU7: ETM v4.2 initialized
    
    Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
    Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e28ed0b7b8dc9ce7e642b72309291ef90dc7c2c
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Feb 25 22:38:55 2019 -0700

    powerpc/xmon: Fix opcode being uninitialized in print_insn_powerpc
    
    [ Upstream commit e7140639b1de65bba435a6bd772d134901141f86 ]
    
    When building with -Wsometimes-uninitialized, Clang warns:
    
      arch/powerpc/xmon/ppc-dis.c:157:7: warning: variable 'opcode' is used
      uninitialized whenever 'if' condition is false
      [-Wsometimes-uninitialized]
        if (cpu_has_feature(CPU_FTRS_POWER9))
            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      arch/powerpc/xmon/ppc-dis.c:167:7: note: uninitialized use occurs here
        if (opcode == NULL)
            ^~~~~~
      arch/powerpc/xmon/ppc-dis.c:157:3: note: remove the 'if' if its
      condition is always true
        if (cpu_has_feature(CPU_FTRS_POWER9))
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      arch/powerpc/xmon/ppc-dis.c:132:38: note: initialize the variable
      'opcode' to silence this warning
        const struct powerpc_opcode *opcode;
                                           ^
                                            = NULL
      1 warning generated.
    
    This warning seems to make no sense on the surface because opcode is set
    to NULL right below this statement. However, there is a comma instead of
    semicolon to end the dialect assignment, meaning that the opcode
    assignment only happens in the if statement. Properly terminate that
    line so that Clang no longer warns.
    
    Fixes: 5b102782c7f4 ("powerpc/xmon: Enable disassembly files (compilation changes)")
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e91baea2c1fc8568fa149445e7714dcefb6cde5
Author: Alagu Sankar <alagusankar@silex-india.com>
Date:   Mon Feb 25 11:46:03 2019 +0200

    ath10k: don't report unset rssi values to mac80211
    
    [ Upstream commit 7d444522303177f3a3c09b9abb104ddeea470a70 ]
    
    The SDIO firmware does not provide RSSI value to the host, it's only set to
    zero. In that case don't report the value to mac80211. One risk here is that
    value zero might be a valid value with other firmware, currently there's no way
    to detect that.
    
    Without the fix, the rssi value indicated by iw changes between the actual
    value and -95.
    
    Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00005-QCARMSWP-1.
    
    Co-developed-by: Wen Gong <wgong@codeaurora.org>
    Signed-off-by: Alagu Sankar <alagusankar@silex-india.com>
    Signed-off-by: Wen Gong <wgong@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 33cb50fa0930fa61b7fb70e74f549438b4be2688
Author: Mathias Fröhlich <Mathias.Froehlich@web.de>
Date:   Sun Feb 10 11:13:01 2019 +0100

    drm/amd/display: Fix reference counting for struct dc_sink.
    
    [ Upstream commit dcd5fb82ffb484124203aa339733663ac0b059f3 ]
    
    Reference counting in amdgpu_dm_connector for amdgpu_dm_connector::dc_sink
    and amdgpu_dm_connector::dc_em_sink as well as in dc_link::local_sink seems
    to be out of shape. Thus make reference counting consistent for these
    members and just plain increment the reference count when the variable
    gets assigned and decrement when the pointer is set to zero or replaced.
    Also simplify reference counting in selected function sopes to be sure the
    reference is released in any case. In some cases add NULL pointer check
    before dereferencing.
    At a hand full of places a comment is placed to stat that the reference
    increment happened already somewhere else.
    
    This actually fixes the following kernel bug on my system when enabling
    display core in amdgpu. There are some more similar bug reports around,
    so it probably helps at more places.
    
       kernel BUG at mm/slub.c:294!
       invalid opcode: 0000 [#1] SMP PTI
       CPU: 9 PID: 1180 Comm: Xorg Not tainted 5.0.0-rc1+ #2
       Hardware name: Supermicro X10DAi/X10DAI, BIOS 3.0a 02/05/2018
       RIP: 0010:__slab_free+0x1e2/0x3d0
       Code: 8b 54 24 30 48 89 4c 24 28 e8 da fb ff ff 4c 8b 54 24 28 85 c0 0f 85 67 fe ff ff 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 <0f> 0b 49 3b 5c 24 28 75 ab 48 8b 44 24 30 49 89 4c 24 28 49 89 44
       RSP: 0018:ffffb0978589fa90 EFLAGS: 00010246
       RAX: ffff92f12806c400 RBX: 0000000080200019 RCX: ffff92f12806c400
       RDX: ffff92f12806c400 RSI: ffffdd6421a01a00 RDI: ffff92ed2f406e80
       RBP: ffffb0978589fb40 R08: 0000000000000001 R09: ffffffffc0ee4748
       R10: ffff92f12806c400 R11: 0000000000000001 R12: ffffdd6421a01a00
       R13: ffff92f12806c400 R14: ffff92ed2f406e80 R15: ffffdd6421a01a20
       FS:  00007f4170be0ac0(0000) GS:ffff92ed2fb40000(0000) knlGS:0000000000000000
       CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
       CR2: 0000562818aaa000 CR3: 000000045745a002 CR4: 00000000003606e0
       DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
       DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
       Call Trace:
        ? drm_dbg+0x87/0x90 [drm]
        dc_stream_release+0x28/0x50 [amdgpu]
        amdgpu_dm_connector_mode_valid+0xb4/0x1f0 [amdgpu]
        drm_helper_probe_single_connector_modes+0x492/0x6b0 [drm_kms_helper]
        drm_mode_getconnector+0x457/0x490 [drm]
        ? drm_connector_property_set_ioctl+0x60/0x60 [drm]
        drm_ioctl_kernel+0xa9/0xf0 [drm]
        drm_ioctl+0x201/0x3a0 [drm]
        ? drm_connector_property_set_ioctl+0x60/0x60 [drm]
        amdgpu_drm_ioctl+0x49/0x80 [amdgpu]
        do_vfs_ioctl+0xa4/0x630
        ? __sys_recvmsg+0x83/0xa0
        ksys_ioctl+0x60/0x90
        __x64_sys_ioctl+0x16/0x20
        do_syscall_64+0x5b/0x160
        entry_SYSCALL_64_after_hwframe+0x44/0xa9
       RIP: 0033:0x7f417110809b
       Code: 0f 1e fa 48 8b 05 ed bd 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d bd bd 0c 00 f7 d8 64 89 01 48
       RSP: 002b:00007ffdd8d1c268 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
       RAX: ffffffffffffffda RBX: 0000562818a8ebc0 RCX: 00007f417110809b
       RDX: 00007ffdd8d1c2a0 RSI: 00000000c05064a7 RDI: 0000000000000012
       RBP: 00007ffdd8d1c2a0 R08: 0000562819012280 R09: 0000000000000007
       R10: 0000000000000000 R11: 0000000000000246 R12: 00000000c05064a7
       R13: 0000000000000012 R14: 0000000000000012 R15: 00007ffdd8d1c2a0
       Modules linked in: nfsv4 dns_resolver nfs lockd grace fscache fuse vfat fat amdgpu intel_rapl sb_edac x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul chash gpu_sched crc32_pclmul snd_hda_codec_realtek ghash_clmulni_intel amd_iommu_v2 iTCO_wdt iTCO_vendor_support ttm snd_hda_codec_generic snd_hda_codec_hdmi ledtrig_audio snd_hda_intel drm_kms_helper snd_hda_codec intel_cstate snd_hda_core drm snd_hwdep snd_seq snd_seq_device intel_uncore snd_pcm intel_rapl_perf snd_timer snd soundcore ioatdma pcspkr intel_wmi_thunderbolt mxm_wmi i2c_i801 lpc_ich pcc_cpufreq auth_rpcgss sunrpc igb crc32c_intel i2c_algo_bit dca wmi hid_cherry analog gameport joydev
    
    This patch is based on agd5f/drm-next-5.1-wip. This patch does not require
    all of that, but agd5f/drm-next-5.1-wip contains at least one more dc_sink
    counting fix that I could spot.
    
    Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de>
    Reviewed-by: Leo Li <sunpeng.li@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 29b55af8a429e2ccbf35e68d3ea6593825d4153c
Author: Josef Bacik <josef@toxicpanda.com>
Date:   Wed Feb 6 15:46:15 2019 -0500

    btrfs: save drop_progress if we drop refs at all
    
    [ Upstream commit aea6f028d01d629eda2e958ccd1133e805cda159 ]
    
    Previously we only updated the drop_progress key if we were in the
    DROP_REFERENCE stage of snapshot deletion.  This is because the
    UPDATE_BACKREF stage checks the flags of the blocks it's converting to
    FULL_BACKREF, so if we go over a block we processed before it doesn't
    matter, we just don't do anything.
    
    The problem is in do_walk_down() we will go ahead and drop the roots
    reference to any blocks that we know we won't need to walk into.
    
    Given subvolume A and snapshot B.  The root of B points to all of the
    nodes that belong to A, so all of those nodes have a refcnt > 1.  If B
    did not modify those blocks it'll hit this condition in do_walk_down
    
    if (!wc->update_ref ||
        generation <= root->root_key.offset)
            goto skip;
    
    and in "goto skip" we simply do a btrfs_free_extent() for that bytenr
    that we point at.
    
    Now assume we modified some data in B, and then took a snapshot of B and
    call it C.  C points to all the nodes in B, making every node the root
    of B points to have a refcnt > 1.  This assumes the root level is 2 or
    higher.
    
    We delete snapshot B, which does the above work in do_walk_down,
    free'ing our ref for nodes we share with A that we didn't modify.  Now
    we hit a node we _did_ modify, thus we own.  We need to walk down into
    this node and we set wc->stage == UPDATE_BACKREF.  We walk down to level
    0 which we also own because we modified data.  We can't walk any further
    down and thus now need to walk up and start the next part of the
    deletion.  Now walk_up_proc is supposed to put us back into
    DROP_REFERENCE, but there's an exception to this
    
    if (level < wc->shared_level)
            goto out;
    
    we are at level == 0, and our shared_level == 1.  We skip out of this
    one and go up to level 1.  Since path->slots[1] < nritems we
    path->slots[1]++ and break out of walk_up_tree to stop our transaction
    and loop back around.  Now in btrfs_drop_snapshot we have this snippet
    
    if (wc->stage == DROP_REFERENCE) {
            level = wc->level;
            btrfs_node_key(path->nodes[level],
                           &root_item->drop_progress,
                           path->slots[level]);
            root_item->drop_level = level;
    }
    
    our stage == UPDATE_BACKREF still, so we don't update the drop_progress
    key.  This is a problem because we would have done btrfs_free_extent()
    for the nodes leading up to our current position.  If we crash or
    unmount here and go to remount we'll start over where we were before and
    try to free our ref for blocks we've already freed, and thus abort()
    out.
    
    Fix this by keeping track of the last place we dropped a reference for
    our block in do_walk_down.  Then if wc->stage == UPDATE_BACKREF we know
    we'll start over from a place we meant to, and otherwise things continue
    to work as they did before.
    
    I have a complicated reproducer for this problem, without this patch
    we'll fail to fsck the fs when replaying the log writes log.  With this
    patch we can replay the whole log without any fsck or mount failures.
    
    The steps to reproduce this easily are sort of tricky, I had to add a
    couple of debug patches to the kernel in order to make it easy,
    basically I just needed to make sure we did actually commit the
    transaction every time we finished a walk_down_tree/walk_up_tree combo.
    
    The reproducer:
    
    1) Creates a base subvolume.
    2) Creates 100k files in the subvolume.
    3) Snapshots the base subvolume (snap1).
    4) Touches files 5000-6000 in snap1.
    5) Snapshots snap1 (snap2).
    6) Deletes snap1.
    
    I do this with dm-log-writes, and then replay to every FUA in the log
    and fsck the fs.
    
    Reviewed-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    [ copy reproducer steps ]
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3e9d97396cde9d626c7da381e47ac5ee676876c
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Fri Feb 22 16:40:07 2019 +0900

    kbuild: make -r/-R effective in top Makefile for old Make versions
    
    [ Upstream commit 3812b8c5c5d527239ac015f1f2c7654da7fcfbba ]
    
    Adding -rR to MAKEFLAGS is important because we do not want to
    be bothered by built-in implicit rules or variables.
    
    One problem that used to exist in older GNU Make versions is
    
      MAKEFLAGS += -rR
    
    ... does not become effective in the current Makefile. When you are
    building with O= option, it becomes effective in the top Makefile
    since it recurses via 'sub-make' target. Otherwise, the top Makefile
    tries implicit rules. That is why we explicitly add empty rules for
    Makefiles, but we often miss to do that.
    
    In fact, adding -d option to older GNU Make versions shows it is
    trying a bunch of implicit pattern rules.
    
     Considering target file `scripts/Makefile.kcov'.
      Looking for an implicit rule for `scripts/Makefile.kcov'.
      Trying pattern rule with stem `Makefile.kcov'.
      Trying implicit prerequisite `scripts/Makefile.kcov.o'.
      Trying pattern rule with stem `Makefile.kcov'.
      Trying implicit prerequisite `scripts/Makefile.kcov.c'.
      Trying pattern rule with stem `Makefile.kcov'.
      Trying implicit prerequisite `scripts/Makefile.kcov.cc'.
      Trying pattern rule with stem `Makefile.kcov'.
      Trying implicit prerequisite `scripts/Makefile.kcov.C'.
      ...
    
    This issue was fixed by GNU Make commit 58dae243526b ("[Savannah #20501]
    Handle adding -r/-R to MAKEFLAGS in the makefile"). So, it is no longer
    a problem if you use GNU Make 4.0 or later. However, older versions are
    still widely used.
    
    So, I decided to patch the kernel Makefile to invoke sub-make regardless
    of O= option. This will allow further cleanups.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 366a5ee958d0847541446c1d967854561e74aaa3
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Fri Feb 22 16:40:10 2019 +0900

    kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing
    
    [ Upstream commit 9390dff66a52d1a60c6e517d8fa6cdbdffc83cb1 ]
    
    If include/config/auto.conf.cmd is lost for some reasons, it is not
    self-healing, so the top Makefile misses to run syncconfig.
    Move include/config/auto.conf.cmd to the target side.
    
    I used a pattern rule instead of a normal rule here although it is
    a bit gross.
    
    If the rule were written with a normal rule like this,
    
      include/config/auto.conf \
      include/config/auto.conf.cmd \
      include/config/tristate.conf: $(KCONFIG_CONFIG)
              $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
    
    ... syncconfig would be executed per target.
    
    Using a pattern rule makes sure that syncconfig is executed just once
    because Make assumes the recipe will create all of the targets.
    
    Here is a quote from the GNU Make manual [1]:
    
    "Pattern rules may have more than one target. Unlike normal rules,
    this does not act as many different rules with the same prerequisites
    and recipe. If a pattern rule has multiple targets, make knows that
    the rule's recipe is responsible for making all of the targets. The
    recipe is executed only once to make all the targets. When searching
    for a pattern rule to match a target, the target patterns of a rule
    other than the one that matches the target in need of a rule are
    incidental: make worries only about giving a recipe and prerequisites
    to the file presently in question. However, when this file's recipe is
    run, the other targets are marked as having been updated themselves."
    
    [1]: https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 22efb9f2aeff8be9b23912b142e3d4b77479e7b8
Author: Benjamin Block <bblock@linux.ibm.com>
Date:   Thu Feb 21 10:18:00 2019 +0100

    scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c
    
    [ Upstream commit 1749ef00f7312679f76d5e9104c5d1e22a829038 ]
    
    We had a test-report where, under memory pressure, adding LUNs to the
    systems would fail (the tests add LUNs strictly in sequence):
    
    [ 5525.853432] scsi 0:0:1:1088045124: Direct-Access     IBM      2107900          .148 PQ: 0 ANSI: 5
    [ 5525.853826] scsi 0:0:1:1088045124: alua: supports implicit TPGS
    [ 5525.853830] scsi 0:0:1:1088045124: alua: device naa.6005076303ffd32700000000000044da port group 0 rel port 43
    [ 5525.853931] sd 0:0:1:1088045124: Attached scsi generic sg10 type 0
    [ 5525.854075] sd 0:0:1:1088045124: [sdk] Disabling DIF Type 1 protection
    [ 5525.855495] sd 0:0:1:1088045124: [sdk] 2097152 512-byte logical blocks: (1.07 GB/1.00 GiB)
    [ 5525.855606] sd 0:0:1:1088045124: [sdk] Write Protect is off
    [ 5525.855609] sd 0:0:1:1088045124: [sdk] Mode Sense: ed 00 00 08
    [ 5525.855795] sd 0:0:1:1088045124: [sdk] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
    [ 5525.857838]  sdk: sdk1
    [ 5525.859468] sd 0:0:1:1088045124: [sdk] Attached SCSI disk
    [ 5525.865073] sd 0:0:1:1088045124: alua: transition timeout set to 60 seconds
    [ 5525.865078] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
    [ 5526.015070] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
    [ 5526.015213] sd 0:0:1:1088045124: alua: port group 00 state A preferred supports tolusnA
    [ 5526.587439] scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured
    [ 5526.588562] scsi_alloc_sdev: Allocation failure during SCSI scanning, some SCSI devices might not be configured
    
    Looking at the code of scsi_alloc_sdev(), and all the calling contexts,
    there seems to be no reason to use GFP_ATMOIC here. All the different
    call-contexts use a mutex at some point, and nothing in between that
    requires no sleeping, as far as I could see. Additionally, the code that
    later allocates the block queue for the device (scsi_mq_alloc_queue())
    already uses GFP_KERNEL.
    
    There are similar allocations in two other functions:
    scsi_probe_and_add_lun(), and scsi_add_lun(),; that can also be done with
    GFP_KERNEL.
    
    Here is the contexts for the three functions so far:
    
        scsi_alloc_sdev()
            scsi_probe_and_add_lun()
                scsi_sequential_lun_scan()
                    __scsi_scan_target()
                        scsi_scan_target()
                            mutex_lock()
                        scsi_scan_channel()
                            scsi_scan_host_selected()
                                mutex_lock()
                scsi_report_lun_scan()
                    __scsi_scan_target()
                        ...
                __scsi_add_device()
                    mutex_lock()
                __scsi_scan_target()
                    ...
            scsi_report_lun_scan()
                ...
            scsi_get_host_dev()
                mutex_lock()
    
        scsi_probe_and_add_lun()
            ...
    
        scsi_add_lun()
            scsi_probe_and_add_lun()
                ...
    
    So replace all these, and give them a bit of a better chance to succeed,
    with more chances of reclaim.
    
    Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b17b4bd79afc187234f0215d9c84aaf59d44f8c7
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Wed Feb 13 14:38:18 2019 +1100

    powerpc/powernv/ioda: Fix locked_vm counting for memory used by IOMMU tables
    
    [ Upstream commit 11f5acce2fa43b015a8120fa7620fa4efd0a2952 ]
    
    We store 2 multilevel tables in iommu_table - one for the hardware and
    one with the corresponding userspace addresses. Before allocating
    the tables, the iommu_table_group_ops::get_table_size() hook returns
    the combined size of the two and VFIO SPAPR TCE IOMMU driver adjusts
    the locked_vm counter correctly. When the table is actually allocated,
    the amount of allocated memory is stored in iommu_table::it_allocated_size
    and used to decrement the locked_vm counter when we release the memory
    used by the table; .get_table_size() and .create_table() calculate it
    independently but the result is expected to be the same.
    
    However the allocator does not add the userspace table size to
    .it_allocated_size so when we destroy the table because of VFIO PCI
    unplug (i.e. VFIO container is gone but the userspace keeps running),
    we decrement locked_vm by just a half of size of memory we are
    releasing.
    
    To make things worse, since we enabled on-demand allocation of
    indirect levels, it_allocated_size contains only the amount of memory
    actually allocated at the table creation time which can just be a
    fraction. It is not a problem with incrementing locked_vm (as
    get_table_size() value is used) but it is with decrementing.
    
    As the result, we leak locked_vm and may not be able to allocate more
    IOMMU tables after few iterations of hotplug/unplug.
    
    This sets it_allocated_size in the pnv_pci_ioda2_ops::create_table()
    hook to what pnv_pci_ioda2_get_table_size() returns so from now on we
    have a single place which calculates the maximum memory a table can
    occupy. The original meaning of it_allocated_size is somewhat lost now
    though.
    
    We do not ditch it_allocated_size whatsoever here and we do not call
    get_table_size() from vfio_iommu_spapr_tce.c when decrementing
    locked_vm as we may have multiple IOMMU groups per container and even
    though they all are supposed to have the same get_table_size()
    implementation, there is a small chance for failure or confusion.
    
    Fixes: 090bad39b237 ("powerpc/powernv: Add indirect levels to it_userspace")
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7fe45a018fb3b3fcb1d6ae08f28c849cd6795409
Author: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Date:   Wed Feb 27 06:51:36 2019 +0000

    usb: chipidea: Grab the (legacy) USB PHY by phandle first
    
    [ Upstream commit 68ef236274793066b9ba3154b16c0acc1c891e5c ]
    
    According to the chipidea driver bindings, the USB PHY is specified via
    the "phys" phandle node. However, this only takes effect for USB PHYs
    that use the common PHY framework. For legacy USB PHYs, a simple lookup
    based on the USB PHY type is done instead.
    
    This does not play out well when more than one USB PHY is registered,
    since the first registered PHY matching the type will always be
    returned regardless of what the driver was bound to.
    
    Fix this by looking up the PHY based on the "phys" phandle node.
    Although generic PHYs are rather matched by their "phys-name" and not
    the "phys" phandle directly, there is no helper for similar lookup on
    legacy PHYs and it's probably not worth the effort to add it.
    
    When no legacy USB PHY is found by phandle, fallback to grabbing any
    registered USB2 PHY. This ensures backward compatibility if some users
    were actually relying on this mechanism.
    
    Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a133f9f7f96ad2b6d44d825e038d003db9b38dc3
Author: Yonghong Song <yhs@fb.com>
Date:   Wed Feb 27 13:22:57 2019 -0800

    tools/bpf: selftests: add map lookup to test_map_in_map bpf prog
    
    [ Upstream commit 9eca5083757b679b37f210092c871916c2c222d0 ]
    
    The bpf_map_lookup_elem is added in the bpf program.
    Without previous patch, the test change will trigger the
    following error:
      $ ./test_maps
      ...
      ; value_p = bpf_map_lookup_elem(map, &key);
      20: (bf) r1 = r7
      21: (bf) r2 = r8
      22: (85) call bpf_map_lookup_elem#1
      ; if (!value_p || *value_p != 123)
      23: (15) if r0 == 0x0 goto pc+16
       R0=map_value(id=2,off=0,ks=4,vs=4,imm=0) R6=inv1 R7=map_ptr(id=0,off=0,ks=4,vs=4,imm=0)
       R8=fp-8,call_-1 R10=fp0,call_-1 fp-8=mmmmmmmm
      ; if (!value_p || *value_p != 123)
      24: (61) r1 = *(u32 *)(r0 +0)
       R0=map_value(id=2,off=0,ks=4,vs=4,imm=0) R6=inv1 R7=map_ptr(id=0,off=0,ks=4,vs=4,imm=0)
       R8=fp-8,call_-1 R10=fp0,call_-1 fp-8=mmmmmmmm
      bpf_spin_lock cannot be accessed directly by load/store
    
    With the kernel fix in the previous commit, the error goes away.
    
    Signed-off-by: Yonghong Song <yhs@fb.com>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 547272b44afa53e000afa5a5992f2a691e171aed
Author: Eric Biggers <ebiggers@google.com>
Date:   Sat Feb 23 00:23:23 2019 -0800

    crypto: cavium/zip - fix collision with generic cra_driver_name
    
    [ Upstream commit 41798036430015ad45137db2d4c213cd77fd0251 ]
    
    The cavium/zip implementation of the deflate compression algorithm is
    incorrectly being registered under the generic driver name, which
    prevents the generic implementation from being registered with the
    crypto API when CONFIG_CRYPTO_DEV_CAVIUM_ZIP=y.  Similarly the lzs
    algorithm (which does not currently have a generic implementation...)
    is incorrectly being registered as lzs-generic.
    
    Fix the naming collision by adding a suffix "-cavium" to the
    cra_driver_name of the cavium/zip algorithms.
    
    Fixes: 640035a2dc55 ("crypto: zip - Add ThunderX ZIP driver core")
    Cc: Mahipal Challa <mahipalreddy2006@gmail.com>
    Cc: Jan Glauber <jglauber@cavium.com>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1ee9d34d686180e0ddf8944425cdc5f3ce3810d0
Author: Julia Lawall <Julia.Lawall@lip6.fr>
Date:   Sat Feb 23 14:20:39 2019 +0100

    crypto: crypto4xx - add missing of_node_put after of_device_is_available
    
    [ Upstream commit 8c2b43d2d85b48a97d2f8279278a4aac5b45f925 ]
    
    Add an of_node_put when a tested device node is not available.
    
    The semantic patch that fixes this problem is as follows
    (http://coccinelle.lip6.fr):
    
    // <smpl>
    @@
    identifier f;
    local idexpression e;
    expression x;
    @@
    
    e = f(...);
    ... when != of_node_put(e)
        when != x = e
        when != e = x
        when any
    if (<+...of_device_is_available(e)...+>) {
      ... when != of_node_put(e)
    (
      return e;
    |
    + of_node_put(e);
      return ...;
    )
    }
    // </smpl>
    
    Fixes: 5343e674f32fb ("crypto4xx: integrate ppc4xx-rng into crypto4xx")
    Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b52034346cd6cc6f24ab4de2544c8017253c2c0
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Feb 14 15:00:57 2019 -0800

    lockdep/lib/tests: Fix run_tests.sh
    
    [ Upstream commit d93ac78bf7b37db36fa00225f8e9a14c7ed1b2ba ]
    
    Apparently the execute bits were set for the tests/*.sh scripts on my
    test setup but these are not set in the kernel tree. Fix this by adding
    the interpreter path in front of the script paths.
    
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: johannes.berg@intel.com
    Cc: tj@kernel.org
    Fixes: 5ecb8e94b494 ("tools/lib/lockdep/tests: Improve testing accuracy") # v5.0-rc1
    Link: https://lkml.kernel.org/r/20190214230058.196511-23-bvanassche@acm.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a73713e533230b82122579e7d004ad26984dd48e
Author: Surabhi Vishnoi <svishnoi@codeaurora.org>
Date:   Tue Feb 26 14:57:56 2019 +0530

    ath10k: Fix the wrong updation of BW in tx_stats debugfs entry
    
    [ Upstream commit ef9051c72ab7bc664e8047c55ac74bdb1c7fa3ee ]
    
    Currently, the bandwidth is updated wrongly in BW table in tx_stats
    debugfs per sta as there is difference in number of bandwidth type
    in mac80211 and driver stats table. This leads to bandwidth getting
    updated at wrong index in bandwidth table in tx_stats.
    
    Fix this index mismatch between mac80211 and driver stats table (BW table)
    by making the number of bandwidth type in driver compatible with mac80211.
    
    Tested HW: WCN3990
    Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1
    
    Fixes: a904417fc876 ("ath10k: add extended per sta tx statistics support")
    Signed-off-by: Surabhi Vishnoi <svishnoi@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e486c95f5d50df00b00c597a60cb030479994dac
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Fri Feb 22 15:15:40 2019 +0800

    mt76: fix a leaked reference by adding a missing of_node_put
    
    [ Upstream commit 34e022d8b780a03902d82fb3997ba7c7b1f40c81 ]
    
    The call to of_find_node_by_phandle returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./drivers/net/wireless/mediatek/mt76/eeprom.c:58:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 48, but without a corresponding object release within this function.
    ./drivers/net/wireless/mediatek/mt76/eeprom.c:61:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 48, but without a corresponding object release within this function.
    ./drivers/net/wireless/mediatek/mt76/eeprom.c:67:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 48, but without a corresponding object release within this function.
    ./drivers/net/wireless/mediatek/mt76/eeprom.c:70:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 48, but without a corresponding object release within this function.
    ./drivers/net/wireless/mediatek/mt76/eeprom.c:72:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 48, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: Felix Fietkau <nbd@nbd.name>
    Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com>
    Cc: Kalle Valo <kvalo@codeaurora.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Matthias Brugger <matthias.bgg@gmail.com>
    Cc: linux-wireless@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-mediatek@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96e2fec0fd8cf9e8b6d9fff087d2e40d4d9ab71b
Author: Alexei Avshalom Lazar <ailizaro@codeaurora.org>
Date:   Fri Feb 22 16:21:05 2019 +0200

    wil6210: check null pointer in _wil_cfg80211_merge_extra_ies
    
    [ Upstream commit de77a53c2d1e8fb3621e63e8e1f0f0c9a1a99ff7 ]
    
    ies1 or ies2 might be null when code inside
    _wil_cfg80211_merge_extra_ies access them.
    Add explicit check for null and make sure ies1/ies2 are not
    accessed in such a case.
    
    spos might be null and be accessed inside
    _wil_cfg80211_merge_extra_ies.
    Add explicit check for null in the while condition statement
    and make sure spos is not accessed in such a case.
    
    Signed-off-by: Alexei Avshalom Lazar <ailizaro@codeaurora.org>
    Signed-off-by: Maya Erez <merez@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d8f775092499f1afdfa0de0c7d99d0a8bcfc7891
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Thu Feb 28 13:56:27 2019 -0600

    PCI/PME: Fix hotplug/sysfs remove deadlock in pcie_pme_remove()
    
    [ Upstream commit 95c80bc6952b6a5badc7b702d23e5bf14d251e7c ]
    
    Dongdong reported a deadlock triggered by a hotplug event during a sysfs
    "remove" operation:
    
      pciehp 0000:00:0c.0:pcie004: Slot(0-1): Link Up
      # echo 1 > 0000:00:0c.0/remove
    
      PME and hotplug share an MSI/MSI-X vector.  The sysfs "remove" side is:
    
        remove_store
           pci_stop_and_remove_bus_device_locked
             pci_lock_rescan_remove
             pci_stop_and_remove_bus_device
               ...
               pcie_pme_remove
                 pcie_pme_suspend
                   synchronize_irq        # wait for hotplug IRQ handler
             pci_unlock_rescan_remove
    
      The hotplug side is:
    
        pciehp_ist
           pciehp_handle_presence_or_link_change
             pciehp_configure_device
               pci_lock_rescan_remove     # wait for pci_unlock_rescan_remove()
    
      INFO: task bash:10913 blocked for more than 120 seconds.
    
      # ps -ax |grep D
       PID TTY      STAT   TIME COMMAND
      10913 ttyAMA0  Ds+    0:00 -bash
      14022 ?        D      0:00 [irq/745-pciehp]
    
      # cat /proc/14022/stack
      __switch_to+0x94/0xd8
      pci_lock_rescan_remove+0x20/0x28
      pciehp_configure_device+0x30/0x140
      pciehp_handle_presence_or_link_change+0x324/0x458
      pciehp_ist+0x1dc/0x1e0
    
      # cat /proc/10913/stack
      __switch_to+0x94/0xd8
      synchronize_irq+0x8c/0xc0
      pcie_pme_suspend+0xa4/0x118
      pcie_pme_remove+0x20/0x40
      pcie_port_remove_service+0x3c/0x58
      ...
      pcie_port_device_remove+0x2c/0x48
      pcie_portdrv_remove+0x68/0x78
      pci_device_remove+0x48/0x120
      ...
      pci_stop_bus_device+0x84/0xc0
      pci_stop_and_remove_bus_device_locked+0x24/0x40
      remove_store+0xa4/0xb8
      dev_attr_store+0x44/0x60
      sysfs_kf_write+0x58/0x80
    
    It is incorrect to call pcie_pme_suspend() from pcie_pme_remove() for two
    reasons.
    
    First, pcie_pme_suspend() calls synchronize_irq(), which will wait for the
    native hotplug interrupt handler as well as for the PME one, because they
    share one IRQ (as per the spec).  That may deadlock if hotplug is signaled
    while pcie_pme_remove() is running and the latter calls
    pci_lock_rescan_remove() before the former.
    
    Second, if pcie_pme_suspend() figures out that wakeup needs to be enabled
    for the port, it will return without disabling the interrupt as expected by
    pcie_pme_remove() which was overlooked by commit c7b5a4e6e8fb ("PCI / PM:
    Fix native PME handling during system suspend/resume").
    
    To fix that, rework pcie_pme_remove() to disable the PME interrupt, clear
    its status and prevent the PME worker function from re-enabling it before
    calling free_irq() on it, which should be sufficient.
    
    Fixes: c7b5a4e6e8fb ("PCI / PM: Fix native PME handling during system suspend/resume")
    Link: https://lore.kernel.org/linux-pci/c7697e7c-e1af-13e4-8491-0a3996e6ab5d@huawei.com
    Reported-by: Dongdong Liu <liudongdong3@huawei.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    [bhelgaas: add URL and deadlock details from Dongdong]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88f0ced0d75f7eb731f1640454e1ced816b322a0
Author: Dave Hansen <dave.hansen@linux.intel.com>
Date:   Mon Feb 25 10:57:30 2019 -0800

    mm/resource: Return real error codes from walk failures
    
    [ Upstream commit 5cd401ace914dc68556c6d2fcae0c349444d5f86 ]
    
    walk_system_ram_range() can return an error code either becuase
    *it* failed, or because the 'func' that it calls returned an
    error.  The memory hotplug does the following:
    
            ret = walk_system_ram_range(..., func);
            if (ret)
                    return ret;
    
    and 'ret' makes it out to userspace, eventually.  The problem
    s, walk_system_ram_range() failues that result from *it* failing
    (as opposed to 'func') return -1.  That leads to a very odd
    -EPERM (-1) return code out to userspace.
    
    Make walk_system_ram_range() return -EINVAL for internal
    failures to keep userspace less confused.
    
    This return code is compatible with all the callers that I
    audited.
    
    Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
    Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>
    Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Ross Zwisler <zwisler@kernel.org>
    Cc: Vishal Verma <vishal.l.verma@intel.com>
    Cc: Tom Lendacky <thomas.lendacky@amd.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: linux-nvdimm@lists.01.org
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mm@kvack.org
    Cc: Huang Ying <ying.huang@intel.com>
    Cc: Fengguang Wu <fengguang.wu@intel.com>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Yaowei Bai <baiyaowei@cmss.chinamobile.com>
    Cc: Takashi Iwai <tiwai@suse.de>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: Keith Busch <keith.busch@intel.com>
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e33632946e4aa6c111ba52e1aaf0d0aa323a94f
Author: Tony Jones <tonyj@suse.de>
Date:   Wed Feb 27 17:55:32 2019 -0800

    tools lib traceevent: Fix buffer overflow in arg_eval
    
    [ Upstream commit 7c5b019e3a638a5a290b0ec020f6ca83d2ec2aaa ]
    
    Fix buffer overflow observed when running perf test.
    
    The overflow is when trying to evaluate "1ULL << (64 - 1)" which is
    resulting in -9223372036854775808 which overflows the 20 character
    buffer.
    
    If is possible this bug has been reported before but I still don't see
    any fix checked in:
    
    See: https://www.spinics.net/lists/linux-perf-users/msg07714.html
    
    Reported-by: Michael Sartain <mikesart@fastmail.com>
    Reported-by: Mathias Krause <minipli@googlemail.com>
    Signed-off-by: Tony Jones <tonyj@suse.de>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Fixes: f7d82350e597 ("tools/events: Add files to create libtraceevent.a")
    Link: http://lkml.kernel.org/r/20190228015532.8941-1-tonyj@suse.de
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1d9d2145c5069732cb9ff5bddda2dfb2fc4707c
Author: Carlos Maiolino <cmaiolino@redhat.com>
Date:   Tue Feb 26 11:51:50 2019 +0100

    fs: fix guard_bio_eod to check for real EOD errors
    
    [ Upstream commit dce30ca9e3b676fb288c33c1f4725a0621361185 ]
    
    guard_bio_eod() can truncate a segment in bio to allow it to do IO on
    odd last sectors of a device.
    
    It already checks if the IO starts past EOD, but it does not consider
    the possibility of an IO request starting within device boundaries can
    contain more than one segment past EOD.
    
    In such cases, truncated_bytes can be bigger than PAGE_SIZE, and will
    underflow bvec->bv_len.
    
    Fix this by checking if truncated_bytes is lower than PAGE_SIZE.
    
    This situation has been found on filesystems such as isofs and vfat,
    which doesn't check the device size before mount, if the device is
    smaller than the filesystem itself, a readahead on such filesystem,
    which spans EOD, can trigger this situation, leading a call to
    zero_user() with a wrong size possibly corrupting memory.
    
    I didn't see any crash, or didn't let the system run long enough to
    check if memory corruption will be hit somewhere, but adding
    instrumentation to guard_bio_end() to check truncated_bytes size, was
    enough to see the error.
    
    The following script can trigger the error.
    
    MNT=/mnt
    IMG=./DISK.img
    DEV=/dev/loop0
    
    mkfs.vfat $IMG
    mount $IMG $MNT
    cp -R /etc $MNT &> /dev/null
    umount $MNT
    
    losetup -D
    
    losetup --find --show --sizelimit 16247280 $IMG
    mount $DEV $MNT
    
    find $MNT -type f -exec cat {} + >/dev/null
    
    Kudos to Eric Sandeen for coming up with the reproducer above
    
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dee200aba7dce342ecf4c1eda87e16b894a927cb
Author: Eric Whitney <enwlinux@gmail.com>
Date:   Thu Feb 28 23:34:11 2019 -0500

    ext4: fix bigalloc cluster freeing when hole punching under load
    
    [ Upstream commit 7bd75230b43727b258a4f7a59d62114cffe1b6c8 ]
    
    Ext4 may not free clusters correctly when punching holes in bigalloc
    file systems under high load conditions.  If it's not possible to
    extend and restart the journal in ext4_ext_rm_leaf() when preparing to
    remove blocks from a punched region, a retry of the entire punch
    operation is triggered in ext4_ext_remove_space().  This causes a
    partial cluster to be set to the first cluster in the extent found to
    the right of the punched region.  However, if the punch operation
    prior to the retry had made enough progress to delete one or more
    extents and a partial cluster candidate for freeing had already been
    recorded, the retry would overwrite the partial cluster.  The loss of
    this information makes it impossible to correctly free the original
    partial cluster in all cases.
    
    This bug can cause generic/476 to fail when run as part of
    xfstests-bld's bigalloc and bigalloc_1k test cases.  The failure is
    reported when e2fsck detects bad iblocks counts greater than expected
    in units of whole clusters and also detects a number of negative block
    bitmap differences equal to the iblocks discrepancy in cluster units.
    
    Signed-off-by: Eric Whitney <enwlinux@gmail.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d62e75a00bb1f7f240bee26e9b8a67eb2933cff
Author: luojiajun <luojiajun3@huawei.com>
Date:   Fri Mar 1 00:30:00 2019 -0500

    jbd2: fix invalid descriptor block checksum
    
    [ Upstream commit 6e876c3dd205d30b0db6850e97a03d75457df007 ]
    
    In jbd2_journal_commit_transaction(), if we are in abort mode,
    we may flush the buffer without setting descriptor block checksum
    by goto start_journal_io. Then fs is mounted,
    jbd2_descriptor_block_csum_verify() failed.
    
    [  271.379811] EXT4-fs (vdd): shut down requested (2)
    [  271.381827] Aborting journal on device vdd-8.
    [  271.597136] JBD2: Invalid checksum recovering block 22199 in log
    [  271.598023] JBD2: recovery failed
    [  271.598484] EXT4-fs (vdd): error loading journal
    
    Fix this problem by keep setting descriptor block checksum if the
    descriptor buffer is not NULL.
    
    This checksum problem can be reproduced by xfstests generic/388.
    
    Signed-off-by: luojiajun <luojiajun3@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 87f8ad583c7942cc185e7d51da163112d534f79f
Author: Lu Baolu <baolu.lu@linux.intel.com>
Date:   Fri Mar 1 11:23:10 2019 +0800

    iommu/vt-d: Disable ATS support on untrusted devices
    
    [ Upstream commit d8b8591054575f33237556c32762d54e30774d28 ]
    
    Commit fb58fdcd295b9 ("iommu/vt-d: Do not enable ATS for untrusted
    devices") disables ATS support on the devices which have been marked
    as untrusted. Unfortunately this is not enough to fix the DMA attack
    vulnerabiltiies because IOMMU driver allows translated requests as
    long as a device advertises the ATS capability. Hence a malicious
    peripheral device could use this to bypass IOMMU.
    
    This disables the ATS support on untrusted devices by clearing the
    internal per-device ATS mark. As the result, IOMMU driver will block
    any translated requests from any device marked as untrusted.
    
    Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
    Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
    Suggested-by: Kevin Tian <kevin.tian@intel.com>
    Suggested-by: Ashok Raj <ashok.raj@intel.com>
    Fixes: fb58fdcd295b9 ("iommu/vt-d: Do not enable ATS for untrusted devices")
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b39898beee9da20b279c3daf073b42045b3d35d6
Author: Florian Westphal <fw@strlen.de>
Date:   Thu Feb 21 17:09:31 2019 +0100

    netfilter: conntrack: tcp: only close if RST matches exact sequence
    
    [ Upstream commit be0502a3f2e94211a8809a09ecbc3a017189b8fb ]
    
    TCP resets cause instant transition from established to closed state
    provided the reset is in-window.  Endpoints that implement RFC 5961
    require resets to match the next expected sequence number.
    RST segments that are in-window (but that do not match RCV.NXT) are
    ignored, and a "challenge ACK" is sent back.
    
    Main problem for conntrack is that its a middlebox, i.e.  whereas an end
    host might have ACK'd SEQ (and would thus accept an RST with this
    sequence number), conntrack might not have seen this ACK (yet).
    
    Therefore we can't simply flag RSTs with non-exact match as invalid.
    
    This updates RST processing as follows:
    
    1. If the connection is in a state other than ESTABLISHED, nothing is
       changed, RST is subject to normal in-window check.
    
    2. If the RSTs sequence number either matches exactly RCV.NXT,
       connection state moves to CLOSE.
    
    3. The same applies if the RST sequence number aligns with a previous
       packet in the same direction.
    
    In all other cases, the connection remains in ESTABLISHED state.
    If the normal-in-window check passes, the timeout will be lowered
    to that of CLOSE.
    
    If the peer sends a challenge ack, connection timeout will be reset.
    
    If the challenge ACK triggers another RST (RST was valid after all),
    this 2nd RST will match expected sequence and conntrack state changes to
    CLOSE.
    
    If no challenge ACK is received, the connection will time out after
    CLOSE seconds (10 seconds by default), just like without this patch.
    
    Packetdrill test case:
    
    0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
    0.000 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
    0.000 bind(3, ..., ...) = 0
    0.000 listen(3, 1) = 0
    
    0.100 < S 0:0(0) win 32792 <mss 1460,sackOK,nop,nop,nop,wscale 7>
    0.100 > S. 0:0(0) ack 1 win 64240 <mss 1460,nop,nop,sackOK,nop,wscale 7>
    0.200 < . 1:1(0) ack 1 win 257
    0.200 accept(3, ..., ...) = 4
    
    // Receive a segment.
    0.210 < P. 1:1001(1000) ack 1 win 46
    0.210 > . 1:1(0) ack 1001
    
    // Application writes 1000 bytes.
    0.250 write(4, ..., 1000) = 1000
    0.250 > P. 1:1001(1000) ack 1001
    
    // First reset, old sequence. Conntrack (correctly) considers this
    // invalid due to failed window validation (regardless of this patch).
    0.260 < R  2:2(0) ack 1001 win 260
    
    // 2nd reset, but too far ahead sequence.  Same: correctly handled
    // as invalid.
    0.270 < R 99990001:99990001(0) ack 1001 win 260
    
    // in-window, but not exact sequence.
    // Current Linux kernels might reply with a challenge ack, and do not
    // remove connection.
    // Without this patch, conntrack state moves to CLOSE.
    // With patch, timeout is lowered like CLOSE, but connection stays
    // in ESTABLISHED state.
    0.280 < R 1010:1010(0) ack 1001 win 260
    
    // Expect challenge ACK
    0.281 > . 1001:1001(0) ack 1001 win 501
    
    // With or without this patch, RST will cause connection
    // to move to CLOSE (sequence number matches)
    // 0.282 < R 1001:1001(0) ack 1001 win 260
    
    // ACK
    0.300 < . 1001:1001(0) ack 1001 win 257
    
    // more data could be exchanged here, connection
    // is still established
    
    // Client closes the connection.
    0.610 < F. 1001:1001(0) ack 1001 win 260
    0.650 > . 1001:1001(0) ack 1002
    
    // Close the connection without reading outstanding data
    0.700 close(4) = 0
    
    // so one more reset.  Will be deemed acceptable with patch as well:
    // connection is already closing.
    0.701 > R. 1001:1001(0) ack 1002 win 501
    // End packetdrill test case.
    
    With patch, this generates following conntrack events:
       [NEW] 120 SYN_SENT src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80 [UNREPLIED]
    [UPDATE] 60 SYN_RECV src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80
    [UPDATE] 432000 ESTABLISHED src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80 [ASSURED]
    [UPDATE] 120 FIN_WAIT src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80 [ASSURED]
    [UPDATE] 60 CLOSE_WAIT src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80 [ASSURED]
    [UPDATE] 10 CLOSE src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80 [ASSURED]
    
    Without patch, first RST moves connection to close, whereas socket state
    does not change until FIN is received.
       [NEW] 120 SYN_SENT src=10.0.2.1 dst=10.0.0.1 sport=5141 dport=80 [UNREPLIED]
    [UPDATE] 60 SYN_RECV src=10.0.2.1 dst=10.0.0.1 sport=5141 dport=80
    [UPDATE] 432000 ESTABLISHED src=10.0.2.1 dst=10.0.0.1 sport=5141 dport=80 [ASSURED]
    [UPDATE] 10 CLOSE src=10.0.2.1 dst=10.0.0.1 sport=5141 dport=80 [ASSURED]
    
    Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8a0f1351bac10979dabaca300df736346046574e
Author: Honghui Zhang <honghui.zhang@mediatek.com>
Date:   Fri Feb 1 13:36:06 2019 +0800

    PCI: mediatek: Fix memory mapped IO range size computation
    
    [ Upstream commit c61df57343bf05743f8abbb31eec9a6f05820dd1 ]
    
    Mediatek's HW assigns a MMIO address range (typically starts from
    0x20000000 to 0x2fffffff for both mt2712 and mt7622) for PCI usage.
    
    This MMIO address space represents the address space that can
    be allocated to PCI devices through Base Address Registers.
    
    Even though the full MMIO address range is available to be allocated, it
    should be enabled by the PCIE_AHB_TRANS_BASE register in the host
    controller and the size that is enabled is determined by AHB2PCIE_SIZE
    bits in this register.
    
    Owing to a bug in the MMIO window size computation, current code does
    not enable the full size of the available MMIO address range in the
    PCI host controller; if the PCI devices BARs requested size exceeds the
    size enabled through the PCIE_AHB_TRANS_BASE register the requests
    targeting the disabled address address space will be blocked by the root
    complex causing a system error.
    
    Existing code has never run into a system error in production because
    even half of the enabled MMIO range (128MB) is big enough for typical
    devices BAR requests (4MB) but the full MMIO address range should
    be enabled regardless.
    
    Fix the MMIO window size computation by using resource_size(mem) instead
    of mem->end - mem->start.
    
    Since the MMIO window size for both MT2712 and MT7622 is 0x10000000,
    this change will update the parameter passed to fls() from 0xfffffff to
    0x10000000 and calculate the whole memory mapped IO range size
    correctly.
    
    Detected through coccinelle semantic patch (and related warning):
    
    scripts/coccinelle/api/resource_size.cocci:
    
    pcie-mediatek.c:720:13-16: WARNING: Suspicious code. resource_size is maybe missing with mem
    
    Signed-off-by: Honghui Zhang <honghui.zhang@mediatek.com>
    [lorenzo.pieralisi@arm.com: rewrote the commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fdb08cf7dbeed2dcab5bdcdfb873529f6d554226
Author: Li RongQing <lirongqing@baidu.com>
Date:   Tue Feb 26 17:13:56 2019 +0800

    netfilter: nf_tables: check the result of dereferencing base_chain->stats
    
    [ Upstream commit a9f5e78c403d2d62ade4f4c85040efc85f4049b8 ]
    
    Check the result of dereferencing base_chain->stats, instead of result
    of this_cpu_ptr with NULL.
    
    base_chain->stats maybe be changed to NULL when a chain is updated and a
    new NULL counter can be attached.
    
    And we do not need to check returning of this_cpu_ptr since
    base_chain->stats is from percpu allocator if it is non-NULL,
    this_cpu_ptr returns a valid value.
    
    And fix two sparse error by replacing rcu_access_pointer and
    rcu_dereference with READ_ONCE under rcu_read_lock.
    
    Thanks for Eric's help to finish this patch.
    
    Fixes: 009240940e84c1 ("netfilter: nf_tables: don't assume chain stats are set when jumplabel is set")
    Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Zhang Yu <zhangyu31@baidu.com>
    Signed-off-by: Li RongQing <lirongqing@baidu.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc8d8f83ea52967e5a74c871c2b3f1ba93b82228
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Fri Mar 1 15:45:35 2019 -0300

    perf beauty msg_flags: Add missing %s lost when adding prefix suppression logic
    
    [ Upstream commit c3b81a500f35241a4c16febe0a015e572cf2c492 ]
    
    When the prefix suppresion/enabling logic was added, I forgot to add an
    extra %, which ended up chopping off the strings:
    
    Before:
    
      # perf trace -e *mmsg --map-dump syscalls
      [299] = 1,
      [307] = 1,
      DNS Res~ver #3/14587 sendmmsg(106<socket:[3462393]>, 0x7f252b0fcaf0, 2, MSG_) = 2
      chronyd/1053 recvmmsg(4, 0x558542ca5740, 4, MSG_, NULL) = 1
      DNS Res~ver #2/14445 sendmmsg(106<socket:[3461475]>, 0x7f252ab09af0, 2, MSG_) = 2
      DNS Res~ver #2/14444 sendmmsg(146<socket:[3457863]>, 0x7f2521a7aaf0, 2, MSG_) = 2
      DNS Res~ver #2/14445 sendmmsg(106<socket:[3461475]>, 0x7f252ab09af0, 2, MSG_) = 2
      DNS Res~ver #3/14587 sendmmsg(148<socket:[3460636]>, 0x7f252b0fcaf0, 2, MSG_) = 2
      DNS Res~ver #2/14444 sendmmsg(146<socket:[3457863]>, 0x7f2521a7aaf0, 2, MSG_) = 2
      ^C#
    
    After:
    
      # perf trace -e *mmsg --map-dump syscalls
      [299] = 1,
      [307] = 1,
      NetworkManager/17467 sendmmsg(22<socket:[3466493]>, 0x7f28927f9bb0, 2, MSG_NOSIGNAL) = 2
      pool/17478 sendmmsg(10<socket:[3466523]>, 0x7f2769f95e90, 2, MSG_NOSIGNAL) = 2
      DNS Res~ver #3/14587 sendmmsg(121<socket:[3466132]>, 0x7f252b0fcaf0, 2, MSG_NOSIGNAL) = 2
      chronyd/1053 recvmmsg(4, 0x558542ca5740, 4, MSG_DONTWAIT, NULL) = 1
      Socket Thread/17433 sendmmsg(121<socket:[3460903]>, 0x7f252668baf0, 2, MSG_NOSIGNAL) = 2
      ^C#
    
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Fixes: c65c83ffe904 ("perf trace: Allow asking for not suppressing common string prefixes")
    Link: https://lkml.kernel.org/n/tip-t2eu1rqx710k6jr4814mlzg7@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6dd80425f5d1498fb8b8565842ccda16205c3f9
Author: Yao Liu <yotta.liu@ucloud.cn>
Date:   Mon Jan 28 19:47:28 2019 +0800

    cifs: Fix NULL pointer dereference of devname
    
    [ Upstream commit 68e2672f8fbd1e04982b8d2798dd318bf2515dd2 ]
    
    There is a NULL pointer dereference of devname in strspn()
    
    The oops looks something like:
    
      CIFS: Attempting to mount (null)
      BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
      ...
      RIP: 0010:strspn+0x0/0x50
      ...
      Call Trace:
       ? cifs_parse_mount_options+0x222/0x1710 [cifs]
       ? cifs_get_volume_info+0x2f/0x80 [cifs]
       cifs_setup_volume_info+0x20/0x190 [cifs]
       cifs_get_volume_info+0x50/0x80 [cifs]
       cifs_smb3_do_mount+0x59/0x630 [cifs]
       ? ida_alloc_range+0x34b/0x3d0
       cifs_do_mount+0x11/0x20 [cifs]
       mount_fs+0x52/0x170
       vfs_kern_mount+0x6b/0x170
       do_mount+0x216/0xdc0
       ksys_mount+0x83/0xd0
       __x64_sys_mount+0x25/0x30
       do_syscall_64+0x65/0x220
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fix this by adding a NULL check on devname in cifs_parse_devname()
    
    Signed-off-by: Yao Liu <yotta.liu@ucloud.cn>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bcb99efab24814da4a5f5fea13f71b960fcc81a3
Author: Namjae Jeon <linkinjeon@gmail.com>
Date:   Tue Jan 22 09:46:45 2019 +0900

    cifs: Accept validate negotiate if server return NT_STATUS_NOT_SUPPORTED
    
    [ Upstream commit 969ae8e8d4ee54c99134d3895f2adf96047f5bee ]
    
    Old windows version or Netapp SMB server will return
    NT_STATUS_NOT_SUPPORTED since they do not allow or implement
    FSCTL_VALIDATE_NEGOTIATE_INFO. The client should accept the response
    provided it's properly signed.
    
    See
    https://blogs.msdn.microsoft.com/openspecification/2012/06/28/smb3-secure-dialect-negotiation/
    
    and
    
    MS-SMB2 validate negotiate response processing:
    https://msdn.microsoft.com/en-us/library/hh880630.aspx
    
    Samba client had already handled it.
    https://bugzilla.samba.org/attachment.cgi?id=13285&action=edit
    
    Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 88596e78dae4896cd740c1ad4544f14318594087
Author: Chao Yu <yuchao0@huawei.com>
Date:   Fri Feb 15 00:08:25 2019 +0800

    f2fs: fix to check inline_xattr_size boundary correctly
    
    [ Upstream commit 500e0b28ecd3c5aade98f3c3a339d18dcb166bb6 ]
    
    We use below condition to check inline_xattr_size boundary:
    
            if (!F2FS_OPTION(sbi).inline_xattr_size ||
                    F2FS_OPTION(sbi).inline_xattr_size >=
                                    DEF_ADDRS_PER_INODE -
                                    F2FS_TOTAL_EXTRA_ATTR_SIZE -
                                    DEF_INLINE_RESERVED_SIZE -
                                    DEF_MIN_INLINE_SIZE)
    
    There is there problems in that check:
    - we should allow inline_xattr_size equaling to min size of inline
    {data,dentry} area.
    - F2FS_TOTAL_EXTRA_ATTR_SIZE and inline_xattr_size are based on
    different size unit, previous one is 4 bytes, latter one is 1 bytes.
    - DEF_MIN_INLINE_SIZE only indicate min size of inline data area,
    however, we need to consider min size of inline dentry area as well,
    minimal inline dentry should at least contain two entries: '.' and
    '..', so that min inline_dentry size is 40 bytes.
    
    .bitmap         1 * 1 = 1
    .reserved       1 * 1 = 1
    .dentry         11 * 2 = 22
    .filename       8 * 2 = 16
    total           40
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e3eea74f61a8f136b3bbaba8ba051ef1e1352082
Author: Jason Cai (Xiang Feng) <jason.cai.kern@gmail.com>
Date:   Sun Jan 20 22:39:13 2019 +0800

    dm thin: add sanity checks to thin-pool and external snapshot creation
    
    [ Upstream commit 70de2cbda8a5d788284469e755f8b097d339c240 ]
    
    Invoking dm_get_device() twice on the same device path with different
    modes is dangerous.  Because in that case, upgrade_mode() will alloc a
    new 'dm_dev' and free the old one, which may be referenced by a previous
    caller.  Dereferencing the dangling pointer will trigger kernel NULL
    pointer dereference.
    
    The following two cases can reproduce this issue.  Actually, they are
    invalid setups that must be disallowed, e.g.:
    
    1. Creating a thin-pool with read_only mode, and the same device as
    both metadata and data.
    
    dmsetup create thinp --table \
        "0 41943040 thin-pool /dev/vdb /dev/vdb 128 0 1 read_only"
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000080
    ...
    Call Trace:
     new_read+0xfb/0x110 [dm_bufio]
     dm_bm_read_lock+0x43/0x190 [dm_persistent_data]
     ? kmem_cache_alloc_trace+0x15c/0x1e0
     __create_persistent_data_objects+0x65/0x3e0 [dm_thin_pool]
     dm_pool_metadata_open+0x8c/0xf0 [dm_thin_pool]
     pool_ctr.cold.79+0x213/0x913 [dm_thin_pool]
     ? realloc_argv+0x50/0x70 [dm_mod]
     dm_table_add_target+0x14e/0x330 [dm_mod]
     table_load+0x122/0x2e0 [dm_mod]
     ? dev_status+0x40/0x40 [dm_mod]
     ctl_ioctl+0x1aa/0x3e0 [dm_mod]
     dm_ctl_ioctl+0xa/0x10 [dm_mod]
     do_vfs_ioctl+0xa2/0x600
     ? handle_mm_fault+0xda/0x200
     ? __do_page_fault+0x26c/0x4f0
     ksys_ioctl+0x60/0x90
     __x64_sys_ioctl+0x16/0x20
     do_syscall_64+0x55/0x150
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    2. Creating a external snapshot using the same thin-pool device.
    
    dmsetup create thinp --table \
        "0 41943040 thin-pool /dev/vdc /dev/vdb 128 0 2 ignore_discard"
    dmsetup message /dev/mapper/thinp 0 "create_thin 0"
    dmsetup create snap --table \
                "0 204800 thin /dev/mapper/thinp 0 /dev/mapper/thinp"
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    ...
    Call Trace:
    ? __alloc_pages_nodemask+0x13c/0x2e0
    retrieve_status+0xa5/0x1f0 [dm_mod]
    ? dm_get_live_or_inactive_table.isra.7+0x20/0x20 [dm_mod]
     table_status+0x61/0xa0 [dm_mod]
     ctl_ioctl+0x1aa/0x3e0 [dm_mod]
     dm_ctl_ioctl+0xa/0x10 [dm_mod]
     do_vfs_ioctl+0xa2/0x600
     ksys_ioctl+0x60/0x90
     ? ksys_write+0x4f/0xb0
     __x64_sys_ioctl+0x16/0x20
     do_syscall_64+0x55/0x150
     entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Signed-off-by: Jason Cai (Xiang Feng) <jason.cai@linux.alibaba.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f2e34b4ff47e696c32c652dca22a65f13476c8e4
Author: Louis Taylor <louis@kragniz.eu>
Date:   Wed Feb 27 22:25:15 2019 +0000

    cifs: use correct format characters
    
    [ Upstream commit 259594bea574e515a148171b5cd84ce5cbdc028a ]
    
    When compiling with -Wformat, clang emits the following warnings:
    
    fs/cifs/smb1ops.c:312:20: warning: format specifies type 'unsigned
    short' but the argument has type 'unsigned int' [-Wformat]
                             tgt_total_cnt, total_in_tgt);
                                            ^~~~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:289:4: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->flags, ref->server_type);
                     ^~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:289:16: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->flags, ref->server_type);
                                 ^~~~~~~~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:291:4: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->ref_flag, ref->path_consumed);
                     ^~~~~~~~~~~~~
    
    fs/cifs/cifs_dfs_ref.c:291:19: warning: format specifies type 'short'
    but the argument has type 'int' [-Wformat]
                     ref->ref_flag, ref->path_consumed);
                                    ^~~~~~~~~~~~~~~~~~
    The types of these arguments are unconditionally defined, so this patch
    updates the format character to the correct ones for ints and unsigned
    ints.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/378
    
    Signed-off-by: Louis Taylor <louis@kragniz.eu>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 64f336255228d05a64c49f63d088a9d85a8e2e8e
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Mar 5 15:41:27 2019 -0800

    kasan: fix kasan_check_read/write definitions
    
    [ Upstream commit bcf6f55a0d05eedd8ebb6ecc60ae3f93205ad833 ]
    
    Building little-endian allmodconfig kernels on arm64 started failing
    with the generated atomic.h implementation, since we now try to call
    kasan helpers from the EFI stub:
    
      aarch64-linux-gnu-ld: drivers/firmware/efi/libstub/arm-stub.stub.o: in function `atomic_set':
      include/generated/atomic-instrumented.h:44: undefined reference to `__efistub_kasan_check_write'
    
    I suspect that we get similar problems in other files that explicitly
    disable KASAN for some reason but call atomic_t based helper functions.
    
    We can fix this by checking the predefined __SANITIZE_ADDRESS__ macro
    that the compiler sets instead of checking CONFIG_KASAN, but this in
    turn requires a small hack in mm/kasan/common.c so we do see the extern
    declaration there instead of the inline function.
    
    Link: http://lkml.kernel.org/r/20181211133453.2835077-1-arnd@arndb.de
    Fixes: b1864b828644 ("locking/atomics: build atomic headers as required")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reported-by: Anders Roxell <anders.roxell@linaro.org>
    Acked-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>,
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 326ce03840eb845a5f9978a6f4398cc0ba87eddc
Author: Qian Cai <cai@lca.pw>
Date:   Tue Mar 5 15:41:24 2019 -0800

    page_poison: play nicely with KASAN
    
    [ Upstream commit 4117992df66a26fa33908b4969e04801534baab1 ]
    
    KASAN does not play well with the page poisoning (CONFIG_PAGE_POISONING).
    It triggers false positives in the allocation path:
    
      BUG: KASAN: use-after-free in memchr_inv+0x2ea/0x330
      Read of size 8 at addr ffff88881f800000 by task swapper/0
      CPU: 0 PID: 0 Comm: swapper Not tainted 5.0.0-rc1+ #54
      Call Trace:
       dump_stack+0xe0/0x19a
       print_address_description.cold.2+0x9/0x28b
       kasan_report.cold.3+0x7a/0xb5
       __asan_report_load8_noabort+0x19/0x20
       memchr_inv+0x2ea/0x330
       kernel_poison_pages+0x103/0x3d5
       get_page_from_freelist+0x15e7/0x4d90
    
    because KASAN has not yet unpoisoned the shadow page for allocation
    before it checks memchr_inv() but only found a stale poison pattern.
    
    Also, false positives in free path,
    
      BUG: KASAN: slab-out-of-bounds in kernel_poison_pages+0x29e/0x3d5
      Write of size 4096 at addr ffff8888112cc000 by task swapper/0/1
      CPU: 5 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc1+ #55
      Call Trace:
       dump_stack+0xe0/0x19a
       print_address_description.cold.2+0x9/0x28b
       kasan_report.cold.3+0x7a/0xb5
       check_memory_region+0x22d/0x250
       memset+0x28/0x40
       kernel_poison_pages+0x29e/0x3d5
       __free_pages_ok+0x75f/0x13e0
    
    due to KASAN adds poisoned redzones around slab objects, but the page
    poisoning needs to poison the whole page.
    
    Link: http://lkml.kernel.org/r/20190114233405.67843-1-cai@lca.pw
    Signed-off-by: Qian Cai <cai@lca.pw>
    Acked-by: Andrey Ryabinin <aryabinin@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 <sashal@kernel.org>

commit 0326696a67695eec42dfdddaa81ed52d8bb9b08d
Author: Shuriyc Chu <sureeju@gmail.com>
Date:   Tue Mar 5 15:41:56 2019 -0800

    fs/file.c: initialize init_files.resize_wait
    
    [ Upstream commit 5704a06810682683355624923547b41540e2801a ]
    
    (Taken from https://bugzilla.kernel.org/show_bug.cgi?id=200647)
    
    'get_unused_fd_flags' in kthread cause kernel crash.  It works fine on
    4.1, but causes crash after get 64 fds.  It also cause crash on
    ubuntu1404/1604/1804, centos7.5, and the crash messages are almost the
    same.
    
    The crash message on centos7.5 shows below:
    
      start fd 61
      start fd 62
      start fd 63
      BUG: unable to handle kernel NULL pointer dereference at           (null)
      IP: __wake_up_common+0x2e/0x90
      PGD 0
      Oops: 0000 [#1] SMP
      Modules linked in: test(OE) xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 tun bridge stp llc ebtable_filter ebtables ip6table_filter ip6_tables iptable_filter devlink sunrpc kvm_intel kvm irqbypass crc32_pclmul ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper cryptd sg ppdev pcspkr virtio_balloon parport_pc parport i2c_piix4 joydev ip_tables xfs libcrc32c sr_mod cdrom sd_mod crc_t10dif crct10dif_generic ata_generic pata_acpi virtio_scsi virtio_console virtio_net cirrus drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm crct10dif_pclmul crct10dif_common crc32c_intel drm ata_piix serio_raw libata virtio_pci virtio_ring i2c_core
       virtio floppy dm_mirror dm_region_hash dm_log dm_mod
      CPU: 2 PID: 1820 Comm: test_fd Kdump: loaded Tainted: G           OE  ------------   3.10.0-862.3.3.el7.x86_64 #1
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.2-0-g5f4c7b1-prebuilt.qemu-project.org 04/01/2014
      task: ffff8e92b9431fa0 ti: ffff8e94247a0000 task.ti: ffff8e94247a0000
      RIP: 0010:__wake_up_common+0x2e/0x90
      RSP: 0018:ffff8e94247a2d18  EFLAGS: 00010086
      RAX: 0000000000000000 RBX: ffffffff9d09daa0 RCX: 0000000000000000
      RDX: 0000000000000000 RSI: 0000000000000003 RDI: ffffffff9d09daa0
      RBP: ffff8e94247a2d50 R08: 0000000000000000 R09: ffff8e92b95dfda8
      R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff9d09daa8
      R13: 0000000000000003 R14: 0000000000000000 R15: 0000000000000003
      FS:  0000000000000000(0000) GS:ffff8e9434e80000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000000000 CR3: 000000017c686000 CR4: 00000000000207e0
      Call Trace:
        __wake_up+0x39/0x50
        expand_files+0x131/0x250
        __alloc_fd+0x47/0x170
        get_unused_fd_flags+0x30/0x40
        test_fd+0x12a/0x1c0 [test]
        kthread+0xd1/0xe0
        ret_from_fork_nospec_begin+0x21/0x21
      Code: 66 90 55 48 89 e5 41 57 41 89 f7 41 56 41 89 ce 41 55 41 54 49 89 fc 49 83 c4 08 53 48 83 ec 10 48 8b 47 08 89 55 cc 4c 89 45 d0 <48> 8b 08 49 39 c4 48 8d 78 e8 4c 8d 69 e8 75 08 eb 3b 4c 89 ef
      RIP   __wake_up_common+0x2e/0x90
       RSP <ffff8e94247a2d18>
      CR2: 0000000000000000
    
    This issue exists since CentOS 7.5 3.10.0-862 and CentOS 7.4
    (3.10.0-693.21.1 ) is ok.  Root cause: the item 'resize_wait' is not
    initialized before being used.
    
    Reported-by: Richard Zhang <zhang.zijian@h3c.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 902507dada434961e1877d3cde12cd02eace528b
Author: zhengliang <zhengliang6@huawei.com>
Date:   Mon Mar 4 09:32:25 2019 +0800

    f2fs: fix to data block override node segment by mistake
    
    [ Upstream commit a0770e13c8da83bdb64738c0209ab02dd3cfff8b ]
    
    v4: Rearrange the previous three versions.
    
    The following scenario could lead to data block override by mistake.
    
    TASK A            |  TASK kworker                                            |     TASK B                                            |       TASK C
                      |                                                          |                                                       |
    open              |                                                          |                                                       |
    write             |                                                          |                                                       |
    close             |                                                          |                                                       |
                      |  f2fs_write_data_pages                                   |                                                       |
                      |    f2fs_write_cache_pages                                |                                                       |
                      |      f2fs_outplace_write_data                            |                                                       |
                      |        f2fs_allocate_data_block (get block in seg S,     |                                                       |
                      |                                  S is full, and only     |                                                       |
                      |                                  have this valid data    |                                                       |
                      |                                  block)                  |                                                       |
                      |          allocate_segment                                |                                                       |
                      |          locate_dirty_segment (mark S as PRE)            |                                                       |
                      |        f2fs_submit_page_write (submit but is not         |                                                       |
                      |                                written on dev)           |                                                       |
    unlink            |                                                          |                                                       |
     iput_final       |                                                          |                                                       |
      f2fs_drop_inode |                                                          |                                                       |
        f2fs_truncate |                                                          |                                                       |
     (not evict)      |                                                          |                                                       |
                      |                                                          | write_checkpoint                                      |
                      |                                                          |  flush merged bio but not wait file data writeback    |
                      |                                                          |  set_prefree_as_free (mark S as FREE)                 |
                      |                                                          |                                                       | update NODE/DATA
                      |                                                          |                                                       | allocate_segment (select S)
                      |     writeback done                                       |                                                       |
    
    So we need to guarantee io complete before truncate inode in f2fs_drop_inode.
    
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Zheng Liang <zhengliang6@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3667215198eb43b7e1283caf816947ccd2daf242
Author: Sahitya Tummala <stummala@codeaurora.org>
Date:   Mon Feb 4 13:36:53 2019 +0530

    f2fs: do not use mutex lock in atomic context
    
    [ Upstream commit 9083977dabf3833298ddcd40dee28687f1e6b483 ]
    
    Fix below warning coming because of using mutex lock in atomic context.
    
    BUG: sleeping function called from invalid context at kernel/locking/mutex.c:98
    in_atomic(): 1, irqs_disabled(): 0, pid: 585, name: sh
    Preemption disabled at: __radix_tree_preload+0x28/0x130
    Call trace:
     dump_backtrace+0x0/0x2b4
     show_stack+0x20/0x28
     dump_stack+0xa8/0xe0
     ___might_sleep+0x144/0x194
     __might_sleep+0x58/0x8c
     mutex_lock+0x2c/0x48
     f2fs_trace_pid+0x88/0x14c
     f2fs_set_node_page_dirty+0xd0/0x184
    
    Do not use f2fs_radix_tree_insert() to avoid doing cond_resched() with
    spin_lock() acquired.
    
    Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e92a6db0970079b7f64e251801e18a5aaab1f260
Author: Jia Guo <guojia12@huawei.com>
Date:   Tue Mar 5 15:41:41 2019 -0800

    ocfs2: fix a panic problem caused by o2cb_ctl
    
    [ Upstream commit cc725ef3cb202ef2019a3c67c8913efa05c3cce6 ]
    
    In the process of creating a node, it will cause NULL pointer
    dereference in kernel if o2cb_ctl failed in the interval (mkdir,
    o2cb_set_node_attribute(node_num)] in function o2cb_add_node.
    
    The node num is initialized to 0 in function o2nm_node_group_make_item,
    o2nm_node_group_drop_item will mistake the node number 0 for a valid
    node number when we delete the node before the node number is set
    correctly.  If the local node number of the current host happens to be
    0, cluster->cl_local_node will be set to O2NM_INVALID_NODE_NUM while
    o2hb_thread still running.  The panic stack is generated as follows:
    
      o2hb_thread
          \-o2hb_do_disk_heartbeat
              \-o2hb_check_own_slot
                  |-slot = &reg->hr_slots[o2nm_this_node()];
                  //o2nm_this_node() return O2NM_INVALID_NODE_NUM
    
    We need to check whether the node number is set when we delete the node.
    
    Link: http://lkml.kernel.org/r/133d8045-72cc-863e-8eae-5013f9f6bc51@huawei.com
    Signed-off-by: Jia Guo <guojia12@huawei.com>
    Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
    Acked-by: Jun Piao <piaojun@huawei.com>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.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 <sashal@kernel.org>

commit 8783c35917b607eed944957f1befbefa55e1b697
Author: Qian Cai <cai@lca.pw>
Date:   Tue Mar 5 15:42:03 2019 -0800

    mm/slab.c: kmemleak no scan alien caches
    
    [ Upstream commit 92d1d07daad65c300c7d0b68bbef8867e9895d54 ]
    
    Kmemleak throws endless warnings during boot due to in
    __alloc_alien_cache(),
    
        alc = kmalloc_node(memsize, gfp, node);
        init_arraycache(&alc->ac, entries, batch);
        kmemleak_no_scan(ac);
    
    Kmemleak does not track the array cache (alc->ac) but the alien cache
    (alc) instead, so let it track the latter by lifting kmemleak_no_scan()
    out of init_arraycache().
    
    There is another place that calls init_arraycache(), but
    alloc_kmem_cache_cpus() uses the percpu allocation where will never be
    considered as a leak.
    
      kmemleak: Found object by alias at 0xffff8007b9aa7e38
      CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
      Call trace:
       dump_backtrace+0x0/0x168
       show_stack+0x24/0x30
       dump_stack+0x88/0xb0
       lookup_object+0x84/0xac
       find_and_get_object+0x84/0xe4
       kmemleak_no_scan+0x74/0xf4
       setup_kmem_cache_node+0x2b4/0x35c
       __do_tune_cpucache+0x250/0x2d4
       do_tune_cpucache+0x4c/0xe4
       enable_cpucache+0xc8/0x110
       setup_cpu_cache+0x40/0x1b8
       __kmem_cache_create+0x240/0x358
       create_cache+0xc0/0x198
       kmem_cache_create_usercopy+0x158/0x20c
       kmem_cache_create+0x50/0x64
       fsnotify_init+0x58/0x6c
       do_one_initcall+0x194/0x388
       kernel_init_freeable+0x668/0x688
       kernel_init+0x18/0x124
       ret_from_fork+0x10/0x18
      kmemleak: Object 0xffff8007b9aa7e00 (size 256):
      kmemleak:   comm "swapper/0", pid 1, jiffies 4294697137
      kmemleak:   min_count = 1
      kmemleak:   count = 0
      kmemleak:   flags = 0x1
      kmemleak:   checksum = 0
      kmemleak:   backtrace:
           kmemleak_alloc+0x84/0xb8
           kmem_cache_alloc_node_trace+0x31c/0x3a0
           __kmalloc_node+0x58/0x78
           setup_kmem_cache_node+0x26c/0x35c
           __do_tune_cpucache+0x250/0x2d4
           do_tune_cpucache+0x4c/0xe4
           enable_cpucache+0xc8/0x110
           setup_cpu_cache+0x40/0x1b8
           __kmem_cache_create+0x240/0x358
           create_cache+0xc0/0x198
           kmem_cache_create_usercopy+0x158/0x20c
           kmem_cache_create+0x50/0x64
           fsnotify_init+0x58/0x6c
           do_one_initcall+0x194/0x388
           kernel_init_freeable+0x668/0x688
           kernel_init+0x18/0x124
      kmemleak: Not scanning unknown object at 0xffff8007b9aa7e38
      CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
      Call trace:
       dump_backtrace+0x0/0x168
       show_stack+0x24/0x30
       dump_stack+0x88/0xb0
       kmemleak_no_scan+0x90/0xf4
       setup_kmem_cache_node+0x2b4/0x35c
       __do_tune_cpucache+0x250/0x2d4
       do_tune_cpucache+0x4c/0xe4
       enable_cpucache+0xc8/0x110
       setup_cpu_cache+0x40/0x1b8
       __kmem_cache_create+0x240/0x358
       create_cache+0xc0/0x198
       kmem_cache_create_usercopy+0x158/0x20c
       kmem_cache_create+0x50/0x64
       fsnotify_init+0x58/0x6c
       do_one_initcall+0x194/0x388
       kernel_init_freeable+0x668/0x688
       kernel_init+0x18/0x124
       ret_from_fork+0x10/0x18
    
    Link: http://lkml.kernel.org/r/20190129184518.39808-1-cai@lca.pw
    Fixes: 1fe00d50a9e8 ("slab: factor out initialization of array cache")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: 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 <sashal@kernel.org>

commit f67cd526ce1d11c1236c3d93a811c79f5b41d29d
Author: Uladzislau Rezki (Sony) <urezki@gmail.com>
Date:   Tue Mar 5 15:45:59 2019 -0800

    mm/vmalloc.c: fix kernel BUG at mm/vmalloc.c:512!
    
    [ Upstream commit afd07389d3f4933c7f7817a92fb5e053d59a3182 ]
    
    One of the vmalloc stress test case triggers the kernel BUG():
    
      <snip>
      [60.562151] ------------[ cut here ]------------
      [60.562154] kernel BUG at mm/vmalloc.c:512!
      [60.562206] invalid opcode: 0000 [#1] PREEMPT SMP PTI
      [60.562247] CPU: 0 PID: 430 Comm: vmalloc_test/0 Not tainted 4.20.0+ #161
      [60.562293] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
      [60.562351] RIP: 0010:alloc_vmap_area+0x36f/0x390
      <snip>
    
    it can happen due to big align request resulting in overflowing of
    calculated address, i.e.  it becomes 0 after ALIGN()'s fixup.
    
    Fix it by checking if calculated address is within vstart/vend range.
    
    Link: http://lkml.kernel.org/r/20190124115648.9433-2-urezki@gmail.com
    Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Joel Fernandes <joelaf@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Thomas Garnier <thgarnie@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 03bccbc025ed13dddc4fece2ee2ad9d2a70e65f8
Author: Vlastimil Babka <vbabka@suse.cz>
Date:   Tue Mar 5 15:46:50 2019 -0800

    mm, mempolicy: fix uninit memory access
    
    [ Upstream commit 2e25644e8da4ed3a27e7b8315aaae74660be72dc ]
    
    Syzbot with KMSAN reports (excerpt):
    
    ==================================================================
    BUG: KMSAN: uninit-value in mpol_rebind_policy mm/mempolicy.c:353 [inline]
    BUG: KMSAN: uninit-value in mpol_rebind_mm+0x249/0x370 mm/mempolicy.c:384
    CPU: 1 PID: 17420 Comm: syz-executor4 Not tainted 4.20.0-rc7+ #15
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0x173/0x1d0 lib/dump_stack.c:113
      kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
      __msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:295
      mpol_rebind_policy mm/mempolicy.c:353 [inline]
      mpol_rebind_mm+0x249/0x370 mm/mempolicy.c:384
      update_tasks_nodemask+0x608/0xca0 kernel/cgroup/cpuset.c:1120
      update_nodemasks_hier kernel/cgroup/cpuset.c:1185 [inline]
      update_nodemask kernel/cgroup/cpuset.c:1253 [inline]
      cpuset_write_resmask+0x2a98/0x34b0 kernel/cgroup/cpuset.c:1728
    
    ...
    
    Uninit was created at:
      kmsan_save_stack_with_flags mm/kmsan/kmsan.c:204 [inline]
      kmsan_internal_poison_shadow+0x92/0x150 mm/kmsan/kmsan.c:158
      kmsan_kmalloc+0xa6/0x130 mm/kmsan/kmsan_hooks.c:176
      kmem_cache_alloc+0x572/0xb90 mm/slub.c:2777
      mpol_new mm/mempolicy.c:276 [inline]
      do_mbind mm/mempolicy.c:1180 [inline]
      kernel_mbind+0x8a7/0x31a0 mm/mempolicy.c:1347
      __do_sys_mbind mm/mempolicy.c:1354 [inline]
    
    As it's difficult to report where exactly the uninit value resides in
    the mempolicy object, we have to guess a bit.  mm/mempolicy.c:353
    contains this part of mpol_rebind_policy():
    
            if (!mpol_store_user_nodemask(pol) &&
                nodes_equal(pol->w.cpuset_mems_allowed, *newmask))
    
    "mpol_store_user_nodemask(pol)" is testing pol->flags, which I couldn't
    ever see being uninitialized after leaving mpol_new().  So I'll guess
    it's actually about accessing pol->w.cpuset_mems_allowed on line 354,
    but still part of statement starting on line 353.
    
    For w.cpuset_mems_allowed to be not initialized, and the nodes_equal()
    reachable for a mempolicy where mpol_set_nodemask() is called in
    do_mbind(), it seems the only possibility is a MPOL_PREFERRED policy
    with empty set of nodes, i.e.  MPOL_LOCAL equivalent, with MPOL_F_LOCAL
    flag.  Let's exclude such policies from the nodes_equal() check.  Note
    the uninit access should be benign anyway, as rebinding this kind of
    policy is always a no-op.  Therefore no actual need for stable
    inclusion.
    
    Link: http://lkml.kernel.org/r/a71997c3-e8ae-a787-d5ce-3db05768b27c@suse.cz
    Link: http://lkml.kernel.org/r/73da3e9c-cc84-509e-17d9-0c434bb9967d@suse.cz
    Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
    Reported-by: syzbot+b19c2dc2c990ea657a71@syzkaller.appspotmail.com
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Yisheng Xie <xieyisheng1@huawei.com>
    Cc: zhong jiang <zhongjiang@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 <sashal@kernel.org>

commit c59c60824a9a55cb1d18114d6e22f7317d0533fa
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Tue Mar 5 15:46:47 2019 -0800

    memcg: killed threads should not invoke memcg OOM killer
    
    [ Upstream commit 7775face207922ea62a4e96b9cd45abfdc7b9840 ]
    
    If a memory cgroup contains a single process with many threads
    (including different process group sharing the mm) then it is possible
    to trigger a race when the oom killer complains that there are no oom
    elible tasks and complain into the log which is both annoying and
    confusing because there is no actual problem.  The race looks as
    follows:
    
    P1                              oom_reaper              P2
    try_charge                                              try_charge
      mem_cgroup_out_of_memory
        mutex_lock(oom_lock)
          out_of_memory
            oom_kill_process(P1,P2)
             wake_oom_reaper
        mutex_unlock(oom_lock)
                                    oom_reap_task
                                                              mutex_lock(oom_lock)
                                                                select_bad_process # no victim
    
    The problem is more visible with many threads.
    
    Fix this by checking for fatal_signal_pending from
    mem_cgroup_out_of_memory when the oom_lock is already held.
    
    The oom bypass is safe because we do the same early in the try_charge
    path already.  The situation migh have changed in the mean time.  It
    should be safe to check for fatal_signal_pending and tsk_is_oom_victim
    but for a better code readability abstract the current charge bypass
    condition into should_force_charge and reuse it from that path.  "
    
    Link: http://lkml.kernel.org/r/01370f70-e1f6-ebe4-b95e-0df21a0bc15e@i-love.sakura.ne.jp
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Acked-by: Johannes Weiner <hannes@cmpxchg.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Kirill Tkhai <ktkhai@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 <sashal@kernel.org>

commit db5d8675b14afa4081360972571aa7c071266542
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Tue Mar 5 15:48:22 2019 -0800

    mm,oom: don't kill global init via memory.oom.group
    
    [ Upstream commit d342a0b38674867ea67fde47b0e1e60ffe9f17a2 ]
    
    Since setting global init process to some memory cgroup is technically
    possible, oom_kill_memcg_member() must check it.
    
      Tasks in /test1 are going to be killed due to memory.oom.group set
      Memory cgroup out of memory: Killed process 1 (systemd) total-vm:43400kB, anon-rss:1228kB, file-rss:3992kB, shmem-rss:0kB
      oom_reaper: reaped process 1 (systemd), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
      Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000008b
    
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    
    int main(int argc, char *argv[])
    {
            static char buffer[10485760];
            static int pipe_fd[2] = { EOF, EOF };
            unsigned int i;
            int fd;
            char buf[64] = { };
            if (pipe(pipe_fd))
                    return 1;
            if (chdir("/sys/fs/cgroup/"))
                    return 1;
            fd = open("cgroup.subtree_control", O_WRONLY);
            write(fd, "+memory", 7);
            close(fd);
            mkdir("test1", 0755);
            fd = open("test1/memory.oom.group", O_WRONLY);
            write(fd, "1", 1);
            close(fd);
            fd = open("test1/cgroup.procs", O_WRONLY);
            write(fd, "1", 1);
            snprintf(buf, sizeof(buf) - 1, "%d", getpid());
            write(fd, buf, strlen(buf));
            close(fd);
            snprintf(buf, sizeof(buf) - 1, "%lu", sizeof(buffer) * 5);
            fd = open("test1/memory.max", O_WRONLY);
            write(fd, buf, strlen(buf));
            close(fd);
            for (i = 0; i < 10; i++)
                    if (fork() == 0) {
                            char c;
                            close(pipe_fd[1]);
                            read(pipe_fd[0], &c, 1);
                            memset(buffer, 0, sizeof(buffer));
                            sleep(3);
                            _exit(0);
                    }
            close(pipe_fd[0]);
            close(pipe_fd[1]);
            sleep(3);
            return 0;
    }
    
    [   37.052923][ T9185] a.out invoked oom-killer: gfp_mask=0xcc0(GFP_KERNEL), order=0, oom_score_adj=0
    [   37.056169][ T9185] CPU: 4 PID: 9185 Comm: a.out Kdump: loaded Not tainted 5.0.0-rc4-next-20190131 #280
    [   37.059205][ T9185] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018
    [   37.062954][ T9185] Call Trace:
    [   37.063976][ T9185]  dump_stack+0x67/0x95
    [   37.065263][ T9185]  dump_header+0x51/0x570
    [   37.066619][ T9185]  ? trace_hardirqs_on+0x3f/0x110
    [   37.068171][ T9185]  ? _raw_spin_unlock_irqrestore+0x3d/0x70
    [   37.069967][ T9185]  oom_kill_process+0x18d/0x210
    [   37.071515][ T9185]  out_of_memory+0x11b/0x380
    [   37.072936][ T9185]  mem_cgroup_out_of_memory+0xb6/0xd0
    [   37.074601][ T9185]  try_charge+0x790/0x820
    [   37.076021][ T9185]  mem_cgroup_try_charge+0x42/0x1d0
    [   37.077629][ T9185]  mem_cgroup_try_charge_delay+0x11/0x30
    [   37.079370][ T9185]  do_anonymous_page+0x105/0x5e0
    [   37.080939][ T9185]  __handle_mm_fault+0x9cb/0x1070
    [   37.082485][ T9185]  handle_mm_fault+0x1b2/0x3a0
    [   37.083819][ T9185]  ? handle_mm_fault+0x47/0x3a0
    [   37.085181][ T9185]  __do_page_fault+0x255/0x4c0
    [   37.086529][ T9185]  do_page_fault+0x28/0x260
    [   37.087788][ T9185]  ? page_fault+0x8/0x30
    [   37.088978][ T9185]  page_fault+0x1e/0x30
    [   37.090142][ T9185] RIP: 0033:0x7f8b183aefe0
    [   37.091433][ T9185] Code: 20 f3 44 0f 7f 44 17 d0 f3 44 0f 7f 47 30 f3 44 0f 7f 44 17 c0 48 01 fa 48 83 e2 c0 48 39 d1 74 a3 66 0f 1f 84 00 00 00 00 00 <66> 44 0f 7f 01 66 44 0f 7f 41 10 66 44 0f 7f 41 20 66 44 0f 7f 41
    [   37.096917][ T9185] RSP: 002b:00007fffc5d329e8 EFLAGS: 00010206
    [   37.098615][ T9185] RAX: 00000000006010e0 RBX: 0000000000000008 RCX: 0000000000c30000
    [   37.100905][ T9185] RDX: 00000000010010c0 RSI: 0000000000000000 RDI: 00000000006010e0
    [   37.103349][ T9185] RBP: 0000000000000000 R08: 00007f8b188f4740 R09: 0000000000000000
    [   37.105797][ T9185] R10: 00007fffc5d32420 R11: 00007f8b183aef40 R12: 0000000000000005
    [   37.108228][ T9185] R13: 0000000000000000 R14: ffffffffffffffff R15: 0000000000000000
    [   37.110840][ T9185] memory: usage 51200kB, limit 51200kB, failcnt 125
    [   37.113045][ T9185] memory+swap: usage 0kB, limit 9007199254740988kB, failcnt 0
    [   37.115808][ T9185] kmem: usage 0kB, limit 9007199254740988kB, failcnt 0
    [   37.117660][ T9185] Memory cgroup stats for /test1: cache:0KB rss:49484KB rss_huge:30720KB shmem:0KB mapped_file:0KB dirty:0KB writeback:0KB inactive_anon:0KB active_anon:49700KB inactive_file:0KB active_file:0KB unevictable:0KB
    [   37.123371][ T9185] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,oom_memcg=/test1,task_memcg=/test1,task=a.out,pid=9188,uid=0
    [   37.128158][ T9185] Memory cgroup out of memory: Killed process 9188 (a.out) total-vm:14456kB, anon-rss:10324kB, file-rss:504kB, shmem-rss:0kB
    [   37.132710][ T9185] Tasks in /test1 are going to be killed due to memory.oom.group set
    [   37.132833][   T54] oom_reaper: reaped process 9188 (a.out), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.135498][ T9185] Memory cgroup out of memory: Killed process 1 (systemd) total-vm:43400kB, anon-rss:1228kB, file-rss:3992kB, shmem-rss:0kB
    [   37.143434][ T9185] Memory cgroup out of memory: Killed process 9182 (a.out) total-vm:14456kB, anon-rss:76kB, file-rss:588kB, shmem-rss:0kB
    [   37.144328][   T54] oom_reaper: reaped process 1 (systemd), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.147585][ T9185] Memory cgroup out of memory: Killed process 9183 (a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:512kB, shmem-rss:0kB
    [   37.157222][ T9185] Memory cgroup out of memory: Killed process 9184 (a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:508kB, shmem-rss:0kB
    [   37.157259][ T9185] Memory cgroup out of memory: Killed process 9185 (a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:512kB, shmem-rss:0kB
    [   37.157291][ T9185] Memory cgroup out of memory: Killed process 9186 (a.out) total-vm:14456kB, anon-rss:4180kB, file-rss:508kB, shmem-rss:0kB
    [   37.157306][   T54] oom_reaper: reaped process 9183 (a.out), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.157328][ T9185] Memory cgroup out of memory: Killed process 9187 (a.out) total-vm:14456kB, anon-rss:4180kB, file-rss:512kB, shmem-rss:0kB
    [   37.157452][ T9185] Memory cgroup out of memory: Killed process 9189 (a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:512kB, shmem-rss:0kB
    [   37.158733][ T9185] Memory cgroup out of memory: Killed process 9190 (a.out) total-vm:14456kB, anon-rss:552kB, file-rss:512kB, shmem-rss:0kB
    [   37.160083][   T54] oom_reaper: reaped process 9186 (a.out), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.160187][   T54] oom_reaper: reaped process 9189 (a.out), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.206941][   T54] oom_reaper: reaped process 9185 (a.out), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.212300][ T9185] Memory cgroup out of memory: Killed process 9191 (a.out) total-vm:14456kB, anon-rss:4180kB, file-rss:512kB, shmem-rss:0kB
    [   37.212317][   T54] oom_reaper: reaped process 9190 (a.out), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.218860][ T9185] Memory cgroup out of memory: Killed process 9192 (a.out) total-vm:14456kB, anon-rss:1080kB, file-rss:512kB, shmem-rss:0kB
    [   37.227667][   T54] oom_reaper: reaped process 9192 (a.out), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
    [   37.292323][ T9193] abrt-hook-ccpp (9193) used greatest stack depth: 10480 bytes left
    [   37.351843][    T1] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000008b
    [   37.354833][    T1] CPU: 7 PID: 1 Comm: systemd Kdump: loaded Not tainted 5.0.0-rc4-next-20190131 #280
    [   37.357876][    T1] Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018
    [   37.361685][    T1] Call Trace:
    [   37.363239][    T1]  dump_stack+0x67/0x95
    [   37.365010][    T1]  panic+0xfc/0x2b0
    [   37.366853][    T1]  do_exit+0xd55/0xd60
    [   37.368595][    T1]  do_group_exit+0x47/0xc0
    [   37.370415][    T1]  get_signal+0x32a/0x920
    [   37.372449][    T1]  ? _raw_spin_unlock_irqrestore+0x3d/0x70
    [   37.374596][    T1]  do_signal+0x32/0x6e0
    [   37.376430][    T1]  ? exit_to_usermode_loop+0x26/0x9b
    [   37.378418][    T1]  ? prepare_exit_to_usermode+0xa8/0xd0
    [   37.380571][    T1]  exit_to_usermode_loop+0x3e/0x9b
    [   37.382588][    T1]  prepare_exit_to_usermode+0xa8/0xd0
    [   37.384594][    T1]  ? page_fault+0x8/0x30
    [   37.386453][    T1]  retint_user+0x8/0x18
    [   37.388160][    T1] RIP: 0033:0x7f42c06974a8
    [   37.389922][    T1] Code: Bad RIP value.
    [   37.391788][    T1] RSP: 002b:00007ffc3effd388 EFLAGS: 00010213
    [   37.394075][    T1] RAX: 000000000000000e RBX: 00007ffc3effd390 RCX: 0000000000000000
    [   37.396963][    T1] RDX: 000000000000002a RSI: 00007ffc3effd390 RDI: 0000000000000004
    [   37.399550][    T1] RBP: 00007ffc3effd680 R08: 0000000000000000 R09: 0000000000000000
    [   37.402334][    T1] R10: 00000000ffffffff R11: 0000000000000246 R12: 0000000000000001
    [   37.404890][    T1] R13: ffffffffffffffff R14: 0000000000000884 R15: 000056460b1ac3b0
    
    Link: http://lkml.kernel.org/r/201902010336.x113a4EO027170@www262.sakura.ne.jp
    Fixes: 3d8b38eb81cac813 ("mm, oom: introduce memory.oom.group")
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Roman Gushchin <guro@fb.com>
    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 <sashal@kernel.org>

commit 66a4d4d03b7eff1f24a0d0ad643c4e1deb40909a
Author: Mike Rapoport <rppt@linux.ibm.com>
Date:   Tue Mar 5 15:48:39 2019 -0800

    docs/core-api/mm: fix user memory accessors formatting
    
    [ Upstream commit bc8ff3ca6589d63c6d10f5ee8bed38f74851b469 ]
    
    The descriptions of userspace memory access functions had minor issues
    with formatting that made kernel-doc unable to properly detect the
    function/macro names and the return value sections:
    
    ./arch/x86/include/asm/uaccess.h:80: info: Scanning doc for
    ./arch/x86/include/asm/uaccess.h:139: info: Scanning doc for
    ./arch/x86/include/asm/uaccess.h:231: info: Scanning doc for
    ./arch/x86/include/asm/uaccess.h:505: info: Scanning doc for
    ./arch/x86/include/asm/uaccess.h:530: info: Scanning doc for
    ./arch/x86/lib/usercopy_32.c:58: info: Scanning doc for
    ./arch/x86/lib/usercopy_32.c:69: warning: No description found for return
    value of 'clear_user'
    ./arch/x86/lib/usercopy_32.c:78: info: Scanning doc for
    ./arch/x86/lib/usercopy_32.c:90: warning: No description found for return
    value of '__clear_user'
    
    Fix the formatting.
    
    Link: http://lkml.kernel.org/r/1549549644-4903-3-git-send-email-rppt@linux.ibm.com
    Signed-off-by: Mike Rapoport <rppt@linux.ibm.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34fa723765cfb43a03ab33a4e7739e3280a88416
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Tue Mar 5 15:48:19 2019 -0800

    mm, swap: bounds check swap_info array accesses to avoid NULL derefs
    
    [ Upstream commit c10d38cc8d3e43f946b6c2bf4602c86791587f30 ]
    
    Dan Carpenter reports a potential NULL dereference in
    get_swap_page_of_type:
    
      Smatch complains that the NULL checks on "si" aren't consistent.  This
      seems like a real bug because we have not ensured that the type is
      valid and so "si" can be NULL.
    
    Add the missing check for NULL, taking care to use a read barrier to
    ensure CPU1 observes CPU0's updates in the correct order:
    
         CPU0                           CPU1
         alloc_swap_info()              if (type >= nr_swapfiles)
           swap_info[type] = p              /* handle invalid entry */
           smp_wmb()                    smp_rmb()
           ++nr_swapfiles               p = swap_info[type]
    
    Without smp_rmb, CPU1 might observe CPU0's write to nr_swapfiles before
    CPU0's write to swap_info[type] and read NULL from swap_info[type].
    
    Ying Huang noticed other places in swapfile.c don't order these reads
    properly.  Introduce swap_type_to_swap_info to encourage correct usage.
    
    Use READ_ONCE and WRITE_ONCE to follow the Linux Kernel Memory Model
    (see tools/memory-model/Documentation/explanation.txt).
    
    This ordering need not be enforced in places where swap_lock is held
    (e.g.  si_swapinfo) because swap_lock serializes updates to nr_swapfiles
    and the swap_info array.
    
    Link: http://lkml.kernel.org/r/20190131024410.29859-1-daniel.m.jordan@oracle.com
    Fixes: ec8acf20afb8 ("swap: add per-partition lock for swapfile")
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
    Suggested-by: "Huang, Ying" <ying.huang@intel.com>
    Reviewed-by: Andrea Parri <andrea.parri@amarulasolutions.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: Omar Sandoval <osandov@fb.com>
    Cc: Paul McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Shaohua Li <shli@kernel.org>
    Cc: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Will Deacon <will.deacon@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 <sashal@kernel.org>

commit 57f5b77e9f46dfb9a15f2bf63eed140ef55738f1
Author: Qian Cai <cai@lca.pw>
Date:   Tue Mar 5 15:49:46 2019 -0800

    mm/page_ext.c: fix an imbalance with kmemleak
    
    [ Upstream commit 0c81585499601acd1d0e1cbf424cabfaee60628c ]
    
    After offlining a memory block, kmemleak scan will trigger a crash, as
    it encounters a page ext address that has already been freed during
    memory offlining.  At the beginning in alloc_page_ext(), it calls
    kmemleak_alloc(), but it does not call kmemleak_free() in
    free_page_ext().
    
        BUG: unable to handle kernel paging request at ffff888453d00000
        PGD 128a01067 P4D 128a01067 PUD 128a04067 PMD 47e09e067 PTE 800ffffbac2ff060
        Oops: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
        CPU: 1 PID: 1594 Comm: bash Not tainted 5.0.0-rc8+ #15
        Hardware name: HP ProLiant DL180 Gen9/ProLiant DL180 Gen9, BIOS U20 10/25/2017
        RIP: 0010:scan_block+0xb5/0x290
        Code: 85 6e 01 00 00 48 b8 00 00 30 f5 81 88 ff ff 48 39 c3 0f 84 5b 01 00 00 48 89 d8 48 c1 e8 03 42 80 3c 20 00 0f 85 87 01 00 00 <4c> 8b 3b e8 f3 0c fa ff 4c 39 3d 0c 6b 4c 01 0f 87 08 01 00 00 4c
        RSP: 0018:ffff8881ec57f8e0 EFLAGS: 00010082
        RAX: 0000000000000000 RBX: ffff888453d00000 RCX: ffffffffa61e5a54
        RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff888453d00000
        RBP: ffff8881ec57f920 R08: fffffbfff4ed588d R09: fffffbfff4ed588c
        R10: fffffbfff4ed588c R11: ffffffffa76ac463 R12: dffffc0000000000
        R13: ffff888453d00ff9 R14: ffff8881f80cef48 R15: ffff8881f80cef48
        FS:  00007f6c0e3f8740(0000) GS:ffff8881f7680000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: ffff888453d00000 CR3: 00000001c4244003 CR4: 00000000001606a0
        Call Trace:
         scan_gray_list+0x269/0x430
         kmemleak_scan+0x5a8/0x10f0
         kmemleak_write+0x541/0x6ca
         full_proxy_write+0xf8/0x190
         __vfs_write+0xeb/0x980
         vfs_write+0x15a/0x4f0
         ksys_write+0xd2/0x1b0
         __x64_sys_write+0x73/0xb0
         do_syscall_64+0xeb/0xaaa
         entry_SYSCALL_64_after_hwframe+0x44/0xa9
        RIP: 0033:0x7f6c0dad73b8
        Code: 89 02 48 c7 c0 ff ff ff ff eb b3 0f 1f 80 00 00 00 00 f3 0f 1e fa 48 8d 05 65 63 2d 00 8b 00 85 c0 75 17 b8 01 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 41 54 49 89 d4 55
        RSP: 002b:00007ffd5b863cb8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
        RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00007f6c0dad73b8
        RDX: 0000000000000005 RSI: 000055a9216e1710 RDI: 0000000000000001
        RBP: 000055a9216e1710 R08: 000000000000000a R09: 00007ffd5b863840
        R10: 000000000000000a R11: 0000000000000246 R12: 00007f6c0dda9780
        R13: 0000000000000005 R14: 00007f6c0dda4740 R15: 0000000000000005
        Modules linked in: nls_iso8859_1 nls_cp437 vfat fat kvm_intel kvm irqbypass efivars ip_tables x_tables xfs sd_mod ahci libahci igb i2c_algo_bit libata i2c_core dm_mirror dm_region_hash dm_log dm_mod efivarfs
        CR2: ffff888453d00000
        ---[ end trace ccf646c7456717c5 ]---
        Kernel panic - not syncing: Fatal exception
        Shutting down cpus with NMI
        Kernel Offset: 0x24c00000 from 0xffffffff81000000 (relocation range:
        0xffffffff80000000-0xffffffffbfffffff)
        ---[ end Kernel panic - not syncing: Fatal exception ]---
    
    Link: http://lkml.kernel.org/r/20190227173147.75650-1-cai@lca.pw
    Signed-off-by: Qian Cai <cai@lca.pw>
    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 <sashal@kernel.org>

commit 93b7ebef7ee3f95e27d67c6e9fb5ab363de05e5a
Author: Peng Fan <peng.fan@nxp.com>
Date:   Tue Mar 5 15:49:50 2019 -0800

    mm/cma.c: cma_declare_contiguous: correct err handling
    
    [ Upstream commit 0d3bd18a5efd66097ef58622b898d3139790aa9d ]
    
    In case cma_init_reserved_mem failed, need to free the memblock
    allocated by memblock_reserve or memblock_alloc_range.
    
    Quote Catalin's comments:
      https://lkml.org/lkml/2019/2/26/482
    
    Kmemleak is supposed to work with the memblock_{alloc,free} pair and it
    ignores the memblock_reserve() as a memblock_alloc() implementation
    detail. It is, however, tolerant to memblock_free() being called on
    a sub-range or just a different range from a previous memblock_alloc().
    So the original patch looks fine to me. FWIW:
    
    Link: http://lkml.kernel.org/r/20190227144631.16708-1-peng.fan@nxp.com
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Marek Szyprowski <m.szyprowski@samsung.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90a70109697c5f66d19934dc22ed3ab788c03705
Author: Qian Cai <cai@lca.pw>
Date:   Tue Mar 5 15:50:11 2019 -0800

    mm/sparse: fix a bad comparison
    
    [ Upstream commit d778015ac95bc036af73342c878ab19250e01fe1 ]
    
    next_present_section_nr() could only return an unsigned number -1, so
    just check it specifically where compilers will convert -1 to unsigned
    if needed.
    
      mm/sparse.c: In function 'sparse_init_nid':
      mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
             ((section_nr >= 0) &&    \
                          ^~
      mm/sparse.c:478:2: note: in expansion of macro
      'for_each_present_section_nr'
        for_each_present_section_nr(pnum_begin, pnum) {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
             ((section_nr >= 0) &&    \
                          ^~
      mm/sparse.c:497:2: note: in expansion of macro
      'for_each_present_section_nr'
        for_each_present_section_nr(pnum_begin, pnum) {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
      mm/sparse.c: In function 'sparse_init':
      mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]
             ((section_nr >= 0) &&    \
                          ^~
      mm/sparse.c:520:2: note: in expansion of macro
      'for_each_present_section_nr'
        for_each_present_section_nr(pnum_begin + 1, pnum_end) {
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Link: http://lkml.kernel.org/r/20190228181839.86504-1-cai@lca.pw
    Fixes: c4e1be9ec113 ("mm, sparsemem: break out of loops early")
    Signed-off-by: Qian Cai <cai@lca.pw>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60c86431ca4cf8245a76c30f3b865929e9e692c9
Author: Jiri Olsa <jolsa@redhat.com>
Date:   Tue Mar 5 16:25:29 2019 +0100

    perf c2c: Fix c2c report for empty numa node
    
    [ Upstream commit e34c940245437f36d2c492edd1f8237eff391064 ]
    
    Ravi Bangoria reported that we fail with an empty NUMA node with the
    following message:
    
      $ lscpu
      NUMA node0 CPU(s):
      NUMA node1 CPU(s):   0-4
    
      $ sudo ./perf c2c report
      node/cpu topology bugFailed setup nodes
    
    Fix this by detecting the empty node and keeping its CPU set empty.
    
    Reported-by: Nageswara R Sastry <nasastry@in.ibm.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20190305152536.21035-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 11304c4b4ee411ed53c3e3cc0e689610910faeb7
Author: Kairui Song <kasong@redhat.com>
Date:   Wed Mar 6 19:18:27 2019 +0800

    x86/hyperv: Fix kernel panic when kexec on HyperV
    
    [ Upstream commit 179fb36abb097976997f50733d5b122a29158cba ]
    
    After commit 68bb7bfb7985 ("X86/Hyper-V: Enable IPI enlightenments"),
    kexec fails with a kernel panic:
    
    kexec_core: Starting new kernel
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
    Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release v3.0 03/02/2018
    RIP: 0010:0xffffc9000001d000
    
    Call Trace:
     ? __send_ipi_mask+0x1c6/0x2d0
     ? hv_send_ipi_mask_allbutself+0x6d/0xb0
     ? mp_save_irq+0x70/0x70
     ? __ioapic_read_entry+0x32/0x50
     ? ioapic_read_entry+0x39/0x50
     ? clear_IO_APIC_pin+0xb8/0x110
     ? native_stop_other_cpus+0x6e/0x170
     ? native_machine_shutdown+0x22/0x40
     ? kernel_kexec+0x136/0x156
    
    That happens if hypercall based IPIs are used because the hypercall page is
    reset very early upon kexec reboot, but kexec sends IPIs to stop CPUs,
    which invokes the hypercall and dereferences the unusable page.
    
    To fix his, reset hv_hypercall_pg to NULL before the page is reset to avoid
    any misuse, IPI sending will fall back to the non hypercall based
    method. This only happens on kexec / kdump so just setting the pointer to
    NULL is good enough.
    
    Fixes: 68bb7bfb7985 ("X86/Hyper-V: Enable IPI enlightenments")
    Signed-off-by: Kairui Song <kasong@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "K. Y. Srinivasan" <kys@microsoft.com>
    Cc: Haiyang Zhang <haiyangz@microsoft.com>
    Cc: Stephen Hemminger <sthemmin@microsoft.com>
    Cc: Sasha Levin <sashal@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: devel@linuxdriverproject.org
    Link: https://lkml.kernel.org/r/20190306111827.14131-1-kasong@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34555ccacf94a0c677b8bc658b67e7866a530bef
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Mar 6 15:41:29 2019 -0800

    iio: adc: fix warning in Qualcomm PM8xxx HK/XOADC driver
    
    [ Upstream commit e0f0ae838a25464179d37f355d763f9ec139fc15 ]
    
    The pm8xxx_get_channel() implementation is unclear, and causes gcc to
    suddenly generate odd warnings.  The trigger for the warning (at least
    for me) was the entirely unrelated commit 79a4e91d1bb2 ("device.h: Add
    __cold to dev_<level> logging functions"), which apparently changes gcc
    code generation in the caller function enough to cause this:
    
      drivers/iio/adc/qcom-pm8xxx-xoadc.c: In function ‘pm8xxx_xoadc_probe’:
      drivers/iio/adc/qcom-pm8xxx-xoadc.c:633:8: warning: ‘ch’ may be used uninitialized in this function [-Wmaybe-uninitialized]
        ret = pm8xxx_read_channel_rsv(adc, ch, AMUX_RSV4,
              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                 &read_nomux_rsv4, true);
                 ~~~~~~~~~~~~~~~~~~~~~~~
      drivers/iio/adc/qcom-pm8xxx-xoadc.c:426:27: note: ‘ch’ was declared here
        struct pm8xxx_chan_info *ch;
                                 ^~
    
    because gcc for some reason then isn't able to see that the termination
    condition for the "for( )" loop in that function is also the condition
    for returning NULL.
    
    So it's not _actually_ uninitialized, but the function is admittedly
    just unnecessarily oddly written.
    
    Simplify and clarify the function, making gcc also see that it always
    returns a valid initialized value.
    
    Cc: Joe Perches <joe@perches.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Andy Gross <andy.gross@linaro.org>
    Cc: David Brown <david.brown@linaro.org>
    Cc: Jonathan Cameron <jic23@kernel.org>
    Cc: Hartmut Knaack <knaack.h@gmx.de>
    Cc: Lars-Peter Clausen <lars@metafoo.de>
    Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 86aad65625cf244a672904c4ac4361c15f820384
Author: Xiang Chen <chenxiang66@hisilicon.com>
Date:   Thu Feb 28 22:50:58 2019 +0800

    scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO
    
    [ Upstream commit 4790595723d4b833b18c994973d39f9efb842887 ]
    
    For internal IO and SMP IO, there is a time-out timer for them. In the
    timer handler, it checks whether IO is done according to the flag
    task->task_state_lock.
    
    There is an issue which may cause system suspended: internal IO or SMP IO
    is sent, but at that time because of hardware exception (such as inject
    2Bit ECC error), so IO is not completed and also not timeout. But, at that
    time, the SAS controller reset occurs to recover system. It will release
    the resource and set the status of IO to be SAS_TASK_STATE_DONE, so when IO
    timeout, it will never complete the completion of IO and wait for ever.
    
    [  729.123632] Call trace:
    [  729.126791] [<ffff00000808655c>] __switch_to+0x94/0xa8
    [  729.133106] [<ffff000008d96e98>] __schedule+0x1e8/0x7fc
    [  729.138975] [<ffff000008d974e0>] schedule+0x34/0x8c
    [  729.144401] [<ffff000008d9b000>] schedule_timeout+0x1d8/0x3cc
    [  729.150690] [<ffff000008d98218>] wait_for_common+0xdc/0x1a0
    [  729.157101] [<ffff000008d98304>] wait_for_completion+0x28/0x34
    [  729.165973] [<ffff000000dcefb4>] hisi_sas_internal_task_abort+0x2a0/0x424 [hisi_sas_test_main]
    [  729.176447] [<ffff000000dd18f4>] hisi_sas_abort_task+0x244/0x2d8 [hisi_sas_test_main]
    [  729.185258] [<ffff000008971714>] sas_eh_handle_sas_errors+0x1c8/0x7b8
    [  729.192391] [<ffff000008972774>] sas_scsi_recover_host+0x130/0x398
    [  729.199237] [<ffff00000894d8a8>] scsi_error_handler+0x148/0x5c0
    [  729.206009] [<ffff0000080f4118>] kthread+0x10c/0x138
    [  729.211563] [<ffff0000080855dc>] ret_from_fork+0x10/0x18
    
    To solve the issue, callback function task_done of those IOs need to be
    called when on SAS controller reset.
    
    Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 776de12b9f8f28a8bee3ef4421684eadb327e723
Author: John Garry <john.garry@huawei.com>
Date:   Thu Feb 28 22:51:00 2019 +0800

    scsi: hisi_sas: Set PHY linkrate when disconnected
    
    [ Upstream commit efdcad62e7b8a02fcccc5ccca57806dce1482ac8 ]
    
    When the PHY comes down, we currently do not set the negotiated linkrate:
    
    root@(none)$ pwd
    /sys/class/sas_phy/phy-0:0
    root@(none)$ more enable
    1
    root@(none)$ more negotiated_linkrate
    12.0 Gbit
    root@(none)$ echo 0 > enable
    root@(none)$ more negotiated_linkrate
    12.0 Gbit
    root@(none)$
    
    This patch fixes the driver code to set it properly when the PHY comes
    down.
    
    If the PHY had been enabled, then set unknown; otherwise, flag as disabled.
    
    The logical place to set the negotiated linkrate for this scenario is PHY
    down routine, which is called from the PHY down ISR.
    
    However, it is not possible to know if the PHY comes down due to PHY
    disable or loss of link, as sas_phy.enabled member is not set until after
    the transport disable routine is complete, which races with the PHY down
    ISR.
    
    As an imperfect solution, use sas_phy_data.enable as the flag to know if
    the PHY is down due to disable. It's imperfect, as sas_phy_data is internal
    to libsas.
    
    I can't see another way without adding a new field to hisi_sas_phy and
    managing it, or changing SCSI SAS transport.
    
    Signed-off-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c5021aa17b05c584b3c7aacde59fc5727fa97ce4
Author: Stanislav Fomichev <sdf@google.com>
Date:   Wed Mar 6 11:59:27 2019 -0800

    libbpf: force fixdep compilation at the start of the build
    
    [ Upstream commit 8e2688876c7f7073d925e1f150e86b8ed3338f52 ]
    
    libbpf targets don't explicitly depend on fixdep target, so when
    we do 'make -j$(nproc)', there is a high probability, that some
    objects will be built before fixdep binary is available.
    
    Fix this by running sub-make; this makes sure that fixdep dependency
    is properly accounted for.
    
    For the same issue in perf, see commit abb26210a395 ("perf tools: Force
    fixdep compilation at the start of the build").
    
    Before:
    
    $ rm -rf /tmp/bld; mkdir /tmp/bld; make -j$(nproc) O=/tmp/bld -C tools/lib/bpf/
    
    Auto-detecting system features:
    ...                        libelf: [ on  ]
    ...                           bpf: [ on  ]
    
      HOSTCC   /tmp/bld/fixdep.o
      CC       /tmp/bld/libbpf.o
      CC       /tmp/bld/bpf.o
      CC       /tmp/bld/btf.o
      CC       /tmp/bld/nlattr.o
      CC       /tmp/bld/libbpf_errno.o
      CC       /tmp/bld/str_error.o
      CC       /tmp/bld/netlink.o
      CC       /tmp/bld/bpf_prog_linfo.o
      CC       /tmp/bld/libbpf_probes.o
      CC       /tmp/bld/xsk.o
      HOSTLD   /tmp/bld/fixdep-in.o
      LINK     /tmp/bld/fixdep
      LD       /tmp/bld/libbpf-in.o
      LINK     /tmp/bld/libbpf.a
      LINK     /tmp/bld/libbpf.so
      LINK     /tmp/bld/test_libbpf
    
    $ head /tmp/bld/.libbpf.o.cmd
     # cannot find fixdep (/usr/local/google/home/sdf/src/linux/xxx//fixdep)
     # using basic dep data
    
    /tmp/bld/libbpf.o: libbpf.c /usr/include/stdc-predef.h \
     /usr/include/stdlib.h /usr/include/features.h \
     /usr/include/x86_64-linux-gnu/sys/cdefs.h \
     /usr/include/x86_64-linux-gnu/bits/wordsize.h \
     /usr/include/x86_64-linux-gnu/gnu/stubs.h \
     /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
     /usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
    
    After:
    
    $ rm -rf /tmp/bld; mkdir /tmp/bld; make -j$(nproc) O=/tmp/bld -C tools/lib/bpf/
    
    Auto-detecting system features:
    ...                        libelf: [ on  ]
    ...                           bpf: [ on  ]
    
      HOSTCC   /tmp/bld/fixdep.o
      HOSTLD   /tmp/bld/fixdep-in.o
      LINK     /tmp/bld/fixdep
      CC       /tmp/bld/libbpf.o
      CC       /tmp/bld/bpf.o
      CC       /tmp/bld/nlattr.o
      CC       /tmp/bld/btf.o
      CC       /tmp/bld/libbpf_errno.o
      CC       /tmp/bld/str_error.o
      CC       /tmp/bld/netlink.o
      CC       /tmp/bld/bpf_prog_linfo.o
      CC       /tmp/bld/libbpf_probes.o
      CC       /tmp/bld/xsk.o
      LD       /tmp/bld/libbpf-in.o
      LINK     /tmp/bld/libbpf.a
      LINK     /tmp/bld/libbpf.so
      LINK     /tmp/bld/test_libbpf
    
    $ head /tmp/bld/.libbpf.o.cmd
    cmd_/tmp/bld/libbpf.o := gcc -Wp,-MD,/tmp/bld/.libbpf.o.d -Wp,-MT,/tmp/bld/libbpf.o -g -Wall -DHAVE_LIBELF_MMAP_SUPPORT -DCOMPAT_NEED_REALLOCARRAY -Wbad-function-cast -Wdeclaration-after-statement -Wformat-security -Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked -Wredundant-decls -Wshadow -Wstrict-prototypes -Wswitch-default -Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wstrict-aliasing=3 -Werror -Wall -fPIC -I. -I/usr/local/google/home/sdf/src/linux/tools/include -I/usr/local/google/home/sdf/src/linux/tools/arch/x86/include/uapi -I/usr/local/google/home/sdf/src/linux/tools/include/uapi -fvisibility=hidden -D"BUILD_STR(s)=$(pound)s" -c -o /tmp/bld/libbpf.o libbpf.c
    
    source_/tmp/bld/libbpf.o := libbpf.c
    
    deps_/tmp/bld/libbpf.o := \
      /usr/include/stdc-predef.h \
      /usr/include/stdlib.h \
      /usr/include/features.h \
      /usr/include/x86_64-linux-gnu/sys/cdefs.h \
      /usr/include/x86_64-linux-gnu/bits/wordsize.h \
    
    Fixes: 7c422f557266 ("tools build: Build fixdep helper from perf and basic libs")
    Reported-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Stanislav Fomichev <sdf@google.com>
    Acked-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 267f65c94fb7bd962e9b2e7dd5f009c934100d24
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Mar 7 16:52:24 2019 +0100

    enic: fix build warning without CONFIG_CPUMASK_OFFSTACK
    
    [ Upstream commit 43d281662fdb46750d49417559b71069f435298d ]
    
    The enic driver relies on the CONFIG_CPUMASK_OFFSTACK feature to
    dynamically allocate a struct member, but this is normally intended for
    local variables.
    
    Building with clang, I get a warning for a few locations that check the
    address of the cpumask_var_t:
    
    drivers/net/ethernet/cisco/enic/enic_main.c:122:22: error: address of array 'enic->msix[i].affinity_mask' will always evaluate to 'true' [-Werror,-Wpointer-bool-conversion]
    
    As far as I can tell, the code is still correct, as the truth value of
    the pointer is what we need in this configuration. To get rid of
    the warning, use cpumask_available() instead of checking the
    pointer directly.
    
    Fixes: 322cf7e3a4e8 ("enic: assign affinity hint to interrupts")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit aaad69802e170f5992557edf8f26a6f708113470
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Thu Mar 7 11:00:28 2019 -0700

    net: stmmac: Avoid sometimes uninitialized Clang warnings
    
    [ Upstream commit df103170854e87124ee7bdd2bca64b178e653f97 ]
    
    When building with -Wsometimes-uninitialized, Clang warns:
    
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:495:3: warning: variable 'ns' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:495:3: warning: variable 'ns' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:532:3: warning: variable 'ns' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:532:3: warning: variable 'ns' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:741:3: warning: variable 'sec_inc' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:741:3: warning: variable 'sec_inc' is used uninitialized whenever '&&' condition is false [-Wsometimes-uninitialized]
    
    Clang is concerned with the use of stmmac_do_void_callback (which
    stmmac_get_timestamp and stmmac_config_sub_second_increment wrap),
    as it may fail to initialize these values if the if condition was ever
    false (meaning the callbacks don't exist). It's not wrong because the
    callbacks (get_timestamp and config_sub_second_increment respectively)
    are the ones that initialize the variables. While it's unlikely that the
    callbacks are ever going to disappear and make that condition false, we
    can easily avoid this warning by zero initialize the variables.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/384
    Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4e4d49798d865cbc804f16bf8bff0b9a2e69ffc8
Author: Christian Brauner <christian@brauner.io>
Date:   Thu Mar 7 16:29:43 2019 -0800

    sysctl: handle overflow for file-max
    
    [ Upstream commit 32a5ad9c22852e6bd9e74bdec5934ef9d1480bc5 ]
    
    Currently, when writing
    
      echo 18446744073709551616 > /proc/sys/fs/file-max
    
    /proc/sys/fs/file-max will overflow and be set to 0.  That quickly
    crashes the system.
    
    This commit sets the max and min value for file-max.  The max value is
    set to long int.  Any higher value cannot currently be used as the
    percpu counters are long ints and not unsigned integers.
    
    Note that the file-max value is ultimately parsed via
    __do_proc_doulongvec_minmax().  This function does not report error when
    min or max are exceeded.  Which means if a value largen that long int is
    written userspace will not receive an error instead the old value will be
    kept.  There is an argument to be made that this should be changed and
    __do_proc_doulongvec_minmax() should return an error when a dedicated min
    or max value are exceeded.  However this has the potential to break
    userspace so let's defer this to an RFC patch.
    
    Link: http://lkml.kernel.org/r/20190107222700.15954-3-christian@brauner.io
    Signed-off-by: Christian Brauner <christian@brauner.io>
    Acked-by: Kees Cook <keescook@chromium.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Dominik Brodowski <linux@dominikbrodowski.net>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Joe Lawrence <joe.lawrence@redhat.com>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Waiman Long <longman@redhat.com>
    [christian@brauner.io: v4]
      Link: http://lkml.kernel.org/r/20190210203943.8227-3-christian@brauner.io
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fd9317a3e2a0345b1c559eb997fdcf6435117f8c
Author: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Date:   Thu Mar 7 16:31:28 2019 -0800

    include/linux/relay.h: fix percpu annotation in struct rchan
    
    [ Upstream commit 62461ac2e5b6520b6d65fc6d7d7b4b8df4b848d8 ]
    
    The percpu member of this structure is declared as:
            struct ... ** __percpu member;
    So its type is:
            __percpu pointer to pointer to struct ...
    
    But looking at how it's used, its type should be:
            pointer to __percpu pointer to struct ...
    and it should thus be declared as:
            struct ... * __percpu *member;
    
    So fix the placement of '__percpu' in the definition of this
    structures.
    
    This silents a few Sparse's warnings like:
            warning: incorrect type in initializer (different address spaces)
              expected void const [noderef] <asn:3> *__vpp_verify
              got struct sched_domain **
    
    Link: http://lkml.kernel.org/r/20190118144902.79065-1-luc.vanoostenryck@gmail.com
    Fixes: 017c59c042d01 ("relay: Use per CPU constructs for the relay channel buffer pointers")
    Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
    Cc: Jens Axboe <axboe@suse.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c7c82cea6985121dcf82fdab1408cb318f5c7c97
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Fri Mar 1 11:02:52 2019 -0800

    gpio: gpio-omap: fix level interrupt idling
    
    [ Upstream commit d01849f7deba81f4959fd9e51bf20dbf46987d1c ]
    
    Tony notes that the GPIO module does not idle when level interrupts are
    in use, as the wakeup appears to get stuck.
    
    After extensive investigation, it appears that the wakeup will only be
    cleared if the interrupt status register is cleared while the interrupt
    is enabled. However, we are currently clearing it with the interrupt
    disabled for level-based interrupts.
    
    It is acknowledged that this observed behaviour conflicts with a
    statement in the TRM:
    
    CAUTION
      After servicing the interrupt, the status bit in the interrupt status
      register (GPIOi.GPIO_IRQSTATUS_0 or GPIOi.GPIO_IRQSTATUS_1) must be
      reset and the interrupt line released (by setting the corresponding
      bit of the interrupt status register to 1) before enabling an
      interrupt for the GPIO channel in the interrupt-enable register
      (GPIOi.GPIO_IRQSTATUS_SET_0 or GPIOi.GPIO_IRQSTATUS_SET_1) to prevent
      the occurrence of unexpected interrupts when enabling an interrupt
      for the GPIO channel.
    
    However, this does not appear to be a practical problem.
    
    Further, as reported by Grygorii Strashko <grygorii.strashko@ti.com>,
    the TI Android kernel tree has an earlier similar patch as "GPIO: OMAP:
    Fix the sequence to clear the IRQ status" saying:
    
     if the status is cleared after disabling the IRQ then sWAKEUP will not
     be cleared and gates the module transition
    
    When we unmask the level interrupt after the interrupt has been handled,
    enable the interrupt and only then clear the interrupt. If the interrupt
    is still pending, the hardware will re-assert the interrupt status.
    
    Should the caution note in the TRM prove to be a problem, we could
    use a clear-enable-clear sequence instead.
    
    Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
    Cc: Keerthy <j-keerthy@ti.com>
    Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    [tony@atomide.com: updated comments based on an earlier TI patch]
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Acked-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 90833d08ffa572c51abe91b283f2920c6518bfe6
Author: Tony Lindgren <tony@atomide.com>
Date:   Thu Mar 7 12:10:56 2019 -0800

    clk: ti: clkctrl: Fix clkdm_name regression for TI_CLK_CLKCTRL_COMPAT
    
    [ Upstream commit d17a718db40df2548e99a62dc3d7e5e2b38143cc ]
    
    Commit a72d785021cb ("clk: ti: Prepare for remove of OF node name")
    changed the code to use kasprintf() for provider->clkdm_name but also
    changed the offset used later on by three. We don't need to change the
    offset as we already have the extra three characters in the format for
    kasprintf with "%pOFnxxx".
    
    This caused the clocks with TI_CLK_CLKCTRL_COMPAT to have NULL
    clk->clkdm_name for omap4 and 5. And null clkdm_name can cause module
    reset, enable, and idle to fail.
    
    The issue can also be seen also when enabling DEBUG for clkctrl.c
    and then we start seeing "clock: could not associate" messages for
    omap4 and 5 as the generated name is something like "l4_wkclkdm" instead
    of "l4_wkup_clkdm" that's needed.
    
    Let's fix the issue with a partial revert of commit a72d785021cb ("clk:
    ti: Prepare for remove of OF node name").
    
    ALso note that in general code should not depend on the dts node names.
    And the node names should be generic types like clock-domain in this case.
    This could be fixed later by using separate compatible properties for the
    clockdomains, or by adding soc_device_match() table with reg offsets
    to the driver. But let's fix the regression first.
    
    Fixes: a72d785021cb ("clk: ti: Prepare for remove of OF node name")
    Cc: Tero Kristo <t-kristo@ti.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b48475a66ef541b7550ed62b52f665e81652786d
Author: Björn Töpel <bjorn.topel@intel.com>
Date:   Fri Mar 8 08:57:26 2019 +0100

    xsk: fix to reject invalid flags in xsk_bind
    
    [ Upstream commit f54ba391d88f5a5d032175b4c308c176e34b80b7 ]
    
    Passing a non-existing flag in the sxdp_flags member of struct
    sockaddr_xdp was, incorrectly, silently ignored. This patch addresses
    that behavior, and rejects any non-existing flags.
    
    We have examined existing user space code, and to our best knowledge,
    no one is relying on the current incorrect behavior. AF_XDP is still
    in its infancy, so from our perspective, the risk of breakage is very
    low, and addressing this problem now is important.
    
    Fixes: 965a99098443 ("xsk: add support for bind for Rx")
    Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3cac5ce088c2f9a947f61e05806db7086a52701c
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Mon Mar 4 00:27:15 2019 -0800

    net/mlx5: Avoid panic when setting vport mac, getting vport config
    
    [ Upstream commit 6e77c413e8e73d0f36b5358b601389d75ec4451c ]
    
    If we try to set VFs mac address on a VF (not PF) net device,
    the kernel will be crash. The commands are show as below:
    
    $ echo 2 > /sys/class/net/$MLX_PF0/device/sriov_numvfs
    $ ip link set $MLX_VF0 vf 0 mac 00:11:22:33:44:00
    
    [exception RIP: mlx5_eswitch_set_vport_mac+41]
    [ffffb8b7079e3688] do_setlink at ffffffff8f67f85b
    [ffffb8b7079e37a8] __rtnl_newlink at ffffffff8f683778
    [ffffb8b7079e3b68] rtnl_newlink at ffffffff8f683a63
    [ffffb8b7079e3b90] rtnetlink_rcv_msg at ffffffff8f67d812
    [ffffb8b7079e3c10] netlink_rcv_skb at ffffffff8f6b88ab
    [ffffb8b7079e3c60] netlink_unicast at ffffffff8f6b808f
    [ffffb8b7079e3ca0] netlink_sendmsg at ffffffff8f6b8412
    [ffffb8b7079e3d18] sock_sendmsg at ffffffff8f6452f6
    [ffffb8b7079e3d30] ___sys_sendmsg at ffffffff8f645860
    [ffffb8b7079e3eb0] __sys_sendmsg at ffffffff8f647a38
    [ffffb8b7079e3f38] do_syscall_64 at ffffffff8f00401b
    [ffffb8b7079e3f50] entry_SYSCALL_64_after_hwframe at ffffffff8f80008c
    
    and
    
    [exception RIP: mlx5_eswitch_get_vport_config+12]
    [ffffa70607e57678] mlx5e_get_vf_config at ffffffffc03c7f8f [mlx5_core]
    [ffffa70607e57688] do_setlink at ffffffffbc67fa59
    [ffffa70607e577a8] __rtnl_newlink at ffffffffbc683778
    [ffffa70607e57b68] rtnl_newlink at ffffffffbc683a63
    [ffffa70607e57b90] rtnetlink_rcv_msg at ffffffffbc67d812
    [ffffa70607e57c10] netlink_rcv_skb at ffffffffbc6b88ab
    [ffffa70607e57c60] netlink_unicast at ffffffffbc6b808f
    [ffffa70607e57ca0] netlink_sendmsg at ffffffffbc6b8412
    [ffffa70607e57d18] sock_sendmsg at ffffffffbc6452f6
    [ffffa70607e57d30] ___sys_sendmsg at ffffffffbc645860
    [ffffa70607e57eb0] __sys_sendmsg at ffffffffbc647a38
    [ffffa70607e57f38] do_syscall_64 at ffffffffbc00401b
    [ffffa70607e57f50] entry_SYSCALL_64_after_hwframe at ffffffffbc80008c
    
    Fixes: a8d70a054a718 ("net/mlx5: E-Switch, Disallow vlan/spoofcheck setup if not being esw manager")
    Cc: Eli Cohen <eli@mellanox.com>
    Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Acked-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1126c2008a321cce067d8ecb882ca6cedca35f4
Author: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Date:   Mon Mar 4 00:27:16 2019 -0800

    net/mlx5: Avoid panic when setting vport rate
    
    [ Upstream commit 24319258660a84dd77f4be026a55b10a12524919 ]
    
    If we try to set VFs rate on a VF (not PF) net device, the kernel
    will be crash. The commands are show as below:
    
    $ echo 2 > /sys/class/net/$MLX_PF0/device/sriov_numvfs
    $ ip link set $MLX_VF0 vf 0 max_tx_rate 2 min_tx_rate 1
    
    If not applied the first patch ("net/mlx5: Avoid panic when setting
    vport mac, getting vport config"), the command:
    
    $ ip link set $MLX_VF0 vf 0 rate 100
    
    can also crash the kernel.
    
    [ 1650.006388] RIP: 0010:mlx5_eswitch_set_vport_rate+0x1f/0x260 [mlx5_core]
    [ 1650.007092]  do_setlink+0x982/0xd20
    [ 1650.007129]  __rtnl_newlink+0x528/0x7d0
    [ 1650.007374]  rtnl_newlink+0x43/0x60
    [ 1650.007407]  rtnetlink_rcv_msg+0x2a2/0x320
    [ 1650.007484]  netlink_rcv_skb+0xcb/0x100
    [ 1650.007519]  netlink_unicast+0x17f/0x230
    [ 1650.007554]  netlink_sendmsg+0x2d2/0x3d0
    [ 1650.007592]  sock_sendmsg+0x36/0x50
    [ 1650.007625]  ___sys_sendmsg+0x280/0x2a0
    [ 1650.007963]  __sys_sendmsg+0x58/0xa0
    [ 1650.007998]  do_syscall_64+0x5b/0x180
    [ 1650.009438]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: c9497c98901c ("net/mlx5: Add support for setting VF min rate")
    Cc: Mohamad Haj Yahia <mohamad@mellanox.com>
    Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
    Reviewed-by: Roi Dayan <roid@mellanox.com>
    Acked-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d1e83bda0c304bc42b44f6219e19530934392970
Author: Tariq Toukan <tariqt@mellanox.com>
Date:   Tue Mar 5 16:45:09 2019 +0200

    net/mlx5e: Fix access to non-existing receive queue
    
    [ Upstream commit c475e11e82d16133304321bae285c5c1d4cfc856 ]
    
    In case number of channels is changed while interface is down,
    RSS indirection table is mistakenly not modified accordingly,
    causing access to out-of-range non-existing object.
    
    Fix by updating the RSS indireciton table also in the early
    return flow of interface down.
    
    Fixes: fb35c534b788 ("net/mlx5e: Fix NULL pointer derefernce in set channels error flow")
    Fixes: bbeb53b8b2c9 ("net/mlx5e: Move RSS params to a dedicated struct")
    Reported-by: Or Gerlitz <ogerlitz@mellanox.com>
    Tested-by: Maria Pasechnik <mariap@mellanox.com>
    Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
    Reviewed-by: Eran Ben Elisha <eranbe@mellanox.com>
    Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 043a440018e36403c3cb95620771541de93155d8
Author: Douglas Anderson <dianders@chromium.org>
Date:   Fri Mar 8 11:32:04 2019 -0800

    tracing: kdb: Fix ftdump to not sleep
    
    [ Upstream commit 31b265b3baaf55f209229888b7ffea523ddab366 ]
    
    As reported back in 2016-11 [1], the "ftdump" kdb command triggers a
    BUG for "sleeping function called from invalid context".
    
    kdb's "ftdump" command wants to call ring_buffer_read_prepare() in
    atomic context.  A very simple solution for this is to add allocation
    flags to ring_buffer_read_prepare() so kdb can call it without
    triggering the allocation error.  This patch does that.
    
    Note that in the original email thread about this, it was suggested
    that perhaps the solution for kdb was to either preallocate the buffer
    ahead of time or create our own iterator.  I'm hoping that this
    alternative of adding allocation flags to ring_buffer_read_prepare()
    can be considered since it means I don't need to duplicate more of the
    core trace code into "trace_kdb.c" (for either creating my own
    iterator or re-preparing a ring allocator whose memory was already
    allocated).
    
    NOTE: another option for kdb is to actually figure out how to make it
    reuse the existing ftrace_dump() function and totally eliminate the
    duplication.  This sounds very appealing and actually works (the "sr
    z" command can be seen to properly dump the ftrace buffer).  The
    downside here is that ftrace_dump() fully consumes the trace buffer.
    Unless that is changed I'd rather not use it because it means "ftdump
    | grep xyz" won't be very useful to search the ftrace buffer since it
    will throw away the whole trace on the first grep.  A future patch to
    dump only the last few lines of the buffer will also be hard to
    implement.
    
    [1] https://lkml.kernel.org/r/20161117191605.GA21459@google.com
    
    Link: http://lkml.kernel.org/r/20190308193205.213659-1-dianders@chromium.org
    
    Reported-by: Brian Norris <briannorris@chromium.org>
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4c6df358aa872d4c29956c18a8a09e55f48e732c
Author: John Johansen <john.johansen@canonical.com>
Date:   Tue Feb 12 03:35:40 2019 -0800

    apparmor: fix double free when unpack of secmark rules fails
    
    [ Upstream commit d8dbb581d4f86a2ac669c056fc71a28ebeb367f4 ]
    
    if secmark rules fail to unpack a double free happens resulting in
    the following oops
    
    [ 1295.584074] audit: type=1400 audit(1549970525.256:51): apparmor="STATUS" info="failed to unpack profile secmark rules" error=-71 profile="unconfined" name="/root/test" pid=29882 comm="apparmor_parser" name="/root/test" offset=120
    [ 1374.042334] ------------[ cut here ]------------
    [ 1374.042336] kernel BUG at mm/slub.c:294!
    [ 1374.042404] invalid opcode: 0000 [#1] SMP PTI
    [ 1374.042436] CPU: 0 PID: 29921 Comm: apparmor_parser Not tainted 4.20.7-042007-generic #201902061234
    [ 1374.042461] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    [ 1374.042489] RIP: 0010:kfree+0x164/0x180
    [ 1374.042502] Code: 74 05 41 0f b6 72 51 4c 89 d7 e8 37 cd f8 ff eb 8b 41 b8 01 00 00 00 48 89 d9 48 89 da 4c 89 d6 e8 11 f6 ff ff e9 72 ff ff ff <0f> 0b 49 8b 42 08 a8 01 75 c2 0f 0b 48 8b 3d a9 f4 19 01 e9 c5 fe
    [ 1374.042552] RSP: 0018:ffffaf7b812d7b90 EFLAGS: 00010246
    [ 1374.042568] RAX: ffff91e437679200 RBX: ffff91e437679200 RCX: ffff91e437679200
    [ 1374.042589] RDX: 00000000000088b6 RSI: ffff91e43da27060 RDI: ffff91e43d401a80
    [ 1374.042609] RBP: ffffaf7b812d7ba8 R08: 0000000000027080 R09: ffffffffa6627a6d
    [ 1374.042629] R10: ffffd3af41dd9e40 R11: ffff91e43a1740dc R12: ffff91e3f52e8000
    [ 1374.042650] R13: ffffffffa6627a6d R14: ffffffffffffffb9 R15: 0000000000000001
    [ 1374.042675] FS:  00007f928df77740(0000) GS:ffff91e43da00000(0000) knlGS:0000000000000000
    [ 1374.042697] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 1374.042714] CR2: 000055a0c3ab6b50 CR3: 0000000079ed8004 CR4: 0000000000360ef0
    [ 1374.042737] Call Trace:
    [ 1374.042750]  kzfree+0x2d/0x40
    [ 1374.042763]  aa_free_profile+0x12b/0x270
    [ 1374.042776]  unpack_profile+0xc1/0xf10
    [ 1374.042790]  aa_unpack+0x115/0x4e0
    [ 1374.042802]  aa_replace_profiles+0x8e/0xcc0
    [ 1374.042817]  ? kvmalloc_node+0x6d/0x80
    [ 1374.042831]  ? __check_object_size+0x166/0x192
    [ 1374.042845]  policy_update+0xcf/0x1b0
    [ 1374.042858]  profile_load+0x7d/0xa0
    [ 1374.042871]  __vfs_write+0x3a/0x190
    [ 1374.042883]  ? apparmor_file_permission+0x1a/0x20
    [ 1374.042899]  ? security_file_permission+0x31/0xc0
    [ 1374.042918]  ? _cond_resched+0x19/0x30
    [ 1374.042931]  vfs_write+0xab/0x1b0
    [ 1374.042963]  ksys_write+0x55/0xc0
    [ 1374.043004]  __x64_sys_write+0x1a/0x20
    [ 1374.043046]  do_syscall_64+0x5a/0x110
    [ 1374.043087]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 9caafbe2b4cf ("apparmor: Parse secmark policy")
    Reported-by: Alex Murray <alex.murray@canonical.com>
    Signed-off-by: John Johansen <john.johansen@canonical.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a98984da006bc63b78f5c78e7227c5e33dc9b034
Author: Chao Yu <yuchao0@huawei.com>
Date:   Tue Mar 12 15:44:27 2019 +0800

    f2fs: fix to avoid deadlock in f2fs_read_inline_dir()
    
    [ Upstream commit aadcef64b22f668c1a107b86d3521d9cac915c24 ]
    
    As Jiqun Li reported in bugzilla:
    
    https://bugzilla.kernel.org/show_bug.cgi?id=202883
    
    sometimes, dead lock when make system call SYS_getdents64 with fsync() is
    called by another process.
    
    monkey running on android9.0
    
    1.  task 9785 held sbi->cp_rwsem and waiting lock_page()
    2.  task 10349 held mm_sem and waiting sbi->cp_rwsem
    3. task 9709 held lock_page() and waiting mm_sem
    
    so this is a dead lock scenario.
    
    task stack is show by crash tools as following
    
    crash_arm64> bt ffffffc03c354080
    PID: 9785   TASK: ffffffc03c354080  CPU: 1   COMMAND: "RxIoScheduler-3"
    >> #7 [ffffffc01b50fac0] __lock_page at ffffff80081b11e8
    
    crash-arm64> bt 10349
    PID: 10349  TASK: ffffffc018b83080  CPU: 1   COMMAND: "BUGLY_ASYNC_UPL"
    >> #3 [ffffffc01f8cfa40] rwsem_down_read_failed at ffffff8008a93afc
         PC: 00000033  LR: 00000000  SP: 00000000  PSTATE: ffffffffffffffff
    
    crash-arm64> bt 9709
    PID: 9709   TASK: ffffffc03e7f3080  CPU: 1   COMMAND: "IntentService[A"
    >> #3 [ffffffc001e67850] rwsem_down_read_failed at ffffff8008a93afc
    >> #8 [ffffffc001e67b80] el1_ia at ffffff8008084fc4
         PC: ffffff8008274114  [compat_filldir64+120]
         LR: ffffff80083584d4  [f2fs_fill_dentries+448]
         SP: ffffffc001e67b80  PSTATE: 80400145
        X29: ffffffc001e67b80  X28: 0000000000000000  X27: 000000000000001a
        X26: 00000000000093d7  X25: ffffffc070d52480  X24: 0000000000000008
        X23: 0000000000000028  X22: 00000000d43dfd60  X21: ffffffc001e67e90
        X20: 0000000000000011  X19: ffffff80093a4000  X18: 0000000000000000
        X17: 0000000000000000  X16: 0000000000000000  X15: 0000000000000000
        X14: ffffffffffffffff  X13: 0000000000000008  X12: 0101010101010101
        X11: 7f7f7f7f7f7f7f7f  X10: 6a6a6a6a6a6a6a6a   X9: 7f7f7f7f7f7f7f7f
         X8: 0000000080808000   X7: ffffff800827409c   X6: 0000000080808000
         X5: 0000000000000008   X4: 00000000000093d7   X3: 000000000000001a
         X2: 0000000000000011   X1: ffffffc070d52480   X0: 0000000000800238
    >> #9 [ffffffc001e67be0] f2fs_fill_dentries at ffffff80083584d0
         PC: 0000003c  LR: 00000000  SP: 00000000  PSTATE: 000000d9
        X12: f48a02ff X11: d4678960 X10: d43dfc00  X9: d4678ae4
         X8: 00000058  X7: d4678994  X6: d43de800  X5: 000000d9
         X4: d43dfc0c  X3: d43dfc10  X2: d46799c8  X1: 00000000
         X0: 00001068
    
    Below potential deadlock will happen between three threads:
    Thread A                Thread B                Thread C
    - f2fs_do_sync_file
     - f2fs_write_checkpoint
      - down_write(&sbi->node_change) -- 1)
                            - do_page_fault
                             - down_write(&mm->mmap_sem) -- 2)
                              - do_wp_page
                               - f2fs_vm_page_mkwrite
                                                    - getdents64
                                                     - f2fs_read_inline_dir
                                                      - lock_page -- 3)
      - f2fs_sync_node_pages
       - lock_page -- 3)
                                - __do_map_lock
                                 - down_read(&sbi->node_change) -- 1)
                                                      - f2fs_fill_dentries
                                                       - dir_emit
                                                        - compat_filldir64
                                                         - do_page_fault
                                                          - down_read(&mm->mmap_sem) -- 2)
    
    Since f2fs_readdir is protected by inode.i_rwsem, there should not be
    any updates in inode page, we're safe to lookup dents in inode page
    without its lock held, so taking off the lock to improve concurrency
    of readdir and avoid potential deadlock.
    
    Reported-by: Jiqun Li <jiqun.li@unisoc.com>
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d661a6630488d5c48f1f2473224d5334e1c12a4
Author: Chao Yu <yuchao0@huawei.com>
Date:   Tue Mar 5 19:32:26 2019 +0800

    f2fs: fix to adapt small inline xattr space in __find_inline_xattr()
    
    [ Upstream commit 2c28aba8b2e2a51749fa66e01b68e1cd5b53e022 ]
    
    With below testcase, we will fail to find existed xattr entry:
    
    1. mkfs.f2fs -O extra_attr -O flexible_inline_xattr /dev/zram0
    2. mount -t f2fs -o inline_xattr_size=1 /dev/zram0 /mnt/f2fs/
    3. touch /mnt/f2fs/file
    4. setfattr -n "user.name" -v 0 /mnt/f2fs/file
    5. getfattr -n "user.name" /mnt/f2fs/file
    
    /mnt/f2fs/file: user.name: No such attribute
    
    The reason is for inode which has very small inline xattr size,
    __find_inline_xattr() will fail to traverse any entry due to first
    entry may not be loaded from xattr node yet, later, we may skip to
    check entire xattr datas in __find_xattr(), result in such wrong
    condition.
    
    This patch adds condition to check such case to avoid this issue.
    
    Signed-off-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e56d6fa7acf3524efcd71a16600d70661e98d748
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Fri Feb 15 13:04:26 2019 +0900

    h8300: use cc-cross-prefix instead of hardcoding h8300-unknown-linux-
    
    [ Upstream commit fc2b47b55f17fd996f7a01975ce1c33c2f2513f6 ]
    
    It believe it is a bad idea to hardcode a specific compiler prefix
    that may or may not be installed on a user's system. It is annoying
    when testing features that should not require compilers at all.
    
    For example, mrproper, headers_install, etc. should work without
    any compiler.
    
    They look like follows on my machine.
    
    $ make ARCH=h8300 mrproper
    ./scripts/gcc-version.sh: line 26: h8300-unknown-linux-gcc: command not found
    ./scripts/gcc-version.sh: line 27: h8300-unknown-linux-gcc: command not found
    make: h8300-unknown-linux-gcc: Command not found
    make: h8300-unknown-linux-gcc: Command not found
      [ a bunch of the same error messages continue ]
    
    $ make ARCH=h8300 headers_install
    ./scripts/gcc-version.sh: line 26: h8300-unknown-linux-gcc: command not found
    ./scripts/gcc-version.sh: line 27: h8300-unknown-linux-gcc: command not found
    make: h8300-unknown-linux-gcc: Command not found
      HOSTCC  scripts/basic/fixdep
    make: h8300-unknown-linux-gcc: Command not found
      WRAP    arch/h8300/include/generated/uapi/asm/kvm_para.h
      [ snip ]
    
    The solution is to delete this line, or to use cc-cross-prefix like
    some architectures do. I chose the latter as a moderate fixup.
    
    I added an alternative 'h8300-linux-' because it is available at:
    
    https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1eaf6713c5b3f355b3256cee2c7888b2f831d994
Author: Yufen Yu <yuyufen@huawei.com>
Date:   Wed Mar 13 18:54:59 2019 +0100

    nvme-loop: init nvmet_ctrl fatal_err_work when allocate
    
    [ Upstream commit d11de63f2b519f0a162b834013b6d3a46dbf3886 ]
    
    After commit 4d43d395fe (workqueue: Try to catch flush_work() without
    INIT_WORK()), it can cause warning when delete nvme-loop device, trace
    like:
    
    [   76.601272] Call Trace:
    [   76.601646]  ? del_timer+0x72/0xa0
    [   76.602156]  __cancel_work_timer+0x1ae/0x270
    [   76.602791]  cancel_work_sync+0x14/0x20
    [   76.603407]  nvmet_ctrl_free+0x1b7/0x2f0 [nvmet]
    [   76.604091]  ? free_percpu+0x168/0x300
    [   76.604652]  nvmet_sq_destroy+0x106/0x240 [nvmet]
    [   76.605346]  nvme_loop_destroy_admin_queue+0x30/0x60 [nvme_loop]
    [   76.606220]  nvme_loop_shutdown_ctrl+0xc3/0xf0 [nvme_loop]
    [   76.607026]  nvme_loop_delete_ctrl_host+0x19/0x30 [nvme_loop]
    [   76.607871]  nvme_do_delete_ctrl+0x75/0xb0
    [   76.608477]  nvme_sysfs_delete+0x7d/0xc0
    [   76.609057]  dev_attr_store+0x24/0x40
    [   76.609603]  sysfs_kf_write+0x4c/0x60
    [   76.610144]  kernfs_fop_write+0x19a/0x260
    [   76.610742]  __vfs_write+0x1c/0x60
    [   76.611246]  vfs_write+0xfa/0x280
    [   76.611739]  ksys_write+0x6e/0x120
    [   76.612238]  __x64_sys_write+0x1e/0x30
    [   76.612787]  do_syscall_64+0xbf/0x3a0
    [   76.613329]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    We fix it by moving fatal_err_work init to nvmet_alloc_ctrl(), which may
    more reasonable.
    
    Signed-off-by: Yufen Yu <yuyufen@huawei.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 32b73dc525a1b25d825d84869a03abbce5a84fa2
Author: James Smart <jsmart2021@gmail.com>
Date:   Wed Mar 13 18:55:01 2019 +0100

    nvme-fc: fix numa_node when dev is null
    
    [ Upstream commit 06f3d71ea071b70e62bcc146cd9ff7ed1f9d4e43 ]
    
    A recent change added a numa_node field to the nvme controller
    and has the transport assign the node using dev_to_node().
    However, fcloop registers with a NULL device struct, so the
    dev_to_node() call oops.
    
    Revise the assignment to assign no node when device struct is null.
    
    Fixes: 103e515efa89b ("nvme: add a numa_node field to struct nvme_ctrl")
    Reported-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: James Smart <jsmart2021@gmail.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Mike Snitzer <snitzer@redhat.com>
    [hch: small coding style fixup]
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fae38f280334107cd396ea456e3bf90e25b0f3d8
Author: Aurelien Aptel <aaptel@suse.com>
Date:   Thu Mar 14 18:44:16 2019 +0100

    CIFS: fix POSIX lock leak and invalid ptr deref
    
    [ Upstream commit bc31d0cdcfbadb6258b45db97e93b1c83822ba33 ]
    
    We have a customer reporting crashes in lock_get_status() with many
    "Leaked POSIX lock" messages preceeding the crash.
    
     Leaked POSIX lock on dev=0x0:0x56 ...
     Leaked POSIX lock on dev=0x0:0x56 ...
     Leaked POSIX lock on dev=0x0:0x56 ...
     Leaked POSIX lock on dev=0x0:0x53 ...
     Leaked POSIX lock on dev=0x0:0x53 ...
     Leaked POSIX lock on dev=0x0:0x53 ...
     Leaked POSIX lock on dev=0x0:0x53 ...
     POSIX: fl_owner=ffff8900e7b79380 fl_flags=0x1 fl_type=0x1 fl_pid=20709
     Leaked POSIX lock on dev=0x0:0x4b ino...
     Leaked locks on dev=0x0:0x4b ino=0xf911400000029:
     POSIX: fl_owner=ffff89f41c870e00 fl_flags=0x1 fl_type=0x1 fl_pid=19592
     stack segment: 0000 [#1] SMP
     Modules linked in: binfmt_misc msr tcp_diag udp_diag inet_diag unix_diag af_packet_diag netlink_diag rpcsec_gss_krb5 arc4 ecb auth_rpcgss nfsv4 md4 nfs nls_utf8 lockd grace cifs sunrpc ccm dns_resolver fscache af_packet iscsi_ibft iscsi_boot_sysfs vmw_vsock_vmci_transport vsock xfs libcrc32c sb_edac edac_core crct10dif_pclmul crc32_pclmul ghash_clmulni_intel drbg ansi_cprng vmw_balloon aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd joydev pcspkr vmxnet3 i2c_piix4 vmw_vmci shpchp fjes processor button ac btrfs xor raid6_pq sr_mod cdrom ata_generic sd_mod ata_piix vmwgfx crc32c_intel drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm serio_raw ahci libahci drm libata vmw_pvscsi sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod autofs4
    
     Supported: Yes
     CPU: 6 PID: 28250 Comm: lsof Not tainted 4.4.156-94.64-default #1
     Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop Reference Platform, BIOS 6.00 04/05/2016
     task: ffff88a345f28740 ti: ffff88c74005c000 task.ti: ffff88c74005c000
     RIP: 0010:[<ffffffff8125dcab>]  [<ffffffff8125dcab>] lock_get_status+0x9b/0x3b0
     RSP: 0018:ffff88c74005fd90  EFLAGS: 00010202
     RAX: ffff89bde83e20ae RBX: ffff89e870003d18 RCX: 0000000049534f50
     RDX: ffffffff81a3541f RSI: ffffffff81a3544e RDI: ffff89bde83e20ae
     RBP: 0026252423222120 R08: 0000000020584953 R09: 000000000000ffff
     R10: 0000000000000000 R11: ffff88c74005fc70 R12: ffff89e5ca7b1340
     R13: 00000000000050e5 R14: ffff89e870003d30 R15: ffff89e5ca7b1340
     FS:  00007fafd64be800(0000) GS:ffff89f41fd00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000001c80018 CR3: 000000a522048000 CR4: 0000000000360670
     DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
     DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
     Stack:
      0000000000000208 ffffffff81a3d6b6 ffff89e870003d30 ffff89e870003d18
      ffff89e5ca7b1340 ffff89f41738d7c0 ffff89e870003d30 ffff89e5ca7b1340
      ffffffff8125e08f 0000000000000000 ffff89bc22b67d00 ffff88c74005ff28
     Call Trace:
      [<ffffffff8125e08f>] locks_show+0x2f/0x70
      [<ffffffff81230ad1>] seq_read+0x251/0x3a0
      [<ffffffff81275bbc>] proc_reg_read+0x3c/0x70
      [<ffffffff8120e456>] __vfs_read+0x26/0x140
      [<ffffffff8120e9da>] vfs_read+0x7a/0x120
      [<ffffffff8120faf2>] SyS_read+0x42/0xa0
      [<ffffffff8161cbc3>] entry_SYSCALL_64_fastpath+0x1e/0xb7
    
    When Linux closes a FD (close(), close-on-exec, dup2(), ...) it calls
    filp_close() which also removes all posix locks.
    
    The lock struct is initialized like so in filp_close() and passed
    down to cifs
    
            ...
            lock.fl_type = F_UNLCK;
            lock.fl_flags = FL_POSIX | FL_CLOSE;
            lock.fl_start = 0;
            lock.fl_end = OFFSET_MAX;
            ...
    
    Note the FL_CLOSE flag, which hints the VFS code that this unlocking
    is done for closing the fd.
    
    filp_close()
      locks_remove_posix(filp, id);
        vfs_lock_file(filp, F_SETLK, &lock, NULL);
          return filp->f_op->lock(filp, cmd, fl) => cifs_lock()
            rc = cifs_setlk(file, flock, type, wait_flag, posix_lck, lock, unlock, xid);
              rc = server->ops->mand_unlock_range(cfile, flock, xid);
              if (flock->fl_flags & FL_POSIX && !rc)
                      rc = locks_lock_file_wait(file, flock)
    
    Notice how we don't call locks_lock_file_wait() which does the
    generic VFS lock/unlock/wait work on the inode if rc != 0.
    
    If we are closing the handle, the SMB server is supposed to remove any
    locks associated with it. Similarly, cifs.ko frees and wakes up any
    lock and lock waiter when closing the file:
    
    cifs_close()
      cifsFileInfo_put(file->private_data)
            /*
             * Delete any outstanding lock records. We'll lose them when the file
             * is closed anyway.
             */
            down_write(&cifsi->lock_sem);
            list_for_each_entry_safe(li, tmp, &cifs_file->llist->locks, llist) {
                    list_del(&li->llist);
                    cifs_del_lock_waiters(li);
                    kfree(li);
            }
            list_del(&cifs_file->llist->llist);
            kfree(cifs_file->llist);
            up_write(&cifsi->lock_sem);
    
    So we can safely ignore unlocking failures in cifs_lock() if they
    happen with the FL_CLOSE flag hint set as both the server and the
    client take care of it during the actual closing.
    
    This is not a proper fix for the unlocking failure but it's safe and
    it seems to prevent the lock leakages and crashes the customer
    experiences.
    
    Signed-off-by: Aurelien Aptel <aaptel@suse.com>
    Signed-off-by: NeilBrown <neil@brown.name>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Acked-by: Pavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dc2b4d4ab0aea9434d3fafef8c59d8f8825e1903
Author: zhangyi (F) <yi.zhang@huawei.com>
Date:   Sat Mar 23 11:56:01 2019 -0400

    ext4: cleanup bh release code in ext4_ind_remove_space()
    
    commit 5e86bdda41534e17621d5a071b294943cae4376e upstream.
    
    Currently, we are releasing the indirect buffer where we are done with
    it in ext4_ind_remove_space(), so we can see the brelse() and
    BUFFER_TRACE() everywhere.  It seems fragile and hard to read, and we
    may probably forget to release the buffer some day.  This patch cleans
    up the code by putting of the code which releases the buffers to the
    end of the function.
    
    Signed-off-by: zhangyi (F) <yi.zhang@huawei.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Cc: Jari Ruusu <jari.ruusu@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
