commit a1a43d6522bc1da70f210d46485fac7a71c13ca8
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Apr 3 06:22:15 2019 +0200

    Linux 3.18.138

commit 33807cfab9fd1cec38a3648ad2400ba36034b25a
Author: Eric Biggers <ebiggers@google.com>
Date:   Wed Mar 8 16:27:04 2017 -0800

    arm64: support keyctl() system call in 32-bit mode
    
    [ Upstream commit 5c2a625937ba49bc691089370638223d310cda9a ]
    
    As is the case for a number of other architectures that have a 32-bit
    compat mode, enable KEYS_COMPAT if both COMPAT and KEYS are enabled.
    This allows AArch32 programs to use the keyctl() system call when
    running on an AArch64 kernel.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ecc5b776ffd0f7a58525521d0895a688a99f4bbc
Author: Kohji Okuno <okuno.kohji@jp.panasonic.com>
Date:   Tue Feb 26 11:34:13 2019 +0900

    ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time
    
    commit 91740fc8242b4f260cfa4d4536d8551804777fae upstream.
    
    In the current cpuidle implementation for i.MX6q, the CPU that sets
    'WAIT_UNCLOCKED' and the CPU that returns to 'WAIT_CLOCKED' are always
    the same. While the CPU that sets 'WAIT_UNCLOCKED' is in IDLE state of
    "WAIT", if the other CPU wakes up and enters IDLE state of "WFI"
    istead of "WAIT", this CPU can not wake up at expired time.
     Because, in the case of "WFI", the CPU must be waked up by the local
    timer interrupt. But, while 'WAIT_UNCLOCKED' is set, the local timer
    is stopped, when all CPUs execute "wfi" instruction. As a result, the
    local timer interrupt is not fired.
     In this situation, this CPU will wake up by IRQ different from local
    timer. (e.g. broacast timer)
    
    So, this fix changes CPU to return to 'WAIT_CLOCKED'.
    
    Signed-off-by: Kohji Okuno <okuno.kohji@jp.panasonic.com>
    Fixes: e5f9dec8ff5f ("ARM: imx6q: support WAIT mode using cpuidle")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Kohji Okuno <okuno.kohji@jp.panasonic.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e9e474e6448ea96fce5188f4dc816233c4e93e5
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Mar 22 17:50:15 2019 +0200

    xhci: Fix port resume done detection for SS ports with LPM enabled
    
    commit 6cbcf596934c8e16d6288c7cc62dfb7ad8eadf15 upstream.
    
    A suspended SS port in U3 link state will go to U0 when resumed, but
    can almost immediately after that enter U1 or U2 link power save
    states before host controller driver reads the port status.
    
    Host controller driver only checks for U0 state, and might miss
    the finished resume, leaving flags unclear and skip notifying usb
    code of the wake.
    
    Add U1 and U2 to the possible link states when checking for finished
    port resume.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ffc2152394fbdcea118c88eb3ddeed643f120100
Author: Sean Christopherson <sean.j.christopherson@intel.com>
Date:   Fri Feb 15 12:48:39 2019 -0800

    KVM: Reject device ioctls from processes other than the VM's creator
    
    commit ddba91801aeb5c160b660caed1800eb3aef403f8 upstream.
    
    KVM's API requires thats ioctls must be issued from the same process
    that created the VM.  In other words, userspace can play games with a
    VM's file descriptors, e.g. fork(), SCM_RIGHTS, etc..., but only the
    creator can do anything useful.  Explicitly reject device ioctls that
    are issued by a process other than the VM's creator, and update KVM's
    API documentation to extend its requirements to device ioctls.
    
    Fixes: 852b6d57dc7f ("kvm: add device control API")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 17874c300308cc3b0a51314636b374efb55ec791
Author: Axel Lin <axel.lin@ingics.com>
Date:   Mon Mar 11 21:29:37 2019 +0800

    gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input
    
    commit c5bc6e526d3f217ed2cc3681d256dc4a2af4cc2b upstream.
    
    Current code test wrong value so it does not verify if the written
    data is correctly read back. Fix it.
    Also make it return -EPERM if read value does not match written bit,
    just like it done for adnp_gpio_direction_output().
    
    Fixes: 5e969a401a01 ("gpio: Add Avionic Design N-bit GPIO expander support")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Reviewed-by: Thierry Reding <thierry.reding@gmail.com>
    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit beb70e5c511ca99454c20334c56499fd413c1d6d
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Mar 28 20:44:40 2019 -0700

    fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links
    
    commit 23da9588037ecdd4901db76a5b79a42b529c4ec3 upstream.
    
    Syzkaller reports:
    
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] SMP KASAN PTI
    CPU: 1 PID: 5373 Comm: syz-executor.0 Not tainted 5.0.0-rc8+ #3
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    RIP: 0010:put_links+0x101/0x440 fs/proc/proc_sysctl.c:1599
    Code: 00 0f 85 3a 03 00 00 48 8b 43 38 48 89 44 24 20 48 83 c0 38 48 89 c2 48 89 44 24 28 48 b8 00 00 00 00 00 fc ff df 48 c1 ea 03 <80> 3c 02 00 0f 85 fe 02 00 00 48 8b 74 24 20 48 c7 c7 60 2a 9d 91
    RSP: 0018:ffff8881d828f238 EFLAGS: 00010202
    RAX: dffffc0000000000 RBX: ffff8881e01b1140 RCX: ffffffff8ee98267
    RDX: 0000000000000007 RSI: ffffc90001479000 RDI: ffff8881e01b1178
    RBP: dffffc0000000000 R08: ffffed103ee27259 R09: ffffed103ee27259
    R10: 0000000000000001 R11: ffffed103ee27258 R12: fffffffffffffff4
    R13: 0000000000000006 R14: ffff8881f59838c0 R15: dffffc0000000000
    FS:  00007f072254f700(0000) GS:ffff8881f7100000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fff8b286668 CR3: 00000001f0542002 CR4: 00000000007606e0
    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    PKRU: 55555554
    Call Trace:
     drop_sysctl_table+0x152/0x9f0 fs/proc/proc_sysctl.c:1629
     get_subdir fs/proc/proc_sysctl.c:1022 [inline]
     __register_sysctl_table+0xd65/0x1090 fs/proc/proc_sysctl.c:1335
     br_netfilter_init+0xbc/0x1000 [br_netfilter]
     do_one_initcall+0xfa/0x5ca init/main.c:887
     do_init_module+0x204/0x5f6 kernel/module.c:3460
     load_module+0x66b2/0x8570 kernel/module.c:3808
     __do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
     do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x462e99
    Code: f7 d8 64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48
    RSP: 002b:00007f072254ec58 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 000000000073bf00 RCX: 0000000000462e99
    RDX: 0000000000000000 RSI: 0000000020000280 RDI: 0000000000000003
    RBP: 00007f072254ec70 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f072254f6bc
    R13: 00000000004bcefa R14: 00000000006f6fb0 R15: 0000000000000004
    Modules linked in: br_netfilter(+) dvb_usb_dibusb_mc_common dib3000mc dibx000_common dvb_usb_dibusb_common dvb_usb_dw2102 dvb_usb classmate_laptop palmas_regulator cn videobuf2_v4l2 v4l2_common snd_soc_bd28623 mptbase snd_usb_usx2y snd_usbmidi_lib snd_rawmidi wmi libnvdimm lockd sunrpc grace rc_kworld_pc150u rc_core rtc_da9063 sha1_ssse3 i2c_cros_ec_tunnel adxl34x_spi adxl34x nfnetlink lib80211 i5500_temp dvb_as102 dvb_core videobuf2_common videodev media videobuf2_vmalloc videobuf2_memops udc_core lnbp22 leds_lp3952 hid_roccat_ryos s1d13xxxfb mtd vport_geneve openvswitch nf_conncount nf_nat_ipv6 nsh geneve udp_tunnel ip6_udp_tunnel snd_soc_mt6351 sis_agp phylink snd_soc_adau1761_spi snd_soc_adau1761 snd_soc_adau17x1 snd_soc_core snd_pcm_dmaengine ac97_bus snd_compress snd_soc_adau_utils snd_soc_sigmadsp_regmap snd_soc_sigmadsp raid_class hid_roccat_konepure hid_roccat_common hid_roccat c2port_duramar2150 core mdio_bcm_unimac iptable_security iptable_raw iptable_mangle
     iptable_nat nf_nat_ipv4 nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 iptable_filter bpfilter ip6_vti ip_vti ip_gre ipip sit tunnel4 ip_tunnel hsr veth netdevsim devlink vxcan batman_adv cfg80211 rfkill chnl_net caif nlmon dummy team bonding vcan bridge stp llc ip6_gre gre ip6_tunnel tunnel6 tun crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel joydev mousedev ide_pci_generic piix aesni_intel aes_x86_64 ide_core crypto_simd atkbd cryptd glue_helper serio_raw ata_generic pata_acpi i2c_piix4 floppy sch_fq_codel ip_tables x_tables ipv6 [last unloaded: lm73]
    Dumping ftrace buffer:
       (ftrace buffer empty)
    ---[ end trace 770020de38961fd0 ]---
    
    A new dir entry can be created in get_subdir and its 'header->parent' is
    set to NULL.  Only after insert_header success, it will be set to 'dir',
    otherwise 'header->parent' is set to NULL and drop_sysctl_table is called.
    However in err handling path of get_subdir, drop_sysctl_table also be
    called on 'new->header' regardless its value of parent pointer.  Then
    put_links is called, which triggers NULL-ptr deref when access member of
    header->parent.
    
    In fact we have multiple error paths which call drop_sysctl_table() there,
    upon failure on insert_links() we also call drop_sysctl_table().And even
    in the successful case on __register_sysctl_table() we still always call
    drop_sysctl_table().This patch fix it.
    
    Link: http://lkml.kernel.org/r/20190314085527.13244-1-yuehaibing@huawei.com
    Fixes: 0e47c99d7fe25 ("sysctl: Replace root_list with links between sysctl_table_sets")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Acked-by: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Eric W. Biederman <ebiederm@xmission.com>
    Cc: <stable@vger.kernel.org>    [3.4+]
    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 69c9fdb685b70bab53a36752de9277f8e78d7d60
