commit e93d4749118fbb0ae8fc889706daa56d4dafecd4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Apr 5 22:29:15 2019 +0200

    Linux 4.9.168

commit baf50485819036fdea6b2e7d21a46d9214484bfb
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 f139c2558462c04202084c2188bfd81b35b775e3
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 5f99bd3d9f8da3155da2944383e6ffee30b53383
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 875268e21d11af5048644284d1bd8b5a85d90d7f
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 8ede088e9b491fbdcbd7e88767f67afe31ab3d5d
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 992baf532585d39bf1e10c4bec1e8485e45a6836
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 d4dad3431028ff22dd78a35deb9b3ea4254be430
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 865b88b02d9495a5d011c13f0e3c278fe5725cc0
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 471ab0e0975908392f88bb6effa1376339333298
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 b9564974265f13f3c395c0da2dbc9ef11a03e265
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 2ae06da84a63d16efffac07215beb0cf12f0c21a
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 817d556e9bcc0cb9be80914de1015940acacb6c6
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 a0a8b92db7113f413e96dcebb190eb69d46a4422
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 92ca8a23094df7af3f8715c25ab8d61adc22ccad
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 8e6a1b3e979a4070f82e8e8b79e6943773c4c5b6
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 e8a39ce720c7461b87dac253ea51c64c711e6ed2
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 cc76e660a462a5cd0f8d7e6f86b74f833a283617
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 576e941978086ec023f6621c33c2ef013656a4f9
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 0c724ad4f8980cc15f071a51c83f3485ee164b54
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 876c9787244d932048ae5a7545a0ca15d94ba6fc
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 0f11d2ccadc002ca2678f4ba6da69051ce1cf80a
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 e1748047770e88ae5367e7df4367ae7bec0dc97f
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 5142b34fba0768c88ba9895b1f3b7a9aebdb480f
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 02c2935cfe9d3a2dfcb07572630e8359ee698ff7
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 17dc1d957d83fcd8870659a9fdf315d1756ab640
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 ba69abc1aafb4bf3aa0814b89d01ab1a4e20a641
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 21d9c54e221b65ebe696f46d40e39ffb5a0fc45f
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 f04b47a9d14d7f8a745712ac6dd0d223c04f76c7
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 c18638e37de47ff4178ad3556ea5ded103307551
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 b6ff217020cfc2b362744afa7c26aa0ccd4f7403
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 acb5aefd789bd138c5a0616581efe0ccf1087781
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 e940258c4e886022e698815274bccc43dd5cc87b
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 5f0bef75639800d8780fd7147e1aaac0b77bf930
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 4f9395b1e706358eceac6803a1cd87ea98098b46
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 49145924e8049111dc76ac86e2686d415b18dd14
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 9b5a341e6ebfdb3fecadb78e11e6560d4afc392b
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 1de344caee73ec863de5e9ead6665aea83857def
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 9c24366f05459c566c7915068d8834b94418a883
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 bca74850eef920fc97a9750521a80623591699d2
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 000b11690e185c956f8d730148782dd792a832f6
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 13b56f0ce0d5edeec9c302a8e9a3c7d5c306a8e8
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 83e5f3f4bbaac0fd13523b21cabf2900bf4bffe4
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 24c6f9fdf8569bc5fec860baa9e6f9a1aee31dbf
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 97ac96eec621e861bdc5233db3ed2dcf1ba1a408
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 f5acae344ad3a81f276f74ba6e2f7691e9ce6e0d
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 208285a9c354edccc80e95f426257ced19895059
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 646bca6a6d7243069db16eb77ce82e9ddcdc4a86
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 25e68aed099131c4d56411524ea2c48b924128df
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 e07e9b10d6658e4cbff0fe1c88c04291edcca17d
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 650c8ec81f458472eda16883acd5dbf37c5049dc
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 c14cf48a1b7dc087b038028b2fe00f5117164b6c
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 fa5a4becdd37c9061ee5260d0aed68d42335ac53
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 fef12d0156f107796c0096f367d821eb71f70341
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 437e565fac8f2f9771a5d96a9415b2ef3d3ed02e
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 afa87392f569d83798223fc291beaf4c1881784a
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 43e01fefac9d571cad781e3ae164dbcc28a146ab
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 db3ef3e54b55baac04d9e045a85d2652eec8e7ea
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 7b0dfe4a8f5174e1b6677ecd700aacbfa43bf99a
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 e45d08f0da03ebcb93e532af99f4956abc34ee72
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 fd3f750427702f30293d662dc7a3dc985571b032
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 a6958075ea4d8a8b1448880c83b98a2631aff5f3
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 ae0c4d3260115db7ebd31c0fa1f75fbf1ad64c08
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 26241152d9a578445288e525f7cda1653174f946
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 a05d994409db22778afe9a763ebdd87efe8ab8fe
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 9d5a48f12e4848b1f855a2046797ba214ade92c7
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 83d6849eb1188b69cc5325a0f8f033f3a595c950
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 d617c20ae86b5f58ca44aac76dfaf871fc7cdcd5
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 7368f9244c9de2b63d3a37e22f790a572c20e43a
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 af17a240e0daef80df9cf2cec95887c44ecedb99
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 aed38040c290d38c11c24f7daf07cd0e8908750f
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 206b87d7a353cafebe6631ee51b6ae99c8026224
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 e6bd3ed65d8cf993dbe5d03c05b03adc72627984
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 7880fc29948bfc58d1af8a862d5148e8b259990e
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 dcd85a719b63b8f79a3d512e9b6dfefe47a281f3
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 76159ea0910d1ed5ca418c4a79b62d9b89a63ed0
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 b2783916bc2e56bc0b2cd60a69753380fe10ed8e
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 6b65c268df798c5c3533ff2e4962533d020a37d9
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 553be48d7459b569a83e676daaa6ba69f32cf288
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 8b1e0dd613cad7597f5d4bdba9e7c44957dbdf8a
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 3085d41e89f0a268842e3a66b8436faed79d504f
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 0140f0d1886155f4651245d4030e2c546740f07d
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 56300d3b79f26155d59cb9e0baeaa274e5e24082
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 2555029ac9d474d3dc1b66ff48b1c773e8446af5
Author: Jeremy Compostella <jeremy.compostella@intel.com>
Date:   Wed Nov 15 12:31:44 2017 -0700

    i2c: core-smbus: prevent stack corruption on read I2C_BLOCK_DATA
    
    commit 89c6efa61f5709327ecfa24bff18e57a4e80c7fa upstream.
    
    On a I2C_SMBUS_I2C_BLOCK_DATA read request, if data->block[0] is
    greater than I2C_SMBUS_BLOCK_MAX + 1, the underlying I2C driver writes
    data out of the msgbuf1 array boundary.
    
    It is possible from a user application to run into that issue by
    calling the I2C_SMBUS ioctl with data.block[0] greater than
    I2C_SMBUS_BLOCK_MAX + 1.
    
    This patch makes the code compliant with
    Documentation/i2c/dev-interface by raising an error when the requested
    size is larger than 32 bytes.
    
    Call Trace:
     [<ffffffff8139f695>] dump_stack+0x67/0x92
     [<ffffffff811802a4>] panic+0xc5/0x1eb
     [<ffffffff810ecb5f>] ? vprintk_default+0x1f/0x30
     [<ffffffff817456d3>] ? i2cdev_ioctl_smbus+0x303/0x320
     [<ffffffff8109a68b>] __stack_chk_fail+0x1b/0x20
     [<ffffffff817456d3>] i2cdev_ioctl_smbus+0x303/0x320
     [<ffffffff81745aed>] i2cdev_ioctl+0x4d/0x1e0
     [<ffffffff811f761a>] do_vfs_ioctl+0x2ba/0x490
     [<ffffffff81336e43>] ? security_file_ioctl+0x43/0x60
     [<ffffffff811f7869>] SyS_ioctl+0x79/0x90
     [<ffffffff81a22e97>] entry_SYSCALL_64_fastpath+0x12/0x6a
    
    Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Cc: stable@kernel.org
    [connoro@google.com: 4.9 backport: adjust filename]
    Signed-off-by: Connor O'Brien <connoro@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d59794af892d2987fb4283ef0605417c6547bff6
