commit 6b1ae527b1fdee86e81da0cb26ced75731c6c0fa
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu May 16 09:17:24 2019 +0200

    Linux 3.18.140

commit 36927e41c311d14a9682df08ff36807999001428
Author: Laurentiu Tudor <laurentiu.tudor@nxp.com>
Date:   Mon Apr 15 14:52:11 2019 +0300

    powerpc/booke64: set RI in default MSR
    
    commit 5266e58d6cd90ac85c187d673093ad9cb649e16d upstream.
    
    Set RI in the default kernel's MSR so that the architected way of
    detecting unrecoverable machine check interrupts has a chance to work.
    This is inline with the MSR setup of the rest of booke powerpc
    architectures configured here.
    
    Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit db7e50136a20bc175fe081ff1764b5b96af85e2d
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue May 14 15:47:03 2019 -0700

    drivers/virt/fsl_hypervisor.c: prevent integer overflow in ioctl
    
    commit 6a024330650e24556b8a18cc654ad00cfecf6c6c upstream.
    
    The "param.count" value is a u64 thatcomes from the user.  The code
    later in the function assumes that param.count is at least one and if
    it's not then it leads to an Oops when we dereference the ZERO_SIZE_PTR.
    
    Also the addition can have an integer overflow which would lead us to
    allocate a smaller "pages" array than required.  I can't immediately
    tell what the possible run times implications are, but it's safest to
    prevent the overflow.
    
    Link: http://lkml.kernel.org/r/20181218082129.GE32567@kadam
    Fixes: 6db7199407ca ("drivers/virt: introduce Freescale hypervisor management driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Timur Tabi <timur@freescale.com>
    Cc: Mihai Caraman <mihai.caraman@freescale.com>
    Cc: Kumar Gala <galak@kernel.crashing.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b187319bc7c896691f317384e4035be489ae9fc
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue May 14 15:47:00 2019 -0700

    drivers/virt/fsl_hypervisor.c: dereferencing error pointers in ioctl
    
    commit c8ea3663f7a8e6996d44500ee818c9330ac4fd88 upstream.
    
    strndup_user() returns error pointers on error, and then in the error
    handling we pass the error pointers to kfree().  It will cause an Oops.
    
    Link: http://lkml.kernel.org/r/20181218082003.GD32567@kadam
    Fixes: 6db7199407ca ("drivers/virt: introduce Freescale hypervisor management driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Timur Tabi <timur@freescale.com>
    Cc: Mihai Caraman <mihai.caraman@freescale.com>
    Cc: Kumar Gala <galak@kernel.crashing.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 66ed3c8b10c16b78c9a65c484ff2f623a20431b5
Author: Jarod Wilson <jarod@redhat.com>
Date:   Fri May 10 17:57:09 2019 -0400

    bonding: fix arp_validate toggling in active-backup mode
    
    [ Upstream commit a9b8a2b39ce65df45687cf9ef648885c2a99fe75 ]
    
    There's currently a problem with toggling arp_validate on and off with an
    active-backup bond. At the moment, you can start up a bond, like so:
    
    modprobe bonding mode=1 arp_interval=100 arp_validate=0 arp_ip_targets=192.168.1.1
    ip link set bond0 down
    echo "ens4f0" > /sys/class/net/bond0/bonding/slaves
    echo "ens4f1" > /sys/class/net/bond0/bonding/slaves
    ip link set bond0 up
    ip addr add 192.168.1.2/24 dev bond0
    
    Pings to 192.168.1.1 work just fine. Now turn on arp_validate:
    
    echo 1 > /sys/class/net/bond0/bonding/arp_validate
    
    Pings to 192.168.1.1 continue to work just fine. Now when you go to turn
    arp_validate off again, the link falls flat on it's face:
    
    echo 0 > /sys/class/net/bond0/bonding/arp_validate
    dmesg
    ...
    [133191.911987] bond0: Setting arp_validate to none (0)
    [133194.257793] bond0: bond_should_notify_peers: slave ens4f0
    [133194.258031] bond0: link status definitely down for interface ens4f0, disabling it
    [133194.259000] bond0: making interface ens4f1 the new active one
    [133197.330130] bond0: link status definitely down for interface ens4f1, disabling it
    [133197.331191] bond0: now running without any active interface!
    
    The problem lies in bond_options.c, where passing in arp_validate=0
    results in bond->recv_probe getting set to NULL. This flies directly in
    the face of commit 3fe68df97c7f, which says we need to set recv_probe =
    bond_arp_recv, even if we're not using arp_validate. Said commit fixed
    this in bond_option_arp_interval_set, but missed that we can get to that
    same state in bond_option_arp_validate_set as well.
    
    One solution would be to universally set recv_probe = bond_arp_recv here
    as well, but I don't think bond_option_arp_validate_set has any business
    touching recv_probe at all, and that should be left to the arp_interval
    code, so we can just make things much tidier here.
    
    Fixes: 3fe68df97c7f ("bonding: always set recv_probe to bond_arp_rcv in arp monitor")
    CC: Jay Vosburgh <j.vosburgh@gmail.com>
    CC: Veaceslav Falico <vfalico@gmail.com>
    CC: Andy Gospodarek <andy@greyhouse.net>
    CC: "David S. Miller" <davem@davemloft.net>
    CC: netdev@vger.kernel.org
    Signed-off-by: Jarod Wilson <jarod@redhat.com>
    Signed-off-by: Jay Vosburgh <jay.vosburgh@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae0f0ebd83c2390fa31ed7ddeba234587236a885
Author: David Ahern <dsahern@gmail.com>
Date:   Tue May 7 20:44:59 2019 -0700

    ipv4: Fix raw socket lookup for local traffic
    
    [ Upstream commit 19e4e768064a87b073a4b4c138b55db70e0cfb9f ]
    
    inet_iif should be used for the raw socket lookup. inet_iif considers
    rt_iif which handles the case of local traffic.
    
    As it stands, ping to a local address with the '-I <dev>' option fails
    ever since ping was changed to use SO_BINDTODEVICE instead of
    cmsg + IP_PKTINFO.
    
    IPv6 works fine.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: David Ahern <dsahern@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 860e91819fed01fb020dbdc035eb21e1fab3796a
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Thu May 9 14:55:07 2019 +0800

    vlan: disable SIOCSHWTSTAMP in container
    
    [ Upstream commit 873017af778439f2f8e3d87f28ddb1fcaf244a76 ]
    
    With NET_ADMIN enabled in container, a normal user could be mapped to
    root and is able to change the real device's rx filter via ioctl on
    vlan, which would affect the other ptp process on host. Fix it by
    disabling SIOCSHWTSTAMP in container.
    
    Fixes: a6111d3c93d0 ("vlan: Pass SIOC[SG]HWTSTAMP ioctls to real device")
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 97d36ca9da84e7d23407e7e2fe54e1f635cb644e
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu May 9 22:52:20 2019 +0800

    packet: Fix error path in packet_init
    
    [ Upstream commit 36096f2f4fa05f7678bc87397665491700bae757 ]
    
    kernel BUG at lib/list_debug.c:47!
    invalid opcode: 0000 [#1
    CPU: 0 PID: 12914 Comm: rmmod Tainted: G        W         5.1.0+ #47
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
    RIP: 0010:__list_del_entry_valid+0x53/0x90
    Code: 48 8b 32 48 39 fe 75 35 48 8b 50 08 48 39 f2 75 40 b8 01 00 00 00 5d c3 48
    89 fe 48 89 c2 48 c7 c7 18 75 fe 82 e8 cb 34 78 ff <0f> 0b 48 89 fe 48 c7 c7 50 75 fe 82 e8 ba 34 78 ff 0f 0b 48 89 f2
    RSP: 0018:ffffc90001c2fe40 EFLAGS: 00010286
    RAX: 000000000000004e RBX: ffffffffa0184000 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffff888237a17788 RDI: 00000000ffffffff
    RBP: ffffc90001c2fe40 R08: 0000000000000000 R09: 0000000000000000
    R10: ffffc90001c2fe10 R11: 0000000000000000 R12: 0000000000000000
    R13: ffffc90001c2fe50 R14: ffffffffa0184000 R15: 0000000000000000
    FS:  00007f3d83634540(0000) GS:ffff888237a00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000555c350ea818 CR3: 0000000231677000 CR4: 00000000000006f0
    Call Trace:
     unregister_pernet_operations+0x34/0x120
     unregister_pernet_subsys+0x1c/0x30
     packet_exit+0x1c/0x369 [af_packet
     __x64_sys_delete_module+0x156/0x260
     ? lockdep_hardirqs_on+0x133/0x1b0
     ? do_syscall_64+0x12/0x1f0
     do_syscall_64+0x6e/0x1f0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    When modprobe af_packet, register_pernet_subsys
    fails and does a cleanup, ops->list is set to LIST_POISON1,
    but the module init is considered to success, then while rmmod it,
    BUG() is triggered in __list_del_entry_valid which is called from
    unregister_pernet_subsys. This patch fix error handing path in
    packet_init to avoid possilbe issue if some error occur.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d59fa6eeb6b506537371cec8d1b096549c5931c
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Fri May 3 13:33:23 2019 +0000

    net: ucc_geth - fix Oops when changing number of buffers in the ring
    
    [ Upstream commit ee0df19305d9fabd9479b785918966f6e25b733b ]
    
    When changing the number of buffers in the RX ring while the interface
    is running, the following Oops is encountered due to the new number
    of buffers being taken into account immediately while their allocation
    is done when opening the device only.
    
    [   69.882706] Unable to handle kernel paging request for data at address 0xf0000100
    [   69.890172] Faulting instruction address: 0xc033e164
    [   69.895122] Oops: Kernel access of bad area, sig: 11 [#1]
    [   69.900494] BE PREEMPT CMPCPRO
    [   69.907120] CPU: 0 PID: 0 Comm: swapper Not tainted 4.14.115-00006-g179ade8ce3-dirty #269
    [   69.915956] task: c0684310 task.stack: c06da000
    [   69.920470] NIP:  c033e164 LR: c02e44d0 CTR: c02e41fc
    [   69.925504] REGS: dfff1e20 TRAP: 0300   Not tainted  (4.14.115-00006-g179ade8ce3-dirty)
    [   69.934161] MSR:  00009032 <EE,ME,IR,DR,RI>  CR: 22004428  XER: 20000000
    [   69.940869] DAR: f0000100 DSISR: 20000000
    [   69.940869] GPR00: c0352d70 dfff1ed0 c0684310 f00000a4 00000040 dfff1f68 00000000 0000001f
    [   69.940869] GPR08: df53f410 1cc00040 00000021 c0781640 42004424 100c82b6 f00000a4 df53f5b0
    [   69.940869] GPR16: df53f6c0 c05daf84 00000040 00000000 00000040 c0782be4 00000000 00000001
    [   69.940869] GPR24: 00000000 df53f400 000001b0 df53f410 df53f000 0000003f df708220 1cc00044
    [   69.978348] NIP [c033e164] skb_put+0x0/0x5c
    [   69.982528] LR [c02e44d0] ucc_geth_poll+0x2d4/0x3f8
    [   69.987384] Call Trace:
    [   69.989830] [dfff1ed0] [c02e4554] ucc_geth_poll+0x358/0x3f8 (unreliable)
    [   69.996522] [dfff1f20] [c0352d70] net_rx_action+0x248/0x30c
    [   70.002099] [dfff1f80] [c04e93e4] __do_softirq+0xfc/0x310
    [   70.007492] [dfff1fe0] [c0021124] irq_exit+0xd0/0xd4
    [   70.012458] [dfff1ff0] [c000e7e0] call_do_irq+0x24/0x3c
    [   70.017683] [c06dbe80] [c0006bac] do_IRQ+0x64/0xc4
    [   70.022474] [c06dbea0] [c001097c] ret_from_except+0x0/0x14
    [   70.027964] --- interrupt: 501 at rcu_idle_exit+0x84/0x90
    [   70.027964]     LR = rcu_idle_exit+0x74/0x90
    [   70.037585] [c06dbf60] [20000000] 0x20000000 (unreliable)
    [   70.042984] [c06dbf80] [c004bb0c] do_idle+0xb4/0x11c
    [   70.047945] [c06dbfa0] [c004bd14] cpu_startup_entry+0x18/0x1c
    [   70.053682] [c06dbfb0] [c05fb034] start_kernel+0x370/0x384
    [   70.059153] [c06dbff0] [00003438] 0x3438
    [   70.063062] Instruction dump:
    [   70.066023] 38a00000 38800000 90010014 4bfff015 80010014 7c0803a6 3123ffff 7c691910
    [   70.073767] 38210010 4e800020 38600000 4e800020 <80e3005c> 80c30098 3107ffff 7d083910
    [   70.081690] ---[ end trace be7ccd9c1e1a9f12 ]---
    
    This patch forbids the modification of the number of buffers in the
    ring while the interface is running.
    
    Fixes: ac421852b3a0 ("ucc_geth: add ethtool support")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28107baf408d32535079e7131b8e6cb555d728e1
Author: Tobin C. Harding <tobin@kernel.org>
Date:   Fri May 10 12:52:12 2019 +1000

    bridge: Fix error path for kobject_init_and_add()
    
    [ Upstream commit bdfad5aec1392b93495b77b864d58d7f101dc1c1 ]
    
    Currently error return from kobject_init_and_add() is not followed by a
    call to kobject_put().  This means there is a memory leak.  We currently
    set p to NULL so that kfree() may be called on it as a noop, the code is
    arguably clearer if we move the kfree() up closer to where it is
    called (instead of after goto jump).
    
    Remove a goto label 'err1' and jump to call to kobject_put() in error
    return from kobject_init_and_add() fixing the memory leak.  Re-name goto
    label 'put_back' to 'err1' now that we don't use err1, following current
    nomenclature (err1, err2 ...).  Move call to kfree out of the error
    code at bottom of function up to closer to where memory was allocated.
    Add comment to clarify call to kfree().
    
    Signed-off-by: Tobin C. Harding <tobin@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c0759c18e95d72cc889ff0afca9264e2df2fb45e
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Apr 25 18:05:36 2019 +0200

    USB: serial: fix unthrottle races
    
    [ Upstream commit 3f5edd58d040bfa4b74fb89bc02f0bc6b9cd06ab ]
    
    Fix two long-standing bugs which could potentially lead to memory
    corruption or leave the port throttled until it is reopened (on weakly
    ordered systems), respectively, when read-URB completion races with
    unthrottle().
    
    First, the URB must not be marked as free before processing is complete
    to prevent it from being submitted by unthrottle() on another CPU.
    
            CPU 1                           CPU 2
            ================                ================
            complete()                      unthrottle()
              process_urb();
              smp_mb__before_atomic();
              set_bit(i, free);               if (test_and_clear_bit(i, free))
                                                      submit_urb();
    
    Second, the URB must be marked as free before checking the throttled
    flag to prevent unthrottle() on another CPU from failing to observe that
    the URB needs to be submitted if complete() sees that the throttled flag
    is set.
    
            CPU 1                           CPU 2
            ================                ================
            complete()                      unthrottle()
              set_bit(i, free);               throttled = 0;
              smp_mb__after_atomic();         smp_mb();
              if (throttled)                  if (test_and_clear_bit(i, free))
                      return;                         submit_urb();
    
    Note that test_and_clear_bit() only implies barriers when the test is
    successful. To handle the case where the URB is still in use an explicit
    barrier needs to be added to unthrottle() for the second race condition.
    
    Fixes: d83b405383c9 ("USB: serial: add support for multiple read urbs")
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6b612ec29abd6cf2589dea89cf0720be0ad0f61e
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu Jul 14 15:01:40 2016 +0200

    USB: serial: use variable for status
    
    [ Upstream commit 3161da970d38cd6ed2ba8cadec93874d1d06e11e ]
    
    This patch turns status in a variable read once from the URB.
    The long term plan is to deliver status to the callback.
    In addition it makes the code a bit more elegant.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 466153fc585e594c0a9f828e0839ca55674451d3
Author: Nigel Croxon <ncroxon@redhat.com>
Date:   Fri Mar 29 10:46:15 2019 -0700

    Don't jump to compute_result state from check_result state
    
    commit 4f4fd7c5798bbdd5a03a60f6269cf1177fbd11ef upstream.
    
    Changing state from check_state_check_result to
    check_state_compute_result not only is unsafe but also doesn't
    appear to serve a valid purpose.  A raid6 check should only be
    pushing out extra writes if doing repair and a mis-match occurs.
    The stripe dev management will already try and do repair writes
    for failing sectors.
    
    This patch makes the raid6 check_state_check_result handling
    work more like raid5's.  If somehow too many failures for a
    check, just quit the check operation for the stripe.  When any
    checks pass, don't try and use check_state_compute_result for
    a purpose it isn't needed for and is unsafe for.  Just mark the
    stripe as in sync for passing its parity checks and let the
    stripe dev read/write code and the bad blocks list do their
    job handling I/O errors.
    
    Repro steps from Xiao:
    
    These are the steps to reproduce this problem:
    1. redefined OPT_MEDIUM_ERR_ADDR to 12000 in scsi_debug.c
    2. insmod scsi_debug.ko dev_size_mb=11000  max_luns=1 num_tgts=1
    3. mdadm --create /dev/md127 --level=6 --raid-devices=5 /dev/sde1 /dev/sde2 /dev/sde3 /dev/sde5 /dev/sde6
    sde is the disk created by scsi_debug
    4. echo "2" >/sys/module/scsi_debug/parameters/opts
    5. raid-check
    
    It panic:
    [ 4854.730899] md: data-check of RAID array md127
    [ 4854.857455] sd 5:0:0:0: [sdr] tag#80 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    [ 4854.859246] sd 5:0:0:0: [sdr] tag#80 Sense Key : Medium Error [current]
    [ 4854.860694] sd 5:0:0:0: [sdr] tag#80 Add. Sense: Unrecovered read error
    [ 4854.862207] sd 5:0:0:0: [sdr] tag#80 CDB: Read(10) 28 00 00 00 2d 88 00 04 00 00
    [ 4854.864196] print_req_error: critical medium error, dev sdr, sector 11656 flags 0
    [ 4854.867409] sd 5:0:0:0: [sdr] tag#100 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    [ 4854.869469] sd 5:0:0:0: [sdr] tag#100 Sense Key : Medium Error [current]
    [ 4854.871206] sd 5:0:0:0: [sdr] tag#100 Add. Sense: Unrecovered read error
    [ 4854.872858] sd 5:0:0:0: [sdr] tag#100 CDB: Read(10) 28 00 00 00 2e e0 00 00 08 00
    [ 4854.874587] print_req_error: critical medium error, dev sdr, sector 12000 flags 4000
    [ 4854.876456] sd 5:0:0:0: [sdr] tag#101 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    [ 4854.878552] sd 5:0:0:0: [sdr] tag#101 Sense Key : Medium Error [current]
    [ 4854.880278] sd 5:0:0:0: [sdr] tag#101 Add. Sense: Unrecovered read error
    [ 4854.881846] sd 5:0:0:0: [sdr] tag#101 CDB: Read(10) 28 00 00 00 2e e8 00 00 08 00
    [ 4854.883691] print_req_error: critical medium error, dev sdr, sector 12008 flags 4000
    [ 4854.893927] sd 5:0:0:0: [sdr] tag#166 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    [ 4854.896002] sd 5:0:0:0: [sdr] tag#166 Sense Key : Medium Error [current]
    [ 4854.897561] sd 5:0:0:0: [sdr] tag#166 Add. Sense: Unrecovered read error
    [ 4854.899110] sd 5:0:0:0: [sdr] tag#166 CDB: Read(10) 28 00 00 00 2e e0 00 00 10 00
    [ 4854.900989] print_req_error: critical medium error, dev sdr, sector 12000 flags 0
    [ 4854.902757] md/raid:md127: read error NOT corrected!! (sector 9952 on sdr1).
    [ 4854.904375] md/raid:md127: read error NOT corrected!! (sector 9960 on sdr1).
    [ 4854.906201] ------------[ cut here ]------------
    [ 4854.907341] kernel BUG at drivers/md/raid5.c:4190!
    
    raid5.c:4190 above is this BUG_ON:
    
        handle_parity_checks6()
            ...
            BUG_ON(s->uptodate < disks - 1); /* We don't need Q to recover */
    
    Cc: <stable@vger.kernel.org> # v3.16+
    OriginalAuthor: David Jeffery <djeffery@redhat.com>
    Cc: Xiao Ni <xni@redhat.com>
    Tested-by: David Jeffery <djeffery@redhat.com>
    Signed-off-by: David Jeffy <djeffery@redhat.com>
    Signed-off-by: Nigel Croxon <ncroxon@redhat.com>
    Signed-off-by: Song Liu <songliubraving@fb.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 913fbfc3fd78bfa4e89eb2c154ff5e6ea8a4cbdd
Author: Lucas Stach <l.stach@pengutronix.de>
Date:   Fri Apr 12 17:59:40 2019 +0200

    gpu: ipu-v3: dp: fix CSC handling
    
    [ Upstream commit d4fad0a426c6e26f48c9a7cdd21a7fe9c198d645 ]
    
    Initialize the flow input colorspaces to unknown and reset to that value
    when the channel gets disabled. This avoids the state getting mixed up
    with a previous mode.
    
    Also keep the CSC settings for the background flow intact when disabling
    the foreground flow.
    
    Root-caused-by: Jonathan Marek <jonathan@marek.ca>
    Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fad368428284c40b3f5be1f362acaf6ebc3ad467
Author: Po-Hsu Lin <po-hsu.lin@canonical.com>
Date:   Thu Apr 18 19:57:25 2019 +0800

    selftests/net: correct the return value for run_netsocktests
    
    [ Upstream commit 30c04d796b693e22405c38e9b78e9a364e4c77e6 ]
    
    The run_netsocktests will be marked as passed regardless the actual test
    result from the ./socket:
    
        selftests: net: run_netsocktests
        ========================================
        --------------------
        running socket test
        --------------------
        [FAIL]
        ok 1..6 selftests: net: run_netsocktests [PASS]
    
    This is because the test script itself has been successfully executed.
    Fix this by exit 1 when the test failed.
    
    Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 68e8a8d9bcca74ecf6d295296a3c74ad515cf366
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Wed Apr 17 18:29:13 2019 +0200

    s390: ctcm: fix ctcm_new_device error return code
    
    [ Upstream commit 27b141fc234a3670d21bd742c35d7205d03cbb3a ]
    
    clang points out that the return code from this function is
    undefined for one of the error paths:
    
    ../drivers/s390/net/ctcm_main.c:1595:7: warning: variable 'result' is used uninitialized whenever 'if' condition is true
          [-Wsometimes-uninitialized]
                    if (priv->channel[direction] == NULL) {
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../drivers/s390/net/ctcm_main.c:1638:9: note: uninitialized use occurs here
            return result;
                   ^~~~~~
    ../drivers/s390/net/ctcm_main.c:1595:3: note: remove the 'if' if its condition is always false
                    if (priv->channel[direction] == NULL) {
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../drivers/s390/net/ctcm_main.c:1539:12: note: initialize the variable 'result' to silence this warning
            int result;
                      ^
    
    Make it return -ENODEV here, as in the related failure cases.
    gcc has a known bug in underreporting some of these warnings
    when it has already eliminated the assignment of the return code
    based on some earlier optimization step.
    
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4ce4b005e584d5f8cc9b3be99a64903e4b78e0ac
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Apr 18 17:50:44 2019 -0700

    init: initialize jump labels before command line option parsing
    
    [ Upstream commit 6041186a32585fc7a1d0f6cfe2f138b05fdc3c82 ]
    
    When a module option, or core kernel argument, toggles a static-key it
    requires jump labels to be initialized early.  While x86, PowerPC, and
    ARM64 arrange for jump_label_init() to be called before parse_args(),
    ARM does not.
    
      Kernel command line: rdinit=/sbin/init page_alloc.shuffle=1 panic=-1 console=ttyAMA0,115200 page_alloc.shuffle=1
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 0 at ./include/linux/jump_label.h:303
      page_alloc_shuffle+0x12c/0x1ac
      static_key_enable(): static key 'page_alloc_shuffle_key+0x0/0x4' used
      before call to jump_label_init()
      Modules linked in:
      CPU: 0 PID: 0 Comm: swapper Not tainted
      5.1.0-rc4-next-20190410-00003-g3367c36ce744 #1
      Hardware name: ARM Integrator/CP (Device Tree)
      [<c0011c68>] (unwind_backtrace) from [<c000ec48>] (show_stack+0x10/0x18)
      [<c000ec48>] (show_stack) from [<c07e9710>] (dump_stack+0x18/0x24)
      [<c07e9710>] (dump_stack) from [<c001bb1c>] (__warn+0xe0/0x108)
      [<c001bb1c>] (__warn) from [<c001bb88>] (warn_slowpath_fmt+0x44/0x6c)
      [<c001bb88>] (warn_slowpath_fmt) from [<c0b0c4a8>]
      (page_alloc_shuffle+0x12c/0x1ac)
      [<c0b0c4a8>] (page_alloc_shuffle) from [<c0b0c550>] (shuffle_store+0x28/0x48)
      [<c0b0c550>] (shuffle_store) from [<c003e6a0>] (parse_args+0x1f4/0x350)
      [<c003e6a0>] (parse_args) from [<c0ac3c00>] (start_kernel+0x1c0/0x488)
    
    Move the fallback call to jump_label_init() to occur before
    parse_args().
    
    The redundant calls to jump_label_init() in other archs are left intact
    in case they have static key toggling use cases that are even earlier
    than option parsing.
    
    Link: http://lkml.kernel.org/r/155544804466.1032396.13418949511615676665.stgit@dwillia2-desk3.amr.corp.intel.com
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Reported-by: Guenter Roeck <groeck@google.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Russell King <rmk@armlinux.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 f97fc640c4256e838fb1f9c4c40e439c0a64cc57
Author: Rikard Falkeborn <rikard.falkeborn@gmail.com>
Date:   Tue Apr 9 11:15:29 2019 +0200

    tools lib traceevent: Fix missing equality check for strcmp
    
    [ Upstream commit f32c2877bcb068a718bb70094cd59ccc29d4d082 ]
    
    There was a missing comparison with 0 when checking if type is "s64" or
    "u64". Therefore, the body of the if-statement was entered if "type" was
    "u64" or not "s64", which made the first strcmp() redundant since if
    type is "u64", it's not "s64".
    
    If type is "s64", the body of the if-statement is not entered but since
    the remainder of the function consists of if-statements which will not
    be entered if type is "s64", we will just return "val", which is
    correct, albeit at the cost of a few more calls to strcmp(), i.e., it
    will behave just as if the if-statement was entered.
    
    If type is neither "s64" or "u64", the body of the if-statement will be
    entered incorrectly and "val" returned. This means that any type that is
    checked after "s64" and "u64" is handled the same way as "s64" and
    "u64", i.e., the limiting of "val" to fit in for example "s8" is never
    reached.
    
    This was introduced in the kernel tree when the sources were copied from
    trace-cmd in commit f7d82350e597 ("tools/events: Add files to create
    libtraceevent.a"), and in the trace-cmd repo in 1cdbae6035cei
    ("Implement typecasting in parser") when the function was introduced,
    i.e., it has always behaved the wrong way.
    
    Detected by cppcheck.
    
    Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
    Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Cc: Tzvetomir Stoyanov <tstoyanov@vmware.com>
    Fixes: f7d82350e597 ("tools/events: Add files to create libtraceevent.a")
    Link: http://lkml.kernel.org/r/20190409091529.2686-1-rikard.falkeborn@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 72ba8a7a7c8e1866ad62686e9bc0131772414591
Author: Vitaly Kuznetsov <vkuznets@redhat.com>
Date:   Wed Mar 27 15:12:20 2019 +0100

    KVM: x86: avoid misreporting level-triggered irqs as edge-triggered in tracing
    
    [ Upstream commit 7a223e06b1a411cef6c4cd7a9b9a33c8d225b10e ]
    
    In __apic_accept_irq() interface trig_mode is int and actually on some code
    paths it is set above u8:
    
    kvm_apic_set_irq() extracts it from 'struct kvm_lapic_irq' where trig_mode
    is u16. This is done on purpose as e.g. kvm_set_msi_irq() sets it to
    (1 << 15) & e->msi.data
    
    kvm_apic_local_deliver sets it to reg & (1 << 15).
    
    Fix the immediate issue by making 'tm' into u16. We may also want to adjust
    __apic_accept_irq() interface and use proper sizes for vector, level,
    trig_mode but this is not urgent.
    
    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eca5f4de2f5f3eab421b881368cb680369a1cb38
Author: Martin Schwidefsky <schwidefsky@de.ibm.com>
Date:   Wed Apr 3 09:13:34 2019 +0200

    s390/3270: fix lockdep false positive on view->lock
    
    [ Upstream commit 5712f3301a12c0c3de9cc423484496b0464f2faf ]
    
    The spinlock in the raw3270_view structure is used by con3270, tty3270
    and fs3270 in different ways. For con3270 the lock can be acquired in
    irq context, for tty3270 and fs3270 the highest context is bh.
    
    Lockdep sees the view->lock as a single class and if the 3270 driver
    is used for the console the following message is generated:
    
    WARNING: inconsistent lock state
    5.1.0-rc3-05157-g5c168033979d #12 Not tainted
    --------------------------------
    inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
    swapper/0/1 [HC0[0]:SC1[1]:HE1:SE0] takes:
    (____ptrval____) (&(&view->lock)->rlock){?.-.}, at: tty3270_update+0x7c/0x330
    
    Introduce a lockdep subclass for the view lock to distinguish bh from
    irq locks.
    
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2f922c459f4872fd1f881c42ab42a1934b97288e
Author: Peter Oberparleiter <oberpar@linux.ibm.com>
Date:   Fri Mar 22 16:01:17 2019 +0100

    s390/dasd: Fix capacity calculation for large volumes
    
    [ Upstream commit 2cc9637ce825f3a9f51f8f78af7474e9e85bfa5f ]
    
    The DASD driver incorrectly limits the maximum number of blocks of ECKD
    DASD volumes to 32 bit numbers. Volumes with a capacity greater than
    2^32-1 blocks are incorrectly recognized as smaller volumes.
    
    This results in the following volume capacity limits depending on the
    formatted block size:
    
      BLKSIZE  MAX_GB   MAX_CYL
          512    2047   5843492
         1024    4095   8676701
         2048    8191  13634816
         4096   16383  23860929
    
    The same problem occurs when a volume with more than 17895697 cylinders
    is accessed in raw-track-access mode.
    
    Fix this problem by adding an explicit type cast when calculating the
    maximum number of blocks.
    
    Signed-off-by: Peter Oberparleiter <oberpar@linux.ibm.com>
    Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
    Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e172a3b5909881ecef5fc4abcf751c46a2c71dcc
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Fri Jan 18 14:05:52 2019 -0800

    HID: input: add mapping for keyboard Brightness Up/Down/Toggle keys
    
    [ Upstream commit 7975a1d6a7afeb3eb61c971a153d24dd8fa032f3 ]
    
    According to HUTRR73 usages 0x79, 0x7a and 0x7c from the consumer page
    correspond to Brightness Up/Down/Toggle keys, so let's add the mappings.
    
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b8f6da2fcb2e555c4d8a2572e18d44b631d3eaad
Author: Sven Van Asbroeck <thesven73@gmail.com>
Date:   Sun Mar 10 14:58:24 2019 -0400

    iio: adc: xilinx: fix potential use-after-free on remove
    
    [ Upstream commit 62039b6aef63380ba7a37c113bbaeee8a55c5342 ]
    
    When cancel_delayed_work() returns, the delayed work may still
    be running. This means that the core could potentially free
    the private structure (struct xadc) while the delayed work
    is still using it. This is a potential use-after-free.
    
    Fix by calling cancel_delayed_work_sync(), which waits for
    any residual work to finish before returning.
    
    Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 23a030f79c350f2f9a11a940644d9944b04fab9e
Author: Gustavo A. R. Silva <gustavo@embeddedor.com>
Date:   Wed Apr 24 13:09:34 2019 -0500

    platform/x86: sony-laptop: Fix unintentional fall-through
    
    commit 1cbd7a64959d33e7a2a1fa2bf36a62b350a9fcbd upstream.
    
    It seems that the default case should return AE_CTRL_TERMINATE, instead
    of falling through to case ACPI_RESOURCE_TYPE_END_TAG and returning AE_OK;
    otherwise the line of code at the end of the function is unreachable and
    makes no sense:
    
    return AE_CTRL_TERMINATE;
    
    This fix is based on the following thread of discussion:
    
    https://lore.kernel.org/patchwork/patch/959782/
    
    Fixes: 33a04454527e ("sony-laptop: Add SNY6001 device handling (sonypi reimplementation)")
    Cc: stable@vger.kernel.org
    Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d2774665f7c7eeb404fe241d9734ba33c17a1fd2
Author: Francesco Ruggeri <fruggeri@arista.com>
Date:   Fri May 10 09:19:30 2019 -0700

    netfilter: compat: initialize all fields in xt_init
    
    commit 8d29d16d21342a0c86405d46de0c4ac5daf1760f upstream
    
    If a non zero value happens to be in xt[NFPROTO_BRIDGE].cur at init
    time, the following panic can be caused by running
    
    % ebtables -t broute -F BROUTING
    
    from a 32-bit user level on a 64-bit kernel. This patch replaces
    kmalloc_array with kcalloc when allocating xt.
    
    [  474.680846] BUG: unable to handle kernel paging request at 0000000009600920
    [  474.687869] PGD 2037006067 P4D 2037006067 PUD 2038938067 PMD 0
    [  474.693838] Oops: 0000 [#1] SMP
    [  474.697055] CPU: 9 PID: 4662 Comm: ebtables Kdump: loaded Not tainted 4.19.17-11302235.AroraKernelnext.fc18.x86_64 #1
    [  474.707721] Hardware name: Supermicro X9DRT/X9DRT, BIOS 3.0 06/28/2013
    [  474.714313] RIP: 0010:xt_compat_calc_jump+0x2f/0x63 [x_tables]
    [  474.720201] Code: 40 0f b6 ff 55 31 c0 48 6b ff 70 48 03 3d dc 45 00 00 48 89 e5 8b 4f 6c 4c 8b 47 60 ff c9 39 c8 7f 2f 8d 14 08 d1 fa 48 63 fa <41> 39 34 f8 4c 8d 0c fd 00 00 00 00 73 05 8d 42 01 eb e1 76 05 8d
    [  474.739023] RSP: 0018:ffffc9000943fc58 EFLAGS: 00010207
    [  474.744296] RAX: 0000000000000000 RBX: ffffc90006465000 RCX: 0000000002580249
    [  474.751485] RDX: 00000000012c0124 RSI: fffffffff7be17e9 RDI: 00000000012c0124
    [  474.758670] RBP: ffffc9000943fc58 R08: 0000000000000000 R09: ffffffff8117cf8f
    [  474.765855] R10: ffffc90006477000 R11: 0000000000000000 R12: 0000000000000001
    [  474.773048] R13: 0000000000000000 R14: ffffc9000943fcb8 R15: ffffc9000943fcb8
    [  474.780234] FS:  0000000000000000(0000) GS:ffff88a03f840000(0063) knlGS:00000000f7ac7700
    [  474.788612] CS:  0010 DS: 002b ES: 002b CR0: 0000000080050033
    [  474.794632] CR2: 0000000009600920 CR3: 0000002037422006 CR4: 00000000000606e0
    [  474.802052] Call Trace:
    [  474.804789]  compat_do_replace+0x1fb/0x2a3 [ebtables]
    [  474.810105]  compat_do_ebt_set_ctl+0x69/0xe6 [ebtables]
    [  474.815605]  ? try_module_get+0x37/0x42
    [  474.819716]  compat_nf_setsockopt+0x4f/0x6d
    [  474.824172]  compat_ip_setsockopt+0x7e/0x8c
    [  474.828641]  compat_raw_setsockopt+0x16/0x3a
    [  474.833220]  compat_sock_common_setsockopt+0x1d/0x24
    [  474.838458]  __compat_sys_setsockopt+0x17e/0x1b1
    [  474.843343]  ? __check_object_size+0x76/0x19a
    [  474.847960]  __ia32_compat_sys_socketcall+0x1cb/0x25b
    [  474.853276]  do_fast_syscall_32+0xaf/0xf6
    [  474.857548]  entry_SYSENTER_compat+0x6b/0x7a
    
    Signed-off-by: Francesco Ruggeri <fruggeri@arista.com>
    Acked-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Zubin Mithra <zsm@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b784e7a613d1df6f80ff229ec5d8ce45fb7222df
Author: Ben Hutchings <ben@decadent.org.uk>
Date:   Tue May 7 20:04:04 2019 +0100

    timer/debug: Change /proc/timer_stats from 0644 to 0600
    
    The timer_stats facility should filter and translate PIDs if opened
    from a non-initial PID namespace, to avoid leaking information about
    the wider system.  It should also not show kernel virtual addresses.
    Unfortunately it has now been removed upstream (as redundant)
    instead of being fixed.
    
    For stable, fix the leak by restricting access to root only.  A
    similar change was already made for the /proc/timer_list file.
    
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b16a6c99f88c16c9b4f736226b736d0c53320614
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Wed Apr 24 22:19:17 2019 +0200

    Bluetooth: Align minimum encryption key size for LE and BR/EDR connections
    
    commit d5bb334a8e171b262e48f378bd2096c0ea458265 upstream.
    
    The minimum encryption key size for LE connections is 56 bits and to
    align LE with BR/EDR, enforce 56 bits of minimum encryption key size for
    BR/EDR connections as well.
    
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c47ad93de73786aef31033e2aabd9df020e68cd
Author: Young Xiao <YangX92@hotmail.com>
Date:   Fri Apr 12 15:24:30 2019 +0800

    Bluetooth: hidp: fix buffer overflow
    
    commit a1616a5ac99ede5d605047a9012481ce7ff18b16 upstream.
    
    Struct ca is copied from userspace. It is not checked whether the "name"
    field is NULL terminated, which allows local users to obtain potentially
    sensitive information from kernel stack memory, via a HIDPCONNADD command.
    
    This vulnerability is similar to CVE-2011-1079.
    
    Signed-off-by: Young Xiao <YangX92@hotmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ee71083b16ff449757a6ceb232720f09607edc2
Author: Andrew Vasquez <andrewv@marvell.com>
Date:   Tue Apr 2 14:24:25 2019 -0700

    scsi: qla2xxx: Fix incorrect region-size setting in optrom SYSFS routines
    
    commit 5cbdae10bf11f96e30b4d14de7b08c8b490e903c upstream.
    
    Commit e6f77540c067 ("scsi: qla2xxx: Fix an integer overflow in sysfs
    code") incorrectly set 'optrom_region_size' to 'start+size', which can
    overflow option-rom boundaries when 'start' is non-zero.  Continue setting
    optrom_region_size to the proper adjusted value of 'size'.
    
    Fixes: e6f77540c067 ("scsi: qla2xxx: Fix an integer overflow in sysfs code")
    Cc: stable@vger.kernel.org
    Signed-off-by: Andrew Vasquez <andrewv@marvell.com>
    Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 43dae3a4e492472a4770979405e9aee9b6dc2969
Author: Prasad Sodagudi <psodagud@codeaurora.org>
Date:   Sun Mar 24 07:57:04 2019 -0700

    genirq: Prevent use-after-free and work list corruption
    
    [ Upstream commit 59c39840f5abf4a71e1810a8da71aaccd6c17d26 ]
    
    When irq_set_affinity_notifier() replaces the notifier, then the
    reference count on the old notifier is dropped which causes it to be
    freed. But nothing ensures that the old notifier is not longer queued
    in the work list. If it is queued this results in a use after free and
    possibly in work list corruption.
    
    Ensure that the work is canceled before the reference is dropped.
    
    Signed-off-by: Prasad Sodagudi <psodagud@codeaurora.org>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: marc.zyngier@arm.com
    Link: https://lkml.kernel.org/r/1553439424-6529-1-git-send-email-psodagud@codeaurora.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 17f93dcb6222d9116ed4713050e0e40e856a8ea4
Author: Joerg Roedel <jroedel@suse.de>
Date:   Fri Apr 12 12:50:31 2019 +0200

    iommu/amd: Set exclusion range correctly
    
    [ Upstream commit 3c677d206210f53a4be972211066c0f1cd47fe12 ]
    
    The exlcusion range limit register needs to contain the
    base-address of the last page that is part of the range, as
    bits 0-11 of this register are treated as 0xfff by the
    hardware for comparisons.
    
    So correctly set the exclusion range in the hardware to the
    last page which is _in_ the range.
    
    Fixes: b2026aa2dce44 ('x86, AMD IOMMU: add functions for programming IOMMU MMIO space')
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 47ebd4007edc562723695b93d310bd295b0c652f
Author: Varun Prakash <varun@chelsio.com>
Date:   Fri Apr 5 20:39:13 2019 +0530

    scsi: csiostor: fix missing data copy in csio_scsi_err_handler()
    
    [ Upstream commit 5c2442fd78998af60e13aba506d103f7f43f8701 ]
    
    If scsi cmd sglist is not suitable for DDP then csiostor driver uses
    preallocated buffers for DDP, because of this data copy is required from
    DDP buffer to scsi cmd sglist before calling ->scsi_done().
    
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0562cef837e24ad57f3b6aa3c3fa98b5140bb585
Author: Annaliese McDermond <nh6z@nh6z.net>
Date:   Sat Mar 30 09:02:02 2019 -0700

    ASoC: tlv320aic32x4: Fix Common Pins
    
    [ Upstream commit c63adb28f6d913310430f14c69f0a2ea55eed0cc ]
    
    The common pins were mistakenly not added to the DAPM graph.
    Adding these pins will allow valid graphs to be created.
    
    Signed-off-by: Annaliese McDermond <nh6z@nh6z.net>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e0124792043a96a294451e0be014f8251610f309
Author: Daniel Mack <daniel@zonque.org>
Date:   Wed Mar 20 22:41:56 2019 +0100

    ASoC: cs4270: Set auto-increment bit for register writes
    
    [ Upstream commit f0f2338a9cfaf71db895fa989ea7234e8a9b471d ]
    
    The CS4270 does not by default increment the register address on
    consecutive writes. During normal operation it doesn't matter as all
    register accesses are done individually. At resume time after suspend,
    however, the regcache code gathers the biggest possible block of
    registers to sync and sends them one on one go.
    
    To fix this, set the INCR bit in all cases.
    
    Signed-off-by: Daniel Mack <daniel@zonque.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a635ced71275ddcac986866fb1fdf4bbc37960e
Author: Rander Wang <rander.wang@linux.intel.com>
Date:   Fri Mar 8 16:38:57 2019 +0800

    ASoC:soc-pcm:fix a codec fixup issue in TDM case
    
    [ Upstream commit 570f18b6a8d1f0e60e8caf30e66161b6438dcc91 ]
    
    On HDaudio platforms, if playback is started when capture is working,
    there is no audible output.
    
    This can be root-caused to the use of the rx|tx_mask to store an HDaudio
    stream tag.
    
    If capture is stared before playback, rx_mask would be non-zero on HDaudio
    platform, then the channel number of playback, which is in the same codec
    dai with the capture, would be changed by soc_pcm_codec_params_fixup based
    on the tx_mask at first, then overwritten by this function based on rx_mask
    at last.
    
    According to the author of tx|rx_mask, tx_mask is for playback and rx_mask
    is for capture. And stream direction is checked at all other references of
    tx|rx_mask in ASoC, so here should be an error. This patch checks stream
    direction for tx|rx_mask for fixup function.
    
    This issue would affect not only HDaudio+ASoC, but also I2S codecs if the
    channel number based on rx_mask is not equal to the one for tx_mask. It could
    be rarely reproduecd because most drivers in kernel set the same channel number
    to tx|rx_mask or rx_mask is zero.
    
    Tested on all platforms using stream_tag & HDaudio and intel I2S platforms.
    
    Signed-off-by: Rander Wang <rander.wang@linux.intel.com>
    Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ec22b57b0527530cecda657f9f1ec2f8068150a0
Author: Jason Yan <yanaijie@huawei.com>
Date:   Tue Sep 25 10:56:54 2018 +0800

    scsi: libsas: fix a race condition when smp task timeout
    
    commit b90cd6f2b905905fb42671009dc0e27c310a16ae upstream.
    
    When the lldd is processing the complete sas task in interrupt and set the
    task stat as SAS_TASK_STATE_DONE, the smp timeout timer is able to be
    triggered at the same time. And smp_task_timedout() will complete the task
    wheter the SAS_TASK_STATE_DONE is set or not. Then the sas task may freed
    before lldd end the interrupt process. Thus a use-after-free will happen.
    
    Fix this by calling the complete() only when SAS_TASK_STATE_DONE is not
    set. And remove the check of the return value of the del_timer(). Once the
    LLDD sets DONE, it must call task->done(), which will call
    smp_task_done()->complete() and the task will be completed and freed
    correctly.
    
    Reported-by: chenxiang <chenxiang66@hisilicon.com>
    Signed-off-by: Jason Yan <yanaijie@huawei.com>
    CC: John Garry <john.garry@huawei.com>
    CC: Johannes Thumshirn <jthumshirn@suse.de>
    CC: Ewan Milne <emilne@redhat.com>
    CC: Christoph Hellwig <hch@lst.de>
    CC: Tomas Henzl <thenzl@redhat.com>
    CC: Dan Williams <dan.j.williams@intel.com>
    CC: Hannes Reinecke <hare@suse.com>
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Reviewed-by: John Garry <john.garry@huawei.com>
    Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Guenter Roeck <linux@roeck-us.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f52118781632f5eb8714b02c61bbdda6b6e73f3a
Author: Jacopo Mondi <jacopo+renesas@jmondi.org>
Date:   Fri Dec 29 07:22:26 2017 -0500

    media: v4l2: i2c: ov7670: Fix PLL bypass register values
    
    commit 61da76beef1e4f0b6ba7be4f8d0cf0dac7ce1f55 upstream.
    
    The following commits:
    commit f6dd927f34d6 ("[media] media: ov7670: calculate framerate properly for ov7675")
    commit 04ee6d92047e ("[media] media: ov7670: add possibility to bypass pll for ov7675")
    introduced the ability to bypass PLL multiplier and use input clock (xvclk)
    as pixel clock output frequency for ov7675 sensor.
    
    PLL is bypassed using register DBLV[7:6], according to ov7670 and ov7675
    sensor manuals. Macros used to set DBLV register seem wrong in the
    driver, as their values do not match what reported in the datasheet.
    
    Fix by changing DBLV_* macros to use bits [7:6] and set bits [3:0] to
    default 0x0a reserved value (according to datasheets).
    
    While at there, remove a write to DBLV register in
    "ov7675_set_framerate()" that over-writes the previous one to the same
    register that takes "info->pll_bypass" flag into account instead of setting PLL
    multiplier to 4x unconditionally.
    
    And, while at there, since "info->pll_bypass" is only used in
    set/get_framerate() functions used by ov7675 only, it is not necessary
    to check for the device id at probe time to make sure that when using
    ov7670 "info->pll_bypass" is set to false.
    
    Fixes: f6dd927f34d6 ("[media] media: ov7670: calculate framerate properly for ov7675")
    
    Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 56c85b204c3bb134104df508979162874bb41aa5
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Sat Dec 22 21:57:43 2018 -0700

    staging: iio: adt7316: fix the dac write calculation
    
    commit 78accaea117c1ae878774974fab91ac4a0b0e2b0 upstream.
    
    The lsb calculation is not masking the correct bits from the user input.
    Subtract 1 from (1 << offset) to correctly set up the mask to be applied
    to user input.
    
    The lsb register stores its value starting at the bit 7 position.
    adt7316_store_DAC() currently assumes the value is at the other end of the
    register. Shift the lsb value before storing it in a new variable lsb_reg,
    and write this variable to the lsb register.
    
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05aafb6243c81eab5fd834e4bcc1298d585916ec
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Sat Dec 22 21:57:42 2018 -0700

    staging: iio: adt7316: fix the dac read calculation
    
    commit 45130fb030aec26ac28b4bb23344901df3ec3b7f upstream.
    
    The calculation of the current dac value is using the wrong bits of the
    dac lsb register. Create two macros to shift the lsb register value into
    lsb position, depending on whether the dac is 10 or 12 bit. Initialize
    data to 0 so, with an 8 bit dac, the msb register value can be bitwise
    ORed with data.
    
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4e12fe2e5520d11084826d339b7b37191c6d4c83
Author: Jeremy Fertic <jeremyfertic@gmail.com>
Date:   Tue Dec 11 17:55:00 2018 -0700

    staging: iio: adt7316: allow adt751x to use internal vref for all dacs
    
    commit 10bfe7cc1739c22f0aa296b39e53f61e9e3f4d99 upstream.
    
    With adt7516/7/9, internal vref is available for dacs a and b, dacs c and
    d, or all dacs. The driver doesn't currently support internal vref for all
    dacs. Change the else if to an if so both bits are checked rather than
    just one or the other.
    
    Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
    Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9 driver")
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 19a81333239e0886fdbea8a8f622f855131285ed
Author: Malte Leip <malte@leip.net>
Date:   Sun May 5 20:01:30 2019 +0200

    usb: usbip: fix isoc packet num validation in get_pipe
    
    commit c409ca3be3c6ff3a1eeb303b191184e80d412862 upstream.
    
    Backport of the upstream commit, which fixed c6688ef9f297.
    c6688ef9f297 got backported as commit eebf31529012, as the unavailable
    function usb_endpoint_maxp_mult had to be replaced. The upstream commit
    removed the call to this function, so the backport is straightforward.
    
    Original commit message:
    
    Change the validation of number_of_packets in get_pipe to compare the
    number of packets to a fixed maximum number of packets allowed, set to
    be 1024. This number was chosen due to it being used by other drivers as
    well, for example drivers/usb/host/uhci-q.c
    
    Background/reason:
    The get_pipe function in stub_rx.c validates the number of packets in
    isochronous mode and aborts with an error if that number is too large,
    in order to prevent malicious input from possibly triggering large
    memory allocations. This was previously done by checking whether
    pdu->u.cmd_submit.number_of_packets is bigger than the number of packets
    that would be needed for pdu->u.cmd_submit.transfer_buffer_length bytes
    if all except possibly the last packet had maximum length, given by
    usb_endpoint_maxp(epd) *  usb_endpoint_maxp_mult(epd). This leads to an
    error if URBs with packets shorter than the maximum possible length are
    submitted, which is allowed according to
    Documentation/driver-api/usb/URB.rst and occurs for example with the
    snd-usb-audio driver.
    
    Fixes: eebf31529012 ("usbip: fix stub_rx: harden CMD_SUBMIT path to handle malicious input")
    Signed-off-by: Malte Leip <malte@leip.net>
    Cc: stable <stable@vger.kernel.org> # 3.18.x
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f3a2aa76996a2a9d2d266a4b3f915e3cbc865f8
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Mar 25 16:50:43 2019 +0100

    ARM: iop: don't use using 64-bit DMA masks
    
    [ Upstream commit 2125801ccce19249708ca3245d48998e70569ab8 ]
    
    clang warns about statically defined DMA masks from the DMA_BIT_MASK
    macro with length 64:
    
     arch/arm/mach-iop13xx/setup.c:303:35: error: shift count >= width of type [-Werror,-Wshift-count-overflow]
     static u64 iop13xx_adma_dmamask = DMA_BIT_MASK(64);
                                      ^~~~~~~~~~~~~~~~
     include/linux/dma-mapping.h:141:54: note: expanded from macro 'DMA_BIT_MASK'
     #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
                                                          ^ ~~~
    
    The ones in iop shouldn't really be 64 bit masks, so changing them
    to what the driver can support avoids the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 91b4d929ccb03138da415e17ca351423a6b01448
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Mar 25 16:50:42 2019 +0100

    ARM: orion: don't use using 64-bit DMA masks
    
    [ Upstream commit cd92d74d67c811dc22544430b9ac3029f5bd64c5 ]
    
    clang warns about statically defined DMA masks from the DMA_BIT_MASK
    macro with length 64:
    
    arch/arm/plat-orion/common.c:625:29: error: shift count >= width of type [-Werror,-Wshift-count-overflow]
                    .coherent_dma_mask      = DMA_BIT_MASK(64),
                                              ^~~~~~~~~~~~~~~~
    include/linux/dma-mapping.h:141:54: note: expanded from macro 'DMA_BIT_MASK'
     #define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
    
    The ones in orion shouldn't really be 64 bit masks, so changing them
    to what the driver can support avoids the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Olof Johansson <olof@lixom.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 77541ef954e30ee1aee9aa6f939e820d338ced66
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Tue Feb 19 08:49:56 2019 -0800

    xsysace: Fix error handling in ace_setup
    
    [ Upstream commit 47b16820c490149c2923e8474048f2c6e7557cab ]
    
    If xace hardware reports a bad version number, the error handling code
    in ace_setup() calls put_disk(), followed by queue cleanup. However, since
    the disk data structure has the queue pointer set, put_disk() also
    cleans and releases the queue. This results in blk_cleanup_queue()
    accessing an already released data structure, which in turn may result
    in a crash such as the following.
    
    [   10.681671] BUG: Kernel NULL pointer dereference at 0x00000040
    [   10.681826] Faulting instruction address: 0xc0431480
    [   10.682072] Oops: Kernel access of bad area, sig: 11 [#1]
    [   10.682251] BE PAGE_SIZE=4K PREEMPT Xilinx Virtex440
    [   10.682387] Modules linked in:
    [   10.682528] CPU: 0 PID: 1 Comm: swapper Tainted: G        W         5.0.0-rc6-next-20190218+ #2
    [   10.682733] NIP:  c0431480 LR: c043147c CTR: c0422ad8
    [   10.682863] REGS: cf82fbe0 TRAP: 0300   Tainted: G        W          (5.0.0-rc6-next-20190218+)
    [   10.683065] MSR:  00029000 <CE,EE,ME>  CR: 22000222  XER: 00000000
    [   10.683236] DEAR: 00000040 ESR: 00000000
    [   10.683236] GPR00: c043147c cf82fc90 cf82ccc0 00000000 00000000 00000000 00000002 00000000
    [   10.683236] GPR08: 00000000 00000000 c04310bc 00000000 22000222 00000000 c0002c54 00000000
    [   10.683236] GPR16: 00000000 00000001 c09aa39c c09021b0 c09021dc 00000007 c0a68c08 00000000
    [   10.683236] GPR24: 00000001 ced6d400 ced6dcf0 c0815d9c 00000000 00000000 00000000 cedf0800
    [   10.684331] NIP [c0431480] blk_mq_run_hw_queue+0x28/0x114
    [   10.684473] LR [c043147c] blk_mq_run_hw_queue+0x24/0x114
    [   10.684602] Call Trace:
    [   10.684671] [cf82fc90] [c043147c] blk_mq_run_hw_queue+0x24/0x114 (unreliable)
    [   10.684854] [cf82fcc0] [c04315bc] blk_mq_run_hw_queues+0x50/0x7c
    [   10.685002] [cf82fce0] [c0422b24] blk_set_queue_dying+0x30/0x68
    [   10.685154] [cf82fcf0] [c0423ec0] blk_cleanup_queue+0x34/0x14c
    [   10.685306] [cf82fd10] [c054d73c] ace_probe+0x3dc/0x508
    [   10.685445] [cf82fd50] [c052d740] platform_drv_probe+0x4c/0xb8
    [   10.685592] [cf82fd70] [c052abb0] really_probe+0x20c/0x32c
    [   10.685728] [cf82fda0] [c052ae58] driver_probe_device+0x68/0x464
    [   10.685877] [cf82fdc0] [c052b500] device_driver_attach+0xb4/0xe4
    [   10.686024] [cf82fde0] [c052b5dc] __driver_attach+0xac/0xfc
    [   10.686161] [cf82fe00] [c0528428] bus_for_each_dev+0x80/0xc0
    [   10.686314] [cf82fe30] [c0529b3c] bus_add_driver+0x144/0x234
    [   10.686457] [cf82fe50] [c052c46c] driver_register+0x88/0x15c
    [   10.686610] [cf82fe60] [c09de288] ace_init+0x4c/0xac
    [   10.686742] [cf82fe80] [c0002730] do_one_initcall+0xac/0x330
    [   10.686888] [cf82fee0] [c09aafd0] kernel_init_freeable+0x34c/0x478
    [   10.687043] [cf82ff30] [c0002c6c] kernel_init+0x18/0x114
    [   10.687188] [cf82ff40] [c000f2f0] ret_from_kernel_thread+0x14/0x1c
    [   10.687349] Instruction dump:
    [   10.687435] 3863ffd4 4bfffd70 9421ffd0 7c0802a6 93c10028 7c9e2378 93e1002c 38810008
    [   10.687637] 7c7f1b78 90010034 4bfffc25 813f008c <81290040> 75290100 4182002c 80810008
    [   10.688056] ---[ end trace 13c9ff51d41b9d40 ]---
    
    Fix the problem by setting the disk queue pointer to NULL before calling
    put_disk(). A more comprehensive fix might be to rearrange the code
    to check the hardware version before initializing data structures,
    but I don't know if this would have undesirable side effects, and
    it would increase the complexity of backporting the fix to older kernels.
    
    Fixes: 74489a91dd43a ("Add support for Xilinx SystemACE CompactFlash interface")
    Acked-by: Michal Simek <michal.simek@xilinx.com>
    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 b3a65e122a3999da0cbb89c721829739d7af0dda
Author: Mike Kravetz <mike.kravetz@oracle.com>
Date:   Fri Apr 5 18:39:06 2019 -0700

    hugetlbfs: fix memory leak for resv_map
    
    [ Upstream commit 58b6e5e8f1addd44583d61b0a03c0f5519527e35 ]
    
    When mknod is used to create a block special file in hugetlbfs, it will
    allocate an inode and kmalloc a 'struct resv_map' via resv_map_alloc().
    inode->i_mapping->private_data will point the newly allocated resv_map.
    However, when the device special file is opened bd_acquire() will set
    inode->i_mapping to bd_inode->i_mapping.  Thus the pointer to the
    allocated resv_map is lost and the structure is leaked.
    
    Programs to reproduce:
            mount -t hugetlbfs nodev hugetlbfs
            mknod hugetlbfs/dev b 0 0
            exec 30<> hugetlbfs/dev
            umount hugetlbfs/
    
    resv_map structures are only needed for inodes which can have associated
    page allocations.  To fix the leak, only allocate resv_map for those
    inodes which could possibly be associated with page allocations.
    
    Link: http://lkml.kernel.org/r/20190401213101.16476-1-mike.kravetz@oracle.com
    Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Reported-by: Yufen Yu <yuyufen@huawei.com>
    Suggested-by: Yufen Yu <yuyufen@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 202dff90b7278225e384a9fdd13e402f8f6fee39
Author: Michael Kelley <mikelley@microsoft.com>
Date:   Mon Apr 1 16:10:52 2019 +0000

    scsi: storvsc: Fix calculation of sub-channel count
    
    [ Upstream commit 382e06d11e075a40b4094b6ef809f8d4bcc7ab2a ]
    
    When the number of sub-channels offered by Hyper-V is >= the number of CPUs
    in the VM, calculate the correct number of sub-channels.  The current code
    produces one too many.
    
    This scenario arises only when the number of CPUs is artificially
    restricted (for example, with maxcpus=<n> on the kernel boot line), because
    Hyper-V normally offers a sub-channel count < number of CPUs.  While the
    current code doesn't break, the extra sub-channel is unbalanced across the
    CPUs (for example, a total of 5 channels on a VM with 4 CPUs).
    
    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: Long Li <longli@microsoft.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 44a476cf0bc2209c3c91ad9815cccc4a5ea2ca72
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Mar 26 01:39:50 2019 +0000

    jffs2: fix use-after-free on symlink traversal
    
    [ Upstream commit 4fdcfab5b5537c21891e22e65996d4d0dd8ab4ca ]
    
    free the symlink body after the same RCU delay we have for freeing the
    struct inode itself, so that traversal during RCU pathwalk wouldn't step
    into freed memory.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c452e33d4940eda5f7f9e173cbc9356de6aedc66
Author: Konstantin Khorenko <khorenko@virtuozzo.com>
Date:   Thu Mar 28 13:29:21 2019 +0300

    bonding: show full hw address in sysfs for slave entries
    
    [ Upstream commit 18bebc6dd3281955240062655a4df35eef2c46b3 ]
    
    Bond expects ethernet hwaddr for its slave, but it can be longer than 6
    bytes - infiniband interface for example.
    
     # cat /sys/devices/<skipped>/net/ib0/address
     80:00:02:08:fe:80:00:00:00:00:00:00:7c:fe:90:03:00:be:5d:e1
    
     # cat /sys/devices/<skipped>/net/ib0/bonding_slave/perm_hwaddr
     80:00:02:08:fe:80
    
    So print full hwaddr in sysfs "bonding_slave/perm_hwaddr" as well.
    
    Signed-off-by: Konstantin Khorenko <khorenko@virtuozzo.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b2eed39466f8faca272f89fbfdf47f7a67a4b8f1
Author: Arvind Sankar <niveditas98@gmail.com>
Date:   Sat Mar 2 11:01:17 2019 -0500

    igb: Fix WARN_ONCE on runtime suspend
    
    [ Upstream commit dabb8338be533c18f50255cf39ff4f66d4dabdbe ]
    
    The runtime_suspend device callbacks are not supposed to save
    configuration state or change the power state. Commit fb29f76cc566
    ("igb: Fix an issue that PME is not enabled during runtime suspend")
    changed the driver to not save configuration state during runtime
    suspend, however the driver callback still put the device into a
    low-power state. This causes a warning in the pci pm core and results in
    pci_pm_runtime_suspend not calling pci_save_state or pci_finish_runtime_suspend.
    
    Fix this by not changing the power state either, leaving that to pci pm
    core, and make the same change for suspend callback as well.
    
    Also move a couple of defines into the appropriate header file instead
    of inline in the .c file.
    
    Fixes: fb29f76cc566 ("igb: Fix an issue that PME is not enabled during runtime suspend")
    Signed-off-by: Arvind Sankar <niveditas98@gmail.com>
    Reviewed-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Tested-by: Aaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 00a9ea1b3a7dea4242a10dbf07fcbcb7d826e73d
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Mar 20 11:32:14 2019 +0100

    rtc: sh: Fix invalid alarm warning for non-enabled alarm
    
    [ Upstream commit 15d82d22498784966df8e4696174a16b02cc1052 ]
    
    When no alarm has been programmed on RSK-RZA1, an error message is
    printed during boot:
    
        rtc rtc0: invalid alarm value: 2019-03-14T255:255:255
    
    sh_rtc_read_alarm_value() returns 0xff when querying a hardware alarm
    field that is not enabled.  __rtc_read_alarm() validates the received
    alarm values, and fills in missing fields when needed.
    While 0xff is handled fine for the year, month, and day fields, and
    corrected as considered being out-of-range, this is not the case for the
    hour, minute, and second fields, where -1 is expected for missing
    fields.
    
    Fix this by returning -1 instead, as this value is handled fine for all
    fields.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 358e9483e84ac7cfa269856fa560eca307ab57dd
Author: He, Bo <bo.he@intel.com>
Date:   Thu Mar 14 02:28:21 2019 +0000

    HID: debug: fix race condition with between rdesc_show() and device removal
    
    [ Upstream commit cef0d4948cb0a02db37ebfdc320e127c77ab1637 ]
    
    There is a race condition that could happen if hid_debug_rdesc_show()
    is running while hdev is in the process of going away (device removal,
    system suspend, etc) which could result in NULL pointer dereference:
    
             BUG: unable to handle kernel paging request at 0000000783316040
             CPU: 1 PID: 1512 Comm: getevent Tainted: G     U     O 4.19.20-quilt-2e5dc0ac-00029-gc455a447dd55 #1
             RIP: 0010:hid_dump_device+0x9b/0x160
             Call Trace:
              hid_debug_rdesc_show+0x72/0x1d0
              seq_read+0xe0/0x410
              full_proxy_read+0x5f/0x90
              __vfs_read+0x3a/0x170
              vfs_read+0xa0/0x150
              ksys_read+0x58/0xc0
              __x64_sys_read+0x1a/0x20
              do_syscall_64+0x55/0x110
              entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Grab driver_input_lock to make sure the input device exists throughout the
    whole process of dumping the rdesc.
    
    [jkosina@suse.cz: update changelog a bit]
    Signed-off-by: he, bo <bo.he@intel.com>
    Signed-off-by: "Zhang, Jun" <jun.zhang@intel.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bc1c5d1ac4772cbc39e485ee94bdf2e9d8a2cd7d
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Fri Apr 19 13:52:38 2019 -0400

    USB: core: Fix bug caused by duplicate interface PM usage counter
    
    commit c2b71462d294cf517a0bc6e4fd6424d7cee5596f upstream.
    
    The syzkaller fuzzer reported a bug in the USB hub driver which turned
    out to be caused by a negative runtime-PM usage counter.  This allowed
    a hub to be runtime suspended at a time when the driver did not expect
    it.  The symptom is a WARNING issued because the hub's status URB is
    submitted while it is already active:
    
            URB 0000000031fb463e submitted while active
            WARNING: CPU: 0 PID: 2917 at drivers/usb/core/urb.c:363
    
    The negative runtime-PM usage count was caused by an unfortunate
    design decision made when runtime PM was first implemented for USB.
    At that time, USB class drivers were allowed to unbind from their
    interfaces without balancing the usage counter (i.e., leaving it with
    a positive count).  The core code would take care of setting the
    counter back to 0 before allowing another driver to bind to the
    interface.
    
    Later on when runtime PM was implemented for the entire kernel, the
    opposite decision was made: Drivers were required to balance their
    runtime-PM get and put calls.  In order to maintain backward
    compatibility, however, the USB subsystem adapted to the new
    implementation by keeping an independent usage counter for each
    interface and using it to automatically adjust the normal usage
    counter back to 0 whenever a driver was unbound.
    
    This approach involves duplicating information, but what is worse, it
    doesn't work properly in cases where a USB class driver delays
    decrementing the usage counter until after the driver's disconnect()
    routine has returned and the counter has been adjusted back to 0.
    Doing so would cause the usage counter to become negative.  There's
    even a warning about this in the USB power management documentation!
    
    As it happens, this is exactly what the hub driver does.  The
    kick_hub_wq() routine increments the runtime-PM usage counter, and the
    corresponding decrement is carried out by hub_event() in the context
    of the hub_wq work-queue thread.  This work routine may sometimes run
    after the driver has been unbound from its interface, and when it does
    it causes the usage counter to go negative.
    
    It is not possible for hub_disconnect() to wait for a pending
    hub_event() call to finish, because hub_disconnect() is called with
    the device lock held and hub_event() acquires that lock.  The only
    feasible fix is to reverse the original design decision: remove the
    duplicate interface-specific usage counter and require USB drivers to
    balance their runtime PM gets and puts.  As far as I know, all
    existing drivers currently do this.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+7634edaea4d0b341c625@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe1e6f511cb18bc403fcee5ea3fe5224ffa1ec49
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun May 5 15:31:28 2019 +0200

    USB: media: disable tlg2300 driver
    
    The tlg2300 driver was moved to the staging tree back in 3.19, and then
    removed entirely from the tree in 4.0.  Because it breaks with an
    upcoming fix for the USB power management logic, let's just disable it
    from 3.18.y in case anyone is actually using it, as they really
    shouldn't be anymore.
    
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 652c6e122fda6aec8754ac3a3aa4720860dbb836
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Apr 15 11:51:38 2019 -0400

    USB: core: Fix unterminated string returned by usb_string()
    
    commit c01c348ecdc66085e44912c97368809612231520 upstream.
    
    Some drivers (such as the vub300 MMC driver) expect usb_string() to
    return a properly NUL-terminated string, even when an error occurs.
    (In fact, vub300's probe routine doesn't bother to check the return
    code from usb_string().)  When the driver goes on to use an
    unterminated string, it leads to kernel errors such as
    stack-out-of-bounds, as found by the syzkaller USB fuzzer.
    
    An out-of-range string index argument is not at all unlikely, given
    that some devices don't provide string descriptors and therefore list
    0 as the value for their string indexes.  This patch makes
    usb_string() return a properly terminated empty string along with the
    -EINVAL error code when an out-of-range index is encountered.
    
    And since a USB string index is a single-byte value, indexes >= 256
    are just as invalid as values of 0 or below.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-by: syzbot+b75b85111c10b8d680f1@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 483dc306cb1de192d6f1e05bb60d3d01f1c19b77
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Apr 22 11:16:04 2019 -0400

    USB: w1 ds2490: Fix bug caused by improper use of altsetting array
    
    commit c114944d7d67f24e71562fcfc18d550ab787e4d4 upstream.
    
    The syzkaller USB fuzzer spotted a slab-out-of-bounds bug in the
    ds2490 driver.  This bug is caused by improper use of the altsetting
    array in the usb_interface structure (the array's entries are not
    always stored in numerical order), combined with a naive assumption
    that all interfaces probed by the driver will have the expected number
    of altsettings.
    
    The bug can be fixed by replacing references to the possibly
    non-existent intf->altsetting[alt] entry with the guaranteed-to-exist
    intf->cur_altsetting entry.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+d65f673b847a1a96cdba@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15c0d2672a4711fa277ca040e92af36009de4bf6
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Apr 23 14:48:29 2019 -0400

    USB: yurex: Fix protection fault after device removal
    
    commit ef61eb43ada6c1d6b94668f0f514e4c268093ff3 upstream.
    
    The syzkaller USB fuzzer found a general-protection-fault bug in the
    yurex driver.  The fault occurs when a device has been unplugged; the
    driver's interrupt-URB handler logs an error message referring to the
    device by name, after the device has been unregistered and its name
    deallocated.
    
    This problem is caused by the fact that the interrupt URB isn't
    cancelled until the driver's private data structure is released, which
    can happen long after the device is gone.  The cure is to make sure
    that the interrupt URB is killed before yurex_disconnect() returns;
    this is exactly the sort of thing that usb_poison_urb() was meant for.
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+2eb9121678bdb36e6d57@syzkaller.appspotmail.com
    CC: <stable@vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f4d6bb3a95bee415639f1abd27e5ac1c649dbde9
Author: Eric Dumazet <edumazet@google.com>
Date:   Sat Apr 27 16:49:06 2019 -0700

    ipv6/flowlabel: wait rcu grace period before put_pid()
    
    [ Upstream commit 6c0afef5fb0c27758f4d52b2210c61b6bd8b4470 ]
    
    syzbot was able to catch a use-after-free read in pid_nr_ns() [1]
    
    ip6fl_seq_show() seems to use RCU protection, dereferencing fl->owner.pid
    but fl_free() releases fl->owner.pid before rcu grace period is started.
    
    [1]
    
    BUG: KASAN: use-after-free in pid_nr_ns+0x128/0x140 kernel/pid.c:407
    Read of size 4 at addr ffff888094012a04 by task syz-executor.0/18087
    
    CPU: 0 PID: 18087 Comm: syz-executor.0 Not tainted 5.1.0-rc6+ #89
    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
     __asan_report_load4_noabort+0x14/0x20 mm/kasan/generic_report.c:131
     pid_nr_ns+0x128/0x140 kernel/pid.c:407
     ip6fl_seq_show+0x2f8/0x4f0 net/ipv6/ip6_flowlabel.c:794
     seq_read+0xad3/0x1130 fs/seq_file.c:268
     proc_reg_read+0x1fe/0x2c0 fs/proc/inode.c:227
     do_loop_readv_writev fs/read_write.c:701 [inline]
     do_loop_readv_writev fs/read_write.c:688 [inline]
     do_iter_read+0x4a9/0x660 fs/read_write.c:922
     vfs_readv+0xf0/0x160 fs/read_write.c:984
     kernel_readv fs/splice.c:358 [inline]
     default_file_splice_read+0x475/0x890 fs/splice.c:413
     do_splice_to+0x12a/0x190 fs/splice.c:876
     splice_direct_to_actor+0x2d2/0x970 fs/splice.c:953
     do_splice_direct+0x1da/0x2a0 fs/splice.c:1062
     do_sendfile+0x597/0xd00 fs/read_write.c:1443
     __do_sys_sendfile64 fs/read_write.c:1498 [inline]
     __se_sys_sendfile64 fs/read_write.c:1490 [inline]
     __x64_sys_sendfile64+0x15a/0x220 fs/read_write.c:1490
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x458da9
    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:00007f300d24bc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000028
    RAX: ffffffffffffffda RBX: 0000000000000004 RCX: 0000000000458da9
    RDX: 00000000200000c0 RSI: 0000000000000008 RDI: 0000000000000007
    RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 000000000000005a R11: 0000000000000246 R12: 00007f300d24c6d4
    R13: 00000000004c5fa3 R14: 00000000004da748 R15: 00000000ffffffff
    
    Allocated by task 17543:
     save_stack+0x45/0xd0 mm/kasan/common.c:75
     set_track mm/kasan/common.c:87 [inline]
     __kasan_kmalloc mm/kasan/common.c:497 [inline]
     __kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:470
     kasan_slab_alloc+0xf/0x20 mm/kasan/common.c:505
     slab_post_alloc_hook mm/slab.h:437 [inline]
     slab_alloc mm/slab.c:3393 [inline]
     kmem_cache_alloc+0x11a/0x6f0 mm/slab.c:3555
     alloc_pid+0x55/0x8f0 kernel/pid.c:168
     copy_process.part.0+0x3b08/0x7980 kernel/fork.c:1932
     copy_process kernel/fork.c:1709 [inline]
     _do_fork+0x257/0xfd0 kernel/fork.c:2226
     __do_sys_clone kernel/fork.c:2333 [inline]
     __se_sys_clone kernel/fork.c:2327 [inline]
     __x64_sys_clone+0xbf/0x150 kernel/fork.c:2327
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Freed by task 7789:
     save_stack+0x45/0xd0 mm/kasan/common.c:75
     set_track mm/kasan/common.c:87 [inline]
     __kasan_slab_free+0x102/0x150 mm/kasan/common.c:459
     kasan_slab_free+0xe/0x10 mm/kasan/common.c:467
     __cache_free mm/slab.c:3499 [inline]
     kmem_cache_free+0x86/0x260 mm/slab.c:3765
     put_pid.part.0+0x111/0x150 kernel/pid.c:111
     put_pid+0x20/0x30 kernel/pid.c:105
     fl_free+0xbe/0xe0 net/ipv6/ip6_flowlabel.c:102
     ip6_fl_gc+0x295/0x3e0 net/ipv6/ip6_flowlabel.c:152
     call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
     expire_timers kernel/time/timer.c:1362 [inline]
     __run_timers kernel/time/timer.c:1681 [inline]
     __run_timers kernel/time/timer.c:1649 [inline]
     run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
     __do_softirq+0x266/0x95a kernel/softirq.c:293
    
    The buggy address belongs to the object at ffff888094012a00
     which belongs to the cache pid_2 of size 88
    The buggy address is located 4 bytes inside of
     88-byte region [ffff888094012a00, ffff888094012a58)
    The buggy address belongs to the page:
    page:ffffea0002500480 count:1 mapcount:0 mapping:ffff88809a483080 index:0xffff888094012980
    flags: 0x1fffc0000000200(slab)
    raw: 01fffc0000000200 ffffea00018a3508 ffffea0002524a88 ffff88809a483080
    raw: ffff888094012980 ffff888094012000 000000010000001b 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888094012900: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
     ffff888094012980: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
    >ffff888094012a00: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
                       ^
     ffff888094012a80: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
     ffff888094012b00: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
    
    Fixes: 4f82f45730c6 ("net ip6 flowlabel: Make owner a union of struct pid * and kuid_t")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Eric W. Biederman <ebiederm@xmission.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 6ca4b4080c10536818dcf3590a0dc54162babd24
Author: Willem de Bruijn <willemb@google.com>
Date:   Mon Apr 29 11:53:18 2019 -0400

    packet: validate msg_namelen in send directly
    
    [ Upstream commit 486efdc8f6ce802b27e15921d2353cc740c55451 ]
    
    Packet sockets in datagram mode take a destination address. Verify its
    length before passing to dev_hard_header.
    
    Prior to 2.6.14-rc3, the send code ignored sll_halen. This is
    established behavior. Directly compare msg_namelen to dev->addr_len.
    
    Change v1->v2: initialize addr in all paths
    
    Fixes: 6b8d95f1795c4 ("packet: validate address length if non-zero")
    Suggested-by: David Laight <David.Laight@aculab.com>
    Signed-off-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 91c38d754460efab3e91f7bfec1cecbdcfe8384d
Author: Willem de Bruijn <willemb@google.com>
Date:   Thu Apr 25 12:06:54 2019 -0400

    ipv6: invert flowlabel sharing check in process and user mode
    
    [ Upstream commit 95c169251bf734aa555a1e8043e4d88ec97a04ec ]
    
    A request for a flowlabel fails in process or user exclusive mode must
    fail if the caller pid or uid does not match. Invert the test.
    
    Previously, the test was unsafe wrt PID recycling, but indeed tested
    for inequality: fl1->owner != fl->owner
    
    Fixes: 4f82f45730c68 ("net ip6 flowlabel: Make owner a union of struct pid* and kuid_t")
    Signed-off-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 1e584073efa2619a410f3448e19c9e61c6a26155
Author: Shmulik Ladkani <shmulik@metanetworks.com>
Date:   Mon Apr 29 16:39:30 2019 +0300

    ipv4: ip_do_fragment: Preserve skb_iif during fragmentation
    
    [ Upstream commit d2f0c961148f65bc73eda72b9fa3a4e80973cb49 ]
    
    Previously, during fragmentation after forwarding, skb->skb_iif isn't
    preserved, i.e. 'ip_copy_metadata' does not copy skb_iif from given
    'from' skb.
    
    As a result, ip_do_fragment's creates fragments with zero skb_iif,
    leading to inconsistent behavior.
    
    Assume for example an eBPF program attached at tc egress (post
    forwarding) that examines __sk_buff->ingress_ifindex:
     - the correct iif is observed if forwarding path does not involve
       fragmentation/refragmentation
     - a bogus iif is observed if forwarding path involves
       fragmentation/refragmentatiom
    
    Fix, by preserving skb_iif during 'ip_copy_metadata'.
    
    Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2e7cf41baba02496190fe1d74e1ad44ec52382c
Author: Changbin Du <changbin.du@gmail.com>
Date:   Mon Mar 25 15:16:47 2019 +0000

    kconfig/[mn]conf: handle backspace (^H) key
    
    [ Upstream commit 9c38f1f044080392603c497ecca4d7d09876ff99 ]
    
    Backspace is not working on some terminal emulators which do not send the
    key code defined by terminfo. Terminals either send '^H' (8) or '^?' (127).
    But currently only '^?' is handled. Let's also handle '^H' for those
    terminals.
    
    Signed-off-by: Changbin Du <changbin.du@gmail.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit c2e5f31ccbf23d3b12545cc3df137a549e3d1bbb
Author: raymond pang <raymondpangxd@gmail.com>
Date:   Thu Mar 28 12:19:25 2019 +0000

    libata: fix using DMA buffers on stack
    
    [ Upstream commit dd08a8d9a66de4b54575c294a92630299f7e0fe7 ]
    
    When CONFIG_VMAP_STACK=y, __pa() returns incorrect physical address for
    a stack virtual address. Stack DMA buffers must be avoided.
    
    Signed-off-by: raymond pang <raymondpangxd@gmail.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit ef269561a9def028bca22a382004af91b1308b0f
Author: Steffen Maier <maier@linux.ibm.com>
Date:   Tue Mar 26 14:37:00 2019 +0100

    scsi: zfcp: reduce flood of fcrscn1 trace records on multi-element RSCN
    
    [ Upstream commit c8206579175c34a2546de8a74262456278a7795a ]
    
    If an incoming ELS of type RSCN contains more than one element, zfcp
    suboptimally causes repeated erp trigger NOP trace records for each
    previously failed port. These could be ports that went away.  It loops over
    each RSCN element, and for each of those in an inner loop over all
    zfcp_ports.
    
    The trigger to recover failed ports should be just the reception of some
    RSCN, no matter how many elements it has. So we can loop over failed ports
    separately, and only then loop over each RSCN element to handle the
    non-failed ports.
    
    The call chain was:
    
      zfcp_fc_incoming_rscn
        for (i = 1; i < no_entries; i++)
          _zfcp_fc_incoming_rscn
            list_for_each_entry(port, &adapter->port_list, list)
              if (masked port->d_id match) zfcp_fc_test_link
              if (!port->d_id) zfcp_erp_port_reopen "fcrscn1"   <===
    
    In order the reduce the "flooding" of the REC trace area in such cases, we
    factor out handling the failed ports to be outside of the entries loop:
    
      zfcp_fc_incoming_rscn
        if (no_entries > 1)                                     <===
          list_for_each_entry(port, &adapter->port_list, list)  <===
            if (!port->d_id) zfcp_erp_port_reopen "fcrscn1"     <===
        for (i = 1; i < no_entries; i++)
          _zfcp_fc_incoming_rscn
            list_for_each_entry(port, &adapter->port_list, list)
              if (masked port->d_id match) zfcp_fc_test_link
    
    Abbreviated example trace records before this code change:
    
    Tag            : fcrscn1
    WWPN           : 0x500507630310d327
    ERP want       : 0x02
    ERP need       : 0x02
    
    Tag            : fcrscn1
    WWPN           : 0x500507630310d327
    ERP want       : 0x02
    ERP need       : 0x00                 NOP => superfluous trace record
    
    The last trace entry repeats if there are more than 2 RSCN elements.
    
    Signed-off-by: Steffen Maier <maier@linux.ibm.com>
    Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
    Reviewed-by: Jens Remus <jremus@linux.ibm.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit d98c0b86e7a1f3356f48d8d2d5f8d1d1dd9b774c
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Mar 26 01:38:58 2019 +0000

    ceph: fix use-after-free on symlink traversal
    
    [ Upstream commit daf5cc27eed99afdea8d96e71b89ba41f5406ef6 ]
    
    free the symlink body after the same RCU delay we have for freeing the
    struct inode itself, so that traversal during RCU pathwalk wouldn't step
    into freed memory.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Reviewed-by: Jeff Layton <jlayton@kernel.org>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit a826eff401e6d15139635e1dcc04ed6930387d4f
Author: Mukesh Ojha <mojha@codeaurora.org>
Date:   Tue Mar 26 13:42:22 2019 +0530

    usb: u132-hcd: fix resource leak
    
    [ Upstream commit f276e002793cdb820862e8ea8f76769d56bba575 ]
    
    if platform_driver_register fails, cleanup the allocated resource
    gracefully.
    
    Signed-off-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 61d58619196045afd73f8a11afa1ce8aa6649f23
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Thu Mar 14 01:30:59 2019 -0500

    scsi: qla4xxx: fix a potential NULL pointer dereference
    
    [ Upstream commit fba1bdd2a9a93f3e2181ec1936a3c2f6b37e7ed6 ]
    
    In case iscsi_lookup_endpoint fails, the fix returns -EINVAL to avoid NULL
    pointer dereference.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Acked-by: Manish Rangankar <mrangankar@marvell.com>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 0f1cf480956c90f3f4e95230347549fa66fd9d8e
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Fri Mar 22 11:04:08 2019 +0800

    net: ibm: fix possible object reference leak
    
    [ Upstream commit be693df3cf9dd113ff1d2c0d8150199efdba37f6 ]
    
    The call to ehea_get_eth_dn returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./drivers/net/ethernet/ibm/ehea/ehea_main.c:3163:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 3154, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: Douglas Miller <dougmill@linux.ibm.com>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: netdev@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 90a9d6d23c0eef54f1eed9d403d7e6d2aea9832d
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Mar 20 15:02:00 2019 +0100

    net: ks8851: Set initial carrier state to down
    
    [ Upstream commit 9624bafa5f6418b9ca5b3f66d1f6a6a2e8bf6d4c ]
    
    The ks8851 chip's initial carrier state is down. A Link Change Interrupt
    is signaled once interrupts are enabled if the carrier is up.
    
    The ks8851 driver has it backwards by assuming that the initial carrier
    state is up. The state is therefore misrepresented if the interface is
    opened with no cable attached. Fix it.
    
    The Link Change interrupt is sometimes not signaled unless the P1MBSR
    register (which contains the Link Status bit) is read on ->ndo_open().
    This might be a hardware erratum. Read the register by calling
    mii_check_link(), which has the desirable side effect of setting the
    carrier state to down if the cable was detached while the interface was
    closed.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Ben Dooks <ben.dooks@codethink.co.uk>
    Cc: Tristram Ha <Tristram.Ha@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit cd30c290a14d1c824ace33f0cc432b2a4615be86
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Mar 20 15:02:00 2019 +0100

    net: ks8851: Delay requesting IRQ until opened
    
    [ Upstream commit d268f31552794abf5b6aa5af31021643411f25f5 ]
    
    The ks8851 driver currently requests the IRQ before registering the
    net_device.  Because the net_device name is used as IRQ name and is
    still "eth%d" when the IRQ is requested, it's impossibe to tell IRQs
    apart if multiple ks8851 chips are present.  Most other drivers delay
    requesting the IRQ until the net_device is opened.  Do the same.
    
    The driver doesn't enable interrupts on the chip before opening the
    net_device and disables them when closing it, so there doesn't seem to
    be a need to request the IRQ already on probe.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Ben Dooks <ben.dooks@codethink.co.uk>
    Cc: Tristram Ha <Tristram.Ha@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 76fc3b4b21c0888d314eba53953ac764b90e2bea
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Mar 20 15:02:00 2019 +0100

    net: ks8851: Reassert reset pin if chip ID check fails
    
    [ Upstream commit 761cfa979a0c177d6c2d93ef5585cd79ae49a7d5 ]
    
    Commit 73fdeb82e963 ("net: ks8851: Add optional vdd_io regulator and
    reset gpio") amended the ks8851 driver to briefly assert the chip's
    reset pin on probe. It also amended the probe routine's error path to
    reassert the reset pin if a subsequent initialization step fails.
    
    However the commit misplaced reassertion of the reset pin in the error
    path such that it is not performed if the check of the Chip ID and
    Enable Register (CIDER) fails. The error path is therefore slightly
    asymmetrical to the probe routine's body. Fix it.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Stephen Boyd <sboyd@codeaurora.org>
    Cc: Nishanth Menon <nm@ti.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 47d93a1675553cc47228f742d021b2d2b0d4cbf1
Author: Lukas Wunner <lukas@wunner.de>
Date:   Wed Mar 20 15:02:00 2019 +0100

    net: ks8851: Dequeue RX packets explicitly
    
    [ Upstream commit 536d3680fd2dab5c39857d62a3e084198fc74ff9 ]
    
    The ks8851 driver lets the chip auto-dequeue received packets once they
    have been read in full. It achieves that by setting the ADRFE flag in
    the RXQCR register ("Auto-Dequeue RXQ Frame Enable").
    
    However if allocation of a packet's socket buffer or retrieval of the
    packet over the SPI bus fails, the packet will not have been read in
    full and is not auto-dequeued. Such partial retrieval of a packet
    confuses the chip's RX queue management:  On the next RX interrupt,
    the first packet read from the queue will be the one left there
    previously and this one can be retrieved without issues. But for any
    newly received packets, the frame header status and byte count registers
    (RXFHSR and RXFHBCR) contain bogus values, preventing their retrieval.
    
    The chip allows explicitly dequeueing a packet from the RX queue by
    setting the RRXEF flag in the RXQCR register ("Release RX Error Frame").
    This could be used to dequeue the packet in case of an error, but if
    that error is a failed SPI transfer, it is unknown if the packet was
    transferred in full and was auto-dequeued or if it was only transferred
    in part and requires an explicit dequeue. The safest approach is thus
    to always dequeue packets explicitly and forgo auto-dequeueing.
    
    Without this change, I've witnessed packet retrieval break completely
    when an SPI DMA transfer fails, requiring a chip reset. Explicit
    dequeueing magically fixes this and makes packet retrieval absolutely
    robust for me.
    
    The chip's documentation suggests auto-dequeuing and uses the RRXEF
    flag only to dequeue error frames which the driver doesn't want to
    retrieve. But that seems to be a fair-weather approach.
    
    Signed-off-by: Lukas Wunner <lukas@wunner.de>
    Cc: Frank Pavlic <f.pavlic@kunbus.de>
    Cc: Ben Dooks <ben.dooks@codethink.co.uk>
    Cc: Tristram Ha <Tristram.Ha@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 906dbadf304e859314dc2f96ebfb126f002c90cf
Author: Guido Kiener <guido@kiener-muenchen.de>
Date:   Mon Mar 18 09:18:34 2019 +0100

    usb: gadget: net2272: Fix net2272_dequeue()
    
    [ Upstream commit 091dacc3cc10979ab0422f0a9f7fcc27eee97e69 ]
    
    Restore the status of ep->stopped in function net2272_dequeue().
    
    When the given request is not found in the endpoint queue
    the function returns -EINVAL without restoring the state of
    ep->stopped. Thus the endpoint keeps blocked and does not transfer
    any data anymore.
    
    This fix is only compile-tested, since we do not have a
    corresponding hardware. An analogous fix was tested in the sibling
    driver. See "usb: gadget: net2280: Fix net2280_dequeue()"
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Guido Kiener <guido.kiener@rohde-schwarz.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 1da2fd0163142b8dc2608459111ca3c49115877d
Author: Guido Kiener <guido@kiener-muenchen.de>
Date:   Tue Mar 19 19:12:03 2019 +0100

    usb: gadget: net2280: Fix overrun of OUT messages
    
    [ Upstream commit 9d6a54c1430647355a5e23434881b2ca3d192b48 ]
    
    The OUT endpoint normally blocks (NAK) subsequent packets when a
    short packet was received and returns an incomplete queue entry to
    the gadget driver. Thereby the gadget driver can detect a short packet
    when reading queue entries with a length that is not equal to a
    multiple of packet size.
    
    The start_queue() function enables receiving OUT packets regardless of
    the content of the OUT FIFO. This results in a race: With the current
    code, it's possible that the "!ep->is_in && (readl(&ep->regs->ep_stat)
    & BIT(NAK_OUT_PACKETS))" test in start_dma() will fail, then a short
    packet will be received, and then start_queue() will call
    stop_out_naking(). That's what we don't want (OUT naking gets turned
    off while there is data in the FIFO) because then the next driver
    request might receive a mixture of old and new packets.
    
    With the patch, this race can't occur because the FIFO's state is
    tested after we know that OUT naking is already turned on, and OUT
    naking is stopped only when both of the conditions are met.  This
    ensures that all received data is delivered to the gadget driver,
    which can detect a short packet now before new packets are appended
    to the last short packet.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Guido Kiener <guido.kiener@rohde-schwarz.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit 65e6cca34beb912d33bac82dffe8848ad1cc3cf0
Author: Aditya Pakki <pakki001@umn.edu>
Date:   Thu Mar 14 15:31:40 2019 -0500

    qlcnic: Avoid potential NULL pointer dereference
    
    [ Upstream commit 5bf7295fe34a5251b1d241b9736af4697b590670 ]
    
    netdev_alloc_skb can fail and return a NULL pointer which is
    dereferenced without a check. The patch avoids such a scenario.
    
    Signed-off-by: Aditya Pakki <pakki001@umn.edu>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org>

commit a0118894ef08a84a3bae73639878c610bec80330
Author: Vinod Koul <vkoul@kernel.org>
Date:   Mon Apr 22 15:15:32 2019 +0530

    net: stmmac: move stmmac_check_ether_addr() to driver probe
    
    [ Upstream commit b561af36b1841088552464cdc3f6371d92f17710 ]
    
    stmmac_check_ether_addr() checks the MAC address and assigns one in
    driver open(). In many cases when we create slave netdevice, the dev
    addr is inherited from master but the master dev addr maybe NULL at
    that time, so move this call to driver probe so that address is
    always valid.
    
    Signed-off-by: Xiaofei Shen <xiaofeis@codeaurora.org>
    Tested-by: Xiaofei Shen <xiaofeis@codeaurora.org>
    Signed-off-by: Sneh Shah <snehshah@codeaurora.org>
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5466bd95f6e335ec3577db222d70ec0d019deadd
Author: Hangbin Liu <liuhangbin@gmail.com>
Date:   Fri Apr 19 14:31:00 2019 +0800

    team: fix possible recursive locking when add slaves
    
    [ Upstream commit 925b0c841e066b488cc3a60272472b2c56300704 ]
    
    If we add a bond device which is already the master of the team interface,
    we will hold the team->lock in team_add_slave() first and then request the
    lock in team_set_mac_address() again. The functions are called like:
    
    - team_add_slave()
     - team_port_add()
       - team_port_enter()
         - team_modeop_port_enter()
           - __set_port_dev_addr()
             - dev_set_mac_address()
               - bond_set_mac_address()
                 - dev_set_mac_address()
                   - team_set_mac_address
    
    Although team_upper_dev_link() would check the upper devices but it is
    called too late. Fix it by adding a checking before processing the slave.
    
    v2: Do not split the string in netdev_err()
    
    Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f37fb00c1c4fe9b791e65f58eb3a2bd17e97cfce
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Apr 24 08:04:05 2019 -0700

    ipv4: add sanity checks in ipv4_link_failure()
    
    [ Upstream commit 20ff83f10f113c88d0bb74589389b05250994c16 ]
    
    Before calling __ip_options_compile(), we need to ensure the network
    header is a an IPv4 one, and that it is already pulled in skb->head.
    
    RAW sockets going through a tunnel can end up calling ipv4_link_failure()
    with total garbage in the skb, or arbitrary lengthes.
    
    syzbot report :
    
    BUG: KASAN: stack-out-of-bounds in memcpy include/linux/string.h:355 [inline]
    BUG: KASAN: stack-out-of-bounds in __ip_options_echo+0x294/0x1120 net/ipv4/ip_options.c:123
    Write of size 69 at addr ffff888096abf068 by task syz-executor.4/9204
    
    CPU: 0 PID: 9204 Comm: syz-executor.4 Not tainted 5.1.0-rc5+ #77
    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:133
     memcpy include/linux/string.h:355 [inline]
     __ip_options_echo+0x294/0x1120 net/ipv4/ip_options.c:123
     __icmp_send+0x725/0x1400 net/ipv4/icmp.c:695
     ipv4_link_failure+0x29f/0x550 net/ipv4/route.c:1204
     dst_link_failure include/net/dst.h:427 [inline]
     vti6_xmit net/ipv6/ip6_vti.c:514 [inline]
     vti6_tnl_xmit+0x10d4/0x1c0c net/ipv6/ip6_vti.c:553
     __netdev_start_xmit include/linux/netdevice.h:4414 [inline]
     netdev_start_xmit include/linux/netdevice.h:4423 [inline]
     xmit_one net/core/dev.c:3292 [inline]
     dev_hard_start_xmit+0x1b2/0x980 net/core/dev.c:3308
     __dev_queue_xmit+0x271d/0x3060 net/core/dev.c:3878
     dev_queue_xmit+0x18/0x20 net/core/dev.c:3911
     neigh_direct_output+0x16/0x20 net/core/neighbour.c:1527
     neigh_output include/net/neighbour.h:508 [inline]
     ip_finish_output2+0x949/0x1740 net/ipv4/ip_output.c:229
     ip_finish_output+0x73c/0xd50 net/ipv4/ip_output.c:317
     NF_HOOK_COND include/linux/netfilter.h:278 [inline]
     ip_output+0x21f/0x670 net/ipv4/ip_output.c:405
     dst_output include/net/dst.h:444 [inline]
     NF_HOOK include/linux/netfilter.h:289 [inline]
     raw_send_hdrinc net/ipv4/raw.c:432 [inline]
     raw_sendmsg+0x1d2b/0x2f20 net/ipv4/raw.c:663
     inet_sendmsg+0x147/0x5d0 net/ipv4/af_inet.c:798
     sock_sendmsg_nosec net/socket.c:651 [inline]
     sock_sendmsg+0xdd/0x130 net/socket.c:661
     sock_write_iter+0x27c/0x3e0 net/socket.c:988
     call_write_iter include/linux/fs.h:1866 [inline]
     new_sync_write+0x4c7/0x760 fs/read_write.c:474
     __vfs_write+0xe4/0x110 fs/read_write.c:487
     vfs_write+0x20c/0x580 fs/read_write.c:549
     ksys_write+0x14f/0x2d0 fs/read_write.c:599
     __do_sys_write fs/read_write.c:611 [inline]
     __se_sys_write fs/read_write.c:608 [inline]
     __x64_sys_write+0x73/0xb0 fs/read_write.c:608
     do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x458c29
    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:00007f293b44bc78 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 0000000000458c29
    RDX: 0000000000000014 RSI: 00000000200002c0 RDI: 0000000000000003
    RBP: 000000000073bf00 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f293b44c6d4
    R13: 00000000004c8623 R14: 00000000004ded68 R15: 00000000ffffffff
    
    The buggy address belongs to the page:
    page:ffffea00025aafc0 count:0 mapcount:0 mapping:0000000000000000 index:0x0
    flags: 0x1fffc0000000000()
    raw: 01fffc0000000000 0000000000000000 ffffffff025a0101 0000000000000000
    raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
    page dumped because: kasan: bad access detected
    
    Memory state around the buggy address:
     ffff888096abef80: 00 00 00 f2 f2 f2 f2 f2 00 00 00 00 00 00 00 f2
     ffff888096abf000: f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00
    >ffff888096abf080: 00 00 f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00
                             ^
     ffff888096abf100: 00 00 00 00 f1 f1 f1 f1 00 00 f3 f3 00 00 00 00
     ffff888096abf180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Fixes: ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Stephen Suryaputra <ssuryaextr@gmail.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 7f29d9b03ac7b06cae653546cc2d44ac87527038
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Mon Apr 29 15:56:26 2019 +0200

    Revert "block/loop: Use global lock for ioctl() operation."
    
    This reverts commit a17189a0e107ee316b3fff61217f5a037357d65e which is
    commit 310ca162d779efee8a2dc3731439680f3e9c1e86 upstream.
    
    Jan Kara has reported seeing problems with this patch applied, as has
    Salvatore Bonaccorso, so let's drop it for now.
    
    Reported-by: Salvatore Bonaccorso <carnil@debian.org>
    Reported-by: Jan Kara <jack@suse.cz>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9331b51b7b059eb4dcf73f6cf766791cfc365859
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Apr 15 00:43:00 2019 +0200

    netfilter: ebtables: CONFIG_COMPAT: drop a bogus WARN_ON
    
    commit 7caa56f006e9d712b44f27b32520c66420d5cbc6 upstream.
    
    It means userspace gave us a ruleset where there is some other
    data after the ebtables target but before the beginning of the next rule.
    
    Fixes: 81e675c227ec ("netfilter: ebtables: add CONFIG_COMPAT support")
    Reported-by: syzbot+659574e7bcc7f7eb4df7@syzkaller.appspotmail.com
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dcbb0ca6856c345af77063d652edb0c350a0ffe1
Author: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Date:   Sat Mar 30 10:21:07 2019 +0900

    NFS: Forbid setting AF_INET6 to "struct sockaddr_in"->sin_family.
    
    commit 7c2bd9a39845bfb6d72ddb55ce737650271f6f96 upstream.
    
    syzbot is reporting uninitialized value at rpc_sockaddr2uaddr() [1]. This
    is because syzbot is setting AF_INET6 to "struct sockaddr_in"->sin_family
    (which is embedded into user-visible "struct nfs_mount_data" structure)
    despite nfs23_validate_mount_data() cannot pass sizeof(struct sockaddr_in6)
    bytes of AF_INET6 address to rpc_sockaddr2uaddr().
    
    Since "struct nfs_mount_data" structure is user-visible, we can't change
    "struct nfs_mount_data" to use "struct sockaddr_storage". Therefore,
    assuming that everybody is using AF_INET family when passing address via
    "struct nfs_mount_data"->addr, reject if its sin_family is not AF_INET.
    
    [1] https://syzkaller.appspot.com/bug?id=599993614e7cbbf66bc2656a919ab2a95fb5d75c
    
    Reported-by: syzbot <syzbot+047a11c361b872896a4f@syzkaller.appspotmail.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ab3ca7f14619a36ae7fc66d92a485672a12c3db
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Thu Apr 25 22:24:05 2019 -0700

    fs/proc/proc_sysctl.c: Fix a NULL pointer dereference
    
    commit 89189557b47b35683a27c80ee78aef18248eefb4 upstream.
    
    Syzkaller report this:
    
      sysctl could not get directory: /net//bridge -12
      kasan: CONFIG_KASAN_INLINE enabled
      kasan: GPF could be caused by NULL-ptr deref or user memory access
      general protection fault: 0000 [#1] SMP KASAN PTI
      CPU: 1 PID: 7027 Comm: syz-executor.0 Tainted: G         C        5.1.0-rc3+ #8
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
      RIP: 0010:__write_once_size include/linux/compiler.h:220 [inline]
      RIP: 0010:__rb_change_child include/linux/rbtree_augmented.h:144 [inline]
      RIP: 0010:__rb_erase_augmented include/linux/rbtree_augmented.h:186 [inline]
      RIP: 0010:rb_erase+0x5f4/0x19f0 lib/rbtree.c:459
      Code: 00 0f 85 60 13 00 00 48 89 1a 48 83 c4 18 5b 5d 41 5c 41 5d 41 5e 41 5f c3 48 89 f2 48 b8 00 00 00 00 00 fc ff df 48 c1 ea 03 <80> 3c 02 00 0f 85 75 0c 00 00 4d 85 ed 4c 89 2e 74 ce 4c 89 ea 48
      RSP: 0018:ffff8881bb507778 EFLAGS: 00010206
      RAX: dffffc0000000000 RBX: ffff8881f224b5b8 RCX: ffffffff818f3f6a
      RDX: 000000000000000a RSI: 0000000000000050 RDI: ffff8881f224b568
      RBP: 0000000000000000 R08: ffffed10376a0ef4 R09: ffffed10376a0ef4
      R10: 0000000000000001 R11: ffffed10376a0ef4 R12: ffff8881f224b558
      R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
      FS:  00007f3e7ce13700(0000) GS:ffff8881f7300000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007fd60fbe9398 CR3: 00000001cb55c001 CR4: 00000000007606e0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      PKRU: 55555554
      Call Trace:
       erase_entry fs/proc/proc_sysctl.c:178 [inline]
       erase_header+0xe3/0x160 fs/proc/proc_sysctl.c:207
       start_unregistering fs/proc/proc_sysctl.c:331 [inline]
       drop_sysctl_table+0x558/0x880 fs/proc/proc_sysctl.c:1631
       get_subdir fs/proc/proc_sysctl.c:1022 [inline]
       __register_sysctl_table+0xd65/0x1090 fs/proc/proc_sysctl.c:1335
       br_netfilter_init+0x68/0x1000 [br_netfilter]
       do_one_initcall+0xbc/0x47d init/main.c:901
       do_init_module+0x1b5/0x547 kernel/module.c:3456
       load_module+0x6405/0x8c10 kernel/module.c:3804
       __do_sys_finit_module+0x162/0x190 kernel/module.c:3898
       do_syscall_64+0x9f/0x450 arch/x86/entry/common.c:290
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      Modules linked in: br_netfilter(+) backlight comedi(C) hid_sensor_hub max3100 ti_ads8688 udc_core fddi snd_mona leds_gpio rc_streamzap mtd pata_netcell nf_log_common rc_winfast udp_tunnel snd_usbmidi_lib snd_usb_toneport snd_usb_line6 snd_rawmidi snd_seq_device snd_hwdep videobuf2_v4l2 videobuf2_common videodev media videobuf2_vmalloc videobuf2_memops rc_gadmei_rm008z 8250_of smm665 hid_tmff hid_saitek hwmon_vid rc_ati_tv_wonder_hd_600 rc_core pata_pdc202xx_old dn_rtmsg as3722 ad714x_i2c ad714x snd_soc_cs4265 hid_kensington panel_ilitek_ili9322 drm drm_panel_orientation_quirks ipack cdc_phonet usbcore phonet hid_jabra hid extcon_arizona can_dev industrialio_triggered_buffer kfifo_buf industrialio adm1031 i2c_mux_ltc4306 i2c_mux ipmi_msghandler mlxsw_core snd_soc_cs35l34 snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer ac97_bus snd_compress snd soundcore gpio_da9055 uio ecdh_generic mdio_thunder of_mdio fixed_phy libphy mdio_cavium iptable_security iptable_raw iptable_mangle
       iptable_nat 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 vxcan batman_adv cfg80211 rfkill chnl_net caif nlmon dummy team bonding vcan bridge stp llc ip6_gre gre ip6_tunnel tunnel6 tun joydev mousedev ppdev tpm kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel ide_pci_generic piix aes_x86_64 crypto_simd cryptd ide_core glue_helper input_leds psmouse intel_agp intel_gtt serio_raw ata_generic i2c_piix4 agpgart pata_acpi parport_pc parport floppy rtc_cmos sch_fq_codel ip_tables x_tables sha1_ssse3 sha1_generic ipv6 [last unloaded: br_netfilter]
      Dumping ftrace buffer:
         (ftrace buffer empty)
      ---[ end trace 68741688d5fbfe85 ]---
    
    commit 23da9588037e ("fs/proc/proc_sysctl.c: fix NULL pointer
    dereference in put_links") forgot to handle start_unregistering() case,
    while header->parent is NULL, it calls erase_header() and as seen in the
    above syzkaller call trace, accessing &header->parent->root will trigger
    a NULL pointer dereference.
    
    As that commit explained, there is also no need to call
    start_unregistering() if header->parent is NULL.
    
    Link: http://lkml.kernel.org/r/20190409153622.28112-1-yuehaibing@huawei.com
    Fixes: 23da9588037e ("fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links")
    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>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    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 0cc8c5a2299626c72efdcb004d1c348d0e97121f
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Apr 25 16:13:58 2019 -0700

    slip: make slhc_free() silently accept an error pointer
    
    commit baf76f0c58aec435a3a864075b8f6d8ee5d1f17e upstream.
    
    This way, slhc_free() accepts what slhc_init() returns, whether that is
    an error or not.
    
    In particular, the pattern in sl_alloc_bufs() is
    
            slcomp = slhc_init(16, 16);
            ...
            slhc_free(slcomp);
    
    for the error handling path, and rather than complicate that code, just
    make it ok to always free what was returned by the init function.
    
    That's what the code used to do before commit 4ab42d78e37a ("ppp, slip:
    Validate VJ compression slot parameters completely") when slhc_init()
    just returned NULL for the error case, with no actual indication of the
    details of the error.
    
    Reported-by: syzbot+45474c076a4927533d2e@syzkaller.appspotmail.com
    Fixes: 4ab42d78e37a ("ppp, slip: Validate VJ compression slot parameters completely")
    Acked-by: Ben Hutchings <ben@decadent.org.uk>
    Cc: David Miller <davem@davemloft.net>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0b38ec243465c545874e7aec262fe5168aed049
Author: NeilBrown <neilb@suse.com>
Date:   Fri Apr 5 11:34:40 2019 +1100

    sunrpc: don't mark uninitialised items as VALID.
    
    commit d58431eacb226222430940134d97bfd72f292fcd upstream.
    
    A recent commit added a call to cache_fresh_locked()
    when an expired item was found.
    The call sets the CACHE_VALID flag, so it is important
    that the item actually is valid.
    There are two ways it could be valid:
    1/ If ->update has been called to fill in relevant content
    2/ if CACHE_NEGATIVE is set, to say that content doesn't exist.
    
    An expired item that is waiting for an update will be neither.
    Setting CACHE_VALID will mean that a subsequent call to cache_put()
    will be likely to dereference uninitialised pointers.
    
    So we must make sure the item is valid, and we already have code to do
    that in try_to_negate_entry().  This takes the hash lock and so cannot
    be used directly, so take out the two lines that we need and use them.
    
    Now cache_fresh_locked() is certain to be called only on
    a valid item.
    
    Cc: stable@kernel.org # 2.6.35
    Fixes: 4ecd55ea0742 ("sunrpc: fix cache_head leak due to queued request")
    Signed-off-by: NeilBrown <neilb@suse.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 596c78267376e4082b36be56743579369dcfd508
Author: Jeff Layton <jlayton@kernel.org>
Date:   Wed Apr 17 12:58:28 2019 -0400

    ceph: ensure d_name stability in ceph_dentry_hash()
    
    commit 76a495d666e5043ffc315695f8241f5e94a98849 upstream.
    
    Take the d_lock here to ensure that d_name doesn't change.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c82b63c7258f326e29b96f92e2b043ae32a8412
Author: Xie XiuQi <xiexiuqi@huawei.com>
Date:   Sat Apr 20 16:34:16 2019 +0800

    sched/numa: Fix a possible divide-by-zero
    
    commit a860fa7b96e1a1c974556327aa1aee852d434c21 upstream.
    
    sched_clock_cpu() may not be consistent between CPUs. If a task
    migrates to another CPU, then se.exec_start is set to that CPU's
    rq_clock_task() by update_stats_curr_start(). Specifically, the new
    value might be before the old value due to clock skew.
    
    So then if in numa_get_avg_runtime() the expression:
    
      'now - p->last_task_numa_placement'
    
    ends up as -1, then the divider '*period + 1' in task_numa_placement()
    is 0 and things go bang. Similar to update_curr(), check if time goes
    backwards to avoid this.
    
    [ peterz: Wrote new changelog. ]
    [ mingo: Tweaked the code comment. ]
    
    Signed-off-by: Xie XiuQi <xiexiuqi@huawei.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: cj.chengjian@huawei.com
    Cc: <stable@vger.kernel.org>
    Link: http://lkml.kernel.org/r/20190425080016.GX11158@hirez.programming.kicks-ass.net
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 316bc8144b4493e72d617931b75c93da3bdea4f8
Author: Peter Zijlstra <peterz@infradead.org>
Date:   Tue Apr 23 22:03:18 2019 +0200

    trace: Fix preempt_enable_no_resched() abuse
    
    commit d6097c9e4454adf1f8f2c9547c2fa6060d55d952 upstream.
    
    Unless the very next line is schedule(), or implies it, one must not use
    preempt_enable_no_resched(). It can cause a preemption to go missing and
    thereby cause arbitrary delays, breaking the PREEMPT=y invariant.
    
    Link: http://lkml.kernel.org/r/20190423200318.GY14281@hirez.programming.kicks-ass.net
    
    Cc: Waiman Long <longman@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: the arch/x86 maintainers <x86@kernel.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Tim Chen <tim.c.chen@linux.intel.com>
    Cc: huang ying <huang.ying.caritas@gmail.com>
    Cc: Roman Gushchin <guro@fb.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: stable@vger.kernel.org
    Fixes: 2c2d7329d8af ("tracing/ftrace: use preempt_enable_no_resched_notrace in ring_buffer_time_stamp()")
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d1a3145b6b48b30fc437e38bcfcfe727040bb53a
Author: Aurelien Jarno <aurelien@aurel32.net>
Date:   Tue Apr 9 16:53:55 2019 +0200

    MIPS: scall64-o32: Fix indirect syscall number load
    
    commit 79b4a9cf0e2ea8203ce777c8d5cfa86c71eae86e upstream.
    
    Commit 4c21b8fd8f14 (MIPS: seccomp: Handle indirect system calls (o32))
    added indirect syscall detection for O32 processes running on MIPS64,
    but it did not work correctly for big endian kernel/processes. The
    reason is that the syscall number is loaded from ARG1 using the lw
    instruction while this is a 64-bit value, so zero is loaded instead of
    the syscall number.
    
    Fix the code by using the ld instruction instead. When running a 32-bit
    processes on a 64 bit CPU, the values are properly sign-extended, so it
    ensures the value passed to syscall_trace_enter is correct.
    
    Recent systemd versions with seccomp enabled whitelist the getpid
    syscall for their internal  processes (e.g. systemd-journald), but call
    it through syscall(SYS_getpid). This fix therefore allows O32 big endian
    systems with a 64-bit kernel to run recent systemd versions.
    
    Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
    Cc: <stable@vger.kernel.org> # v3.15+
    Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: James Hogan <jhogan@kernel.org>
    Cc: linux-mips@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>