Author: Wentao Wang <witallwang@gmail.com>
Date:   Wed Mar 20 15:30:39 2019 +0000

    Disable kgdboc failed by echo space to /sys/module/kgdboc/parameters/kgdboc
    
    commit 3ec8002951ea173e24b466df1ea98c56b7920e63 upstream.
    
    Echo "" to /sys/module/kgdboc/parameters/kgdboc will fail with "No such
    deviceā€ error.
    
    This is caused by function "configure_kgdboc" who init err to ENODEV
    when the config is empty (legal input) the code go out with ENODEV
    returned.
    
    Fixes: 2dd453168643 ("kgdboc: Fix restrict error")
    Signed-off-by: Wentao Wang <witallwang@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 30a07c0446ccd963099ca07cff82398447378026
Author: Lin Yi <teroincn@163.com>
Date:   Wed Mar 20 19:04:56 2019 +0800

    USB: serial: mos7720: fix mos_parport refcount imbalance on error path
    
    commit 2908b076f5198d231de62713cb2b633a3a4b95ac upstream.
    
    The write_parport_reg_nonblock() helper takes a reference to the struct
    mos_parport, but failed to release it in a couple of error paths after
    allocation failures, leading to a memory leak.
    
    Johan said that move the kref_get() and mos_parport assignment to the
    end of urbtrack initialisation is a better way, so move it. and
    mos_parport do not used until urbtrack initialisation.
    
    Signed-off-by: Lin Yi <teroincn@163.com>
    Fixes: b69578df7e98 ("USB: usbserial: mos7720: add support for parallel port on moschip 7715")
    Cc: stable <stable@vger.kernel.org>     # 2.6.35
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 96c80c460995ba2b9d19a9ae87faf42c2081a156
Author: George McCollister <george.mccollister@gmail.com>
Date:   Tue Mar 5 16:05:03 2019 -0600

    USB: serial: ftdi_sio: add additional NovaTech products
    
    commit 422c2537ba9d42320f8ab6573940269f87095320 upstream.
    
    Add PIDs for the NovaTech OrionLX+ and Orion I/O so they can be
    automatically detected.
    
    Signed-off-by: George McCollister <george.mccollister@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62008c0dc3f743b613ed063fa4fc0ae80c36cbd3
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Mar 27 10:11:14 2019 +0900

    USB: serial: cp210x: add new device id
    
    commit a595ecdd5f60b2d93863cebb07eec7f935839b54 upstream.
    
    Lorenz Messtechnik has a device that is controlled by the cp210x driver,
    so add the device id to the driver.  The device id was provided by
    Silicon-Labs for the devices from this vendor.
    
    Reported-by: Uli <t9cpu@web.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdae8c6fc96efd376c5c7c1bfcf47a664d13f009
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Mon Mar 18 18:44:14 2019 -0500

    serial: max310x: Fix to avoid potential NULL pointer dereference
    
    commit 3a10e3dd52e80b9a97a3346020024d17b2c272d6 upstream.
    
    of_match_device can return a NULL pointer when matching device is not
    found. This patch avoids a scenario causing NULL pointer derefernce.
    
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9f2c212788923b73f03932d0261a73812e783f8d
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Tue Mar 26 14:36:59 2019 +0100

    scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP devices
    
    commit 242ec1455151267fe35a0834aa9038e4c4670884 upstream.
    
    Suppose more than one non-NPIV FCP device is active on the same channel.
    Send I/O to storage and have some of the pending I/O run into a SCSI
    command timeout, e.g. due to bit errors on the fibre. Now the error
    situation stops. However, we saw FCP requests continue to timeout in the
    channel. The abort will be successful, but the subsequent TUR fails.
    Scsi_eh starts. The LUN reset fails. The target reset fails.  The host
    reset only did an FCP device recovery. However, for non-NPIV FCP devices,
    this does not close and reopen ports on the SAN-side if other non-NPIV FCP
    device(s) share the same open ports.
    
    In order to resolve the continuing FCP request timeouts, we need to
    explicitly close and reopen ports on the SAN-side.
    
    This was missing since the beginning of zfcp in v2.6.0 history commit
    ea127f975424 ("[PATCH] s390 (7/7): zfcp host adapter.").
    
    Note: The FSF requests for forced port reopen could run into FSF request
    timeouts due to other reasons. This would trigger an internal FCP device
    recovery. Pending forced port reopen recoveries would get dismissed. So
    some ports might not get fully reopened during this host reset handler.
    However, subsequent I/O would trigger the above described escalation and
    eventually all ports would be forced reopen to resolve any continuing FCP
    request timeouts due to earlier bit errors.
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: <stable@vger.kernel.org> #3.0+
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a5259dd0eef407ec9e6e29295401af09a83cbd5
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Mar 25 10:38:58 2019 +0100

    ALSA: pcm: Don't suspend stream in unrecoverable PCM state
    
    commit 113ce08109f8e3b091399e7cc32486df1cff48e7 upstream.
    
    Currently PCM core sets each opened stream forcibly to SUSPENDED state
    via snd_pcm_suspend_all() call, and the user-space is responsible for
    re-triggering the resume manually either via snd_pcm_resume() or
    prepare call.  The scheme works fine usually, but there are corner
    cases where the stream can't be resumed by that call: the streams
    still in OPEN state before finishing hw_params.  When they are
    suspended, user-space cannot perform resume or prepare because they
    haven't been set up yet.  The only possible recovery is to re-open the
    device, which isn't nice at all.  Similarly, when a stream is in
    DISCONNECTED state, it makes no sense to change it to SUSPENDED
    state.  Ditto for in SETUP state; which you can re-prepare directly.
    
    So, this patch addresses these issues by filtering the PCM streams to
    be suspended by checking the PCM state.  When a stream is in either
    OPEN, SETUP or DISCONNECTED as well as already SUSPENDED, the suspend
    action is skipped.
    
    To be noted, this problem was originally reported for the PCM runtime
    PM on HD-audio.  And, the runtime PM problem itself was already
    addressed (although not intended) by the code refactoring commits
    3d21ef0b49f8 ("ALSA: pcm: Suspend streams globally via device type PM
    ops") and 17bc4815de58 ("ALSA: pci: Remove superfluous
    snd_pcm_suspend*() calls").  These commits eliminated the
    snd_pcm_suspend*() calls from the runtime PM suspend callback code
    path, hence the racy OPEN state won't appear while runtime PM.
    (FWIW, the race window is between snd_pcm_open_substream() and the
    first power up in azx_pcm_open().)
    
    Although the runtime PM issue was already "fixed", the same problem is
    still present for the system PM, hence this patch is still needed.
    And for stable trees, this patch alone should suffice for fixing the
    runtime PM problem, too.
    
    Reported-and-tested-by: Jon Hunter <jonathanh@nvidia.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59c86007ad495333c6b58282bfd3cc4a414ca771
Author: Takashi Iwai <tiwai@suse.de>
Date:   Fri Mar 22 16:00:54 2019 +0100

    ALSA: pcm: Fix possible OOB access in PCM oss plugins
    
    commit ca0214ee2802dd47239a4e39fb21c5b00ef61b22 upstream.
    
    The PCM OSS emulation converts and transfers the data on the fly via
    "plugins".  The data is converted over the dynamically allocated
    buffer for each plugin, and recently syzkaller caught OOB in this
    flow.
    
    Although the bisection by syzbot pointed out to the commit
    65766ee0bf7f ("ALSA: oss: Use kvzalloc() for local buffer
    allocations"), this is merely a commit to replace vmalloc() with
    kvmalloc(), hence it can't be the cause.  The further debug action
    revealed that this happens in the case where a slave PCM doesn't
    support only the stereo channels while the OSS stream is set up for a
    mono channel.  Below is a brief explanation:
    
    At each OSS parameter change, the driver sets up the PCM hw_params
    again in snd_pcm_oss_change_params_lock().  This is also the place
    where plugins are created and local buffers are allocated.  The
    problem is that the plugins are created before the final hw_params is
    determined.  Namely, two snd_pcm_hw_param_near() calls for setting the
    period size and periods may influence on the final result of channels,
    rates, etc, too, while the current code has already created plugins
    beforehand with the premature values.  So, the plugin believes that
    channels=1, while the actual I/O is with channels=2, which makes the
    driver reading/writing over the allocated buffer size.
    
    The fix is simply to move the plugin allocation code after the final
    hw_params call.
    
    Reported-by: syzbot+d4503ae45b65c5bc1194@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1801ffbc7de8bc5627eb1395a130ab769244a515
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Sat Mar 16 14:21:19 2019 +1100

    mac8390: Fix mmio access size probe
    
    [ Upstream commit bb9e5c5bcd76f4474eac3baf643d7a39f7bac7bb ]
    
    The bug that Stan reported is as follows. After a restart, a 16-bit NIC
    may be incorrectly identified as a 32-bit NIC and stop working.
    
    mac8390 slot.E: Memory length resource not found, probing
    mac8390 slot.E: Farallon EtherMac II-C (type farallon)
    mac8390 slot.E: MAC 00:00:c5:30:c2:99, IRQ 61, 32 KB shared memory at 0xfeed0000, 32-bit access.
    
    The bug never arises after a cold start and only intermittently after a
    warm start. (I didn't investigate why the bug is intermittent.)
    
    It turns out that memcpy_toio() is deprecated and memcmp_withio() also
    has issues. Replacing these calls with mmio accessors fixes the problem.
    
    Reported-and-tested-by: Stan Johnson <userm57@yahoo.com>
    Fixes: 2964db0f5904 ("m68k: Mac DP8390 update")
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8567f315cdb59609e377d6356efce9dcd9931fb0
Author: Xin Long <lucien.xin@gmail.com>
Date:   Mon Mar 18 19:47:00 2019 +0800

    sctp: get sctphdr by offset in sctp_compute_cksum
    
    [ Upstream commit 273160ffc6b993c7c91627f5a84799c66dfe4dee ]
    
    sctp_hdr(skb) only works when skb->transport_header is set properly.
    
    But in Netfilter, skb->transport_header for ipv6 is not guaranteed
    to be right value for sctphdr. It would cause to fail to check the
    checksum for sctp packets.
    
    So fix it by using offset, which is always right in all places.
    
    v1->v2:
      - Fix the changelog.
    
    Fixes: e6d8b64b34aa ("net: sctp: fix and consolidate SCTP checksumming code")
    Reported-by: Li Shuang <shuali@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69dfb9c8d69d243d202211d03b5665d77ff9e885
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Mar 19 05:45:35 2019 -0700

    tcp: do not use ipv6 header for ipv4 flow
    
    [ Upstream commit 89e4130939a20304f4059ab72179da81f5347528 ]
    
    When a dual stack tcp listener accepts an ipv4 flow,
    it should not attempt to use an ipv6 header or tcp_v6_iif() helper.
    
    Fixes: 1397ed35f22d ("ipv6: add flowinfo for tcp6 pkt_options for all cases")
    Fixes: df3687ffc665 ("ipv6: add the IPV6_FL_F_REFLECT flag to IPV6_FL_A_GET")
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62d2192b9663c054e38c0d8606b0bbdaf64026b1
Author: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date:   Sat Mar 16 14:41:30 2019 +0100

    packets: Always register packet sk in the same order
    
    [ Upstream commit a4dc6a49156b1f8d6e17251ffda17c9e6a5db78a ]
    
    When using fanouts with AF_PACKET, the demux functions such as
    fanout_demux_cpu will return an index in the fanout socket array, which
    corresponds to the selected socket.
    
    The ordering of this array depends on the order the sockets were added
    to a given fanout group, so for FANOUT_CPU this means sockets are bound
    to cpus in the order they are configured, which is OK.
    
    However, when stopping then restarting the interface these sockets are
    bound to, the sockets are reassigned to the fanout group in the reverse
    order, due to the fact that they were inserted at the head of the
    interface's AF_PACKET socket list.
    
    This means that traffic that was directed to the first socket in the
    fanout group is now directed to the last one after an interface restart.
    
    In the case of FANOUT_CPU, traffic from CPU0 will be directed to the
    socket that used to receive traffic from the last CPU after an interface
    restart.
    
    This commit introduces a helper to add a socket at the tail of a list,
    then uses it to register AF_PACKET sockets.
    
    Note that this changes the order in which sockets are listed in /proc and
    with sock_diag.
    
    Fixes: dc99f600698d ("packet: Add fanout support")
    Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
    Acked-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3bfc4e0ecb9c19a7291156f83ead371d50f63b81
Author: David S. Miller <davem@davemloft.net>
Date:   Sat Apr 23 18:26:24 2016 -0400

    Add hlist_add_tail_rcu() (Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net)
    
    commit 1602f49b58abcb0d34a5f0a29d68e7c1769547aa upstream.
    
    [This commit was a merge, but it added hlist_add_tail_rcu(), which is what we
     need in this stable tree, so I've changed the subject to be more descriptive
     - gregkh]
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2d4d5d7afba5e1e05cd0ad191af47e69af118bcb
Author: Eric Dumazet <edumazet@google.com>
Date:   Fri Mar 15 10:41:14 2019 -0700

    net: rose: fix a possible stack overflow
    
    [ Upstream commit e5dcc0c3223c45c94100f05f28d8ef814db3d82c ]
    
    rose_write_internal() uses a temp buffer of 100 bytes, but a manual
    inspection showed that given arbitrary input, rose_create_facilities()
    can fill up to 110 bytes.
    
    Lets use a tailroom of 256 bytes for peace of mind, and remove
    the bounce buffer : we can simply allocate a big enough skb
    and adjust its length as needed.
    
    syzbot report :
    
    BUG: KASAN: stack-out-of-bounds in memcpy include/linux/string.h:352 [inline]
    BUG: KASAN: stack-out-of-bounds in rose_create_facilities net/rose/rose_subr.c:521 [inline]
    BUG: KASAN: stack-out-of-bounds in rose_write_internal+0x597/0x15d0 net/rose/rose_subr.c:116
    Write of size 7 at addr ffff88808b1ffbef by task syz-executor.0/24854
    
    CPU: 0 PID: 24854 Comm: syz-executor.0 Not tainted 5.0.0+ #97
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0x172/0x1f0 lib/dump_stack.c:113
     print_address_description.cold+0x7c/0x20d mm/kasan/report.c:187
     kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
     check_memory_region_inline mm/kasan/generic.c:185 [inline]
     check_memory_region+0x123/0x190 mm/kasan/generic.c:191
     memcpy+0x38/0x50 mm/kasan/common.c:131
     memcpy include/linux/string.h:352 [inline]
     rose_create_facilities net/rose/rose_subr.c:521 [inline]
     rose_write_internal+0x597/0x15d0 net/rose/rose_subr.c:116
     rose_connect+0x7cb/0x1510 net/rose/af_rose.c:826
     __sys_connect+0x266/0x330 net/socket.c:1685
     __do_sys_connect net/socket.c:1696 [inline]
     __se_sys_connect net/socket.c:1693 [inline]
     __x64_sys_connect+0x73/0xb0 net/socket.c:1693
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x458079
    Code: ad b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f47b8d9dc78 EFLAGS: 00000246 ORIG_RAX: 000000000000002a
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000458079
    RDX: 000000000000001c RSI: 0000000020000040 RDI: 0000000000000004
    RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f47b8d9e6d4
    R13: 00000000004be4a4 R14: 00000000004ceca8 R15: 00000000ffffffff
    
    The buggy address belongs to the page:
    page:ffffea00022c7fc0 count:0 mapcount:0 mapping:0000000000000000 index:0x0
    flags: 0x1fffc0000000000()
    raw: 01fffc0000000000 0000000000000000 ffffffff022c0101 0000000000000000
    raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff88808b1ffa80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
     ffff88808b1ffb00: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 00 00 03
    >ffff88808b1ffb80: f2 f2 00 00 00 00 00 00 00 00 00 00 00 00 04 f3
                                                                 ^
     ffff88808b1ffc00: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00
     ffff88808b1ffc80: 00 00 00 00 00 00 00 f1 f1 f1 f1 f1 f1 01 f2 01
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8887183fcd3bc6832e387b818fb218b35665963e
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Mon Mar 18 23:14:52 2019 -0700

    net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec
    
    [ Upstream commit 398f0132c14754fcd03c1c4f8e7176d001ce8ea1 ]
    
    Since commit fc62814d690c ("net/packet: fix 4gb buffer limit due to overflow check")
    one can now allocate packet ring buffers >= UINT_MAX. However, syzkaller
    found that that triggers a warning:
    
    [   21.100000] WARNING: CPU: 2 PID: 2075 at mm/page_alloc.c:4584 __alloc_pages_nod0
    [   21.101490] Modules linked in:
    [   21.101921] CPU: 2 PID: 2075 Comm: syz-executor.0 Not tainted 5.0.0 #146
    [   21.102784] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.5.1 01/01/2011
    [   21.103887] RIP: 0010:__alloc_pages_nodemask+0x2a0/0x630
    [   21.104640] Code: fe ff ff 65 48 8b 04 25 c0 de 01 00 48 05 90 0f 00 00 41 bd 01 00 00 00 48 89 44 24 48 e9 9c fe 3
    [   21.107121] RSP: 0018:ffff88805e1cf920 EFLAGS: 00010246
    [   21.107819] RAX: 0000000000000000 RBX: ffffffff85a488a0 RCX: 0000000000000000
    [   21.108753] RDX: 0000000000000000 RSI: dffffc0000000000 RDI: 0000000000000000
    [   21.109699] RBP: 1ffff1100bc39f28 R08: ffffed100bcefb67 R09: ffffed100bcefb67
    [   21.110646] R10: 0000000000000001 R11: ffffed100bcefb66 R12: 000000000000000d
    [   21.111623] R13: 0000000000000000 R14: ffff88805e77d888 R15: 000000000000000d
    [   21.112552] FS:  00007f7c7de05700(0000) GS:ffff88806d100000(0000) knlGS:0000000000000000
    [   21.113612] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   21.114405] CR2: 000000000065c000 CR3: 000000005e58e006 CR4: 00000000001606e0
    [   21.115367] Call Trace:
    [   21.115705]  ? __alloc_pages_slowpath+0x21c0/0x21c0
    [   21.116362]  alloc_pages_current+0xac/0x1e0
    [   21.116923]  kmalloc_order+0x18/0x70
    [   21.117393]  kmalloc_order_trace+0x18/0x110
    [   21.117949]  packet_set_ring+0x9d5/0x1770
    [   21.118524]  ? packet_rcv_spkt+0x440/0x440
    [   21.119094]  ? lock_downgrade+0x620/0x620
    [   21.119646]  ? __might_fault+0x177/0x1b0
    [   21.120177]  packet_setsockopt+0x981/0x2940
    [   21.120753]  ? __fget+0x2fb/0x4b0
    [   21.121209]  ? packet_release+0xab0/0xab0
    [   21.121740]  ? sock_has_perm+0x1cd/0x260
    [   21.122297]  ? selinux_secmark_relabel_packet+0xd0/0xd0
    [   21.123013]  ? __fget+0x324/0x4b0
    [   21.123451]  ? selinux_netlbl_socket_setsockopt+0x101/0x320
    [   21.124186]  ? selinux_netlbl_sock_rcv_skb+0x3a0/0x3a0
    [   21.124908]  ? __lock_acquire+0x529/0x3200
    [   21.125453]  ? selinux_socket_setsockopt+0x5d/0x70
    [   21.126075]  ? __sys_setsockopt+0x131/0x210
    [   21.126533]  ? packet_release+0xab0/0xab0
    [   21.127004]  __sys_setsockopt+0x131/0x210
    [   21.127449]  ? kernel_accept+0x2f0/0x2f0
    [   21.127911]  ? ret_from_fork+0x8/0x50
    [   21.128313]  ? do_raw_spin_lock+0x11b/0x280
    [   21.128800]  __x64_sys_setsockopt+0xba/0x150
    [   21.129271]  ? lockdep_hardirqs_on+0x37f/0x560
    [   21.129769]  do_syscall_64+0x9f/0x450
    [   21.130182]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    We should allocate with __GFP_NOWARN to handle this.
    
    Cc: Kal Conley <kal.conley@dectris.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Fixes: fc62814d690c ("net/packet: fix 4gb buffer limit due to overflow check")
    Signed-off-by: Christoph Paasch <cpaasch@apple.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ce7f9851c97d2500b678b949759772c0e7d5ac1
Author: Bjorn Helgaas <bhelgaas@google.com>
Date:   Mon Mar 18 08:51:06 2019 -0500

    mISDN: hfcpci: Test both vendor & device ID for Digium HFC4S
    
    [ Upstream commit fae846e2b7124d4b076ef17791c73addf3b26350 ]
    
    The device ID alone does not uniquely identify a device.  Test both the
    vendor and device ID to make sure we don't mistakenly think some other
    vendor's 0xB410 device is a Digium HFC4S.  Also, instead of the bare hex
    ID, use the same constant (PCI_DEVICE_ID_DIGIUM_HFC4S) used in the device
    ID table.
    
    No functional change intended.
    
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6b703ff23cb94d04050d68591bf79945b6965e90
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Mar 19 05:46:18 2019 -0700

    dccp: do not use ipv6 header for ipv4 flow
    
    [ Upstream commit e0aa67709f89d08c8d8e5bdd9e0b649df61d0090 ]
    
    When a dual stack dccp listener accepts an ipv4 flow,
    it should not attempt to use an ipv6 header or
    inet6_iif() helper.
    
    Fixes: 3df80d9320bc ("[DCCP]: Introduce DCCPv6")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cf2afae3abba7fb14a5ef1adafbf5b4fc671aba5
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Jan 9 11:10:42 2017 +0100

    cfg80211: size various nl80211 messages correctly
    
    [ Upstream commit 4ef8c1c93f848e360754f10eb2e7134c872b6597 ]
    
    Ilan reported that sometimes nl80211 messages weren't working if
    the frames being transported got very large, which was really a
    problem for userspace-to-kernel messages, but prompted me to look
    at the code.
    
    Upon review, I found various places where variable-length data is
    transported in an nl80211 message but the message isn't allocated
    taking that into account. This shouldn't cause any problems since
    the frames aren't really that long, apart in one place where two
    (possibly very long frames) might not fit.
    
    Fix all the places (that I found) that get variable length data
    from the driver and put it into a message to take the length of
    the variable data into account. The 100 there is just a safe
    constant for the remaining message overhead (it's usually around
    50 for most messages.)
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f93063f1575b3534055989ab606714f2bb09771a
Author: Chaotian Jing <chaotian.jing@mediatek.com>
Date:   Thu May 19 16:47:42 2016 +0800

    mmc: mmc: fix switch timeout issue caused by jiffies precision
    
    [ Upstream commit 987aa5f8059613bf85cbb6f64ffbd34f5cb7a9d1 ]
    
    with CONFIG_HZ=100, the precision of jiffies is 10ms, and the
    generic_cmd6_time of some card is also 10ms. then, may be current
    time is only 5ms, but already timed out caused by jiffies precision.
    
    Signed-off-by: Chaotian Jing <chaotian.jing@mediatek.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 08422dc1dd3169b8b0e4ff4abaf165b5a8e9b63c
Author: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Date:   Wed Apr 27 13:55:28 2016 -0300

    arm64: kconfig: drop CONFIG_RTC_LIB dependency
    
    [ Upstream commit 99a507771fa57238dc7ffe674ae06090333d02c9 ]
    
    The rtc-lib dependency is not required, and seems it was just
    copy-pasted from ARM's Kconfig. If platform requires rtc-lib,
    they should select it individually.
    
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 19edccec7408cc1afb603fe1f7ba87433e5731bc
Author: Christoffer Dall <christoffer.dall@linaro.org>
Date:   Tue Jul 3 17:43:09 2018 +0200

    video: fbdev: Set pixclock = 0 in goldfishfb
    
    [ Upstream commit ace6033ec5c356615eaa3582fb1946e9eaff6662 ]
    
    User space Android code identifies pixclock == 0 as a sign for emulation
    and will set the frame rate to 60 fps when reading this value, which is
    the desired outcome.
    
    Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
    Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
    Signed-off-by: Roman Kiryanov <rkir@google.com>
    Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bf925b4fe5f9fac59d8e75ef8b029ac1ec1069c3
Author: Winter Wang <wente.wang@nxp.com>
Date:   Wed Jul 27 10:03:19 2016 +0800

    usb: gadget: configfs: add mutex lock before unregister gadget
    
    [ Upstream commit cee51c33f52ebf673a088a428ac0fecc33ab77fa ]
    
    There may be a race condition if f_fs calls unregister_gadget_item in
    ffs_closed() when unregister_gadget is called by UDC store at the same time.
    this leads to a kernel NULL pointer dereference:
    
    [  310.644928] Unable to handle kernel NULL pointer dereference at virtual address 00000004
    [  310.645053] init: Service 'adbd' is being killed...
    [  310.658938] pgd = c9528000
    [  310.662515] [00000004] *pgd=19451831, *pte=00000000, *ppte=00000000
    [  310.669702] Internal error: Oops: 817 [#1] PREEMPT SMP ARM
    [  310.675211] Modules linked in:
    [  310.678294] CPU: 0 PID: 1537 Comm: ->transport Not tainted 4.1.15-03725-g793404c #2
    [  310.685958] Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
    [  310.692493] task: c8e24200 ti: c945e000 task.ti: c945e000
    [  310.697911] PC is at usb_gadget_unregister_driver+0xb4/0xd0
    [  310.703502] LR is at __mutex_lock_slowpath+0x10c/0x16c
    [  310.708648] pc : [<c075efc0>]    lr : [<c0bfb0bc>]    psr: 600f0113
    <snip..>
    [  311.565585] [<c075efc0>] (usb_gadget_unregister_driver) from [<c075e2b8>] (unregister_gadget_item+0x1c/0x34)
    [  311.575426] [<c075e2b8>] (unregister_gadget_item) from [<c076fcc8>] (ffs_closed+0x8c/0x9c)
    [  311.583702] [<c076fcc8>] (ffs_closed) from [<c07736b8>] (ffs_data_reset+0xc/0xa0)
    [  311.591194] [<c07736b8>] (ffs_data_reset) from [<c07738ac>] (ffs_data_closed+0x90/0xd0)
    [  311.599208] [<c07738ac>] (ffs_data_closed) from [<c07738f8>] (ffs_ep0_release+0xc/0x14)
    [  311.607224] [<c07738f8>] (ffs_ep0_release) from [<c023e030>] (__fput+0x80/0x1d0)
    [  311.614635] [<c023e030>] (__fput) from [<c014e688>] (task_work_run+0xb0/0xe8)
    [  311.621788] [<c014e688>] (task_work_run) from [<c010afdc>] (do_work_pending+0x7c/0xa4)
    [  311.629718] [<c010afdc>] (do_work_pending) from [<c010770c>] (work_pending+0xc/0x20)
    
    for functions using functionFS, i.e. android adbd will close /dev/usb-ffs/adb/ep0
    when usb IO thread fails, but switch adb from on to off also triggers write
    "none" > UDC. These 2 operations both call unregister_gadget, which will lead
    to the panic above.
    
    add a mutex before calling unregister_gadget for api used in f_fs.
    
    Signed-off-by: Winter Wang <wente.wang@nxp.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 91366a76f2eab680e553cfc120e4cb1ba7b7942e
Author: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date:   Sat Jun 11 20:32:06 2016 +0200

    ipv6: fix endianness error in icmpv6_err
    
    [ Upstream commit dcb94b88c09ce82a80e188d49bcffdc83ba215a6 ]
    
    IPv6 ping socket error handler doesn't correctly convert the new 32 bit
    mtu to host endianness before using.
    
    Cc: Lorenzo Colitti <lorenzo@google.com>
    Fixes: 6d0bfe22611602f ("net: ipv6: Add IPv6 support to the ping socket.")
    Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
    Acked-by: Lorenzo Colitti <lorenzo@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b626389381933c03968aeea0a0cf257eeebbd31e
Author: James Morse <james.morse@arm.com>
Date:   Wed Apr 27 17:47:08 2016 +0100

    arm64: kernel: Include _AC definition in page.h
    
    [ Upstream commit 812264550dcba6cdbe84bfac2f27e7d23b5b8733 ]
    
    page.h uses '_AC' in the definition of PAGE_SIZE, but doesn't include
    linux/const.h where this is defined. This produces build warnings when only
    asm/page.h is included by asm code.
    
    Signed-off-by: James Morse <james.morse@arm.com>
    Acked-by: Mark Rutland <mark.rutland@arm.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0c99d0dc291d5f310ad64ceda22ec52006848cd8
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri Mar 18 10:58:09 2016 +0100

    arm64/kernel: fix incorrect EL0 check in inv_entry macro
    
    [ Upstream commit b660950c60a7278f9d8deb7c32a162031207c758 ]
    
    The implementation of macro inv_entry refers to its 'el' argument without
    the required leading backslash, which results in an undefined symbol
    'el' to be passed into the kernel_entry macro rather than the index of
    the exception level as intended.
    
    This undefined symbol strangely enough does not result in build failures,
    although it is visible in vmlinux:
    
         $ nm -n vmlinux |head
                          U el
         0000000000000000 A _kernel_flags_le_hi32
         0000000000000000 A _kernel_offset_le_hi32
         0000000000000000 A _kernel_size_le_hi32
         000000000000000a A _kernel_flags_le_lo32
         .....
    
    However, it does result in incorrect code being generated for invalid
    exceptions taken from EL0, since the argument check in kernel_entry
    assumes EL1 if its argument does not equal '0'.
    
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ea4147e618204318775668fe5016cb3f0fb505c6
Author: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Date:   Mon Feb 1 18:01:29 2016 +0100

    ARM: 8510/1: rework ARM_CPU_SUSPEND dependencies
    
    [ Upstream commit 1b9bdf5c1661873a10e193b8cbb803a87fe5c4a1 ]
    
    The code enabled by the ARM_CPU_SUSPEND config option is used by
    kernel subsystems for purposes that go beyond system suspend so its
    config entry should be augmented to take more default options into
    account and avoid forcing its selection to prevent dependencies
    override.
    
    To achieve this goal, this patch reworks the ARM_CPU_SUSPEND config
    entry and updates its default config value (by adding the BL_SWITCHER
    option to it) and its dependencies (ARCH_SUSPEND_POSSIBLE), so that the
    symbol is still selected by default by the subsystems requiring it and
    at the same time enforcing the dependencies correctly.
    
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Cc: Nicolas Pitre <nico@fluxnic.net>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9ff1fd0c1478842d2a9b029f867b51da80d8cbe
Author: Greg Hackmann <ghackmann@google.com>
Date:   Fri Feb 26 19:00:18 2016 +0000

    staging: goldfish: audio: fix compiliation on arm
    
    [ Upstream commit 4532150762ceb0d6fd765ebcb3ba6966fbb8faab ]
    
    We do actually need slab.h, by luck we get it on other platforms but not
    always on ARM. Include it properly.
    
    Signed-off-by: Greg Hackmann <ghackmann@google.com>
    Signed-off-by: Jin Qian <jinqian@android.com>
    Signed-off-by: Alan <alan@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5b96c46521e2d5faa1f6ecfeb16b3fb5758fb59a
Author: Rajmal Menariya <rajmal.menariya@spreadtrum.com>
Date:   Fri Jan 29 22:07:35 2016 -0800

    staging: ion: Set minimum carveout heap allocation order to PAGE_SHIFT
    
    [ Upstream commit 1328d8efef17d5e16bd6e9cfe59130a833674534 ]
    
    In carveout heap, change minimum allocation order from 12 to
    PAGE_SHIFT. After this change each bit in bitmap (genalloc -
    General purpose special memory pool) represents one page size
    memory.
    
    Cc: sprd-ind-kernel-group@googlegroups.com
    Cc: sanjeev.yadav@spreadtrum.com
    Cc: Colin Cross <ccross@android.com>
    Cc: Android Kernel Team <kernel-team@android.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Sumit Semwal <sumit.semwal@linaro.org>
    Signed-off-by: Rajmal Menariya <rajmal.menariya@spreadtrum.com>
    [jstultz: Reworked commit message]
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Acked-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 113e4806435d97621817b98faf56972dd7f037db
Author: Rom Lemarchand <romlem@android.com>
Date:   Fri Jan 29 22:07:31 2016 -0800

    staging: ashmem: Add missing include
    
    [ Upstream commit 90a2f171383b5ae43b33ab4d9d566b9765622ac7 ]
    
    Include <linux/types.h> into ashmem.h to ensure referenced types
    are defined
    
    Cc: Android Kernel Team <kernel-team@android.com>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Signed-off-by: Rom Lemarchand <romlem@android.com>
    [jstultz: Minor commit message tweaks]
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0d9aeed2703d9c3eadacd28374eaa6990ca84f40
Author: Laura Abbott <lauraa@codeaurora.org>
Date:   Fri Jan 29 22:07:30 2016 -0800

    staging: ashmem: Avoid deadlock with mmap/shrink
    
    [ Upstream commit 18e77054de741ef3ed2a2489bc9bf82a318b2d5e ]
    
    Both ashmem_mmap and ashmem_shrink take the ashmem_lock. It may
    be possible for ashmem_mmap to invoke ashmem_shrink:
    
    -000|mutex_lock(lock = 0x0)
    -001|ashmem_shrink(?, sc = 0x0) <--- try to take ashmem_mutex again
    -002|shrink_slab(shrink = 0xDA5F1CC0, nr_pages_scanned = 0, lru_pages
    -002|=
    -002|124)
    -003|try_to_free_pages(zonelist = 0x0, ?, ?, ?)
    -004|__alloc_pages_nodemask(gfp_mask = 21200, order = 1, zonelist =
    -004|0xC11D0940,
    -005|new_slab(s = 0xE4841E80, ?, node = -1)
    -006|__slab_alloc.isra.43.constprop.50(s = 0xE4841E80, gfpflags =
    -006|2148925462, ad
    -007|kmem_cache_alloc(s = 0xE4841E80, gfpflags = 208)
    -008|shmem_alloc_inode(?)
    -009|alloc_inode(sb = 0xE480E800)
    -010|new_inode_pseudo(?)
    -011|new_inode(?)
    -012|shmem_get_inode(sb = 0xE480E800, dir = 0x0, ?, dev = 0, flags =
    -012|187)
    -013|shmem_file_setup(?, ?, flags = 187)
    -014|ashmem_mmap(?, vma = 0xC5D64210) <---- Acquire ashmem_mutex
    -015|mmap_region(file = 0xDF8E2C00, addr = 1772974080, len = 233472,
    -015|flags = 57,
    -016|sys_mmap_pgoff(addr = 0, len = 230400, prot = 3, flags = 1, fd =
    -016|157, pgoff
    -017|ret_fast_syscall(asm)
    -->|exception
    -018|NUR:0x40097508(asm)
    ---|end of frame
    
    Avoid this deadlock by using mutex_trylock in ashmem_shrink; if the mutex
    is already held, do not attempt to shrink.
    
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Android Kernel Team <kernel-team@android.com>
    Reported-by: Matt Wagantall <mattw@codeaurora.org>
    Reported-by: Syed Rameez Mustafa <rameezmustafa@codeaurora.org>
    Reported-by: Osvaldo Banuelos <osvaldob@codeaurora.org>
    Reported-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
    Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
    [jstultz: Minor commit message tweaks]
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2e82280512d96919f48009803f2851eba029ac05
Author: Mark Rutland <mark.rutland@arm.com>
Date:   Mon Jan 25 11:44:55 2016 +0000

    asm-generic: Fix local variable shadow in __set_fixmap_offset
    
    [ Upstream commit 3694bd76781b76c4f8d2ecd85018feeb1609f0e5 ]
    
    Currently __set_fixmap_offset is a macro function which has a local
    variable called 'addr'. If a caller passes a 'phys' parameter which is
    derived from a variable also called 'addr', the local variable will
    shadow this, and the compiler will complain about the use of an
    uninitialized variable. To avoid the issue with namespace clashes,
    'addr' is prefixed with a liberal sprinkling of underscores.
    
    Turning __set_fixmap_offset into a static inline breaks the build for
    several architectures. Fixing this properly requires updates to a number
    of architectures to make them agree on the prototype of __set_fixmap (it
    could be done as a subsequent patch series).
    
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    [catalin.marinas@arm.com: squashed the original function patch and macro fixup]
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 60bb79a488db4f9872a85cf9ba89dee92af8708f
Author: Dmitry Torokhov <dtor@chromium.org>
Date:   Mon Dec 14 17:34:08 2015 -0800

    android: unconditionally remove callbacks in sync_fence_free()
    
    [ Upstream commit 699f685569434510d944e419f4048c4e3ba8d631 ]
    
    Using fence->status to determine whether or not there are callbacks
    remaining on the sync_fence is racy since fence->status may have been
    decremented to 0 on another CPU before fence_check_cb_func() has
    completed.  By unconditionally calling fence_remove_callback() for each
    fence in the sync_fence, we guarantee that each callback has either
    completed (since fence_remove_callback() grabs the fence lock) or been
    removed.
    
    Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
    Signed-off-by: Dmitry Torokhov <dtor@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0b86bf5d071510a30de50eed00ddc21b4b8276ea
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Thu Nov 19 15:49:23 2015 +0100

    ARM: 8458/1: bL_switcher: add GIC dependency
    
    [ Upstream commit 6c044fecdf78be3fda159a5036bb33700cdd5e59 ]
    
    It is not possible to build the bL_switcher code if the GIC
    driver is disabled, because it relies on calling into some
    gic specific interfaces, and that would result in this build
    error:
    
    arch/arm/common/built-in.o: In function `bL_switch_to':
    :(.text+0x1230): undefined reference to `gic_get_sgir_physaddr'
    :(.text+0x1244): undefined reference to `gic_send_sgi'
    :(.text+0x1268): undefined reference to `gic_migrate_target'
    arch/arm/common/built-in.o: In function `bL_switcher_enable.part.4':
    :(.text.unlikely+0x2f8): undefined reference to `gic_get_cpu_id'
    
    This adds a Kconfig dependency to ensure we only build the big-little
    switcher if the GIC driver is present as well.
    
    Almost all ARMv7 platforms come with a GIC anyway, but it is possible
    to build a kernel that disables all platforms.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 495dde2d8ea6be93a20a6ae810af69cd6401697d
Author: Yury Norov <ynorov@caviumnetworks.com>
Date:   Wed Dec 2 14:00:10 2015 +0000

    arm64: fix COMPAT_SHMLBA definition for large pages
    
    [ Upstream commit b9b7aebb42d1b1392f3111de61136bb6cf3aae3f ]
    
    ARM glibc uses (4 * __getpagesize()) for SHMLBA, which is correct for
    4KB pages and works fine for 64KB pages, but the kernel uses a hardcoded
    16KB that is too small for 64KB page based kernels. This changes the
    definition to what user space sees when using 64KB pages.
    
    Acked-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e88dd5c0a4c3ecc22c5d340750df138edbc1ed56
Author: Colin Cross <ccross@android.com>
Date:   Thu Oct 22 10:00:41 2015 -0700

    mmc: block: Allow more than 8 partitions per card
    
    [ Upstream commit 382c55f88ffeb218c446bf0c46d0fc25d2795fe2 ]
    
    It is quite common for Android devices to utilize more
    then 8 partitions on internal eMMC storage.
    
    The vanilla kernel can support this via
    CONFIG_MMC_BLOCK_MINORS, however that solution caps the
    system to 256 minors total, which limits the number of
    mmc cards the system can support.
    
    This patch, which has been carried for quite awhile in
    the AOSP common tree, provides an alternative solution
    that doesn't seem to limit the total card count. So I
    wanted to submit it for consideration upstream.
    
    This patch sets the GENHD_FL_EXT_DEVT flag, which will
    allocate minor number in major 259 for partitions past
    disk->minors.
    
    It also removes the use of disk_devt to determine devidx
    from md->disk. md->disk->first_minor is always initialized
    from devidx and can always be used to recover it.
    
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ben Hutchings <ben@decadent.org.uk>
    Cc: Chuanxiao Dong <chuanxiao.dong@intel.com>
    Cc: Shawn Lin <shawn.lin@rock-chips.com>
    Cc: Austin S Hemmelgarn <ahferroin7@gmail.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Android Kernel Team <kernel-team@android.com>
    Cc: linux-mmc@vger.kernel.org
    Signed-off-by: Colin Cross <ccross@android.com>
    [jstultz: Added context to commit message]
    Signed-off-by: John Stultz <john.stultz@linaro.org>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ac7c597c465eb09391e40febbe088bdad601080b
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Fri Jan 18 13:43:19 2019 +0100

    Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer
    
    commit 7c9cbd0b5e38a1672fcd137894ace3b042dfbf69 upstream.
    
    The function l2cap_get_conf_opt will return L2CAP_CONF_OPT_SIZE + opt->len
    as length value. The opt->len however is in control over the remote user
    and can be used by an attacker to gain access beyond the bounds of the
    actual packet.
    
    To prevent any potential leak of heap memory, it is enough to check that
    the resulting len calculation after calling l2cap_get_conf_opt is not
    below zero. A well formed packet will always return >= 0 here and will
    end with the length value being zero after the last option has been
    parsed. In case of malformed packets messing with the opt->len field the
    length value will become negative. If that is the case, then just abort
    and ignore the option.
    
    In case an attacker uses a too short opt->len value, then garbage will
    be parsed, but that is protected by the unknown option handling and also
    the option parameter size checks.
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f9c5ea93aa788302dddec8589aff079f9ac4bac
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Fri Jan 18 12:56:20 2019 +0100

    Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt
    
    commit af3d5d1c87664a4f150fcf3534c6567cb19909b0 upstream.
    
    When doing option parsing for standard type values of 1, 2 or 4 octets,
    the value is converted directly into a variable instead of a pointer. To
    avoid being tricked into being a pointer, check that for these option
    types that sizes actually match. In L2CAP every option is fixed size and
    thus it is prudent anyway to ensure that the remote side sends us the
    right option size along with option paramters.
    
    If the option size is not matching the option type, then that option is
    silently ignored. It is a protocol violation and instead of trying to
    give the remote attacker any further hints just pretend that option is
    not present and proceed with the default values. Implementation
    following the specification and its qualification procedures will always
    use the correct size and thus not being impacted here.
    
    To keep the code readable and consistent accross all options, a few
    cosmetic changes were also required.
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71b7a0a59c7db1bcd2371a1e242e55fe85d86a85
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Tue Dec 18 08:37:08 2018 -0500

    media: v4l2-ctrls.c/uvc: zero v4l2_event
    
    commit f45f3f753b0a3d739acda8e311b4f744d82dc52a upstream.
    
    Control events can leak kernel memory since they do not fully zero the
    event. The same code is present in both v4l2-ctrls.c and uvc_ctrl.c, so
    fix both.
    
    It appears that all other event code is properly zeroing the structure,
    it's these two places.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reported-by: syzbot+4f021cf3697781dbd9fb@syzkaller.appspotmail.com
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e303ade336a0a9117f0135193a79900872eaa334
Author: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Date:   Mon Feb 18 20:45:40 2019 +0300

    mmc: tmio_mmc_core: don't claim spurious interrupts
    
    commit 5c27ff5db1491a947264d6d4e4cbe43ae6535bae upstream.
    
    I have encountered an interrupt storm during the eMMC chip probing (and
    the chip finally didn't get detected).  It turned out that U-Boot left
    the DMAC interrupts enabled while the Linux driver  didn't use those.
    The SDHI driver's interrupt handler somehow assumes that, even if an
    SDIO interrupt didn't happen, it should return IRQ_HANDLED.  I think
    that if none of the enabled interrupts happened and got handled, we
    should return IRQ_NONE -- that way the kernel IRQ code recoginizes
    a spurious interrupt and masks it off pretty quickly...
    
    Fixes: 7729c7a232a9 ("mmc: tmio: Provide separate interrupt handlers")
    Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
    Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
    Cc: stable@vger.kernel.org
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a03af61e4353bd56a1aa7f56c7af5c6044ba64ab
Author: zhangyi (F) <yi.zhang@huawei.com>
Date:   Sat Mar 23 11:43:05 2019 -0400

    ext4: brelse all indirect buffer in ext4_ind_remove_space()
    
    commit 674a2b27234d1b7afcb0a9162e81b2e53aeef217 upstream.
    
    All indirect buffers get by ext4_find_shared() should be released no
    mater the branch should be freed or not. But now, we forget to release
    the lower depth indirect buffers when removing space from the same
    higher depth indirect block. It will lead to buffer leak and futher
    more, it may lead to quota information corruption when using old quota,
    consider the following case.
    
     - Create and mount an empty ext4 filesystem without extent and quota
       features,
     - quotacheck and enable the user & group quota,
     - Create some files and write some data to them, and then punch hole
       to some files of them, it may trigger the buffer leak problem
       mentioned above.
     - Disable quota and run quotacheck again, it will create two new
       aquota files and write the checked quota information to them, which
       probably may reuse the freed indirect block(the buffer and page
       cache was not freed) as data block.
     - Enable quota again, it will invoke
       vfs_load_quota_inode()->invalidate_bdev() to try to clean unused
       buffers and pagecache. Unfortunately, because of the buffer of quota
       data block is still referenced, quota code cannot read the up to date
       quota info from the device and lead to quota information corruption.
    
    This problem can be reproduced by xfstests generic/231 on ext3 file
    system or ext4 file system without extent and quota features.
    
    This patch fix this problem by releasing the missing indirect buffers,
    in ext4_ind_remove_space().
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    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: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 068b08bc9e751ada6161c8aa1d5d3f342f15fe06
Author: Lukas Czerner <lczerner@redhat.com>
Date:   Thu Mar 14 23:20:25 2019 -0400

    ext4: fix data corruption caused by unaligned direct AIO
    
    commit 372a03e01853f860560eade508794dd274e9b390 upstream.
    
    Ext4 needs to serialize unaligned direct AIO because the zeroing of
    partial blocks of two competing unaligned AIOs can result in data
    corruption.
    
    However it decides not to serialize if the potentially unaligned aio is
    past i_size with the rationale that no pending writes are possible past
    i_size. Unfortunately if the i_size is not block aligned and the second
    unaligned write lands past i_size, but still into the same block, it has
    the potential of corrupting the previous unaligned write to the same
    block.
    
    This is (very simplified) reproducer from Frank
    
        // 41472 = (10 * 4096) + 512
        // 37376 = 41472 - 4096
    
        ftruncate(fd, 41472);
        io_prep_pwrite(iocbs[0], fd, buf[0], 4096, 37376);
        io_prep_pwrite(iocbs[1], fd, buf[1], 4096, 41472);
    
        io_submit(io_ctx, 1, &iocbs[1]);
        io_submit(io_ctx, 1, &iocbs[2]);
    
        io_getevents(io_ctx, 2, 2, events, NULL);
    
    Without this patch the 512B range from 40960 up to the start of the
    second unaligned write (41472) is going to be zeroed overwriting the data
    written by the first write. This is a data corruption.
    
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
    *
    00009200  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30
    *
    0000a000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
    *
    0000a200  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31
    
    With this patch the data corruption is avoided because we will recognize
    the unaligned_aio and wait for the unwritten extent conversion.
    
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
    *
    00009200  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30
    *
    0000a200  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31
    *
    0000b200
    
    Reported-by: Frank Sorenson <fsorenso@redhat.com>
    Signed-off-by: Lukas Czerner <lczerner@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Fixes: e9e3bcecf44c ("ext4: serialize unaligned asynchronous DIO")
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9696bac59661737475a0b1749bb16257d4099d30
Author: Jiufei Xue <jiufei.xue@linux.alibaba.com>
Date:   Thu Mar 14 23:19:22 2019 -0400

    ext4: fix NULL pointer dereference while journal is aborted
    
    commit fa30dde38aa8628c73a6dded7cb0bba38c27b576 upstream.
    
    We see the following NULL pointer dereference while running xfstests
    generic/475:
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000008
    PGD 8000000c84bad067 P4D 8000000c84bad067 PUD c84e62067 PMD 0
    Oops: 0000 [#1] SMP PTI
    CPU: 7 PID: 9886 Comm: fsstress Kdump: loaded Not tainted 5.0.0-rc8 #10
    RIP: 0010:ext4_do_update_inode+0x4ec/0x760
    ...
    Call Trace:
    ? jbd2_journal_get_write_access+0x42/0x50
    ? __ext4_journal_get_write_access+0x2c/0x70
    ? ext4_truncate+0x186/0x3f0
    ext4_mark_iloc_dirty+0x61/0x80
    ext4_mark_inode_dirty+0x62/0x1b0
    ext4_truncate+0x186/0x3f0
    ? unmap_mapping_pages+0x56/0x100
    ext4_setattr+0x817/0x8b0
    notify_change+0x1df/0x430
    do_truncate+0x5e/0x90
    ? generic_permission+0x12b/0x1a0
    
    This is triggered because the NULL pointer handle->h_transaction was
    dereferenced in function ext4_update_inode_fsync_trans().
    I found that the h_transaction was set to NULL in jbd2__journal_restart
    but failed to attached to a new transaction while the journal is aborted.
    
    Fix this by checking the handle before updating the inode.
    
    Fixes: b436b9bef84d ("ext4: Wait for proper transaction commit on fsync")
    Signed-off-by: Jiufei Xue <jiufei.xue@linux.alibaba.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 543b86a1e4c13c2b70b462efda22607ae5a49d75
Author: Chen Jie <chenjie6@huawei.com>
Date:   Fri Mar 15 03:44:38 2019 +0000

    futex: Ensure that futex address is aligned in handle_futex_death()
    
    commit 5a07168d8d89b00fe1760120714378175b3ef992 upstream.
    
    The futex code requires that the user space addresses of futexes are 32bit
    aligned. sys_futex() checks this in futex_get_keys() but the robust list
    code has no alignment check in place.
    
    As a consequence the kernel crashes on architectures with strict alignment
    requirements in handle_futex_death() when trying to cmpxchg() on an
    unaligned futex address which was retrieved from the robust list.
    
    [ tglx: Rewrote changelog, proper sizeof() based alignement check and add
            comment ]
    
    Fixes: 0771dfefc9e5 ("[PATCH] lightweight robust futexes: core")
    Signed-off-by: Chen Jie <chenjie6@huawei.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: <dvhart@infradead.org>
    Cc: <peterz@infradead.org>
    Cc: <zengweilin@huawei.com>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1552621478-119787-1-git-send-email-chenjie6@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 824289e104f97ed08fd77fcf82922a7cbe547188
Author: Jan Kara <jack@suse.cz>
Date:   Mon Mar 11 15:04:18 2019 +0100

    udf: Fix crash on IO error during truncate
    
    commit d3ca4651d05c0ff7259d087d8c949bcf3e14fb46 upstream.
    
    When truncate(2) hits IO error when reading indirect extent block the
    code just bugs with:
    
    kernel BUG at linux-4.15.0/fs/udf/truncate.c:249!
    ...
    
    Fix the problem by bailing out cleanly in case of IO error.
    
    CC: stable@vger.kernel.org
    Reported-by: jean-luc malet <jeanluc.malet@gmail.com>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>