Author: Yang Shi <yang.shi@linux.alibaba.com>
Date:   Thu Mar 28 20:43:55 2019 -0700

    mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified
    
    commit a7f40cfe3b7ada57af9b62fd28430eeb4a7cfcb7 upstream.
    
    When MPOL_MF_STRICT was specified and an existing page was already on a
    node that does not follow the policy, mbind() should return -EIO.  But
    commit 6f4576e3687b ("mempolicy: apply page table walker on
    queue_pages_range()") broke the rule.
    
    And commit c8633798497c ("mm: mempolicy: mbind and migrate_pages support
    thp migration") didn't return the correct value for THP mbind() too.
    
    If MPOL_MF_STRICT is set, ignore vma_migratable() to make sure it
    reaches queue_pages_to_pte_range() or queue_pages_pmd() to check if an
    existing page was already on a node that does not follow the policy.
    And, non-migratable vma may be used, return -EIO too if MPOL_MF_MOVE or
    MPOL_MF_MOVE_ALL was specified.
    
    Tested with https://github.com/metan-ucw/ltp/blob/master/testcases/kernel/syscalls/mbind/mbind02.c
    
    [akpm@linux-foundation.org: tweak code comment]
    Link: http://lkml.kernel.org/r/1553020556-38583-1-git-send-email-yang.shi@linux.alibaba.com
    Fixes: 6f4576e3687b ("mempolicy: apply page table walker on queue_pages_range()")
    Signed-off-by: Yang Shi <yang.shi@linux.alibaba.com>
    Signed-off-by: Oscar Salvador <osalvador@suse.de>
    Reported-by: Cyril Hrubis <chrubis@suse.cz>
    Suggested-by: Kirill A. Shutemov <kirill@shutemov.name>
    Acked-by: Rafael Aquini <aquini@redhat.com>
    Reviewed-by: Oscar Salvador <osalvador@suse.de>
    Acked-by: David Rientjes <rientjes@google.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0668f0d6874088e7fca49c60703e1aa732616d4e
Author: Razvan Stefanescu <razvan.stefanescu@microchip.com>
Date:   Tue Mar 19 15:20:35 2019 +0200

    tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped
    
    commit 69646d7a3689fbe1a65ae90397d22ac3f1b8d40f upstream.
    
    In half-duplex operation, RX should be started after TX completes.
    
    If DMA is used, there is a case when the DMA transfer completes but the
    TX FIFO is not emptied, so the RX cannot be restarted just yet.
    
    Use a boolean variable to store this state and rearm TX interrupt mask
    to be signaled again that the transfer finished. In interrupt transmit
    handler this variable is used to start RX. A warning message is generated
    if RX is activated before TX fifo is cleared.
    
    Fixes: b389f173aaa1 ("tty/serial: atmel: RS485 half duplex w/DMA: enable
    RX after TX is done")
    Signed-off-by: Razvan Stefanescu <razvan.stefanescu@microchip.com>
    Acked-by: Richard Genoud <richard.genoud@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ab18aa0d0c6d07438a098b3d5d285ec4cf4869b8
Author: Razvan Stefanescu <razvan.stefanescu@microchip.com>
Date:   Tue Mar 19 15:20:34 2019 +0200

    tty/serial: atmel: Add is_half_duplex helper
    
    commit f3040983132bf3477acd45d2452a906e67c2fec9 upstream.
    
    Use a helper function to check that a port needs to use half duplex
    communication, replacing several occurrences of multi-line bit checking.
    
    Fixes: b389f173aaa1 ("tty/serial: atmel: RS485 half duplex w/DMA: enable RX after TX is done")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Razvan Stefanescu <razvan.stefanescu@microchip.com>
    Acked-by: Richard Genoud <richard.genoud@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 627f9c3af3845789a31cab587b49037c62255093
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Fri Nov 17 15:28:08 2017 -0800

    lib/int_sqrt: optimize initial value compute
    
    commit f8ae107eef209bff29a5816bc1aad40d5cd69a80 upstream.
    
    The initial value (@m) compute is:
    
            m = 1UL << (BITS_PER_LONG - 2);
            while (m > x)
                    m >>= 2;
    
    Which is a linear search for the highest even bit smaller or equal to @x
    We can implement this using a binary search using __fls() (or better when
    its hardware implemented).
    
            m = 1UL << (__fls(x) & ~1UL);
    
    Especially for small values of @x; which are the more common arguments
    when doing a CDF on idle times; the linear search is near to worst case,
    while the binary search of __fls() is a constant 6 (or 5 on 32bit)
    branches.
    
          cycles:                 branches:              branch-misses:
    
    PRE:
    
    hot:   43.633557 +- 0.034373  45.333132 +- 0.002277  0.023529 +- 0.000681
    cold: 207.438411 +- 0.125840  45.333132 +- 0.002277  6.976486 +- 0.004219
    
    SOFTWARE FLS:
    
    hot:   29.576176 +- 0.028850  26.666730 +- 0.004511  0.019463 +- 0.000663
    cold: 165.947136 +- 0.188406  26.666746 +- 0.004511  6.133897 +- 0.004386
    
    HARDWARE FLS:
    
    hot:   24.720922 +- 0.025161  20.666784 +- 0.004509  0.020836 +- 0.000677
    cold: 132.777197 +- 0.127471  20.666776 +- 0.004509  5.080285 +- 0.003874
    
    Averages computed over all values <128k using a LFSR to generate order.
    Cold numbers have a LFSR based branch trace buffer 'confuser' ran between
    each int_sqrt() invocation.
    
    Link: http://lkml.kernel.org/r/20171020164644.936577234@infradead.org
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Suggested-by: Joe Perches <joe@perches.com>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Acked-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Anshul Garg <aksgarg1989@gmail.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: David Miller <davem@davemloft.net>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Matthew Wilcox <mawilcox@microsoft.com>
    Cc: Michael Davidson <md@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>
    Cc: Joe Perches <joe@perches.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32c5630a89f787f74bef747ee7e580db5cf41260
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>

commit 1d7f481de6d016bfa4c2a57880ad06bc788476ee
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Mar 1 13:28:01 2019 +0000

    arm64: debug: Ensure debug handlers check triggering exception level
    
    commit 6bd288569b50bc89fa5513031086746968f585cb upstream.
    
    Debug exception handlers may be called for exceptions generated both by
    user and kernel code. In many cases, this is checked explicitly, but
    in other cases things either happen to work by happy accident or they
    go slightly wrong. For example, executing 'brk #4' from userspace will
    enter the kprobes code and be ignored, but the instruction will be
    retried forever in userspace instead of delivering a SIGTRAP.
    
    Fix this issue in the most stable-friendly fashion by simply adding
    explicit checks of the triggering exception level to all of our debug
    exception handlers.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc785dc69da25011f99f87e0fcaad657e959b657
Author: Will Deacon <will.deacon@arm.com>
Date:   Fri Mar 1 13:28:00 2019 +0000

    arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals
    
    commit b9a4b9d084d978f80eb9210727c81804588b42ff upstream.
    
    FAR_EL1 is UNKNOWN for all debug exceptions other than those caused by
    taking a hardware watchpoint. Unfortunately, if a debug handler returns
    a non-zero value, then we will propagate the UNKNOWN FAR value to
    userspace via the si_addr field of the SIGTRAP siginfo_t.
    
    Instead, let's set si_addr to take on the PC of the faulting instruction,
    which we have available in the current pt_regs.
    
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>