commit 97d7530b83e3f515d5a3242019fdc2b5848d5a7f
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Aug 4 09:33:45 2019 +0200

    Linux 4.9.187

commit 370bb858d70f330af54a670a54d13ae305bcde83
Author: Yan, Zheng <zyan@redhat.com>
Date:   Thu May 23 11:01:37 2019 +0800

    ceph: hold i_ceph_lock when removing caps for freeing inode
    
    commit d6e47819721ae2d9d090058ad5570a66f3c42e39 upstream.
    
    ceph_d_revalidate(, LOOKUP_RCU) may call __ceph_caps_issued_mask()
    on a freeing inode.
    
    Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 91c5daaa743b35f63f729b821d015dd87daae3a5
Author: Miroslav Lichvar <mlichvar@redhat.com>
Date:   Tue Jul 16 16:30:09 2019 -0700

    drivers/pps/pps.c: clear offset flags in PPS_SETPARAMS ioctl
    
    commit 5515e9a6273b8c02034466bcbd717ac9f53dab99 upstream.
    
    The PPS assert/clear offset corrections are set by the PPS_SETPARAMS
    ioctl in the pps_ktime structs, which also contain flags.  The flags are
    not initialized by applications (using the timepps.h header) and they
    are not used by the kernel for anything except returning them back in
    the PPS_GETPARAMS ioctl.
    
    Set the flags to zero to make it clear they are unused and avoid leaking
    uninitialized data of the PPS_SETPARAMS caller to other applications
    that have a read access to the PPS device.
    
    Link: http://lkml.kernel.org/r/20190702092251.24303-1-mlichvar@redhat.com
    Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
    Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
    Acked-by: Rodolfo Giometti <giometti@enneenne.com>
    Cc: Greg KH <greg@kroah.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 837ffc9723f04aeb5bf252ef926c16aea1f5a0ee
Author: Jann Horn <jannh@google.com>
Date:   Tue Jul 16 17:20:45 2019 +0200

    sched/fair: Don't free p->numa_faults with concurrent readers
    
    commit 16d51a590a8ce3befb1308e0e7ab77f3b661af33 upstream.
    
    When going through execve(), zero out the NUMA fault statistics instead of
    freeing them.
    
    During execve, the task is reachable through procfs and the scheduler. A
    concurrent /proc/*/sched reader can read data from a freed ->numa_faults
    allocation (confirmed by KASAN) and write it back to userspace.
    I believe that it would also be possible for a use-after-free read to occur
    through a race between a NUMA fault and execve(): task_numa_fault() can
    lead to task_numa_compare(), which invokes task_weight() on the currently
    running task of a different CPU.
    
    Another way to fix this would be to make ->numa_faults RCU-managed or add
    extra locking, but it seems easier to wipe the NUMA fault statistics on
    execve.
    
    Signed-off-by: Jann Horn <jannh@google.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Petr Mladek <pmladek@suse.com>
    Cc: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will@kernel.org>
    Fixes: 82727018b0d3 ("sched/numa: Call task_numa_free() from do_execve()")
    Link: https://lkml.kernel.org/r/20190716152047.14424-1-jannh@google.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 58a01b0bd8ea5fddb51d4d854bb149a1a7312c12
Author: Vladis Dronov <vdronov@redhat.com>
Date:   Tue Jul 30 11:33:45 2019 +0200

    Bluetooth: hci_uart: check for missing tty operations
    
    commit b36a1552d7319bbfd5cf7f08726c23c5c66d4f73 upstream.
    
    Certain ttys operations (pty_unix98_ops) lack tiocmget() and tiocmset()
    functions which are called by the certain HCI UART protocols (hci_ath,
    hci_bcm, hci_intel, hci_mrvl, hci_qca) via hci_uart_set_flow_control()
    or directly. This leads to an execution at NULL and can be triggered by
    an unprivileged user. Fix this by adding a helper function and a check
    for the missing tty operations in the protocols code.
    
    This fixes CVE-2019-10207. The Fixes: lines list commits where calls to
    tiocm[gs]et() or hci_uart_set_flow_control() were added to the HCI UART
    protocols.
    
    Link: https://syzkaller.appspot.com/bug?id=1b42faa2848963564a5b1b7f8c837ea7b55ffa50
    Reported-by: syzbot+79337b501d6aa974d0f6@syzkaller.appspotmail.com
    Cc: stable@vger.kernel.org # v2.6.36+
    Fixes: b3190df62861 ("Bluetooth: Support for Atheros AR300x serial chip")
    Fixes: 118612fb9165 ("Bluetooth: hci_bcm: Add suspend/resume PM functions")
    Fixes: ff2895592f0f ("Bluetooth: hci_intel: Add Intel baudrate configuration support")
    Fixes: 162f812f23ba ("Bluetooth: hci_uart: Add Marvell support")
    Fixes: fa9ad876b8e0 ("Bluetooth: hci_qca: Add support for Qualcomm Bluetooth chip wcn3990")
    Signed-off-by: Vladis Dronov <vdronov@redhat.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Reviewed-by: Yu-Chen, Cho <acho@suse.com>
    Tested-by: Yu-Chen, Cho <acho@suse.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c0a7ec4b98f2e75ac974140291d3c8c6642145c
Author: Luke Nowakowski-Krijger <lnowakow@eng.ucsd.edu>
Date:   Fri Jun 21 21:04:38 2019 -0400

    media: radio-raremono: change devm_k*alloc to k*alloc
    
    commit c666355e60ddb4748ead3bdd983e3f7f2224aaf0 upstream.
    
    Change devm_k*alloc to k*alloc to manually allocate memory
    
    The manual allocation and freeing of memory is necessary because when
    the USB radio is disconnected, the memory associated with devm_k*alloc
    is freed. Meaning if we still have unresolved references to the radio
    device, then we get use-after-free errors.
    
    This patch fixes this by manually allocating memory, and freeing it in
    the v4l2.release callback that gets called when the last radio device
    exits.
    
    Reported-and-tested-by: syzbot+a4387f5b6b799f6becbf@syzkaller.appspotmail.com
    
    Signed-off-by: Luke Nowakowski-Krijger <lnowakow@eng.ucsd.edu>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    [hverkuil-cisco@xs4all.nl: cleaned up two small checkpatch.pl warnings]
    [hverkuil-cisco@xs4all.nl: prefix subject with driver name]
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b8a71a8bd2129ca9cc115195fd9630564765772
Author: Oliver Neukum <oneukum@suse.com>
Date:   Thu May 9 04:57:09 2019 -0400

    media: cpia2_usb: first wake up, then free in disconnect
    
    commit eff73de2b1600ad8230692f00bc0ab49b166512a upstream.
    
    Kasan reported a use after free in cpia2_usb_disconnect()
    It first freed everything and then woke up those waiting.
    The reverse order is correct.
    
    Fixes: 6c493f8b28c67 ("[media] cpia2: major overhaul to get it in a working state again")
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+0c90fc937c84f97d0aa6@syzkaller.appspotmail.com
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7d3edb053435ac79b2ee9bd89d18cb2d43e0d5d
Author: Sean Young <sean@mess.org>
Date:   Sun May 19 15:28:22 2019 -0400

    media: au0828: fix null dereference in error path
    
    commit 6d0d1ff9ff21fbb06b867c13a1d41ce8ddcd8230 upstream.
    
    au0828_usb_disconnect() gets the au0828_dev struct via usb_get_intfdata,
    so it needs to set up for the error paths.
    
    Reported-by: syzbot+357d86bcb4cca1a2f572@syzkaller.appspotmail.com
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af34434a1750090dfa108c4e8310ab0e869652f1
Author: Phong Tran <tranmanphong@gmail.com>
Date:   Mon Jul 15 22:08:14 2019 +0700

    ISDN: hfcsusb: checking idx of ep configuration
    
    commit f384e62a82ba5d85408405fdd6aeff89354deaa9 upstream.
    
    The syzbot test with random endpoint address which made the idx is
    overflow in the table of endpoint configuations.
    
    this adds the checking for fixing the error report from
    syzbot
    
    KASAN: stack-out-of-bounds Read in hfcsusb_probe [1]
    The patch tested by syzbot [2]
    
    Reported-by: syzbot+8750abbc3a46ef47d509@syzkaller.appspotmail.com
    
    [1]:
    https://syzkaller.appspot.com/bug?id=30a04378dac680c5d521304a00a86156bb913522
    [2]:
    https://groups.google.com/d/msg/syzkaller-bugs/_6HBdge8F3E/OJn7wVNpBAAJ
    
    Signed-off-by: Phong Tran <tranmanphong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8902d3a82ccfa4935119dd63ce3c0158ac1a2c39
Author: Will Deacon <will.deacon@arm.com>
Date:   Wed Sep 5 15:34:43 2018 +0100

    arm64: compat: Provide definition for COMPAT_SIGMINSTKSZ
    
    commit 24951465cbd279f60b1fdc2421b3694405bcff42 upstream.
    
    arch/arm/ defines a SIGMINSTKSZ of 2k, so we should use the same value
    for compat tasks.
    
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Dominik Brodowski <linux@dominikbrodowski.net>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Reviewed-by: Dave Martin <Dave.Martin@arm.com>
    Reported-by: Steve McIntyre <steve.mcintyre@arm.com>
    Tested-by: Steve McIntyre <93sam@debian.org>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 51e26d2303ee3edf045b927ebf85634790e7f3b5
Author: Abhishek Sahu <absahu@codeaurora.org>
Date:   Mon Mar 12 18:44:51 2018 +0530

    i2c: qup: fixed releasing dma without flush operation completion
    
    commit 7239872fb3400b21a8f5547257f9f86455867bd6 upstream.
    
    The QUP BSLP BAM generates the following error sometimes if the
    current I2C DMA transfer fails and the flush operation has been
    scheduled
    
        “bam-dma-engine 7884000.dma: Cannot free busy channel”
    
    If any I2C error comes during BAM DMA transfer, then the QUP I2C
    interrupt will be generated and the flush operation will be
    carried out to make I2C consume all scheduled DMA transfer.
    Currently, the same completion structure is being used for BAM
    transfer which has already completed without reinit. It will make
    flush operation wait_for_completion_timeout completed immediately
    and will proceed for freeing the DMA resources where the
    descriptors are still in process.
    
    Signed-off-by: Abhishek Sahu <absahu@codeaurora.org>
    Acked-by: Sricharan R <sricharan@codeaurora.org>
    Reviewed-by: Austin Christ <austinwc@codeaurora.org>
    Reviewed-by: Andy Gross <andy.gross@linaro.org>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e522a0907730c4a5f03c1cc2e4ff264ae63d2934
Author: allen yan <yanwei@marvell.com>
Date:   Thu Sep 7 15:04:53 2017 +0200

    arm64: dts: marvell: Fix A37xx UART0 register size
    
    commit c737abc193d16e62e23e2fb585b8b7398ab380d8 upstream.
    
    Armada-37xx UART0 registers are 0x200 bytes wide. Right next to them are
    the UART1 registers that should not be declared in this node.
    
    Update the example in DT bindings document accordingly.
    
    Signed-off-by: allen yan <yanwei@marvell.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@free-electrons.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
    Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 704533394e488a109fe46ab3693315376c3824d5
Author: Soheil Hassas Yeganeh <soheil@google.com>
Date:   Mon Jul 29 21:21:08 2019 +0800

    tcp: reset sk_send_head in tcp_write_queue_purge
    
    [ Upstream commit dbbf2d1e4077bab0c65ece2765d3fc69cf7d610f ]
    
    tcp_write_queue_purge clears all the SKBs in the write queue
    but does not reset the sk_send_head. As a result, we can have
    a NULL pointer dereference anywhere that we use tcp_send_head
    instead of the tcp_write_queue_tail.
    
    For example, after a27fd7a8ed38 (tcp: purge write queue upon RST),
    we can purge the write queue on RST. Prior to
    75c119afe14f (tcp: implement rb-tree based retransmit queue),
    tcp_push will only check tcp_send_head and then accesses
    tcp_write_queue_tail to send the actual SKB. As a result, it will
    dereference a NULL pointer.
    
    This has been reported twice for 4.14 where we don't have
    75c119afe14f:
    
    By Timofey Titovets:
    
    [  422.081094] BUG: unable to handle kernel NULL pointer dereference
    at 0000000000000038
    [  422.081254] IP: tcp_push+0x42/0x110
    [  422.081314] PGD 0 P4D 0
    [  422.081364] Oops: 0002 [#1] SMP PTI
    
    By Yongjian Xu:
    
    BUG: unable to handle kernel NULL pointer dereference at 0000000000000038
    IP: tcp_push+0x48/0x120
    PGD 80000007ff77b067 P4D 80000007ff77b067 PUD 7fd989067 PMD 0
    Oops: 0002 [#18] SMP PTI
    Modules linked in: tcp_diag inet_diag tcp_bbr sch_fq iTCO_wdt
    iTCO_vendor_support pcspkr ixgbe mdio i2c_i801 lpc_ich joydev input_leds shpchp
    e1000e igb dca ptp pps_core hwmon mei_me mei ipmi_si ipmi_msghandler sg ses
    scsi_transport_sas enclosure ext4 jbd2 mbcache sd_mod ahci libahci megaraid_sas
    wmi ast ttm dm_mirror dm_region_hash dm_log dm_mod dax
    CPU: 6 PID: 14156 Comm: [ET_NET 6] Tainted: G D 4.14.26-1.el6.x86_64 #1
    Hardware name: LENOVO ThinkServer RD440 /ThinkServer RD440, BIOS A0TS80A
    09/22/2014
    task: ffff8807d78d8140 task.stack: ffffc9000e944000
    RIP: 0010:tcp_push+0x48/0x120
    RSP: 0018:ffffc9000e947a88 EFLAGS: 00010246
    RAX: 00000000000005b4 RBX: ffff880f7cce9c00 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: 0000000000000040 RDI: ffff8807d00f5000
    RBP: ffffc9000e947aa8 R08: 0000000000001c84 R09: 0000000000000000
    R10: ffff8807d00f5158 R11: 0000000000000000 R12: ffff8807d00f5000
    R13: 0000000000000020 R14: 00000000000256d4 R15: 0000000000000000
    FS: 00007f5916de9700(0000) GS:ffff88107fd00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 0000000000000038 CR3: 00000007f8226004 CR4: 00000000001606e0
    Call Trace:
    tcp_sendmsg_locked+0x33d/0xe50
    tcp_sendmsg+0x37/0x60
    inet_sendmsg+0x39/0xc0
    sock_sendmsg+0x49/0x60
    sock_write_iter+0xb6/0x100
    do_iter_readv_writev+0xec/0x130
    ? rw_verify_area+0x49/0xb0
    do_iter_write+0x97/0xd0
    vfs_writev+0x7e/0xe0
    ? __wake_up_common_lock+0x80/0xa0
    ? __fget_light+0x2c/0x70
    ? __do_page_fault+0x1e7/0x530
    do_writev+0x60/0xf0
    ? inet_shutdown+0xac/0x110
    SyS_writev+0x10/0x20
    do_syscall_64+0x6f/0x140
    ? prepare_exit_to_usermode+0x8b/0xa0
    entry_SYSCALL_64_after_hwframe+0x3d/0xa2
    RIP: 0033:0x3135ce0c57
    RSP: 002b:00007f5916de4b00 EFLAGS: 00000293 ORIG_RAX: 0000000000000014
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000003135ce0c57
    RDX: 0000000000000002 RSI: 00007f5916de4b90 RDI: 000000000000606f
    RBP: 0000000000000000 R08: 0000000000000000 R09: 00007f5916de8c38
    R10: 0000000000000000 R11: 0000000000000293 R12: 00000000000464cc
    R13: 00007f5916de8c30 R14: 00007f58d8bef080 R15: 0000000000000002
    Code: 48 8b 97 60 01 00 00 4c 8d 97 58 01 00 00 41 b9 00 00 00 00 41 89 f3 4c 39
    d2 49 0f 44 d1 41 81 e3 00 80 00 00 0f 85 b0 00 00 00 <80> 4a 38 08 44 8b 8f 74
    06 00 00 44 89 8f 7c 06 00 00 83 e6 01
    RIP: tcp_push+0x48/0x120 RSP: ffffc9000e947a88
    CR2: 0000000000000038
    ---[ end trace 8d545c2e93515549 ]---
    
    There is other scenario which found in stable 4.4:
    Allocated:
     [<ffffffff82f380a6>] __alloc_skb+0xe6/0x600 net/core/skbuff.c:218
     [<ffffffff832466c3>] alloc_skb_fclone include/linux/skbuff.h:856 [inline]
     [<ffffffff832466c3>] sk_stream_alloc_skb+0xa3/0x5d0 net/ipv4/tcp.c:833
     [<ffffffff83249164>] tcp_sendmsg+0xd34/0x2b00 net/ipv4/tcp.c:1178
     [<ffffffff83300ef3>] inet_sendmsg+0x203/0x4d0 net/ipv4/af_inet.c:755
    Freed:
     [<ffffffff82f372fd>] __kfree_skb+0x1d/0x20 net/core/skbuff.c:676
     [<ffffffff83288834>] sk_wmem_free_skb include/net/sock.h:1447 [inline]
     [<ffffffff83288834>] tcp_write_queue_purge include/net/tcp.h:1460 [inline]
     [<ffffffff83288834>] tcp_connect_init net/ipv4/tcp_output.c:3122 [inline]
     [<ffffffff83288834>] tcp_connect+0xb24/0x30c0 net/ipv4/tcp_output.c:3261
     [<ffffffff8329b991>] tcp_v4_connect+0xf31/0x1890 net/ipv4/tcp_ipv4.c:246
    
    BUG: KASAN: use-after-free in tcp_skb_pcount include/net/tcp.h:796 [inline]
    BUG: KASAN: use-after-free in tcp_init_tso_segs net/ipv4/tcp_output.c:1619 [inline]
    BUG: KASAN: use-after-free in tcp_write_xmit+0x3fc2/0x4cb0 net/ipv4/tcp_output.c:2056
     [<ffffffff81515cd5>] kasan_report.cold.7+0x175/0x2f7 mm/kasan/report.c:408
     [<ffffffff814f9784>] __asan_report_load2_noabort+0x14/0x20 mm/kasan/report.c:427
     [<ffffffff83286582>] tcp_skb_pcount include/net/tcp.h:796 [inline]
     [<ffffffff83286582>] tcp_init_tso_segs net/ipv4/tcp_output.c:1619 [inline]
     [<ffffffff83286582>] tcp_write_xmit+0x3fc2/0x4cb0 net/ipv4/tcp_output.c:2056
     [<ffffffff83287a40>] __tcp_push_pending_frames+0xa0/0x290 net/ipv4/tcp_output.c:2307
    
    stable 4.4 and stable 4.9 don't have the commit abb4a8b870b5 ("tcp: purge write queue upon RST")
    which is referred in dbbf2d1e4077,
    in tcp_connect_init, it calls tcp_write_queue_purge, and does not reset sk_send_head, then UAF.
    
    stable 4.14 have the commit abb4a8b870b5 ("tcp: purge write queue upon RST"),
    in tcp_reset, it calls tcp_write_queue_purge(sk), and does not reset sk_send_head, then UAF.
    
    So this patch can be used to fix stable 4.4 and 4.9.
    
    Fixes: a27fd7a8ed38 (tcp: purge write queue upon RST)
    Reported-by: Timofey Titovets <nefelim4ag@gmail.com>
    Reported-by: Yongjian Xu <yongjianchn@gmail.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Tested-by: Yongjian Xu <yongjianchn@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Mao Wenan <maowenan@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e531ad4316cb47c6c2b42f3257d1841a6e837e7
Author: Xin Long <lucien.xin@gmail.com>
Date:   Fri Feb 24 16:29:06 2017 +0800

    ipv6: check sk sk_type and protocol early in ip_mroute_set/getsockopt
    
    [ Upstream commit 99253eb750fda6a644d5188fb26c43bad8d5a745 ]
    
    Commit 5e1859fbcc3c ("ipv4: ipmr: various fixes and cleanups") fixed
    the issue for ipv4 ipmr:
    
      ip_mroute_setsockopt() & ip_mroute_getsockopt() should not
      access/set raw_sk(sk)->ipmr_table before making sure the socket
      is a raw socket, and protocol is IGMP
    
    The same fix should be done for ipv6 ipmr as well.
    
    This patch can fix the panic caused by overwriting the same offset
    as ipmr_table as in raw_sk(sk) when accessing other type's socket
    by ip_mroute_setsockopt().
    
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 50810015e027476591c275b8b8a9a433fc577c72
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Thu Jul 11 09:54:40 2019 -0700

    access: avoid the RCU grace period for the temporary subjective credentials
    
    commit d7852fbd0f0423937fa287a598bfde188bb68c22 upstream.
    
    It turns out that 'access()' (and 'faccessat()') can cause a lot of RCU
    work because it installs a temporary credential that gets allocated and
    freed for each system call.
    
    The allocation and freeing overhead is mostly benign, but because
    credentials can be accessed under the RCU read lock, the freeing
    involves a RCU grace period.
    
    Which is not a huge deal normally, but if you have a lot of access()
    calls, this causes a fair amount of seconday damage: instead of having a
    nice alloc/free patterns that hits in hot per-CPU slab caches, you have
    all those delayed free's, and on big machines with hundreds of cores,
    the RCU overhead can end up being enormous.
    
    But it turns out that all of this is entirely unnecessary.  Exactly
    because access() only installs the credential as the thread-local
    subjective credential, the temporary cred pointer doesn't actually need
    to be RCU free'd at all.  Once we're done using it, we can just free it
    synchronously and avoid all the RCU overhead.
    
    So add a 'non_rcu' flag to 'struct cred', which can be set by users that
    know they only use it in non-RCU context (there are other potential
    users for this).  We can make it a union with the rcu freeing list head
    that we need for the RCU case, so this doesn't need any extra storage.
    
    Note that this also makes 'get_current_cred()' clear the new non_rcu
    flag, in case we have filesystems that take a long-term reference to the
    cred and then expect the RCU delayed freeing afterwards.  It's not
    entirely clear that this is required, but it makes for clear semantics:
    the subjective cred remains non-RCU as long as you only access it
    synchronously using the thread-local accessors, but you _can_ use it as
    a generic cred if you want to.
    
    It is possible that we should just remove the whole RCU markings for
    ->cred entirely.  Only ->real_cred is really supposed to be accessed
    through RCU, and the long-term cred copies that nfs uses might want to
    explicitly re-enable RCU freeing if required, rather than have
    get_current_cred() do it implicitly.
    
    But this is a "minimal semantic changes" change for the immediate
    problem.
    
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Eric Dumazet <edumazet@google.com>
    Acked-by: Paul E. McKenney <paulmck@linux.ibm.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Jan Glauber <jglauber@marvell.com>
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Jayachandran Chandrasekharan Nair <jnair@marvell.com>
    Cc: Greg KH <greg@kroah.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Miklos Szeredi <miklos@szeredi.hu>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 08ee34d86c9c6a9b93c0986d7fc6e272690e8d24
Author: Michael Neuling <mikey@neuling.org>
Date:   Fri Jul 19 15:05:02 2019 +1000

    powerpc/tm: Fix oops on sigreturn on systems without TM
    
    commit f16d80b75a096c52354c6e0a574993f3b0dfbdfe upstream.
    
    On systems like P9 powernv where we have no TM (or P8 booted with
    ppc_tm=off), userspace can construct a signal context which still has
    the MSR TS bits set. The kernel tries to restore this context which
    results in the following crash:
    
      Unexpected TM Bad Thing exception at c0000000000022fc (msr 0x8000000102a03031) tm_scratch=800000020280f033
      Oops: Unrecoverable exception, sig: 6 [#1]
      LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries
      Modules linked in:
      CPU: 0 PID: 1636 Comm: sigfuz Not tainted 5.2.0-11043-g0a8ad0ffa4 #69
      NIP:  c0000000000022fc LR: 00007fffb2d67e48 CTR: 0000000000000000
      REGS: c00000003fffbd70 TRAP: 0700   Not tainted  (5.2.0-11045-g7142b497d8)
      MSR:  8000000102a03031 <SF,VEC,VSX,FP,ME,IR,DR,LE,TM[E]>  CR: 42004242  XER: 00000000
      CFAR: c0000000000022e0 IRQMASK: 0
      GPR00: 0000000000000072 00007fffb2b6e560 00007fffb2d87f00 0000000000000669
      GPR04: 00007fffb2b6e728 0000000000000000 0000000000000000 00007fffb2b6f2a8
      GPR08: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
      GPR12: 0000000000000000 00007fffb2b76900 0000000000000000 0000000000000000
      GPR16: 00007fffb2370000 00007fffb2d84390 00007fffea3a15ac 000001000a250420
      GPR20: 00007fffb2b6f260 0000000010001770 0000000000000000 0000000000000000
      GPR24: 00007fffb2d843a0 00007fffea3a14a0 0000000000010000 0000000000800000
      GPR28: 00007fffea3a14d8 00000000003d0f00 0000000000000000 00007fffb2b6e728
      NIP [c0000000000022fc] rfi_flush_fallback+0x7c/0x80
      LR [00007fffb2d67e48] 0x7fffb2d67e48
      Call Trace:
      Instruction dump:
      e96a0220 e96a02a8 e96a0330 e96a03b8 394a0400 4200ffdc 7d2903a6 e92d0c00
      e94d0c08 e96d0c10 e82d0c18 7db242a6 <4c000024> 7db243a6 7db142a6 f82d0c18
    
    The problem is the signal code assumes TM is enabled when
    CONFIG_PPC_TRANSACTIONAL_MEM is enabled. This may not be the case as
    with P9 powernv or if `ppc_tm=off` is used on P8.
    
    This means any local user can crash the system.
    
    Fix the problem by returning a bad stack frame to the user if they try
    to set the MSR TS bits with sigreturn() on systems where TM is not
    supported.
    
    Found with sigfuz kernel selftest on P9.
    
    This fixes CVE-2019-13648.
    
    Fixes: 2b0a576d15e0 ("powerpc: Add new transactional memory state to the signal context")
    Cc: stable@vger.kernel.org # v3.9
    Reported-by: Praveen Pandey <Praveen.Pandey@in.ibm.com>
    Signed-off-by: Michael Neuling <mikey@neuling.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190719050502.405-1-mikey@neuling.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2f4b7fbb7b26d87a978c90c88df2229ffd7afec5
Author: Hui Wang <hui.wang@canonical.com>
Date:   Thu Jul 25 14:57:37 2019 +0800

    ALSA: hda - Add a conexant codec entry to let mute led work
    
    commit 3f8809499bf02ef7874254c5e23fc764a47a21a0 upstream.
    
    This conexant codec isn't in the supported codec list yet, the hda
    generic driver can drive this codec well, but on a Lenovo machine
    with mute/mic-mute leds, we need to apply CXT_FIXUP_THINKPAD_ACPI
    to make the leds work. After adding this codec to the list, the
    driver patch_conexant.c will apply THINKPAD_ACPI to this machine.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec565611f930bca36719f046d28f94de0384a4a9
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Thu Jul 18 17:53:13 2019 +0800

    ALSA: line6: Fix wrong altsetting for LINE6_PODHD500_1
    
    commit 70256b42caaf3e13c2932c2be7903a73fbe8bb8b upstream.
    
    Commit 7b9584fa1c0b ("staging: line6: Move altsetting to properties")
    set a wrong altsetting for LINE6_PODHD500_1 during refactoring.
    
    Set the correct altsetting number to fix the issue.
    
    BugLink: https://bugs.launchpad.net/bugs/1790595
    Fixes: 7b9584fa1c0b ("staging: line6: Move altsetting to properties")
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0cbed4f1c69463aba40e8e8b59b01049e6b29604
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Thu Jul 11 21:27:57 2019 +0800

    hpet: Fix division by zero in hpet_time_div()
    
    commit 0c7d37f4d9b8446956e97b7c5e61173cdb7c8522 upstream.
    
    The base value in do_div() called by hpet_time_div() is truncated from
    unsigned long to uint32_t, resulting in a divide-by-zero exception.
    
    UBSAN: Undefined behaviour in ../drivers/char/hpet.c:572:2
    division by zero
    CPU: 1 PID: 23682 Comm: syz-executor.3 Not tainted 4.4.184.x86_64+ #4
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
     0000000000000000 b573382df1853d00 ffff8800a3287b98 ffffffff81ad7561
     ffff8800a3287c00 ffffffff838b35b0 ffffffff838b3860 ffff8800a3287c20
     0000000000000000 ffff8800a3287bb0 ffffffff81b8f25e ffffffff838b35a0
    Call Trace:
     [<ffffffff81ad7561>] __dump_stack lib/dump_stack.c:15 [inline]
     [<ffffffff81ad7561>] dump_stack+0xc1/0x120 lib/dump_stack.c:51
     [<ffffffff81b8f25e>] ubsan_epilogue+0x12/0x8d lib/ubsan.c:166
     [<ffffffff81b900cb>] __ubsan_handle_divrem_overflow+0x282/0x2c8 lib/ubsan.c:262
     [<ffffffff823560dd>] hpet_time_div drivers/char/hpet.c:572 [inline]
     [<ffffffff823560dd>] hpet_ioctl_common drivers/char/hpet.c:663 [inline]
     [<ffffffff823560dd>] hpet_ioctl_common.cold+0xa8/0xad drivers/char/hpet.c:577
     [<ffffffff81e63d56>] hpet_ioctl+0xc6/0x180 drivers/char/hpet.c:676
     [<ffffffff81711590>] vfs_ioctl fs/ioctl.c:43 [inline]
     [<ffffffff81711590>] file_ioctl fs/ioctl.c:470 [inline]
     [<ffffffff81711590>] do_vfs_ioctl+0x6e0/0xf70 fs/ioctl.c:605
     [<ffffffff81711eb4>] SYSC_ioctl fs/ioctl.c:622 [inline]
     [<ffffffff81711eb4>] SyS_ioctl+0x94/0xc0 fs/ioctl.c:613
     [<ffffffff82846003>] tracesys_phase2+0x90/0x95
    
    The main C reproducer autogenerated by syzkaller,
    
      syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
      memcpy((void*)0x20000100, "/dev/hpet\000", 10);
      syscall(__NR_openat, 0xffffffffffffff9c, 0x20000100, 0, 0);
      syscall(__NR_ioctl, r[0], 0x40086806, 0x40000000000000);
    
    Fix it by using div64_ul().
    
    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Signed-off-by: Zhang HongJun <zhanghongjun2@huawei.com>
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20190711132757.130092-1-wangkefeng.wang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24db040f7ef8c802cb49f83e622fbfb6f25a880c
Author: Zhenzhong Duan <zhenzhong.duan@oracle.com>
Date:   Thu Jul 25 10:39:09 2019 +0800

    x86/speculation/mds: Apply more accurate check on hypervisor platform
    
    commit 517c3ba00916383af6411aec99442c307c23f684 upstream.
    
    X86_HYPER_NATIVE isn't accurate for checking if running on native platform,
    e.g. CONFIG_HYPERVISOR_GUEST isn't set or "nopv" is enabled.
    
    Checking the CPU feature bit X86_FEATURE_HYPERVISOR to determine if it's
    running on native platform is more accurate.
    
    This still doesn't cover the platforms on which X86_FEATURE_HYPERVISOR is
    unsupported, e.g. VMware, but there is nothing which can be done about this
    scenario.
    
    Fixes: 8a4b06d391b0 ("x86/speculation/mds: Add sysfs reporting for MDS")
    Signed-off-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/1564022349-17338-1-git-send-email-zhenzhong.duan@oracle.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7e02b156936381e48df7ebb732a266d36635d29
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Jul 21 17:24:18 2019 +0200

    x86/sysfb_efi: Add quirks for some devices with swapped width and height
    
    commit d02f1aa39189e0619c3525d5cd03254e61bf606a upstream.
    
    Some Lenovo 2-in-1s with a detachable keyboard have a portrait screen but
    advertise a landscape resolution and pitch, resulting in a messed up
    display if the kernel tries to show anything on the efifb (because of the
    wrong pitch).
    
    Fix this by adding a new DMI match table for devices which need to have
    their width and height swapped.
    
    At first it was tried to use the existing table for overriding some of the
    efifb parameters, but some of the affected devices have variants with
    different LCD resolutions which will not work with hardcoded override
    values.
    
    Reference: https://bugzilla.redhat.com/show_bug.cgi?id=1730783
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190721152418.11644-1-hdegoede@redhat.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 71960676d4278b0bb78e7a917fe5118852e947d1
Author: Ryan Kennedy <ryan5544@gmail.com>
Date:   Thu Jul 4 11:35:28 2019 -0400

    usb: pci-quirks: Correct AMD PLL quirk detection
    
    commit f3dccdaade4118070a3a47bef6b18321431f9ac6 upstream.
    
    The AMD PLL USB quirk is incorrectly enabled on newer Ryzen
    chipsets. The logic in usb_amd_find_chipset_info currently checks
    for unaffected chipsets rather than affected ones. This broke
    once a new chipset was added in e788787ef. It makes more sense
    to reverse the logic so it won't need to be updated as new
    chipsets are added. Note that the core of the workaround in
    usb_amd_quirk_pll does correctly check the chipset.
    
    Signed-off-by: Ryan Kennedy <ryan5544@gmail.com>
    Fixes: e788787ef4f9 ("usb:xhci:Add quirk for Certain failing HP keyboard on reset after resume")
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20190704153529.9429-2-ryan5544@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 53955976c75eb2d655e5846d205b87c5632d1963
Author: Phong Tran <tranmanphong@gmail.com>
Date:   Wed Jul 24 09:06:01 2019 +0700

    usb: wusbcore: fix unbalanced get/put cluster_id
    
    commit f90bf1ece48a736097ea224430578fe586a9544c upstream.
    
    syzboot reported that
    https://syzkaller.appspot.com/bug?extid=fd2bd7df88c606eea4ef
    
    There is not consitency parameter in cluste_id_get/put calling.
    In case of getting the id with result is failure, the wusbhc->cluster_id
    will not be updated and this can not be used for wusb_cluster_id_put().
    
    Tested report
    https://groups.google.com/d/msg/syzkaller-bugs/0znZopp3-9k/oxOrhLkLEgAJ
    
    Reproduce and gdb got the details:
    
    139             addr = wusb_cluster_id_get();
    (gdb) n
    140             if (addr == 0)
    (gdb) print addr
    $1 = 254 '\376'
    (gdb) n
    142             result = __hwahc_set_cluster_id(hwahc, addr);
    (gdb) print result
    $2 = -71
    (gdb) break wusb_cluster_id_put
    Breakpoint 3 at 0xffffffff836e3f20: file drivers/usb/wusbcore/wusbhc.c, line 384.
    (gdb) s
    Thread 2 hit Breakpoint 3, wusb_cluster_id_put (id=0 '\000') at drivers/usb/wusbcore/wusbhc.c:384
    384             id = 0xff - id;
    (gdb) n
    385             BUG_ON(id >= CLUSTER_IDS);
    (gdb) print id
    $3 = 255 '\377'
    
    Reported-by: syzbot+fd2bd7df88c606eea4ef@syzkaller.appspotmail.com
    Signed-off-by: Phong Tran <tranmanphong@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190724020601.15257-1-tranmanphong@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0e02638b40e367f1a08a83a3bd9399ec12f623a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jul 15 11:27:49 2019 +0200

    locking/lockdep: Hide unused 'class' variable
    
    [ Upstream commit 68037aa78208f34bda4e5cd76c357f718b838cbb ]
    
    The usage is now hidden in an #ifdef, so we need to move
    the variable itself in there as well to avoid this warning:
    
      kernel/locking/lockdep_proc.c:203:21: error: unused variable 'class' [-Werror,-Wunused-variable]
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Waiman Long <longman@redhat.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yuyang Du <duyuyang@gmail.com>
    Cc: frederic@kernel.org
    Fixes: 68d41d8c94a3 ("locking/lockdep: Fix lock used or unused stats error")
    Link: https://lkml.kernel.org/r/20190715092809.736834-1-arnd@arndb.de
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ccaa280d15f33877dd2bc19b022f03766cc2fb98
Author: Yuyang Du <duyuyang@gmail.com>
Date:   Tue Jul 9 18:15:22 2019 +0800

    locking/lockdep: Fix lock used or unused stats error
    
    [ Upstream commit 68d41d8c94a31dfb8233ab90b9baf41a2ed2da68 ]
    
    The stats variable nr_unused_locks is incremented every time a new lock
    class is register and decremented when the lock is first used in
    __lock_acquire(). And after all, it is shown and checked in lockdep_stats.
    
    However, under configurations that either CONFIG_TRACE_IRQFLAGS or
    CONFIG_PROVE_LOCKING is not defined:
    
    The commit:
    
      091806515124b20 ("locking/lockdep: Consolidate lock usage bit initialization")
    
    missed marking the LOCK_USED flag at IRQ usage initialization because
    as mark_usage() is not called. And the commit:
    
      886532aee3cd42d ("locking/lockdep: Move mark_lock() inside CONFIG_TRACE_IRQFLAGS && CONFIG_PROVE_LOCKING")
    
    further made mark_lock() not defined such that the LOCK_USED cannot be
    marked at all when the lock is first acquired.
    
    As a result, we fix this by not showing and checking the stats under such
    configurations for lockdep_stats.
    
    Reported-by: Qian Cai <cai@lca.pw>
    Signed-off-by: Yuyang Du <duyuyang@gmail.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: arnd@arndb.de
    Cc: frederic@kernel.org
    Link: https://lkml.kernel.org/r/20190709101522.9117-1-duyuyang@gmail.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 484354b26e80a98e702f774118dba4729eea1aff
Author: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
Date:   Thu Jul 11 20:58:50 2019 -0700

    mm/mmu_notifier: use hlist_add_head_rcu()
    
    [ Upstream commit 543bdb2d825fe2400d6e951f1786d92139a16931 ]
    
    Make mmu_notifier_register() safer by issuing a memory barrier before
    registering a new notifier.  This fixes a theoretical bug on weakly
    ordered CPUs.  For example, take this simplified use of notifiers by a
    driver:
    
            my_struct->mn.ops = &my_ops; /* (1) */
            mmu_notifier_register(&my_struct->mn, mm)
                    ...
                    hlist_add_head(&mn->hlist, &mm->mmu_notifiers); /* (2) */
                    ...
    
    Once mmu_notifier_register() releases the mm locks, another thread can
    invalidate a range:
    
            mmu_notifier_invalidate_range()
                    ...
                    hlist_for_each_entry_rcu(mn, &mm->mmu_notifiers, hlist) {
                            if (mn->ops->invalidate_range)
    
    The read side relies on the data dependency between mn and ops to ensure
    that the pointer is properly initialized.  But the write side doesn't have
    any dependency between (1) and (2), so they could be reordered and the
    readers could dereference an invalid mn->ops.  mmu_notifier_register()
    does take all the mm locks before adding to the hlist, but those have
    acquire semantics which isn't sufficient.
    
    By calling hlist_add_head_rcu() instead of hlist_add_head() we update the
    hlist using a store-release, ensuring that readers see prior
    initialization of my_struct.  This situation is better illustated by
    litmus test MP+onceassign+derefonce.
    
    Link: http://lkml.kernel.org/r/20190502133532.24981-1-jean-philippe.brucker@arm.com
    Fixes: cddb8a5c14aa ("mmu-notifiers: core")
    Signed-off-by: Jean-Philippe Brucker <jean-philippe.brucker@arm.com>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 42297534a4cf5a0c0bc91613e7b8eb76672c17d4
Author: Christoph Hellwig <hch@lst.de>
Date:   Thu Jul 11 20:55:26 2019 -0700

    9p: pass the correct prototype to read_cache_page
    
    [ Upstream commit f053cbd4366051d7eb6ba1b8d529d20f719c2963 ]
    
    Fix the callback 9p passes to read_cache_page to actually have the
    proper type expected.  Casting around function pointers can easily
    hide typing bugs, and defeats control flow protection.
    
    Link: http://lkml.kernel.org/r/20190520055731.24538-5-hch@lst.de
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Cc: Sami Tolvanen <samitolvanen@google.com>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 478cf2d41eec0aacddee198af15ebbba704399ff
Author: Dmitry Vyukov <dvyukov@google.com>
Date:   Thu Jul 11 20:53:39 2019 -0700

    mm/kmemleak.c: fix check for softirq context
    
    [ Upstream commit 6ef9056952532c3b746de46aa10d45b4d7797bd8 ]
    
    in_softirq() is a wrong predicate to check if we are in a softirq
    context.  It also returns true if we have BH disabled, so objects are
    falsely stamped with "softirq" comm.  The correct predicate is
    in_serving_softirq().
    
    If user does cat from /sys/kernel/debug/kmemleak previously they would
    see this, which is clearly wrong, this is system call context (see the
    comm):
    
    unreferenced object 0xffff88805bd661c0 (size 64):
      comm "softirq", pid 0, jiffies 4294942959 (age 12.400s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00  ................
        00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<0000000007dcb30c>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
        [<0000000007dcb30c>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<0000000007dcb30c>] slab_alloc mm/slab.c:3326 [inline]
        [<0000000007dcb30c>] kmem_cache_alloc_trace+0x13d/0x280 mm/slab.c:3553
        [<00000000969722b7>] kmalloc include/linux/slab.h:547 [inline]
        [<00000000969722b7>] kzalloc include/linux/slab.h:742 [inline]
        [<00000000969722b7>] ip_mc_add1_src net/ipv4/igmp.c:1961 [inline]
        [<00000000969722b7>] ip_mc_add_src+0x36b/0x400 net/ipv4/igmp.c:2085
        [<00000000a4134b5f>] ip_mc_msfilter+0x22d/0x310 net/ipv4/igmp.c:2475
        [<00000000d20248ad>] do_ip_setsockopt.isra.0+0x19fe/0x1c00 net/ipv4/ip_sockglue.c:957
        [<000000003d367be7>] ip_setsockopt+0x3b/0xb0 net/ipv4/ip_sockglue.c:1246
        [<000000003c7c76af>] udp_setsockopt+0x4e/0x90 net/ipv4/udp.c:2616
        [<000000000c1aeb23>] sock_common_setsockopt+0x3e/0x50 net/core/sock.c:3130
        [<000000000157b92b>] __sys_setsockopt+0x9e/0x120 net/socket.c:2078
        [<00000000a9f3d058>] __do_sys_setsockopt net/socket.c:2089 [inline]
        [<00000000a9f3d058>] __se_sys_setsockopt net/socket.c:2086 [inline]
        [<00000000a9f3d058>] __x64_sys_setsockopt+0x26/0x30 net/socket.c:2086
        [<000000001b8da885>] do_syscall_64+0x7c/0x1a0 arch/x86/entry/common.c:301
        [<00000000ba770c62>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    now they will see this:
    
    unreferenced object 0xffff88805413c800 (size 64):
      comm "syz-executor.4", pid 8960, jiffies 4294994003 (age 14.350s)
      hex dump (first 32 bytes):
        00 7a 8a 57 80 88 ff ff e0 00 00 01 00 00 00 00  .z.W............
        00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000c5d3be64>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
        [<00000000c5d3be64>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<00000000c5d3be64>] slab_alloc mm/slab.c:3326 [inline]
        [<00000000c5d3be64>] kmem_cache_alloc_trace+0x13d/0x280 mm/slab.c:3553
        [<0000000023865be2>] kmalloc include/linux/slab.h:547 [inline]
        [<0000000023865be2>] kzalloc include/linux/slab.h:742 [inline]
        [<0000000023865be2>] ip_mc_add1_src net/ipv4/igmp.c:1961 [inline]
        [<0000000023865be2>] ip_mc_add_src+0x36b/0x400 net/ipv4/igmp.c:2085
        [<000000003029a9d4>] ip_mc_msfilter+0x22d/0x310 net/ipv4/igmp.c:2475
        [<00000000ccd0a87c>] do_ip_setsockopt.isra.0+0x19fe/0x1c00 net/ipv4/ip_sockglue.c:957
        [<00000000a85a3785>] ip_setsockopt+0x3b/0xb0 net/ipv4/ip_sockglue.c:1246
        [<00000000ec13c18d>] udp_setsockopt+0x4e/0x90 net/ipv4/udp.c:2616
        [<0000000052d748e3>] sock_common_setsockopt+0x3e/0x50 net/core/sock.c:3130
        [<00000000512f1014>] __sys_setsockopt+0x9e/0x120 net/socket.c:2078
        [<00000000181758bc>] __do_sys_setsockopt net/socket.c:2089 [inline]
        [<00000000181758bc>] __se_sys_setsockopt net/socket.c:2086 [inline]
        [<00000000181758bc>] __x64_sys_setsockopt+0x26/0x30 net/socket.c:2086
        [<00000000d4b73623>] do_syscall_64+0x7c/0x1a0 arch/x86/entry/common.c:301
        [<00000000c1098bec>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Link: http://lkml.kernel.org/r/20190517171507.96046-1-dvyukov@gmail.com
    Signed-off-by: Dmitry Vyukov <dvyukov@google.com>
    Acked-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8b593377616c5e8a5f747704bb910834ea3d1303
Author: Sam Ravnborg <sam@ravnborg.org>
Date:   Thu Jul 11 20:52:52 2019 -0700

    sh: prevent warnings when using iounmap
    
    [ Upstream commit 733f0025f0fb43e382b84db0930ae502099b7e62 ]
    
    When building drm/exynos for sh, as part of an allmodconfig build, the
    following warning triggered:
    
      exynos7_drm_decon.c: In function `decon_remove':
      exynos7_drm_decon.c:769:24: warning: unused variable `ctx'
        struct decon_context *ctx = dev_get_drvdata(&pdev->dev);
    
    The ctx variable is only used as argument to iounmap().
    
    In sh - allmodconfig CONFIG_MMU is not defined
    so it ended up in:
    
    \#define __iounmap(addr)        do { } while (0)
    \#define iounmap                __iounmap
    
    Fix the warning by introducing a static inline function for iounmap.
    
    This is similar to several other architectures.
    
    Link: http://lkml.kernel.org/r/20190622114208.24427-1-sam@ravnborg.org
    Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Rich Felker <dalias@libc.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Mark Brown <broonie@kernel.org>
    Cc: Inki Dae <inki.dae@samsung.com>
    Cc: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bce3e3e86428e22dc3cf4f5be37042f09aa7712d
Author: Oliver O'Halloran <oohall@gmail.com>
Date:   Thu Jul 11 01:05:17 2019 +1000

    powerpc/eeh: Handle hugepages in ioremap space
    
    [ Upstream commit 33439620680be5225c1b8806579a291e0d761ca0 ]
    
    In commit 4a7b06c157a2 ("powerpc/eeh: Handle hugepages in ioremap
    space") support for using hugepages in the vmalloc and ioremap areas was
    enabled for radix. Unfortunately this broke EEH MMIO error checking.
    
    Detection works by inserting a hook which checks the results of the
    ioreadXX() set of functions.  When a read returns a 0xFFs response we
    need to check for an error which we do by mapping the (virtual) MMIO
    address back to a physical address, then mapping physical address to a
    PCI device via an interval tree.
    
    When translating virt -> phys we currently assume the ioremap space is
    only populated by PAGE_SIZE mappings. If a hugepage mapping is found we
    emit a WARN_ON(), but otherwise handles the check as though a normal
    page was found. In pathalogical cases such as copying a buffer
    containing a lot of 0xFFs from BAR memory this can result in the system
    not booting because it's too busy printing WARN_ON()s.
    
    There's no real reason to assume huge pages can't be present and we're
    prefectly capable of handling them, so do that.
    
    Fixes: 4a7b06c157a2 ("powerpc/eeh: Handle hugepages in ioremap space")
    Reported-by: Sachin Sant <sachinp@linux.vnet.ibm.com>
    Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
    Tested-by: Sachin Sant <sachinp@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190710150517.27114-1-oohall@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 450233afb7ab8f65cbd45427b57e422ecae41f34
Author: morten petersen <morten_bp@live.dk>
Date:   Mon Jul 8 11:41:54 2019 +0000

    mailbox: handle failed named mailbox channel request
    
    [ Upstream commit 25777e5784a7b417967460d4fcf9660d05a0c320 ]
    
    Previously, if mbox_request_channel_byname was used with a name
    which did not exist in the "mbox-names" property of a mailbox
    client, the mailbox corresponding to the last entry in the
    "mbox-names" list would be incorrectly selected.
    With this patch, -EINVAL is returned if the named mailbox is
    not found.
    
    Signed-off-by: Morten Borup Petersen <morten_bp@live.dk>
    Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dd1fc2ce32f0b58b15d5c727d237bd8684310735
Author: Ocean Chen <oceanchen@google.com>
Date:   Mon Jul 8 12:34:56 2019 +0800

    f2fs: avoid out-of-range memory access
    
    [ Upstream commit 56f3ce675103e3fb9e631cfb4131fc768bc23e9a ]
    
    blkoff_off might over 512 due to fs corrupt or security
    vulnerability. That should be checked before being using.
    
    Use ENTRIES_IN_SUM to protect invalid value in cur_data_blkoff.
    
    Signed-off-by: Ocean Chen <oceanchen@google.com>
    Reviewed-by: Chao Yu <yuchao0@huawei.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34dd8fb9b8ff63629e4ea910a11546db43f85456
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Fri Jul 5 19:01:43 2019 +0900

    powerpc/boot: add {get, put}_unaligned_be32 to xz_config.h
    
    [ Upstream commit 9e005b761e7ad153dcf40a6cba1d681fe0830ac6 ]
    
    The next commit will make the way of passing CONFIG options more robust.
    Unfortunately, it would uncover another hidden issue; without this
    commit, skiroot_defconfig would be broken like this:
    
    |   WRAP    arch/powerpc/boot/zImage.pseries
    | arch/powerpc/boot/wrapper.a(decompress.o): In function `bcj_powerpc.isra.10':
    | decompress.c:(.text+0x720): undefined reference to `get_unaligned_be32'
    | decompress.c:(.text+0x7a8): undefined reference to `put_unaligned_be32'
    | make[1]: *** [arch/powerpc/boot/Makefile;383: arch/powerpc/boot/zImage.pseries] Error 1
    | make: *** [arch/powerpc/Makefile;295: zImage] Error 2
    
    skiroot_defconfig is the only defconfig that enables CONFIG_KERNEL_XZ
    for ppc, which has never been correctly built before.
    
    I figured out the root cause in lib/decompress_unxz.c:
    
    | #ifdef CONFIG_PPC
    | #      define XZ_DEC_POWERPC
    | #endif
    
    CONFIG_PPC is undefined here in the ppc bootwrapper because autoconf.h
    is not included except by arch/powerpc/boot/serial.c
    
    XZ_DEC_POWERPC is not defined, therefore, bcj_powerpc() is not compiled
    for the bootwrapper.
    
    With the next commit passing CONFIG_PPC correctly, we would realize that
    {get,put}_unaligned_be32 was missing.
    
    Unlike the other decompressors, the ppc bootwrapper duplicates all the
    necessary helpers in arch/powerpc/boot/.
    
    The other architectures define __KERNEL__ and pull in helpers for
    building the decompressors.
    
    If ppc bootwrapper had defined __KERNEL__, lib/xz/xz_private.h would
    have included <asm/unaligned.h>:
    
    | #ifdef __KERNEL__
    | #       include <linux/xz.h>
    | #       include <linux/kernel.h>
    | #       include <asm/unaligned.h>
    
    However, doing so would cause tons of definition conflicts since the
    bootwrapper has duplicated everything.
    
    I just added copies of {get,put}_unaligned_be32, following the
    bootwrapper coding convention.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20190705100144.28785-1-yamada.masahiro@socionext.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8baa8d68416991de9076c10ef1c66c108af9065c
Author: Konstantin Taranov <konstantin.taranov@inf.ethz.ch>
Date:   Thu Jun 27 16:06:43 2019 +0200

    RDMA/rxe: Fill in wc byte_len with IB_WC_RECV_RDMA_WITH_IMM
    
    [ Upstream commit bdce1290493caa3f8119f24b5dacc3fb7ca27389 ]
    
    Calculate the correct byte_len on the receiving side when a work
    completion is generated with IB_WC_RECV_RDMA_WITH_IMM opcode.
    
    According to the IBA byte_len must indicate the number of written bytes,
    whereas it was always equal to zero for the IB_WC_RECV_RDMA_WITH_IMM
    opcode, even though data was transferred.
    
    Fixes: 8700e3e7c485 ("Soft RoCE driver")
    Signed-off-by: Konstantin Taranov <konstantin.taranov@inf.ethz.ch>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ff859fa7da66e77b41c165bc6f08a40f9c14edb1
Author: Numfor Mbiziwo-Tiapo <nums@google.com>
Date:   Tue Jul 2 10:37:15 2019 -0700

    perf test mmap-thread-lookup: Initialize variable to suppress memory sanitizer warning
    
    [ Upstream commit 4e4cf62b37da5ff45c904a3acf242ab29ed5881d ]
    
    Running the 'perf test' command after building perf with a memory
    sanitizer causes a warning that says:
    
      WARNING: MemorySanitizer: use-of-uninitialized-value... in mmap-thread-lookup.c
    
    Initializing the go variable to 0 silences this harmless warning.
    
    Committer warning:
    
    This was harmless, just a simple test writing whatever was at that
    sizeof(int) memory area just to signal another thread blocked reading
    that file created with pipe(). Initialize it tho so that we don't get
    this warning.
    
    Signed-off-by: Numfor Mbiziwo-Tiapo <nums@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Drayton <mbd@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/20190702173716.181223-1-nums@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c677e7adea5b7457f64042cab2290d055eee42e9
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Fri Jun 28 19:22:47 2019 +0200

    kallsyms: exclude kasan local symbols on s390
    
    [ Upstream commit 33177f01ca3fe550146bb9001bec2fd806b2f40c ]
    
    gcc asan instrumentation emits the following sequence to store frame pc
    when the kernel is built with CONFIG_RELOCATABLE:
    debug/vsprintf.s:
            .section        .data.rel.ro.local,"aw"
            .align  8
    .LC3:
            .quad   .LASANPC4826@GOTOFF
    .text
            .align  8
            .type   number, @function
    number:
    .LASANPC4826:
    
    and in case reloc is issued for LASANPC label it also gets into .symtab
    with the same address as actual function symbol:
    $ nm -n vmlinux | grep 0000000001397150
    0000000001397150 t .LASANPC4826
    0000000001397150 t number
    
    In the end kernel backtraces are almost unreadable:
    [  143.748476] Call Trace:
    [  143.748484] ([<000000002da3e62c>] .LASANPC2671+0x114/0x190)
    [  143.748492]  [<000000002eca1a58>] .LASANPC2612+0x110/0x160
    [  143.748502]  [<000000002de9d830>] print_address_description+0x80/0x3b0
    [  143.748511]  [<000000002de9dd64>] __kasan_report+0x15c/0x1c8
    [  143.748521]  [<000000002ecb56d4>] strrchr+0x34/0x60
    [  143.748534]  [<000003ff800a9a40>] kasan_strings+0xb0/0x148 [test_kasan]
    [  143.748547]  [<000003ff800a9bba>] kmalloc_tests_init+0xe2/0x528 [test_kasan]
    [  143.748555]  [<000000002da2117c>] .LASANPC4069+0x354/0x748
    [  143.748563]  [<000000002dbfbb16>] do_init_module+0x136/0x3b0
    [  143.748571]  [<000000002dbff3f4>] .LASANPC3191+0x2164/0x25d0
    [  143.748580]  [<000000002dbffc4c>] .LASANPC3196+0x184/0x1b8
    [  143.748587]  [<000000002ecdf2ec>] system_call+0xd8/0x2d8
    
    Since LASANPC labels are not even unique and get into .symtab only due
    to relocs filter them out in kallsyms.
    
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7e55003b577b03511020b2a980127bbdd212b8ed
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jun 24 14:35:39 2019 +0200

    serial: sh-sci: Fix TX DMA buffer flushing and workqueue races
    
    [ Upstream commit 8493eab02608b0e82f67b892aa72882e510c31d0 ]
    
    When uart_flush_buffer() is called, the .flush_buffer() callback zeroes
    the tx_dma_len field.  This may race with the work queue function
    handling transmit DMA requests:
    
      1. If the buffer is flushed before the first DMA API call,
         dmaengine_prep_slave_single() may be called with a zero length,
         causing the DMA request to never complete, leading to messages
         like:
    
            rcar-dmac e7300000.dma-controller: Channel Address Error happen
    
         and, with debug enabled:
    
            sh-sci e6e88000.serial: sci_dma_tx_work_fn: ffff800639b55000: 0...0, cookie 126
    
         and DMA timeouts.
    
      2. If the buffer is flushed after the first DMA API call, but before
         the second, dma_sync_single_for_device() may be called with a zero
         length, causing the transmit data not to be flushed to RAM, and
         leading to stale data being output.
    
    Fix this by:
      1. Letting sci_dma_tx_work_fn() return immediately if the transmit
         buffer is empty,
      2. Extending the critical section to cover all DMA preparational work,
         so tx_dma_len stays consistent for all of it,
      3. Using local copies of circ_buf.head and circ_buf.tail, to make sure
         they match the actual operation above.
    
    Reported-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Suggested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Link: https://lore.kernel.org/r/20190624123540.20629-2-geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56b68e63bcd978f517bfc035ab0576f011dc13b6
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jun 24 14:35:40 2019 +0200

    serial: sh-sci: Terminate TX DMA during buffer flushing
    
    [ Upstream commit 775b7ffd7d6d5db320d99b0a485c51e04dfcf9f1 ]
    
    While the .flush_buffer() callback clears sci_port.tx_dma_len since
    commit 1cf4a7efdc71cab8 ("serial: sh-sci: Fix race condition causing
    garbage during shutdown"), it does not terminate a transmit DMA
    operation that may be in progress.
    
    Fix this by terminating any pending DMA operations, and resetting the
    corresponding cookie.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    Tested-by: Eugeniu Rosca <erosca@de.adit-jv.com>
    
    Link: https://lore.kernel.org/r/20190624123540.20629-3-geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c70bfc1b76112ccadff04c6b51881d7781cc60b2
Author: Liu, Changcheng <changcheng.liu@intel.com>
Date:   Fri Jun 28 14:16:13 2019 +0800

    RDMA/i40iw: Set queue pair state when being queried
    
    [ Upstream commit 2e67e775845373905d2c2aecb9062c2c4352a535 ]
    
    The API for ib_query_qp requires the driver to set qp_state and
    cur_qp_state on return, add the missing sets.
    
    Fixes: d37498417947 ("i40iw: add files for iwarp interface")
    Signed-off-by: Changcheng Liu <changcheng.liu@aliyun.com>
    Acked-by: Shiraz Saleem <shiraz.saleem@intel.com>
    Reviewed-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5bab3a0a70907a3cfe5c82d6f2d0b3477ce13fd1
Author: Christian Lamparter <chunkeey@gmail.com>
Date:   Sat Jun 15 17:23:13 2019 +0200

    powerpc/4xx/uic: clear pending interrupt after irq type/pol change
    
    [ Upstream commit 3ab3a0689e74e6aa5b41360bc18861040ddef5b1 ]
    
    When testing out gpio-keys with a button, a spurious
    interrupt (and therefore a key press or release event)
    gets triggered as soon as the driver enables the irq
    line for the first time.
    
    This patch clears any potential bogus generated interrupt
    that was caused by the switching of the associated irq's
    type and polarity.
    
    Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20756b70965b14956b4167320a3796dc9a45f341
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Fri May 24 21:54:14 2019 +0200

    um: Silence lockdep complaint about mmap_sem
    
    [ Upstream commit 80bf6ceaf9310b3f61934c69b382d4912deee049 ]
    
    When we get into activate_mm(), lockdep complains that we're doing
    something strange:
    
        WARNING: possible circular locking dependency detected
        5.1.0-10252-gb00152307319-dirty #121 Not tainted
        ------------------------------------------------------
        inside.sh/366 is trying to acquire lock:
        (____ptrval____) (&(&p->alloc_lock)->rlock){+.+.}, at: flush_old_exec+0x703/0x8d7
    
        but task is already holding lock:
        (____ptrval____) (&mm->mmap_sem){++++}, at: flush_old_exec+0x6c5/0x8d7
    
        which lock already depends on the new lock.
    
        the existing dependency chain (in reverse order) is:
    
        -> #1 (&mm->mmap_sem){++++}:
               [...]
               __lock_acquire+0x12ab/0x139f
               lock_acquire+0x155/0x18e
               down_write+0x3f/0x98
               flush_old_exec+0x748/0x8d7
               load_elf_binary+0x2ca/0xddb
               [...]
    
        -> #0 (&(&p->alloc_lock)->rlock){+.+.}:
               [...]
               __lock_acquire+0x12ab/0x139f
               lock_acquire+0x155/0x18e
               _raw_spin_lock+0x30/0x83
               flush_old_exec+0x703/0x8d7
               load_elf_binary+0x2ca/0xddb
               [...]
    
        other info that might help us debug this:
    
         Possible unsafe locking scenario:
    
               CPU0                    CPU1
               ----                    ----
          lock(&mm->mmap_sem);
                                       lock(&(&p->alloc_lock)->rlock);
                                       lock(&mm->mmap_sem);
          lock(&(&p->alloc_lock)->rlock);
    
         *** DEADLOCK ***
    
        2 locks held by inside.sh/366:
         #0: (____ptrval____) (&sig->cred_guard_mutex){+.+.}, at: __do_execve_file+0x12d/0x869
         #1: (____ptrval____) (&mm->mmap_sem){++++}, at: flush_old_exec+0x6c5/0x8d7
    
        stack backtrace:
        CPU: 0 PID: 366 Comm: inside.sh Not tainted 5.1.0-10252-gb00152307319-dirty #121
        Stack:
         [...]
        Call Trace:
         [<600420de>] show_stack+0x13b/0x155
         [<6048906b>] dump_stack+0x2a/0x2c
         [<6009ae64>] print_circular_bug+0x332/0x343
         [<6009c5c6>] check_prev_add+0x669/0xdad
         [<600a06b4>] __lock_acquire+0x12ab/0x139f
         [<6009f3d0>] lock_acquire+0x155/0x18e
         [<604a07e0>] _raw_spin_lock+0x30/0x83
         [<60151e6a>] flush_old_exec+0x703/0x8d7
         [<601a8eb8>] load_elf_binary+0x2ca/0xddb
         [...]
    
    I think it's because in exec_mmap() we have
    
            down_read(&old_mm->mmap_sem);
    ...
            task_lock(tsk);
    ...
            activate_mm(active_mm, mm);
            (which does down_write(&mm->mmap_sem))
    
    I'm not really sure why lockdep throws in the whole knowledge
    about the task lock, but it seems that old_mm and mm shouldn't
    ever be the same (and it doesn't deadlock) so tell lockdep that
    they're different.
    
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f9690b8e761b8313e3cbe6e45b73a1a29ed7b203
Author: Axel Lin <axel.lin@ingics.com>
Date:   Wed Jun 26 21:30:07 2019 +0800

    mfd: hi655x-pmic: Fix missing return value check for devm_regmap_init_mmio_clk
    
    [ Upstream commit 7efd105c27fd2323789b41b64763a0e33ed79c08 ]
    
    Since devm_regmap_init_mmio_clk can fail, add return value checking.
    
    Signed-off-by: Axel Lin <axel.lin@ingics.com>
    Acked-by: Chen Feng <puck.chen@hisilicon.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a3727b0a3de489e6c1855d0722489cad3bd3fb67
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon May 20 10:06:25 2019 +0100

    mfd: arizona: Fix undefined behavior
    
    [ Upstream commit 5da6cbcd2f395981aa9bfc571ace99f1c786c985 ]
    
    When the driver is used with a subdevice that is disabled in the
    kernel configuration, clang gets a little confused about the
    control flow and fails to notice that n_subdevs is only
    uninitialized when subdevs is NULL, and we check for that,
    leading to a false-positive warning:
    
    drivers/mfd/arizona-core.c:1423:19: error: variable 'n_subdevs' is uninitialized when used here
          [-Werror,-Wuninitialized]
                                  subdevs, n_subdevs, NULL, 0, NULL);
                                           ^~~~~~~~~
    drivers/mfd/arizona-core.c:999:15: note: initialize the variable 'n_subdevs' to silence this warning
            int n_subdevs, ret, i;
                         ^
                          = 0
    
    Ideally, we would rearrange the code to avoid all those early
    initializations and have an explicit exit in each disabled case,
    but it's much easier to chicken out and add one more initialization
    here to shut up the warning.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f1405059725a8cdac363f6dd98fad4479bab319d
Author: Robert Hancock <hancock@sedsystems.ca>
Date:   Tue Jun 4 16:35:43 2019 -0600

    mfd: core: Set fwnode for created devices
    
    [ Upstream commit c176c6d7e932662668bcaec2d763657096589d85 ]
    
    The logic for setting the of_node on devices created by mfd did not set
    the fwnode pointer to match, which caused fwnode-based APIs to
    malfunction on these devices since the fwnode pointer was null. Fix
    this.
    
    Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 253278f2b5062e05cae6d46fe08b849d9be32336
Author: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Date:   Thu Jun 27 00:08:01 2019 +0530

    recordmcount: Fix spurious mcount entries on powerpc
    
    [ Upstream commit 80e5302e4bc85a6b685b7668c36c6487b5f90e9a ]
    
    An impending change to enable HAVE_C_RECORDMCOUNT on powerpc leads to
    warnings such as the following:
    
      # modprobe kprobe_example
      ftrace-powerpc: Not expected bl: opcode is 3c4c0001
      WARNING: CPU: 0 PID: 227 at kernel/trace/ftrace.c:2001 ftrace_bug+0x90/0x318
      Modules linked in:
      CPU: 0 PID: 227 Comm: modprobe Not tainted 5.2.0-rc6-00678-g1c329100b942 #2
      NIP:  c000000000264318 LR: c00000000025d694 CTR: c000000000f5cd30
      REGS: c000000001f2b7b0 TRAP: 0700   Not tainted  (5.2.0-rc6-00678-g1c329100b942)
      MSR:  900000010282b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]>  CR: 28228222  XER: 00000000
      CFAR: c0000000002642fc IRQMASK: 0
      <snip>
      NIP [c000000000264318] ftrace_bug+0x90/0x318
      LR [c00000000025d694] ftrace_process_locs+0x4f4/0x5e0
      Call Trace:
      [c000000001f2ba40] [0000000000000004] 0x4 (unreliable)
      [c000000001f2bad0] [c00000000025d694] ftrace_process_locs+0x4f4/0x5e0
      [c000000001f2bb90] [c00000000020ff10] load_module+0x25b0/0x30c0
      [c000000001f2bd00] [c000000000210cb0] sys_finit_module+0xc0/0x130
      [c000000001f2be20] [c00000000000bda4] system_call+0x5c/0x70
      Instruction dump:
      419e0018 2f83ffff 419e00bc 2f83ffea 409e00cc 4800001c 0fe00000 3c62ff96
      39000001 39400000 386386d0 480000c4 <0fe00000> 3ce20003 39000001 3c62ff96
      ---[ end trace 4c438d5cebf78381 ]---
      ftrace failed to modify
      [<c0080000012a0008>] 0xc0080000012a0008
       actual:   01:00:4c:3c
      Initializing ftrace call sites
      ftrace record flags: 2000000
       (0)
       expected tramp: c00000000006af4c
    
    Looking at the relocation records in __mcount_loc shows a few spurious
    entries:
    
      RELOCATION RECORDS FOR [__mcount_loc]:
      OFFSET           TYPE              VALUE
      0000000000000000 R_PPC64_ADDR64    .text.unlikely+0x0000000000000008
      0000000000000008 R_PPC64_ADDR64    .text.unlikely+0x0000000000000014
      0000000000000010 R_PPC64_ADDR64    .text.unlikely+0x0000000000000060
      0000000000000018 R_PPC64_ADDR64    .text.unlikely+0x00000000000000b4
      0000000000000020 R_PPC64_ADDR64    .init.text+0x0000000000000008
      0000000000000028 R_PPC64_ADDR64    .init.text+0x0000000000000014
    
    The first entry in each section is incorrect. Looking at the
    relocation records, the spurious entries correspond to the
    R_PPC64_ENTRY records:
    
      RELOCATION RECORDS FOR [.text.unlikely]:
      OFFSET           TYPE              VALUE
      0000000000000000 R_PPC64_REL64     .TOC.-0x0000000000000008
      0000000000000008 R_PPC64_ENTRY     *ABS*
      0000000000000014 R_PPC64_REL24     _mcount
      <snip>
    
    The problem is that we are not validating the return value from
    get_mcountsym() in sift_rel_mcount(). With this entry, mcountsym is 0,
    but Elf_r_sym(relp) also ends up being 0. Fix this by ensuring
    mcountsym is valid before processing the entry.
    
    Signed-off-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
    Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Tested-by: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2482f76499d2dd0664d7c91bd06d4608c30615b
Author: Bastien Nocera <hadess@hadess.net>
Date:   Thu Jun 27 09:20:45 2019 +0200

    iio: iio-utils: Fix possible incorrect mask calculation
    
    [ Upstream commit 208a68c8393d6041a90862992222f3d7943d44d6 ]
    
    On some machines, iio-sensor-proxy was returning all 0's for IIO sensor
    values. It turns out that the bits_used for this sensor is 32, which makes
    the mask calculation:
    
    *mask = (1 << 32) - 1;
    
    If the compiler interprets the 1 literals as 32-bit ints, it generates
    undefined behavior depending on compiler version and optimization level.
    On my system, it optimizes out the shift, so the mask value becomes
    
    *mask = (1) - 1;
    
    With a mask value of 0, iio-sensor-proxy will always return 0 for every axis.
    
    Avoid incorrect 0 values caused by compiler optimization.
    
    See original fix by Brett Dutro <brett.dutro@gmail.com> in
    iio-sensor-proxy:
    https://github.com/hadess/iio-sensor-proxy/commit/9615ceac7c134d838660e209726cd86aa2064fd3
    
    Signed-off-by: Bastien Nocera <hadess@hadess.net>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5086e479e2f58bf88253f8d7f68e7767e0327479
Author: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
Date:   Wed Jun 12 15:47:59 2019 +0530

    PCI: xilinx-nwl: Fix Multi MSI data programming
    
    [ Upstream commit 181fa434d0514e40ebf6e9721f2b72700287b6e2 ]
    
    According to the PCI Local Bus specification Revision 3.0,
    section 6.8.1.3 (Message Control for MSI), endpoints that
    are Multiple Message Capable as defined by bits [3:1] in
    the Message Control for MSI can request a number of vectors
    that is power of two aligned.
    
    As specified in section 6.8.1.6 "Message data for MSI", the Multiple
    Message Enable field (bits [6:4] of the Message Control register)
    defines the number of low order message data bits the function is
    permitted to modify to generate its system software allocated
    vectors.
    
    The MSI controller in the Xilinx NWL PCIe controller supports a number
    of MSI vectors specified through a bitmap and the hwirq number for an
    MSI, that is the value written in the MSI data TLP is determined by
    the bitmap allocation.
    
    For instance, in a situation where two endpoints sitting on
    the PCI bus request the following MSI configuration, with
    the current PCI Xilinx bitmap allocation code (that does not
    align MSI vector allocation on a power of two boundary):
    
    Endpoint #1: Requesting 1 MSI vector - allocated bitmap bits 0
    Endpoint #2: Requesting 2 MSI vectors - allocated bitmap bits [1,2]
    
    The bitmap value(s) corresponds to the hwirq number that is programmed
    into the Message Data for MSI field in the endpoint MSI capability
    and is detected by the root complex to fire the corresponding
    MSI irqs. The value written in Message Data for MSI field corresponds
    to the first bit allocated in the bitmap for Multi MSI vectors.
    
    The current Xilinx NWL MSI allocation code allows a bitmap allocation
    that is not a power of two boundaries, so endpoint #2, is allowed to
    toggle Message Data bit[0] to differentiate between its two vectors
    (meaning that the MSI data will be respectively 0x0 and 0x1 for the two
    vectors allocated to endpoint #2).
    
    This clearly aliases with the Endpoint #1 vector allocation, resulting
    in a broken Multi MSI implementation.
    
    Update the code to allocate MSI bitmap ranges with a power of two
    alignment, fixing the bug.
    
    Fixes: ab597d35ef11 ("PCI: xilinx-nwl: Add support for Xilinx NWL PCIe Host Controller")
    Suggested-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
    [lorenzo.pieralisi@arm.com: updated commit log]
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Marc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7caebf6db7e961560d47787d0f84664a2986ebe0
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Jun 11 11:43:31 2019 -0700

    kbuild: Add -Werror=unknown-warning-option to CLANG_FLAGS
    
    [ Upstream commit 589834b3a0097a4908f4112eac0ca2feb486fa32 ]
    
    In commit ebcc5928c5d9 ("arm64: Silence gcc warnings about arch ABI
    drift"), the arm64 Makefile added -Wno-psabi to KBUILD_CFLAGS, which is
    a GCC only option so clang rightfully complains:
    
    warning: unknown warning option '-Wno-psabi' [-Wunknown-warning-option]
    
    https://clang.llvm.org/docs/DiagnosticsReference.html#wunknown-warning-option
    
    However, by default, this is merely a warning so the build happily goes
    on with a slew of these warnings in the process.
    
    Commit c3f0d0bc5b01 ("kbuild, LLVMLinux: Add -Werror to cc-option to
    support clang") worked around this behavior in cc-option by adding
    -Werror so that unknown flags cause an error. However, this all happens
    silently and when an unknown flag is added to the build unconditionally
    like -Wno-psabi, cc-option will always fail because there is always an
    unknown flag in the list of flags. This manifested as link time failures
    in the arm64 libstub because -fno-stack-protector didn't get added to
    KBUILD_CFLAGS.
    
    To avoid these weird cryptic failures in the future, make clang behave
    like gcc and immediately error when it encounters an unknown flag by
    adding -Werror=unknown-warning-option to CLANG_FLAGS. This can be added
    unconditionally for clang because it is supported by at least 3.0.0,
    according to godbolt [1] and 4.0.0, according to its documentation [2],
    which is far earlier than we typically support.
    
    [1]: https://godbolt.org/z/7F7rm3
    [2]: https://releases.llvm.org/4.0.0/tools/clang/docs/DiagnosticsReference.html#wunknown-warning-option
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/511
    Link: https://github.com/ClangBuiltLinux/linux/issues/517
    Suggested-by: Peter Smith <peter.smith@linaro.org>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2abc45ec42c19d1ccfd2522e999a6bb5a90522f3
Author: Marek Vasut <marek.vasut+renesas@gmail.com>
Date:   Mon May 27 00:51:51 2019 +0200

    PCI: sysfs: Ignore lockdep for remove attribute
    
    [ Upstream commit dc6b698a86fe40a50525433eb8e92a267847f6f9 ]
    
    With CONFIG_PROVE_LOCKING=y, using sysfs to remove a bridge with a device
    below it causes a lockdep warning, e.g.,
    
      # echo 1 > /sys/class/pci_bus/0000:00/device/0000:00:00.0/remove
      ============================================
      WARNING: possible recursive locking detected
      ...
      pci_bus 0000:01: busn_res: [bus 01] is released
    
    The remove recursively removes the subtree below the bridge.  Each call
    uses a different lock so there's no deadlock, but the locks were all
    created with the same lockdep key so the lockdep checker can't tell them
    apart.
    
    Mark the "remove" sysfs attribute with __ATTR_IGNORE_LOCKDEP() as it is
    safe to ignore the lockdep check between different "remove" kernfs
    instances.
    
    There's discussion about a similar issue in USB at [1], which resulted in
    356c05d58af0 ("sysfs: get rid of some lockdep false positives") and
    e9b526fe7048 ("i2c: suppress lockdep warning on delete_device"), which do
    basically the same thing for USB "remove" and i2c "delete_device" files.
    
    [1] https://lore.kernel.org/r/Pine.LNX.4.44L0.1204251436140.1206-100000@iolanthe.rowland.org
    Link: https://lore.kernel.org/r/20190526225151.3865-1-marek.vasut@gmail.com
    Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
    [bhelgaas: trim commit log, details at above links]
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Cc: Phil Edworthy <phil.edworthy@renesas.com>
    Cc: Simon Horman <horms+renesas@verge.net.au>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 514670ac283a14650ddf5add01d5354b0d4e996f
Author: Alexey Kardashevskiy <aik@ozlabs.ru>
Date:   Wed Jun 5 13:38:14 2019 +1000

    powerpc/pci/of: Fix OF flags parsing for 64bit BARs
    
    [ Upstream commit df5be5be8735ef2ae80d5ae1f2453cd81a035c4b ]
    
    When the firmware does PCI BAR resource allocation, it passes the assigned
    addresses and flags (prefetch/64bit/...) via the "reg" property of
    a PCI device device tree node so the kernel does not need to do
    resource allocation.
    
    The flags are stored in resource::flags - the lower byte stores
    PCI_BASE_ADDRESS_SPACE/etc bits and the other bytes are IORESOURCE_IO/etc.
    Some flags from PCI_BASE_ADDRESS_xxx and IORESOURCE_xxx are duplicated,
    such as PCI_BASE_ADDRESS_MEM_PREFETCH/PCI_BASE_ADDRESS_MEM_TYPE_64/etc.
    When parsing the "reg" property, we copy the prefetch flag but we skip
    on PCI_BASE_ADDRESS_MEM_TYPE_64 which leaves the flags out of sync.
    
    The missing IORESOURCE_MEM_64 flag comes into play under 2 conditions:
    1. we remove PCI_PROBE_ONLY for pseries (by hacking pSeries_setup_arch()
    or by passing "/chosen/linux,pci-probe-only");
    2. we request resource alignment (by passing pci=resource_alignment=
    via the kernel cmd line to request PAGE_SIZE alignment or defining
    ppc_md.pcibios_default_alignment which returns anything but 0). Note that
    the alignment requests are ignored if PCI_PROBE_ONLY is enabled.
    
    With 1) and 2), the generic PCI code in the kernel unconditionally
    decides to:
    - reassign the BARs in pci_specified_resource_alignment() (works fine)
    - write new BARs to the device - this fails for 64bit BARs as the generic
    code looks at IORESOURCE_MEM_64 (not set) and writes only lower 32bits
    of the BAR and leaves the upper 32bit unmodified which breaks BAR mapping
    in the hypervisor.
    
    This fixes the issue by copying the flag. This is useful if we want to
    enforce certain BAR alignment per platform as handling subpage sized BARs
    is proven to cause problems with hotplug (SLOF already aligns BARs to 64k).
    
    Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
    Reviewed-by: Sam Bobroff <sbobroff@linux.ibm.com>
    Reviewed-by: Oliver O'Halloran <oohall@gmail.com>
    Reviewed-by: Shawn Anastasio <shawn@anastas.io>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d585589e5f9bd80fb29f22345002a18d4aaad472
Author: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
Date:   Mon Jun 3 19:05:28 2019 +0200

    usb: gadget: Zero ffs_io_data
    
    [ Upstream commit 508595515f4bcfe36246e4a565cf280937aeaade ]
    
    In some cases the "Allocate & copy" block in ffs_epfile_io() is not
    executed. Consequently, in such a case ffs_alloc_buffer() is never called
    and struct ffs_io_data is not initialized properly. This in turn leads to
    problems when ffs_free_buffer() is called at the end of ffs_epfile_io().
    
    This patch uses kzalloc() instead of kmalloc() in the aio case and memset()
    in non-aio case to properly initialize struct ffs_io_data.
    
    Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com>
    Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4780759566fe872fc0dd662bb571ae7deed61138
Author: Serge Semin <fancer.lancer@gmail.com>
Date:   Wed May 8 13:44:41 2019 +0300

    tty: serial_core: Set port active bit in uart_port_activate
    
    [ Upstream commit 13b18d35909707571af9539f7731389fbf0feb31 ]
    
    A bug was introduced by commit b3b576461864 ("tty: serial_core: convert
    uart_open to use tty_port_open"). It caused a constant warning printed
    into the system log regarding the tty and port counter mismatch:
    
    [   21.644197] ttyS ttySx: tty_port_close_start: tty->count = 1 port count = 2
    
    in case if session hangup was detected so the warning is printed starting
    from the second open-close iteration.
    
    Particularly the problem was discovered in situation when there is a
    serial tty device without hardware back-end being setup. It is considered
    by the tty-serial subsystems as a hardware problem with session hang up.
    In this case uart_startup() will return a positive value with TTY_IO_ERROR
    flag set in corresponding tty_struct instance. The same value will get
    passed to be returned from the activate() callback and then being returned
    from tty_port_open(). But since in this case tty_port_block_til_ready()
    isn't called the TTY_PORT_ACTIVE flag isn't set (while the method had been
    called before tty_port_open conversion was introduced and the rest of the
    subsystem code expected the bit being set in this case), which prevents the
    uart_hangup() method to perform any cleanups including the tty port
    counter setting to zero. So the next attempt to open/close the tty device
    will discover the counters mismatch.
    
    In order to fix the problem we need to manually set the TTY_PORT_ACTIVE
    flag in case if uart_startup() returned a positive value. In this case
    the hang up procedure will perform a full set of cleanup actions including
    the port ref-counter resetting.
    
    Fixes: b3b576461864 "tty: serial_core: convert uart_open to use tty_port_open"
    Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d133532eecd156987cca61191e099a6c2c83cc8
Author: Douglas Anderson <dianders@chromium.org>
Date:   Fri Jun 14 15:47:29 2019 -0700

    drm/rockchip: Properly adjust to a true clock in adjusted_mode
    
    [ Upstream commit 99b9683f2142b20bad78e61f7f829e8714e45685 ]
    
    When fixing up the clock in vop_crtc_mode_fixup() we're not doing it
    quite correctly.  Specifically if we've got the true clock 266666667 Hz,
    we'll perform this calculation:
       266666667 / 1000 => 266666
    
    Later when we try to set the clock we'll do clk_set_rate(266666 *
    1000).  The common clock framework won't actually pick the proper clock
    in this case since it always wants clocks <= the specified one.
    
    Let's solve this by using DIV_ROUND_UP.
    
    Fixes: b59b8de31497 ("drm/rockchip: return a true clock rate to adjusted_mode")
    Signed-off-by: Douglas Anderson <dianders@chromium.org>
    Signed-off-by: Sean Paul <seanpaul@chromium.org>
    Reviewed-by: Yakir Yang <ykk@rock-chips.com>
    Signed-off-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190614224730.98622-1-dianders@chromium.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 67ac0ef9cc8103480e51c6a4e9081ac936ff2162
Author: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Date:   Tue May 28 14:04:02 2019 +0900

    phy: renesas: rcar-gen2: Fix memory leak at error paths
    
    [ Upstream commit d4a36e82924d3305a17ac987a510f3902df5a4b2 ]
    
    This patch fixes memory leak at error paths of the probe function.
    In for_each_child_of_node, if the loop returns, the driver should
    call of_put_node() before returns.
    
    Reported-by: Julia Lawall <julia.lawall@lip6.fr>
    Fixes: 1233f59f745b237 ("phy: Renesas R-Car Gen2 PHY driver")
    Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 34db79aefe86f0fbaeae569322c0549a68473c58
Author: David Riley <davidriley@chromium.org>
Date:   Mon Jun 10 14:18:10 2019 -0700

    drm/virtio: Add memory barriers for capset cache.
    
    [ Upstream commit 9ff3a5c88e1f1ab17a31402b96d45abe14aab9d7 ]
    
    After data is copied to the cache entry, atomic_set is used indicate
    that the data is the entry is valid without appropriate memory barriers.
    Similarly the read side was missing the corresponding memory barriers.
    
    Signed-off-by: David Riley <davidriley@chromium.org>
    Link: http://patchwork.freedesktop.org/patch/msgid/20190610211810.253227-5-davidriley@chromium.org
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bd36de4d06b31c1746ebc14d5753ab58214933f7
Author: Rautkoski Kimmo EXT <ext-kimmo.rautkoski@vaisala.com>
Date:   Fri May 24 09:19:22 2019 +0000

    serial: 8250: Fix TX interrupt handling condition
    
    [ Upstream commit db1b5bc047b3cadaedab3826bba82c3d9e023c4b ]
    
    Interrupt handler checked THRE bit (transmitter holding register
    empty) in LSR to detect if TX fifo is empty.
    In case when there is only receive interrupts the TX handling
    got called because THRE bit in LSR is set when there is no
    transmission (FIFO empty). TX handling caused TX stop, which in
    RS-485 half-duplex mode actually resets receiver FIFO. This is not
    desired during reception because of possible data loss.
    
    The fix is to check if THRI is set in IER in addition of the TX
    fifo status. THRI in IER is set when TX is started and cleared
    when TX is stopped.
    This ensures that TX handling is only called when there is really
    transmission on going and an interrupt for THRE and not when there
    are only RX interrupts.
    
    Signed-off-by: Kimmo Rautkoski <ext-kimmo.rautkoski@vaisala.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 20258b3237ee609aac00e76b19546c2d066c809b
Author: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Date:   Mon Jun 10 19:23:08 2019 +0200

    tty: serial: msm_serial: avoid system lockup condition
    
    [ Upstream commit ba3684f99f1b25d2a30b6956d02d339d7acb9799 ]
    
    The function msm_wait_for_xmitr can be taken with interrupts
    disabled. In order to avoid a potential system lockup - demonstrated
    under stress testing conditions on SoC QCS404/5 - make sure we wait
    for a bounded amount of time.
    
    Tested on SoC QCS404.
    
    Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 483aca92394b24e39dd95b5af2f8df5ca4320d6b
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Fri May 31 21:37:33 2019 +0800

    tty/serial: digicolor: Fix digicolor-usart already registered warning
    
    [ Upstream commit c7ad9ba0611c53cfe194223db02e3bca015f0674 ]
    
    When modprobe/rmmod/modprobe module, if platform_driver_register() fails,
    the kernel complained,
    
      proc_dir_entry 'driver/digicolor-usart' already registered
      WARNING: CPU: 1 PID: 5636 at fs/proc/generic.c:360 proc_register+0x19d/0x270
    
    Fix this by adding uart_unregister_driver() when platform_driver_register() fails.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Acked-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e69bea9796dad2e4aa491c6a25f1aaeabb50bbc1
Author: Wang Hai <wanghai26@huawei.com>
Date:   Wed May 15 22:37:25 2019 +0800

    memstick: Fix error cleanup path of memstick_init
    
    [ Upstream commit 65f1a0d39c289bb6fc85635528cd36c4b07f560e ]
    
    If bus_register fails. On its error handling path, it has cleaned up
    what it has done. There is no need to call bus_unregister again.
    Otherwise, if bus_unregister is called, issues such as null-ptr-deref
    will arise.
    
    Syzkaller report this:
    
    kobject_add_internal failed for memstick (error: -12 parent: bus)
    BUG: KASAN: null-ptr-deref in sysfs_remove_file_ns+0x1b/0x40 fs/sysfs/file.c:467
    Read of size 8 at addr 0000000000000078 by task syz-executor.0/4460
    
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xa9/0x10e lib/dump_stack.c:113
     __kasan_report+0x171/0x18d mm/kasan/report.c:321
     kasan_report+0xe/0x20 mm/kasan/common.c:614
     sysfs_remove_file_ns+0x1b/0x40 fs/sysfs/file.c:467
     sysfs_remove_file include/linux/sysfs.h:519 [inline]
     bus_remove_file+0x6c/0x90 drivers/base/bus.c:145
     remove_probe_files drivers/base/bus.c:599 [inline]
     bus_unregister+0x6e/0x100 drivers/base/bus.c:916 ? 0xffffffffc1590000
     memstick_init+0x7a/0x1000 [memstick]
     do_one_initcall+0xb9/0x3b5 init/main.c:914
     do_init_module+0xe0/0x330 kernel/module.c:3468
     load_module+0x38eb/0x4270 kernel/module.c:3819
     __do_sys_finit_module+0x162/0x190 kernel/module.c:3909
     do_syscall_64+0x72/0x2a0 arch/x86/entry/common.c:298
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: baf8532a147d ("memstick: initial commit for Sony MemoryStick support")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wang Hai <wanghai26@huawei.com>
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebfba805952535c317161c8b719026c2b4d530f1
Author: Jyri Sarha <jsarha@ti.com>
Date:   Mon May 27 16:47:54 2019 +0300

    drm/bridge: sii902x: pixel clock unit is 10kHz instead of 1kHz
    
    [ Upstream commit 8dbfc5b65023b67397aca28e8adb25c819f6398c ]
    
    The pixel clock unit in the first two registers (0x00 and 0x01) of
    sii9022 is 10kHz, not 1kHz as in struct drm_display_mode. Division by
    10 fixes the issue.
    
    Signed-off-by: Jyri Sarha <jsarha@ti.com>
    Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
    Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/1a2a8eae0b9d6333e7a5841026bf7fd65c9ccd09.1558964241.git.jsarha@ti.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 789210999829310e0d7dd22142e7d9cac55e53d6
Author: Tomi Valkeinen <tomi.valkeinen@ti.com>
Date:   Tue May 28 11:27:44 2019 +0300

    drm/bridge: tc358767: read display_props in get_modes()
    
    [ Upstream commit 3231573065ad4f4ecc5c9147b24f29f846dc0c2f ]
    
    We need to know the link bandwidth to filter out modes we cannot
    support, so we need to have read the display props before doing the
    filtering.
    
    To ensure we have up to date display props, call tc_get_display_props()
    in the beginning of tc_connector_get_modes().
    
    Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
    Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
    Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190528082747.3631-22-tomi.valkeinen@ti.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3459f6217566d5cfe49056e3a154e8480ca66bd3
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Wed May 22 12:17:11 2019 +0000

    tty: serial: cpm_uart - fix init when SMC is relocated
    
    [ Upstream commit 06aaa3d066db87e8478522d910285141d44b1e58 ]
    
    SMC relocation can also be activated earlier by the bootloader,
    so the driver's behaviour cannot rely on selected kernel config.
    
    When the SMC is relocated, CPM_CR_INIT_TRX cannot be used.
    
    But the only thing CPM_CR_INIT_TRX does is to clear the
    rstate and tstate registers, so this can be done manually,
    even when SMC is not relocated.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 9ab921201444 ("cpm_uart: fix non-console port startup bug")
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8d57d3bcdf80ab702bc0408a2b28f9af3cc640d5
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Mon Apr 15 14:24:02 2019 +0800

    pinctrl: rockchip: fix leaked of_node references
    
    [ Upstream commit 3c89c70634bb0b6f48512de873e7a45c7e1fbaa5 ]
    
    The call to of_parse_phandle returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.
    
    Detected by coccinelle with the following warnings:
    ./drivers/pinctrl/pinctrl-rockchip.c:3221:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 3196, but without a corresponding object release within this function.
    ./drivers/pinctrl/pinctrl-rockchip.c:3223:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 3196, but without a corresponding object release within this function.
    
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Heiko Stuebner <heiko@sntech.de>
    Cc: linux-gpio@vger.kernel.org
    Cc: linux-rockchip@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit efab087c6372e905c493a4cd4a32e3b609f896f4
Author: Serge Semin <fancer.lancer@gmail.com>
Date:   Tue May 14 13:14:12 2019 +0300

    tty: max310x: Fix invalid baudrate divisors calculator
    
    [ Upstream commit 35240ba26a932b279a513f66fa4cabfd7af55221 ]
    
    Current calculator doesn't do it' job quite correct. First of all the
    max310x baud-rates generator supports the divisor being less than 16.
    In this case the x2/x4 modes can be used to double or quadruple
    the reference frequency. But the current baud-rate setter function
    just filters all these modes out by the first condition and setups
    these modes only if there is a clocks-baud division remainder. The former
    doesn't seem right at all, since enabling the x2/x4 modes causes the line
    noise tolerance reduction and should be only used as a last resort to
    enable a requested too high baud-rate.
    
    Finally the fraction is supposed to be calculated from D = Fref/(c*baud)
    formulae, but not from D % 16, which causes the precision loss. So to speak
    the current baud-rate calculator code works well only if the baud perfectly
    fits to the uart reference input frequency.
    
    Lets fix the calculator by implementing the algo fully compliant with
    the fractional baud-rate generator described in the datasheet:
    D = Fref / (c*baud), where c={16,8,4} is the x1/x2/x4 rate mode
    respectively, Fref - reference input frequency. The divisor fraction is
    calculated from the same formulae, but making sure it is found with a
    resolution of 0.0625 (four bits).
    
    Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 790af995a9ba6e1210cc2e45136687fa49464336
Author: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Date:   Tue May 14 14:38:38 2019 -0700

    usb: core: hub: Disable hub-initiated U1/U2
    
    [ Upstream commit 561759292774707b71ee61aecc07724905bb7ef1 ]
    
    If the device rejects the control transfer to enable device-initiated
    U1/U2 entry, then the device will not initiate U1/U2 transition. To
    improve the performance, the downstream port should not initate
    transition to U1/U2 to avoid the delay from the device link command
    response (no packet can be transmitted while waiting for a response from
    the device). If the device has some quirks and does not implement U1/U2,
    it may reject all the link state change requests, and the downstream
    port may resend and flood the bus with more requests. This will affect
    the device performance even further. This patch disables the
    hub-initated U1/U2 if the device-initiated U1/U2 entry fails.
    
    Reference: USB 3.2 spec 7.2.4.2.3
    
    Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d1b691125546c56b0e9c6eec19296fe3817bdb28
Author: Peter Ujfalusi <peter.ujfalusi@ti.com>
Date:   Tue Feb 26 10:11:53 2019 +0200

    drm/panel: simple: Fix panel_simple_dsi_probe
    
    [ Upstream commit 7ad9db66fafb0f0ad53fd2a66217105da5ddeffe ]
    
    In case mipi_dsi_attach() fails remove the registered panel to avoid added
    panel without corresponding device.
    
    Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20190226081153.31334-1-peter.ujfalusi@ti.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7546e0c127b56e1ad75ad59fc1ebf8d44b6215ff
Author: Paul Menzel <pmenzel@molgen.mpg.de>
Date:   Wed Jul 3 13:28:15 2019 +0200

    nfsd: Fix overflow causing non-working mounts on 1 TB machines
    
    [ Upstream commit 3b2d4dcf71c4a91b420f835e52ddea8192300a3b ]
    
    Since commit 10a68cdf10 (nfsd: fix performance-limiting session
    calculation) (Linux 5.1-rc1 and 4.19.31), shares from NFS servers with
    1 TB of memory cannot be mounted anymore. The mount just hangs on the
    client.
    
    The gist of commit 10a68cdf10 is the change below.
    
        -avail = clamp_t(int, avail, slotsize, avail/3);
        +avail = clamp_t(int, avail, slotsize, total_avail/3);
    
    Here are the macros.
    
        #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
        #define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
    
    `total_avail` is 8,434,659,328 on the 1 TB machine. `clamp_t()` casts
    the values to `int`, which for 32-bit integers can only hold values
    −2,147,483,648 (−2^31) through 2,147,483,647 (2^31 − 1).
    
    `avail` (in the function signature) is just 65536, so that no overflow
    was happening. Before the commit the assignment would result in 21845,
    and `num = 4`.
    
    When using `total_avail`, it is causing the assignment to be
    18446744072226137429 (printed as %lu), and `num` is then 4164608182.
    
    My next guess is, that `nfsd_drc_mem_used` is then exceeded, and the
    server thinks there is no memory available any more for this client.
    
    Updating the arguments of `clamp_t()` and `min_t()` to `unsigned long`
    fixes the issue.
    
    Now, `avail = 65536` (before commit 10a68cdf10 `avail = 21845`), but
    `num = 4` remains the same.
    
    Fixes: c54f24e338ed (nfsd: fix performance-limiting session calculation)
    Cc: stable@vger.kernel.org
    Signed-off-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cdc106c6c37f70fa944af4b7008367ace8876542
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Thu Feb 21 10:47:00 2019 -0500

    nfsd: fix performance-limiting session calculation
    
    [ Upstream commit c54f24e338ed2a35218f117a4a1afb5f9e2b4e64 ]
    
    We're unintentionally limiting the number of slots per nfsv4.1 session
    to 10.  Often more than 10 simultaneous RPCs are needed for the best
    performance.
    
    This calculation was meant to prevent any one client from using up more
    than a third of the limit we set for total memory use across all clients
    and sessions.  Instead, it's limiting the client to a third of the
    maximum for a single session.
    
    Fix this.
    
    Reported-by: Chris Tracy <ctracy@engr.scu.edu>
    Cc: stable@vger.kernel.org
    Fixes: de766e570413 "nfsd: give out fewer session slots as limit approaches"
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6d548079fce3fd78770c045772f1370b0d1ce9d4
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Tue Sep 19 19:25:41 2017 -0400

    nfsd: give out fewer session slots as limit approaches
    
    [ Upstream commit de766e570413bd0484af0b580299b495ada625c3 ]
    
    Instead of granting client's full requests until we hit our DRC size
    limit and then failing CREATE_SESSIONs (and hence mounts) completely,
    start granting clients smaller slot tables as we approach the limit.
    
    The factor chosen here is pretty much arbitrary.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbd040b42d987f6d73192e9721b8722816d38c06
Author: J. Bruce Fields <bfields@redhat.com>
Date:   Tue Sep 19 20:51:31 2017 -0400

    nfsd: increase DRC cache limit
    
    [ Upstream commit 44d8660d3bb0a1c8363ebcb906af2343ea8e15f6 ]
    
    An NFSv4.1+ client negotiates the size of its duplicate reply cache size
    in the initial CREATE_SESSION request.  The server preallocates the
    memory for the duplicate reply cache to ensure that we'll never fail to
    record the response to a nonidempotent operation.
    
    To prevent a few CREATE_SESSIONs from consuming all of memory we set an
    upper limit based on nr_free_buffer_pages().  1/2^10 has been too
    limiting in practice; 1/2^7 is still less than one percent.
    
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d9b39debdcaefac57529e3e4a8e8a8ca4419527
Author: Trond Myklebust <trond.myklebust@primarydata.com>
Date:   Mon Nov 6 15:28:03 2017 -0500

    NFSv4: Fix open create exclusive when the server reboots
    
    [ Upstream commit 8fd1ab747d2b1ec7ec663ad0b41a32eaa35117a8 ]
    
    If the server that does not implement NFSv4.1 persistent session
    semantics reboots while we are performing an exclusive create,
    then the return value of NFS4ERR_DELAY when we replay the open
    during the grace period causes us to lose the verifier.
    When the grace period expires, and we present a new verifier,
    the server will then correctly reply NFS4ERR_EXIST.
    
    This commit ensures that we always present the same verifier when
    replaying the OPEN.
    
    Reported-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
    Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
    Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f448eb019b85bc7edfd1abf00e0972c310023178
Author: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Date:   Fri Apr 27 16:34:35 2018 -0500

    perf/events/amd/uncore: Fix amd_uncore_llc ID to use pre-defined cpu_llc_id
    
    Current logic iterates over CPUID Fn8000001d leafs (Cache Properties)
    to detect the last level cache, and derive the last-level cache ID.
    However, this information is already available in the cpu_llc_id.
    Therefore, make use of it instead.
    
    Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "Peter Zijlstra (Intel)" <peterz@infradead.org>
    Cc: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
    Link: http://lkml.kernel.org/r/1524864877-111962-3-git-send-email-suravee.suthikulpanit@amd.com

commit f191746c3639be5a3bec6f9ac7e0875bc19093a3
Author: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
Date:   Wed Jun 14 11:26:58 2017 -0500

    perf/x86/amd/uncore: Get correct number of cores sharing last level cache
    
    In Family 17h, the number of cores sharing a cache level is obtained
    from the Cache Properties CPUID leaf (0x8000001d) by passing in the
    cache level in ECX. In prior families, a cache level of 2 was used to
    determine this information.
    
    To get the right information, irrespective of Family, iterate over
    the cache levels using CPUID 0x8000001d. The last level cache is the
    last value to return a non-zero value in EAX.
    
    Signed-off-by: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Borislav Petkov <bp@suse.de>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/5ab569025b39cdfaeca55b571d78c0fc800bdb69.1497452002.git.Janakarajan.Natarajan@amd.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

commit 7bf707d10ddb3cc14b56f0d5d24c2c2cb582d556
Author: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
Date:   Mon Jan 16 17:36:21 2017 -0600

    perf/x86/amd/uncore: Rename 'L2' to 'LLC'
    
    This patch renames L2 counters to LLC counters. In AMD Family17h
    processors, L3 cache counter is supported.
    
    Since older families have at most L2 counters, last level cache (LLC)
    indicates L2/L3 based on the family.
    
    Signed-off-by: Janakarajan Natarajan <Janakarajan.Natarajan@amd.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: http://lkml.kernel.org/r/5d8cd8736d8d578354597a548e64ff16210c319b.1484598705.git.Janakarajan.Natarajan@amd.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>

commit b16144538f695fd0e1500ed81a968fce66199213
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Tue Jul 2 15:00:21 2019 +0300

    net: bridge: stp: don't cache eth dest pointer before skb pull
    
    [ Upstream commit 2446a68ae6a8cee6d480e2f5b52f5007c7c41312 ]
    
    Don't cache eth dest pointer before calling pskb_may_pull.
    
    Fixes: cf0f02d04a83 ("[BRIDGE]: use llc for receiving STP packets")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2aabe0db5dc0cce6d6be37f0d8adfb3efb434efe
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Tue Jul 2 15:00:19 2019 +0300

    net: bridge: mcast: fix stale ipv6 hdr pointer when handling v6 query
    
    [ Upstream commit 3b26a5d03d35d8f732d75951218983c0f7f68dff ]
    
    We get a pointer to the ipv6 hdr in br_ip6_multicast_query but we may
    call pskb_may_pull afterwards and end up using a stale pointer.
    So use the header directly, it's just 1 place where it's needed.
    
    Fixes: 08b202b67264 ("bridge br_multicast: IPv6 MLD support.")
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Tested-by: Martin Weinelt <martin@linuxlounge.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dddb75a126856843e57f78feff807c4c40389c10
Author: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Date:   Tue Jul 2 15:00:18 2019 +0300

    net: bridge: mcast: fix stale nsrcs pointer in igmp3/mld2 report handling
    
    [ Upstream commit e57f61858b7cf478ed6fa23ed4b3876b1c9625c4 ]
    
    We take a pointer to grec prior to calling pskb_may_pull and use it
    afterwards to get nsrcs so record nsrcs before the pull when handling
    igmp3 and we get a pointer to nsrcs and call pskb_may_pull when handling
    mld2 which again could lead to reading 2 bytes out-of-bounds.
    
     ==================================================================
     BUG: KASAN: use-after-free in br_multicast_rcv+0x480c/0x4ad0 [bridge]
     Read of size 2 at addr ffff8880421302b4 by task ksoftirqd/1/16
    
     CPU: 1 PID: 16 Comm: ksoftirqd/1 Tainted: G           OE     5.2.0-rc6+ #1
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
     Call Trace:
      dump_stack+0x71/0xab
      print_address_description+0x6a/0x280
      ? br_multicast_rcv+0x480c/0x4ad0 [bridge]
      __kasan_report+0x152/0x1aa
      ? br_multicast_rcv+0x480c/0x4ad0 [bridge]
      ? br_multicast_rcv+0x480c/0x4ad0 [bridge]
      kasan_report+0xe/0x20
      br_multicast_rcv+0x480c/0x4ad0 [bridge]
      ? br_multicast_disable_port+0x150/0x150 [bridge]
      ? ktime_get_with_offset+0xb4/0x150
      ? __kasan_kmalloc.constprop.6+0xa6/0xf0
      ? __netif_receive_skb+0x1b0/0x1b0
      ? br_fdb_update+0x10e/0x6e0 [bridge]
      ? br_handle_frame_finish+0x3c6/0x11d0 [bridge]
      br_handle_frame_finish+0x3c6/0x11d0 [bridge]
      ? br_pass_frame_up+0x3a0/0x3a0 [bridge]
      ? virtnet_probe+0x1c80/0x1c80 [virtio_net]
      br_handle_frame+0x731/0xd90 [bridge]
      ? select_idle_sibling+0x25/0x7d0
      ? br_handle_frame_finish+0x11d0/0x11d0 [bridge]
      __netif_receive_skb_core+0xced/0x2d70
      ? virtqueue_get_buf_ctx+0x230/0x1130 [virtio_ring]
      ? do_xdp_generic+0x20/0x20
      ? virtqueue_napi_complete+0x39/0x70 [virtio_net]
      ? virtnet_poll+0x94d/0xc78 [virtio_net]
      ? receive_buf+0x5120/0x5120 [virtio_net]
      ? __netif_receive_skb_one_core+0x97/0x1d0
      __netif_receive_skb_one_core+0x97/0x1d0
      ? __netif_receive_skb_core+0x2d70/0x2d70
      ? _raw_write_trylock+0x100/0x100
      ? __queue_work+0x41e/0xbe0
      process_backlog+0x19c/0x650
      ? _raw_read_lock_irq+0x40/0x40
      net_rx_action+0x71e/0xbc0
      ? __switch_to_asm+0x40/0x70
      ? napi_complete_done+0x360/0x360
      ? __switch_to_asm+0x34/0x70
      ? __switch_to_asm+0x40/0x70
      ? __schedule+0x85e/0x14d0
      __do_softirq+0x1db/0x5f9
      ? takeover_tasklets+0x5f0/0x5f0
      run_ksoftirqd+0x26/0x40
      smpboot_thread_fn+0x443/0x680
      ? sort_range+0x20/0x20
      ? schedule+0x94/0x210
      ? __kthread_parkme+0x78/0xf0
      ? sort_range+0x20/0x20
      kthread+0x2ae/0x3a0
      ? kthread_create_worker_on_cpu+0xc0/0xc0
      ret_from_fork+0x35/0x40
    
     The buggy address belongs to the page:
     page:ffffea0001084c00 refcount:0 mapcount:-128 mapping:0000000000000000 index:0x0
     flags: 0xffffc000000000()
     raw: 00ffffc000000000 ffffea0000cfca08 ffffea0001098608 0000000000000000
     raw: 0000000000000000 0000000000000003 00000000ffffff7f 0000000000000000
     page dumped because: kasan: bad access detected
    
     Memory state around the buggy address:
     ffff888042130180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ffff888042130200: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     > ffff888042130280: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
                                         ^
     ffff888042130300: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ffff888042130380: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
     ==================================================================
     Disabling lock debugging due to kernel taint
    
    Fixes: bc8c20acaea1 ("bridge: multicast: treat igmpv3 report with INCLUDE and no sources as a leave")
    Reported-by: Martin Weinelt <martin@linuxlounge.net>
    Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
    Tested-by: Martin Weinelt <martin@linuxlounge.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01dd3672a1575fd8b2979ab34a77a5185514979f
Author: Christoph Paasch <cpaasch@apple.com>
Date:   Sat Jul 6 16:13:07 2019 -0700

    tcp: Reset bytes_acked and bytes_received when disconnecting
    
    [ Upstream commit e858faf556d4e14c750ba1e8852783c6f9520a0e ]
    
    If an app is playing tricks to reuse a socket via tcp_disconnect(),
    bytes_acked/received needs to be reset to 0. Otherwise tcp_info will
    report the sum of the current and the old connection..
    
    Cc: Eric Dumazet <edumazet@google.com>
    Fixes: 0df48c26d841 ("tcp: add tcpi_bytes_acked to tcp_info")
    Fixes: bdd1f9edacb5 ("tcp: add tcpi_bytes_received to tcp_info")
    Signed-off-by: Christoph Paasch <cpaasch@apple.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 227f0246c7a1a6d87211496f3e35c62f04595744
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Jul 1 20:40:24 2019 -0700

    bonding: validate ip header before check IPPROTO_IGMP
    
    [ Upstream commit 9d1bc24b52fb8c5d859f9a47084bf1179470e04c ]
    
    bond_xmit_roundrobin() checks for IGMP packets but it parses
    the IP header even before checking skb->protocol.
    
    We should validate the IP header with pskb_may_pull() before
    using iph->protocol.
    
    Reported-and-tested-by: syzbot+e5be16aa39ad6e755391@syzkaller.appspotmail.com
    Fixes: a2fd940f4cff ("bonding: fix broken multicast with round-robin mode")
    Cc: Jay Vosburgh <j.vosburgh@gmail.com>
    Cc: Veaceslav Falico <vfalico@gmail.com>
    Cc: Andy Gospodarek <andy@greyhouse.net>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 496c6066025591b0cb619f625baefc7fe15cd706
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Mon Jul 22 20:41:22 2019 -0700

    netrom: hold sock when setting skb->destructor
    
    [ Upstream commit 4638faac032756f7eab5524be7be56bee77e426b ]
    
    sock_efree() releases the sock refcnt, if we don't hold this refcnt
    when setting skb->destructor to it, the refcnt would not be balanced.
    This leads to several bug reports from syzbot.
    
    I have checked other users of sock_efree(), all of them hold the
    sock refcnt.
    
    Fixes: c8c8218ec5af ("netrom: fix a memory leak in nr_rx_frame()")
    Reported-and-tested-by: <syzbot+622bdabb128acc33427d@syzkaller.appspotmail.com>
    Reported-and-tested-by: <syzbot+6eaef7158b19e3fec3a0@syzkaller.appspotmail.com>
    Reported-and-tested-by: <syzbot+9399c158fcc09b21d0d2@syzkaller.appspotmail.com>
    Reported-and-tested-by: <syzbot+a34e5f3d0300163f0c87@syzkaller.appspotmail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cab2e3d65ff697ddadce30d4f2ee75c5eff2f327
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Jun 27 14:30:58 2019 -0700

    netrom: fix a memory leak in nr_rx_frame()
    
    [ Upstream commit c8c8218ec5af5d2598381883acbefbf604e56b5e ]
    
    When the skb is associated with a new sock, just assigning
    it to skb->sk is not sufficient, we have to set its destructor
    to free the sock properly too.
    
    Reported-by: syzbot+d6636a36d3c34bd88938@syzkaller.appspotmail.com
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bca7b798f56bb303b94672a8f2a71b7916aa363b
Author: Andreas Steinmetz <ast@domdv.de>
Date:   Sun Jun 30 22:46:45 2019 +0200

    macsec: fix checksumming after decryption
    
    [ Upstream commit 7d8b16b9facb0dd81d1469808dd9a575fa1d525a ]
    
    Fix checksumming after decryption.
    
    Signed-off-by: Andreas Steinmetz <ast@domdv.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a76ca413925660ddee1caae3bdcded6816ef2877
Author: Andreas Steinmetz <ast@domdv.de>
Date:   Sun Jun 30 22:46:42 2019 +0200

    macsec: fix use-after-free of skb during RX
    
    [ Upstream commit 095c02da80a41cf6d311c504d8955d6d1c2add10 ]
    
    Fix use-after-free of skb when rx_handler returns RX_HANDLER_PASS.
    
    Signed-off-by: Andreas Steinmetz <ast@domdv.de>
    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 0ce67cd7dbc9663f924144543461e50b4289b2f2
Author: Peter Kosyh <p.kosyh@gmail.com>
Date:   Fri Jul 19 11:11:47 2019 +0300

    vrf: make sure skb->data contains ip header to make routing
    
    [ Upstream commit 107e47cc80ec37cb332bd41b22b1c7779e22e018 ]
    
    vrf_process_v4_outbound() and vrf_process_v6_outbound() do routing
    using ip/ipv6 addresses, but don't make sure the header is available
    in skb->data[] (skb_headlen() is less then header size).
    
    Case:
    
    1) igb driver from intel.
    2) Packet size is greater then 255.
    3) MPLS forwards to VRF device.
    
    So, patch adds pskb_may_pull() calls in vrf_process_v4/v6_outbound()
    functions.
    
    Signed-off-by: Peter Kosyh <p.kosyh@gmail.com>
    Reviewed-by: David Ahern <dsa@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af9bda8ac06f9030ca5a643038c4db6e7f8564c1
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jul 23 17:15:25 2019 +0200

    sky2: Disable MSI on ASUS P6T
    
    [ Upstream commit a261e3797506bd561700be643fe1a85bf81e9661 ]
    
    The onboard sky2 NIC on ASUS P6T WS PRO doesn't work after PM resume
    due to the infamous IRQ problem.  Disabling MSI works around it, so
    let's add it to the blacklist.
    
    Unfortunately the BIOS on the machine doesn't fill the standard
    DMI_SYS_* entry, so we pick up DMI_BOARD_* entries instead.
    
    BugLink: https://bugzilla.suse.com/show_bug.cgi?id=1142496
    Reported-and-tested-by: Marcus Seyfarth <m.seyfarth@gmail.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c382eaf5e1053b56761e0dce56ecef65b29f891e
Author: David Howells <dhowells@redhat.com>
Date:   Tue Jul 2 15:59:12 2019 +0100

    rxrpc: Fix send on a connected, but unbound socket
    
    [ Upstream commit e835ada07091f40dcfb1bc735082bd0a7c005e59 ]
    
    If sendmsg() or sendmmsg() is called on a connected socket that hasn't had
    bind() called on it, then an oops will occur when the kernel tries to
    connect the call because no local endpoint has been allocated.
    
    Fix this by implicitly binding the socket if it is in the
    RXRPC_CLIENT_UNBOUND state, just like it does for the RXRPC_UNBOUND state.
    
    Further, the state should be transitioned to RXRPC_CLIENT_BOUND after this
    to prevent further attempts to bind it.
    
    This can be tested with:
    
            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>
            #include <sys/socket.h>
            #include <arpa/inet.h>
            #include <linux/rxrpc.h>
            static const unsigned char inet6_addr[16] = {
                    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0xac, 0x14, 0x14, 0xaa
            };
            int main(void)
            {
                    struct sockaddr_rxrpc srx;
                    struct cmsghdr *cm;
                    struct msghdr msg;
                    unsigned char control[16];
                    int fd;
                    memset(&srx, 0, sizeof(srx));
                    srx.srx_family = 0x21;
                    srx.srx_service = 0;
                    srx.transport_type = AF_INET;
                    srx.transport_len = 0x1c;
                    srx.transport.sin6.sin6_family = AF_INET6;
                    srx.transport.sin6.sin6_port = htons(0x4e22);
                    srx.transport.sin6.sin6_flowinfo = htons(0x4e22);
                    srx.transport.sin6.sin6_scope_id = htons(0xaa3b);
                    memcpy(&srx.transport.sin6.sin6_addr, inet6_addr, 16);
                    cm = (struct cmsghdr *)control;
                    cm->cmsg_len    = CMSG_LEN(sizeof(unsigned long));
                    cm->cmsg_level  = SOL_RXRPC;
                    cm->cmsg_type   = RXRPC_USER_CALL_ID;
                    *(unsigned long *)CMSG_DATA(cm) = 0;
                    msg.msg_name = NULL;
                    msg.msg_namelen = 0;
                    msg.msg_iov = NULL;
                    msg.msg_iovlen = 0;
                    msg.msg_control = control;
                    msg.msg_controllen = cm->cmsg_len;
                    msg.msg_flags = 0;
                    fd = socket(AF_RXRPC, SOCK_DGRAM, AF_INET);
                    connect(fd, (struct sockaddr *)&srx, sizeof(srx));
                    sendmsg(fd, &msg, 0);
                    return 0;
            }
    
    Leading to the following oops:
    
            BUG: kernel NULL pointer dereference, address: 0000000000000018
            #PF: supervisor read access in kernel mode
            #PF: error_code(0x0000) - not-present page
            ...
            RIP: 0010:rxrpc_connect_call+0x42/0xa01
            ...
            Call Trace:
             ? mark_held_locks+0x47/0x59
             ? __local_bh_enable_ip+0xb6/0xba
             rxrpc_new_client_call+0x3b1/0x762
             ? rxrpc_do_sendmsg+0x3c0/0x92e
             rxrpc_do_sendmsg+0x3c0/0x92e
             rxrpc_sendmsg+0x16b/0x1b5
             sock_sendmsg+0x2d/0x39
             ___sys_sendmsg+0x1a4/0x22a
             ? release_sock+0x19/0x9e
             ? reacquire_held_locks+0x136/0x160
             ? release_sock+0x19/0x9e
             ? find_held_lock+0x2b/0x6e
             ? __lock_acquire+0x268/0xf73
             ? rxrpc_connect+0xdd/0xe4
             ? __local_bh_enable_ip+0xb6/0xba
             __sys_sendmsg+0x5e/0x94
             do_syscall_64+0x7d/0x1bf
             entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: 2341e0775747 ("rxrpc: Simplify connect() implementation and simplify sendmsg() op")
    Reported-by: syzbot+7966f2a0b2c7da8939b4@syzkaller.appspotmail.com
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1f23210773057b0fbaf723d39233b68cb5e8c1fd
Author: Yang Wei <albin_yang@163.com>
Date:   Mon Jul 8 22:57:39 2019 +0800

    nfc: fix potential illegal memory access
    
    [ Upstream commit dd006fc434e107ef90f7de0db9907cbc1c521645 ]
    
    The frags_q is not properly initialized, it may result in illegal memory
    access when conn_info is NULL.
    The "goto free_exit" should be replaced by "goto exit".
    
    Signed-off-by: Yang Wei <albin_yang@163.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10f5f2d345862ff8dd61dd81543b34062f7ea1d7
Author: John Hurley <john.hurley@netronome.com>
Date:   Thu Jun 27 14:37:30 2019 +0100

    net: openvswitch: fix csum updates for MPLS actions
    
    [ Upstream commit 0e3183cd2a64843a95b62f8bd4a83605a4cf0615 ]
    
    Skbs may have their checksum value populated by HW. If this is a checksum
    calculated over the entire packet then the CHECKSUM_COMPLETE field is
    marked. Changes to the data pointer on the skb throughout the network
    stack still try to maintain this complete csum value if it is required
    through functions such as skb_postpush_rcsum.
    
    The MPLS actions in Open vSwitch modify a CHECKSUM_COMPLETE value when
    changes are made to packet data without a push or a pull. This occurs when
    the ethertype of the MAC header is changed or when MPLS lse fields are
    modified.
    
    The modification is carried out using the csum_partial function to get the
    csum of a buffer and add it into the larger checksum. The buffer is an
    inversion of the data to be removed followed by the new data. Because the
    csum is calculated over 16 bits and these values align with 16 bits, the
    effect is the removal of the old value from the CHECKSUM_COMPLETE and
    addition of the new value.
    
    However, the csum fed into the function and the outcome of the
    calculation are also inverted. This would only make sense if it was the
    new value rather than the old that was inverted in the input buffer.
    
    Fix the issue by removing the bit inverts in the csum_partial calculation.
    
    The bug was verified and the fix tested by comparing the folded value of
    the updated CHECKSUM_COMPLETE value with the folded value of a full
    software checksum calculation (reset skb->csum to 0 and run
    skb_checksum_complete(skb)). Prior to the fix the outcomes differed but
    after they produce the same result.
    
    Fixes: 25cd9ba0abc0 ("openvswitch: Add basic MPLS support to kernel")
    Fixes: bc7cc5999fd3 ("openvswitch: update checksum in {push,pop}_mpls")
    Signed-off-by: John Hurley <john.hurley@netronome.com>
    Reviewed-by: Jakub Kicinski <jakub.kicinski@netronome.com>
    Reviewed-by: Simon Horman <simon.horman@netronome.com>
    Acked-by: Pravin B Shelar <pshelar@ovn.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4ebefd396deaacc99fc0c728911d4d5c30a1a4c0
Author: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Date:   Sun Jul 14 23:36:11 2019 +0200

    net: neigh: fix multiple neigh timer scheduling
    
    [ Upstream commit 071c37983d99da07797294ea78e9da1a6e287144 ]
    
    Neigh timer can be scheduled multiple times from userspace adding
    multiple neigh entries and forcing the neigh timer scheduling passing
    NTF_USE in the netlink requests.
    This will result in a refcount leak and in the following dump stack:
    
    [   32.465295] NEIGH: BUG, double timer add, state is 8
    [   32.465308] CPU: 0 PID: 416 Comm: double_timer_ad Not tainted 5.2.0+ #65
    [   32.465311] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.12.0-2.fc30 04/01/2014
    [   32.465313] Call Trace:
    [   32.465318]  dump_stack+0x7c/0xc0
    [   32.465323]  __neigh_event_send+0x20c/0x880
    [   32.465326]  ? ___neigh_create+0x846/0xfb0
    [   32.465329]  ? neigh_lookup+0x2a9/0x410
    [   32.465332]  ? neightbl_fill_info.constprop.0+0x800/0x800
    [   32.465334]  neigh_add+0x4f8/0x5e0
    [   32.465337]  ? neigh_xmit+0x620/0x620
    [   32.465341]  ? find_held_lock+0x85/0xa0
    [   32.465345]  rtnetlink_rcv_msg+0x204/0x570
    [   32.465348]  ? rtnl_dellink+0x450/0x450
    [   32.465351]  ? mark_held_locks+0x90/0x90
    [   32.465354]  ? match_held_lock+0x1b/0x230
    [   32.465357]  netlink_rcv_skb+0xc4/0x1d0
    [   32.465360]  ? rtnl_dellink+0x450/0x450
    [   32.465363]  ? netlink_ack+0x420/0x420
    [   32.465366]  ? netlink_deliver_tap+0x115/0x560
    [   32.465369]  ? __alloc_skb+0xc9/0x2f0
    [   32.465372]  netlink_unicast+0x270/0x330
    [   32.465375]  ? netlink_attachskb+0x2f0/0x2f0
    [   32.465378]  netlink_sendmsg+0x34f/0x5a0
    [   32.465381]  ? netlink_unicast+0x330/0x330
    [   32.465385]  ? move_addr_to_kernel.part.0+0x20/0x20
    [   32.465388]  ? netlink_unicast+0x330/0x330
    [   32.465391]  sock_sendmsg+0x91/0xa0
    [   32.465394]  ___sys_sendmsg+0x407/0x480
    [   32.465397]  ? copy_msghdr_from_user+0x200/0x200
    [   32.465401]  ? _raw_spin_unlock_irqrestore+0x37/0x40
    [   32.465404]  ? lockdep_hardirqs_on+0x17d/0x250
    [   32.465407]  ? __wake_up_common_lock+0xcb/0x110
    [   32.465410]  ? __wake_up_common+0x230/0x230
    [   32.465413]  ? netlink_bind+0x3e1/0x490
    [   32.465416]  ? netlink_setsockopt+0x540/0x540
    [   32.465420]  ? __fget_light+0x9c/0xf0
    [   32.465423]  ? sockfd_lookup_light+0x8c/0xb0
    [   32.465426]  __sys_sendmsg+0xa5/0x110
    [   32.465429]  ? __ia32_sys_shutdown+0x30/0x30
    [   32.465432]  ? __fd_install+0xe1/0x2c0
    [   32.465435]  ? lockdep_hardirqs_off+0xb5/0x100
    [   32.465438]  ? mark_held_locks+0x24/0x90
    [   32.465441]  ? do_syscall_64+0xf/0x270
    [   32.465444]  do_syscall_64+0x63/0x270
    [   32.465448]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fix the issue unscheduling neigh_timer if selected entry is in 'IN_TIMER'
    receiving a netlink request with NTF_USE flag set
    
    Reported-by: Marek Majkowski <marek@cloudflare.com>
    Fixes: 0c5c2d308906 ("neigh: Allow for user space users of the neighbour table")
    Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
    Reviewed-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 4f6e4d1e03a442fad80c1fc1e62d9d27518ecffe
Author: Baruch Siach <baruch@tkos.co.il>
Date:   Thu Jun 27 21:17:39 2019 +0300

    net: dsa: mv88e6xxx: wait after reset deactivation
    
    [ Upstream commit 7b75e49de424ceb53d13e60f35d0a73765626fda ]
    
    Add a 1ms delay after reset deactivation. Otherwise the chip returns
    bogus ID value. This is observed with 88E6390 (Peridot) chip.
    
    Signed-off-by: Baruch Siach <baruch@tkos.co.il>
    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 1a9480725757bf30e05c386b7640cd5e8fdf86c2
Author: Justin Chen <justinpopo6@gmail.com>
Date:   Wed Jul 17 14:58:53 2019 -0700

    net: bcmgenet: use promisc for unsupported filters
    
    [ Upstream commit 35cbef9863640f06107144687bd13151bc2e8ce3 ]
    
    Currently we silently ignore filters if we cannot meet the filter
    requirements. This will lead to the MAC dropping packets that are
    expected to pass. A better solution would be to set the NIC to promisc
    mode when the required filters cannot be met.
    
    Also correct the number of MDF filters supported. It should be 17,
    not 16.
    
    Signed-off-by: Justin Chen <justinpopo6@gmail.com>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 415043791ca74f5a640050d03fc2a2fc945ab618
Author: Matteo Croce <mcroce@redhat.com>
Date:   Mon Jul 1 19:01:55 2019 +0200

    ipv4: don't set IPv6 only flags to IPv4 addresses
    
    [ Upstream commit 2e60546368165c2449564d71f6005dda9205b5fb ]
    
    Avoid the situation where an IPV6 only flag is applied to an IPv4 address:
    
        # ip addr add 192.0.2.1/24 dev dummy0 nodad home mngtmpaddr noprefixroute
        # ip -4 addr show dev dummy0
        2: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
            inet 192.0.2.1/24 scope global noprefixroute dummy0
               valid_lft forever preferred_lft forever
    
    Or worse, by sending a malicious netlink command:
    
        # ip -4 addr show dev dummy0
        2: dummy0: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
            inet 192.0.2.1/24 scope global nodad optimistic dadfailed home tentative mngtmpaddr noprefixroute stable-privacy dummy0
               valid_lft forever preferred_lft forever
    
    Signed-off-by: Matteo Croce <mcroce@redhat.com>
    Reviewed-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 84d0edf19f876ca80757b93e2e252571f00d3278
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Jun 27 01:27:01 2019 -0700

    igmp: fix memory leak in igmpv3_del_delrec()
    
    [ Upstream commit e5b1c6c6277d5a283290a8c033c72544746f9b5b ]
    
    im->tomb and/or im->sources might not be NULL, but we
    currently overwrite their values blindly.
    
    Using swap() will make sure the following call to kfree_pmc(pmc)
    will properly free the psf structures.
    
    Tested with the C repro provided by syzbot, which basically does :
    
     socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
     setsockopt(3, SOL_IP, IP_ADD_MEMBERSHIP, "\340\0\0\2\177\0\0\1\0\0\0\0", 12) = 0
     ioctl(3, SIOCSIFFLAGS, {ifr_name="lo", ifr_flags=0}) = 0
     setsockopt(3, SOL_IP, IP_MSFILTER, "\340\0\0\2\177\0\0\1\1\0\0\0\1\0\0\0\377\377\377\377", 20) = 0
     ioctl(3, SIOCSIFFLAGS, {ifr_name="lo", ifr_flags=IFF_UP}) = 0
     exit_group(0)                    = ?
    
    BUG: memory leak
    unreferenced object 0xffff88811450f140 (size 64):
      comm "softirq", pid 0, jiffies 4294942448 (age 32.070s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00  ................
        00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  ................
      backtrace:
        [<00000000c7bad083>] kmemleak_alloc_recursive include/linux/kmemleak.h:43 [inline]
        [<00000000c7bad083>] slab_post_alloc_hook mm/slab.h:439 [inline]
        [<00000000c7bad083>] slab_alloc mm/slab.c:3326 [inline]
        [<00000000c7bad083>] kmem_cache_alloc_trace+0x13d/0x280 mm/slab.c:3553
        [<000000009acc4151>] kmalloc include/linux/slab.h:547 [inline]
        [<000000009acc4151>] kzalloc include/linux/slab.h:742 [inline]
        [<000000009acc4151>] ip_mc_add1_src net/ipv4/igmp.c:1976 [inline]
        [<000000009acc4151>] ip_mc_add_src+0x36b/0x400 net/ipv4/igmp.c:2100
        [<000000004ac14566>] ip_mc_msfilter+0x22d/0x310 net/ipv4/igmp.c:2484
        [<0000000052d8f995>] do_ip_setsockopt.isra.0+0x1795/0x1930 net/ipv4/ip_sockglue.c:959
        [<000000004ee1e21f>] ip_setsockopt+0x3b/0xb0 net/ipv4/ip_sockglue.c:1248
        [<0000000066cdfe74>] udp_setsockopt+0x4e/0x90 net/ipv4/udp.c:2618
        [<000000009383a786>] sock_common_setsockopt+0x38/0x50 net/core/sock.c:3126
        [<00000000d8ac0c94>] __sys_setsockopt+0x98/0x120 net/socket.c:2072
        [<000000001b1e9666>] __do_sys_setsockopt net/socket.c:2083 [inline]
        [<000000001b1e9666>] __se_sys_setsockopt net/socket.c:2080 [inline]
        [<000000001b1e9666>] __x64_sys_setsockopt+0x26/0x30 net/socket.c:2080
        [<00000000420d395e>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:301
        [<000000007fd83a4b>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 24803f38a5c0 ("igmp: do not remove igmp souce list info when set link down")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Hangbin Liu <liuhangbin@gmail.com>
    Reported-by: syzbot+6ca1abd0db68b5173a4f@syzkaller.appspotmail.com
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 02d0dd8e7b104ea5b05a1aa0329da25723fc9d8d
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Mon Jul 15 14:10:17 2019 +0900

    caif-hsi: fix possible deadlock in cfhsi_exit_module()
    
    [ Upstream commit fdd258d49e88a9e0b49ef04a506a796f1c768a8e ]
    
    cfhsi_exit_module() calls unregister_netdev() under rtnl_lock().
    but unregister_netdev() internally calls rtnl_lock().
    So deadlock would occur.
    
    Fixes: c41254006377 ("caif-hsi: Add rtnl support")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fdd098e78482b81f2dc2adde41e8917405d4ac42
Author: Guilherme G. Piccoli <gpiccoli@canonical.com>
Date:   Thu Jun 27 13:31:33 2019 -0300

    bnx2x: Prevent ptp_task to be rescheduled indefinitely
    
    [ Upstream commit 3c91f25c2f72ba6001775a5932857c1d2131c531 ]
    
    Currently bnx2x ptp worker tries to read a register with timestamp
    information in case of TX packet timestamping and in case it fails,
    the routine reschedules itself indefinitely. This was reported as a
    kworker always at 100% of CPU usage, which was narrowed down to be
    bnx2x ptp_task.
    
    By following the ioctl handler, we could narrow down the problem to
    an NTP tool (chrony) requesting HW timestamping from bnx2x NIC with
    RX filter zeroed; this isn't reproducible for example with ptp4l
    (from linuxptp) since this tool requests a supported RX filter.
    It seems NIC FW timestamp mechanism cannot work well with
    RX_FILTER_NONE - driver's PTP filter init routine skips a register
    write to the adapter if there's not a supported filter request.
    
    This patch addresses the problem of bnx2x ptp thread's everlasting
    reschedule by retrying the register read 10 times; between the read
    attempts the thread sleeps for an increasing amount of time starting
    in 1ms to give FW some time to perform the timestamping. If it still
    fails after all retries, we bail out in order to prevent an unbound
    resource consumption from bnx2x.
    
    The patch also adds an ethtool statistic for accounting the skipped
    TX timestamp packets and it reduces the priority of timestamping
    error messages to prevent log flooding. The code was tested using
    both linuxptp and chrony.
    
    Reported-and-tested-by: Przemyslaw Hausman <przemyslaw.hausman@canonical.com>
    Suggested-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
    Signed-off-by: Guilherme G. Piccoli <gpiccoli@canonical.com>
    Acked-by: Sudarsana Reddy Kalluru <skalluru@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 408f14de0ab6b9242f6b2809b12c772e19336350
Author: Brian King <brking@linux.vnet.ibm.com>
Date:   Mon Jul 15 16:41:50 2019 -0500

    bnx2x: Prevent load reordering in tx completion processing
    
    [ Upstream commit ea811b795df24644a8eb760b493c43fba4450677 ]
    
    This patch fixes an issue seen on Power systems with bnx2x which results
    in the skb is NULL WARN_ON in bnx2x_free_tx_pkt firing due to the skb
    pointer getting loaded in bnx2x_free_tx_pkt prior to the hw_cons
    load in bnx2x_tx_int. Adding a read memory barrier resolves the issue.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f0307b0d2d8b333a6964fc4c820dc86896fd1cf
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Jun 20 21:19:02 2019 -0400

    ext4: allow directory holes
    
    commit 4e19d6b65fb4fc42e352ce9883649e049da14743 upstream.
    
    The largedir feature was intended to allow ext4 directories to have
    unmapped directory blocks (e.g., directory holes).  And so the
    released e2fsprogs no longer enforces this for largedir file systems;
    however, the corresponding change to the kernel-side code was not made.
    
    This commit fixes this oversight.
    
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Cc: stable@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dd8b4d7a00d9795e4451c170f5e2aaac2f5aaef
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Thu Feb 1 21:00:50 2018 +0300

    lib/strscpy: Shut up KASAN false-positives in strscpy()
    
    [ Upstream commit 1a3241ff10d038ecd096d03380327f2a0b5840a6 ]
    
    strscpy() performs the word-at-a-time optimistic reads.  So it may may
    access the memory past the end of the object, which is perfectly fine
    since strscpy() doesn't use that (past-the-end) data and makes sure the
    optimistic read won't cross a page boundary.
    
    Use new read_word_at_a_time() to shut up the KASAN.
    
    Note that this potentially could hide some bugs.  In example bellow,
    stscpy() will copy more than we should (1-3 extra uninitialized bytes):
    
            char dst[8];
            char *src;
    
            src = kmalloc(5, GFP_KERNEL);
            memset(src, 0xff, 5);
            strscpy(dst, src, 8);
    
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4b5d4bdfd1ea2c2946f55ba309e17440b4ddada2
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Thu Feb 1 21:00:49 2018 +0300

    compiler.h: Add read_word_at_a_time() function.
    
    [ Upstream commit 7f1e541fc8d57a143dd5df1d0a1276046e08c083 ]
    
    Sometimes we know that it's safe to do potentially out-of-bounds access
    because we know it won't cross a page boundary.  Still, KASAN will
    report this as a bug.
    
    Add read_word_at_a_time() function which is supposed to be used in such
    cases.  In read_word_at_a_time() KASAN performs relaxed check - only the
    first byte of access is validated.
    
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 229b670e66689326c97639b4767c12c33462dac1
Author: Andrey Ryabinin <aryabinin@virtuozzo.com>
Date:   Thu Feb 1 21:00:48 2018 +0300

    compiler.h, kasan: Avoid duplicating __read_once_size_nocheck()
    
    [ Upstream commit bdb5ac801af3d81d36732c2f640d6a1d3df83826 ]
    
    Instead of having two identical __read_once_size_nocheck() functions
    with different attributes, consolidate all the difference in new macro
    __no_kasan_or_inline and use it. No functional changes.
    
    Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0d78b27b834eaece3cef085cb4ee39644172d28f
Author: Junxiao Bi <junxiao.bi@oracle.com>
Date:   Tue Jul 9 17:17:19 2019 -0700

    dm bufio: fix deadlock with loop device
    
    commit bd293d071ffe65e645b4d8104f9d8fe15ea13862 upstream.
    
    When thin-volume is built on loop device, if available memory is low,
    the following deadlock can be triggered:
    
    One process P1 allocates memory with GFP_FS flag, direct alloc fails,
    memory reclaim invokes memory shrinker in dm_bufio, dm_bufio_shrink_scan()
    runs, mutex dm_bufio_client->lock is acquired, then P1 waits for dm_buffer
    IO to complete in __try_evict_buffer().
    
    But this IO may never complete if issued to an underlying loop device
    that forwards it using direct-IO, which allocates memory using
    GFP_KERNEL (see: do_blockdev_direct_IO()).  If allocation fails, memory
    reclaim will invoke memory shrinker in dm_bufio, dm_bufio_shrink_scan()
    will be invoked, and since the mutex is already held by P1 the loop
    thread will hang, and IO will never complete.  Resulting in ABBA
    deadlock.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 769ebef8304031bc39763225a14c1ff52024093f
Author: Lee, Chiasheng <chiasheng.lee@intel.com>
Date:   Thu Jun 20 10:56:04 2019 +0300

    usb: Handle USB3 remote wakeup for LPM enabled devices correctly
    
    commit e244c4699f859cf7149b0781b1894c7996a8a1df upstream.
    
    With Link Power Management (LPM) enabled USB3 links transition to low
    power U1/U2 link states from U0 state automatically.
    
    Current hub code detects USB3 remote wakeups by checking if the software
    state still shows suspended, but the link has transitioned from suspended
    U3 to enabled U0 state.
    
    As it takes some time before the hub thread reads the port link state
    after a USB3 wake notification, the link may have transitioned from U0
    to U1/U2, and wake is not detected by hub code.
    
    Fix this by handling U1/U2 states in the same way as U0 in USB3 wakeup
    handling
    
    This patch should be added to stable kernels since 4.13 where LPM was
    kept enabled during suspend/resume
    
    Cc: <stable@vger.kernel.org> # v4.13+
    Signed-off-by: Lee, Chiasheng <chiasheng.lee@intel.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8f3286caccb2f28147b8257ede8b81c2db193f1a
Author: Szymon Janc <szymon.janc@codecoup.pl>
Date:   Wed Jun 19 00:47:47 2019 +0200

    Bluetooth: Add SMP workaround Microsoft Surface Precision Mouse bug
    
    commit 1d87b88ba26eabd4745e158ecfd87c93a9b51dc2 upstream.
    
    Microsoft Surface Precision Mouse provides bogus identity address when
    pairing. It connects with Static Random address but provides Public
    Address in SMP Identity Address Information PDU. Address has same
    value but type is different. Workaround this by dropping IRK if ID
    address discrepancy is detected.
    
    > HCI Event: LE Meta Event (0x3e) plen 19
          LE Connection Complete (0x01)
            Status: Success (0x00)
            Handle: 75
            Role: Master (0x00)
            Peer address type: Random (0x01)
            Peer address: E0:52:33:93:3B:21 (Static)
            Connection interval: 50.00 msec (0x0028)
            Connection latency: 0 (0x0000)
            Supervision timeout: 420 msec (0x002a)
            Master clock accuracy: 0x00
    
    ....
    
    > ACL Data RX: Handle 75 flags 0x02 dlen 12
          SMP: Identity Address Information (0x09) len 7
            Address type: Public (0x00)
            Address: E0:52:33:93:3B:21
    
    Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
    Tested-by: Maarten Fonville <maarten.fonville@gmail.com>
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=199461
    Cc: stable@vger.kernel.org
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69978cfd3adf1f9329a0c8266497919dfc84196e
Author: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Date:   Fri Jun 21 19:19:29 2019 +0300

    intel_th: msu: Fix single mode with disabled IOMMU
    
    commit 918b8646497b5dba6ae82d4a7325f01b258972b9 upstream.
    
    Commit 4e0eaf239fb3 ("intel_th: msu: Fix single mode with IOMMU") switched
    the single mode code to use dma mapping pages obtained from the page
    allocator, but with IOMMU disabled, that may lead to using SWIOTLB bounce
    buffers and without additional sync'ing, produces empty trace buffers.
    
    Fix this by using a DMA32 GFP flag to the page allocation in single mode,
    as the device supports full 32-bit DMA addressing.
    
    Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Fixes: 4e0eaf239fb3 ("intel_th: msu: Fix single mode with IOMMU")
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reported-by: Ammy Yi <ammy.yi@intel.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20190621161930.60785-4-alexander.shishkin@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e23504dda096ff0b7cf6d1ed43d10181a823f9ea
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Jul 4 12:35:56 2018 +0300

    eCryptfs: fix a couple type promotion bugs
    
    commit 0bdf8a8245fdea6f075a5fede833a5fcf1b3466c upstream.
    
    ECRYPTFS_SIZE_AND_MARKER_BYTES is type size_t, so if "rc" is negative
    that gets type promoted to a high positive value and treated as success.
    
    Fixes: 778aeb42a708 ("eCryptfs: Cleanup and optimize ecryptfs_lookup_interpose()")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    [tyhicks: Use "if/else if" rather than "if/if"]
    Cc: stable@vger.kernel.org
    Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d42d6bb8218f4d7865f0d5da9dc57f8481e30ac9
Author: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
Date:   Thu Jun 13 09:00:14 2019 +0530

    powerpc/watchpoint: Restore NV GPRs while returning from exception
    
    commit f474c28fbcbe42faca4eb415172c07d76adcb819 upstream.
    
    powerpc hardware triggers watchpoint before executing the instruction.
    To make trigger-after-execute behavior, kernel emulates the
    instruction. If the instruction is 'load something into non-volatile
    register', exception handler should restore emulated register state
    while returning back, otherwise there will be register state
    corruption. eg, adding a watchpoint on a list can corrput the list:
    
      # cat /proc/kallsyms | grep kthread_create_list
      c00000000121c8b8 d kthread_create_list
    
    Add watchpoint on kthread_create_list->prev:
    
      # perf record -e mem:0xc00000000121c8c0
    
    Run some workload such that new kthread gets invoked. eg, I just
    logged out from console:
    
      list_add corruption. next->prev should be prev (c000000001214e00), \
            but was c00000000121c8b8. (next=c00000000121c8b8).
      WARNING: CPU: 59 PID: 309 at lib/list_debug.c:25 __list_add_valid+0xb4/0xc0
      CPU: 59 PID: 309 Comm: kworker/59:0 Kdump: loaded Not tainted 5.1.0-rc7+ #69
      ...
      NIP __list_add_valid+0xb4/0xc0
      LR __list_add_valid+0xb0/0xc0
      Call Trace:
      __list_add_valid+0xb0/0xc0 (unreliable)
      __kthread_create_on_node+0xe0/0x260
      kthread_create_on_node+0x34/0x50
      create_worker+0xe8/0x260
      worker_thread+0x444/0x560
      kthread+0x160/0x1a0
      ret_from_kernel_thread+0x5c/0x70
    
    List corruption happened because it uses 'load into non-volatile
    register' instruction:
    
    Snippet from __kthread_create_on_node:
    
      c000000000136be8:     addis   r29,r2,-19
      c000000000136bec:     ld      r29,31424(r29)
            if (!__list_add_valid(new, prev, next))
      c000000000136bf0:     mr      r3,r30
      c000000000136bf4:     mr      r5,r28
      c000000000136bf8:     mr      r4,r29
      c000000000136bfc:     bl      c00000000059a2f8 <__list_add_valid+0x8>
    
    Register state from WARN_ON():
    
      GPR00: c00000000059a3a0 c000007ff23afb50 c000000001344e00 0000000000000075
      GPR04: 0000000000000000 0000000000000000 0000001852af8bc1 0000000000000000
      GPR08: 0000000000000001 0000000000000007 0000000000000006 00000000000004aa
      GPR12: 0000000000000000 c000007ffffeb080 c000000000137038 c000005ff62aaa00
      GPR16: 0000000000000000 0000000000000000 c000007fffbe7600 c000007fffbe7370
      GPR20: c000007fffbe7320 c000007fffbe7300 c000000001373a00 0000000000000000
      GPR24: fffffffffffffef7 c00000000012e320 c000007ff23afcb0 c000000000cb8628
      GPR28: c00000000121c8b8 c000000001214e00 c000007fef5b17e8 c000007fef5b17c0
    
    Watchpoint hit at 0xc000000000136bec.
    
      addis   r29,r2,-19
       => r29 = 0xc000000001344e00 + (-19 << 16)
       => r29 = 0xc000000001214e00
    
      ld      r29,31424(r29)
       => r29 = *(0xc000000001214e00 + 31424)
       => r29 = *(0xc00000000121c8c0)
    
    0xc00000000121c8c0 is where we placed a watchpoint and thus this
    instruction was emulated by emulate_step. But because handle_dabr_fault
    did not restore emulated register state, r29 still contains stale
    value in above register state.
    
    Fixes: 5aae8a5370802 ("powerpc, hw_breakpoints: Implement hw_breakpoints for 64-bit server processors")
    Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: stable@vger.kernel.org # 2.6.36+
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dae64e957c3eb44d2106db42dd3dc15d876586f2
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Jun 17 21:42:14 2019 +0000

    powerpc/32s: fix suspend/resume when IBATs 4-7 are used
    
    commit 6ecb78ef56e08d2119d337ae23cb951a640dc52d upstream.
    
    Previously, only IBAT1 and IBAT2 were used to map kernel linear mem.
    Since commit 63b2bc619565 ("powerpc/mm/32s: Use BATs for
    STRICT_KERNEL_RWX"), we may have all 8 BATs used for mapping
    kernel text. But the suspend/restore functions only save/restore
    BATs 0 to 3, and clears BATs 4 to 7.
    
    Make suspend and restore functions respectively save and reload
    the 8 BATs on CPUs having MMU_FTR_USE_HIGH_BATS feature.
    
    Reported-by: Andreas Schwab <schwab@linux-m68k.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0c4b05e43df3fade203540de5d39e183a70611a
Author: Helge Deller <deller@gmx.de>
Date:   Tue Jul 16 21:43:11 2019 +0200

    parisc: Fix kernel panic due invalid values in IAOQ0 or IAOQ1
    
    commit 10835c854685393a921b68f529bf740fa7c9984d upstream.
    
    On parisc the privilege level of a process is stored in the lowest two bits of
    the instruction pointers (IAOQ0 and IAOQ1). On Linux we use privilege level 0
    for the kernel and privilege level 3 for user-space. So userspace should not be
    allowed to modify IAOQ0 or IAOQ1 of a ptraced process to change it's privilege
    level to e.g. 0 to try to gain kernel privileges.
    
    This patch prevents such modifications by always setting the two lowest bits to
    one (which relates to privilege level 3 for user-space) if IAOQ0 or IAOQ1 are
    modified via ptrace calls in the native and compat ptrace paths.
    
    Link: https://bugs.gentoo.org/481768
    Reported-by: Jeroen Roovers <jer@gentoo.org>
    Cc: <stable@vger.kernel.org>
    Tested-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7193d41f0be3b039200cdaf1e7ab6013b6723f7
Author: Helge Deller <deller@gmx.de>
Date:   Thu Jul 4 03:44:17 2019 +0200

    parisc: Ensure userspace privilege for ptraced processes in regset functions
    
    commit 34c32fc603311a72cb558e5e337555434f64c27b upstream.
    
    On parisc the privilege level of a process is stored in the lowest two bits of
    the instruction pointers (IAOQ0 and IAOQ1). On Linux we use privilege level 0
    for the kernel and privilege level 3 for user-space. So userspace should not be
    allowed to modify IAOQ0 or IAOQ1 of a ptraced process to change it's privilege
    level to e.g. 0 to try to gain kernel privileges.
    
    This patch prevents such modifications in the regset support functions by
    always setting the two lowest bits to one (which relates to privilege level 3
    for user-space) if IAOQ0 or IAOQ1 are modified via ptrace regset calls.
    
    Link: https://bugs.gentoo.org/481768
    Cc: <stable@vger.kernel.org> # v4.7+
    Tested-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 535d4c0b94c38fcfbaddb658f916552e687e019b
Author: Thomas Meyer <thomas@m3y3r.de>
Date:   Sat Jul 29 17:03:23 2017 +0200

    um: Fix FP register size for XSTATE/XSAVE
    
    commit 6f602afda7275c24c20ba38b5b6cd4ed08561fff upstream.
    
    Hard code max size. Taken from
    https://sourceware.org/git/?p=binutils-gdb.git;a=blob;f=gdb/common/x86-xstate.h
    
    Signed-off-by: Thomas Meyer <thomas@m3y3r.de>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Alessio Balsini <balsini@android.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf81c7a33cb09def24edbcbc5e7446442d1a66b2
Author: Florian Fainelli <f.fainelli@gmail.com>
Date:   Thu May 25 11:36:26 2017 -0700

    um: Allow building and running on older hosts
    
    commit 0a987645672ebde7844a9c0732a5a25f3d4bb6c6 upstream.
    
    Commit a78ff1112263 ("um: add extended processor state save/restore
    support") and b6024b21fec8 ("um: extend fpstate to _xstate to support
    YMM registers") forced the use of the x86 FP _xstate and
    PTRACE_GETREGSET/SETREGSET. On older hosts, we would neither be able to
    build UML nor run it anymore with these two commits applied because we
    don't have definitions for struct _xstate nor these two ptrace requests.
    
    We can determine at build time which fp context structure to check
    against, just like we can keep using the old i387 fp save/restore if
    PTRACE_GETRESET/SETREGSET are not defined.
    
    Fixes: a78ff1112263 ("um: add extended processor state save/restore support")
    Fixes: b6024b21fec8 ("um: extend fpstate to _xstate to support YMM registers")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Richard Weinberger <richard@nod.at>
    Signed-off-by: Alessio Balsini <balsini@android.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7b930def8ef6224f19e96f100993ac7ba3c44223
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Fri May 31 10:13:06 2019 +0200

    crypto: caam - limit output IV to CBC to work around CTR mode DMA issue
    
    commit ed527b13d800dd515a9e6c582f0a73eca65b2e1b upstream.
    
    The CAAM driver currently violates an undocumented and slightly
    controversial requirement imposed by the crypto stack that a buffer
    referred to by the request structure via its virtual address may not
    be modified while any scatterlists passed via the same request
    structure are mapped for inbound DMA.
    
    This may result in errors like
    
      alg: aead: decryption failed on test 1 for gcm_base(ctr-aes-caam,ghash-generic): ret=74
      alg: aead: Failed to load transform for gcm(aes): -2
    
    on non-cache coherent systems, due to the fact that the GCM driver
    passes an IV buffer by virtual address which shares a cacheline with
    the auth_tag buffer passed via a scatterlist, resulting in corruption
    of the auth_tag when the IV is updated while the DMA mapping is live.
    
    Since the IV that is returned to the caller is only valid for CBC mode,
    and given that the in-kernel users of CBC (such as CTS) don't trigger the
    same issue as the GCM driver, let's just disable the output IV generation
    for all modes except CBC for the time being.
    
    Fixes: 854b06f76879 ("crypto: caam - properly set IV after {en,de}crypt")
    Cc: Horia Geanta <horia.geanta@nxp.com>
    Cc: Iuliana Prodan <iuliana.prodan@nxp.com>
    Reported-by: Sascha Hauer <s.hauer@pengutronix.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Reviewed-by: Horia Geanta <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    [ Horia: backported to 4.9 ]
    Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 15f093da1781c9e4501cae6ab0082ea4db939d95
Author: Dexuan Cui <decui@microsoft.com>
Date:   Fri Jun 21 23:45:23 2019 +0000

    PCI: hv: Fix a use-after-free bug in hv_eject_device_work()
    
    commit 4df591b20b80cb77920953812d894db259d85bd7 upstream.
    
    Fix a use-after-free in hv_eject_device_work().
    
    Fixes: 05f151a73ec2 ("PCI: hv: Fix a memory leak in hv_eject_device_work()")
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Michael Kelley <mikelley@microsoft.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a8d9c5dc9499a3753d438d3be60b002b521fdc0c
Author: Dexuan Cui <decui@microsoft.com>
Date:   Thu Nov 10 07:19:52 2016 +0000

    PCI: hv: Delete the device earlier from hbus->children for hot-remove
    
    commit e74d2ebdda33b3bdd1826b5b92e9aa45bdf92bb3 upstream.
    
    After we send a PCI_EJECTION_COMPLETE message to the host, the host will
    immediately send us a PCI_BUS_RELATIONS message with
    relations->device_count == 0, so pci_devices_present_work(), running on
    another thread, can find the being-ejected device, mark the
    hpdev->reported_missing to true, and run list_move_tail()/list_del() for
    the device -- this races hv_eject_device_work() -> list_del().
    
    Move the list_del() in hv_eject_device_work() to an earlier place, i.e.,
    before we send PCI_EJECTION_COMPLETE, so later the
    pci_devices_present_work() can't see the device.
    
    Signed-off-by: Dexuan Cui <decui@microsoft.com>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: Jake Oshins <jakeo@microsoft.com>
    Acked-by: K. Y. Srinivasan <kys@microsoft.com>
    CC: Haiyang Zhang <haiyangz@microsoft.com>
    CC: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 029cc4f0f075de930e9a4ee13e73c4d37b1fecd9
Author: Hook, Gary <Gary.Hook@amd.com>
Date:   Thu Jun 27 16:16:23 2019 +0000

    crypto: ccp - Validate the the error value used to index error messages
    
    commit 52393d617af7b554f03531e6756facf2ea687d2e upstream.
    
    The error code read from the queue status register is only 6 bits wide,
    but we need to verify its value is within range before indexing the error
    messages.
    
    Fixes: 81422badb3907 ("crypto: ccp - Make syslog errors human-readable")
    Cc: <stable@vger.kernel.org>
    Reported-by: Cfir Cohen <cfir@google.com>
    Signed-off-by: Gary R Hook <gary.hook@amd.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 027466fc638139a172bf1274d115be78c7bd9e37
Author: Steve Longerbeam <slongerbeam@gmail.com>
Date:   Tue May 21 18:03:13 2019 -0700

    gpu: ipu-v3: ipu-ic: Fix saturation bit offset in TPMEM
    
    commit 3d1f62c686acdedf5ed9642b763f3808d6a47d1e upstream.
    
    The saturation bit was being set at bit 9 in the second 32-bit word
    of the TPMEM CSC. This isn't correct, the saturation bit is bit 42,
    which is bit 10 of the second word.
    
    Fixes: 1aa8ea0d2bd5d ("gpu: ipu-v3: Add Image Converter unit")
    
    Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com>
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Cc: stable@vger.kernel.org
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c93b7473dcae62d4c0f4c31324deea3631154207
Author: Jan Harkes <jaharkes@cs.cmu.edu>
Date:   Tue Jul 16 16:28:04 2019 -0700

    coda: pass the host file in vma->vm_file on mmap
    
    commit 7fa0a1da3dadfd9216df7745a1331fdaa0940d1c upstream.
    
    Patch series "Coda updates".
    
    The following patch series is a collection of various fixes for Coda,
    most of which were collected from linux-fsdevel or linux-kernel but
    which have as yet not found their way upstream.
    
    This patch (of 22):
    
    Various file systems expect that vma->vm_file points at their own file
    handle, several use file_inode(vma->vm_file) to get at their inode or
    use vma->vm_file->private_data.  However the way Coda wrapped mmap on a
    host file broke this assumption, vm_file was still pointing at the Coda
    file and the host file systems would scribble over Coda's inode and
    private file data.
    
    This patch fixes the incorrect expectation and wraps vm_ops->open and
    vm_ops->close to allow Coda to track when the vm_area_struct is
    destroyed so we still release the reference on the Coda file handle at
    the right time.
    
    [This patch differs from the original upstream patch because older stable
     kernels do not have the call_mmap vfs helper so we call f_ops->mmap
     directly.]
    
    Link: http://lkml.kernel.org/r/0e850c6e59c0b147dc2dcd51a3af004c948c3697.1558117389.git.jaharkes@cs.cmu.edu
    Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Colin Ian King <colin.king@canonical.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: Fabian Frederick <fabf@skynet.be>
    Cc: Mikko Rapeli <mikko.rapeli@iki.fi>
    Cc: Sam Protsenko <semen.protsenko@linaro.org>
    Cc: Yann Droneaud <ydroneaud@opteya.com>
    Cc: Zhouyang Jia <jiazhouyang09@gmail.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1fdefbb5bc70ff20ea49083c6984aae86e3ecf93
Author: Denis Efremov <efremov@ispras.ru>
Date:   Fri Jul 12 21:55:23 2019 +0300

    floppy: fix out-of-bounds read in copy_buffer
    
    [ Upstream commit da99466ac243f15fbba65bd261bfc75ffa1532b6 ]
    
    This fixes a global out-of-bounds read access in the copy_buffer
    function of the floppy driver.
    
    The FDDEFPRM ioctl allows one to set the geometry of a disk.  The sect
    and head fields (unsigned int) of the floppy_drive structure are used to
    compute the max_sector (int) in the make_raw_rw_request function.  It is
    possible to overflow the max_sector.  Next, max_sector is passed to the
    copy_buffer function and used in one of the memcpy calls.
    
    An unprivileged user could trigger the bug if the device is accessible,
    but requires a floppy disk to be inserted.
    
    The patch adds the check for the .sect * .head multiplication for not
    overflowing in the set_geometry function.
    
    The bug was found by syzkaller.
    
    Signed-off-by: Denis Efremov <efremov@ispras.ru>
    Tested-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d6d6391861b3d3a94f55db84441e967e0a955a5
Author: Denis Efremov <efremov@ispras.ru>
Date:   Fri Jul 12 21:55:22 2019 +0300

    floppy: fix invalid pointer dereference in drive_name
    
    [ Upstream commit 9b04609b784027968348796a18f601aed9db3789 ]
    
    This fixes the invalid pointer dereference in the drive_name function of
    the floppy driver.
    
    The native_format field of the struct floppy_drive_params is used as
    floppy_type array index in the drive_name function.  Thus, the field
    should be checked the same way as the autodetect field.
    
    To trigger the bug, one could use a value out of range and set the drive
    parameters with the FDSETDRVPRM ioctl.  Next, FDGETDRVTYP ioctl should
    be used to call the drive_name.  A floppy disk is not required to be
    inserted.
    
    CAP_SYS_ADMIN is required to call FDSETDRVPRM.
    
    The patch adds the check for a value of the native_format field to be in
    the '0 <= x < ARRAY_SIZE(floppy_type)' range of the floppy_type array
    indices.
    
    The bug was found by syzkaller.
    
    Signed-off-by: Denis Efremov <efremov@ispras.ru>
    Tested-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 93f8955f078c2dcb09a4b2664bbbbb29cfc2d085
Author: Denis Efremov <efremov@ispras.ru>
Date:   Fri Jul 12 21:55:21 2019 +0300

    floppy: fix out-of-bounds read in next_valid_format
    
    [ Upstream commit 5635f897ed83fd539df78e98ba69ee91592f9bb8 ]
    
    This fixes a global out-of-bounds read access in the next_valid_format
    function of the floppy driver.
    
    The values from autodetect field of the struct floppy_drive_params are
    used as indices for the floppy_type array in the next_valid_format
    function 'floppy_type[DP->autodetect[probed_format]].sect'.
    
    To trigger the bug, one could use a value out of range and set the drive
    parameters with the FDSETDRVPRM ioctl.  A floppy disk is not required to
    be inserted.
    
    CAP_SYS_ADMIN is required to call FDSETDRVPRM.
    
    The patch adds the check for values of the autodetect field to be in the
    '0 <= x < ARRAY_SIZE(floppy_type)' range of the floppy_type array indices.
    
    The bug was found by syzkaller.
    
    Signed-off-by: Denis Efremov <efremov@ispras.ru>
    Tested-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 604206cde7a6c1907f6f03d90c37505a45ef1b62
Author: Denis Efremov <efremov@ispras.ru>
Date:   Fri Jul 12 21:55:20 2019 +0300

    floppy: fix div-by-zero in setup_format_params
    
    [ Upstream commit f3554aeb991214cbfafd17d55e2bfddb50282e32 ]
    
    This fixes a divide by zero error in the setup_format_params function of
    the floppy driver.
    
    Two consecutive ioctls can trigger the bug: The first one should set the
    drive geometry with such .sect and .rate values for the F_SECT_PER_TRACK
    to become zero.  Next, the floppy format operation should be called.
    
    A floppy disk is not required to be inserted.  An unprivileged user
    could trigger the bug if the device is accessible.
    
    The patch checks F_SECT_PER_TRACK for a non-zero value in the
    set_geometry function.  The proper check should involve a reasonable
    upper limit for the .sect and .rate fields, but it could change the
    UAPI.
    
    The patch also checks F_SECT_PER_TRACK in the setup_format_params, and
    cancels the formatting operation in case of zero.
    
    The bug was found by syzkaller.
    
    Signed-off-by: Denis Efremov <efremov@ispras.ru>
    Tested-by: Willy Tarreau <w@1wt.eu>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 06f9e7be052b1aba2dd14aceec3fc2f25bc47d5f
Author: Al Viro <viro@zeniv.linux.org.uk>
Date:   Tue Jun 27 15:47:56 2017 -0400

    take floppy compat ioctls to sodding floppy.c
    
    [ Upstream commit 229b53c9bf4e1132a4aa6feb9632a7a1f1d08c5c ]
    
    all other drivers recognizing those ioctls are very much *not*
    biarch.
    
    Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7839be200a1c7c5636755a51798c4a270013c1e8
Author: Dan Williams <dan.j.williams@intel.com>
Date:   Thu Jul 18 15:58:36 2019 -0700

    libnvdimm/pfn: fix fsdax-mode namespace info-block zero-fields
    
    commit 7e3e888dfc138089f4c15a81b418e88f0978f744 upstream.
    
    At namespace creation time there is the potential for the "expected to
    be zero" fields of a 'pfn' info-block to be filled with indeterminate
    data.  While the kernel buffer is zeroed on allocation it is immediately
    overwritten by nd_pfn_validate() filling it with the current contents of
    the on-media info-block location.  For fields like, 'flags' and the
    'padding' it potentially means that future implementations can not rely on
    those fields being zero.
    
    In preparation to stop using the 'start_pad' and 'end_trunc' fields for
    section alignment, arrange for fields that are not explicitly
    initialized to be guaranteed zero.  Bump the minor version to indicate
    it is safe to assume the 'padding' and 'flags' are zero.  Otherwise,
    this corruption is expected to benign since all other critical fields
    are explicitly initialized.
    
    Note The cc: stable is about spreading this new policy to as many
    kernels as possible not fixing an issue in those kernels.  It is not
    until the change titled "libnvdimm/pfn: Stop padding pmem namespaces to
    section alignment" where this improper initialization becomes a problem.
    So if someone decides to backport "libnvdimm/pfn: Stop padding pmem
    namespaces to section alignment" (which is not tagged for stable), make
    sure this pre-requisite is flagged.
    
    Link: http://lkml.kernel.org/r/156092356065.979959.6681003754765958296.stgit@dwillia2-desk3.amr.corp.intel.com
    Fixes: 32ab0a3f5170 ("libnvdimm, pmem: 'struct page' for pmem")
    Signed-off-by: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>        [ppc64]
    Cc: <stable@vger.kernel.org>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Jane Chu <jane.chu@oracle.com>
    Cc: Jeff Moyer <jmoyer@redhat.com>
    Cc: Jérôme Glisse <jglisse@redhat.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Logan Gunthorpe <logang@deltatee.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Pavel Tatashin <pasha.tatashin@soleen.com>
    Cc: Toshi Kani <toshi.kani@hpe.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Wei Yang <richardw.yang@linux.intel.com>
    Cc: Jason Gunthorpe <jgg@mellanox.com>
    Cc: Christoph Hellwig <hch@lst.de>
    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 d2db6cfbc5b7abbfa5dc86a28ceebc38e487666d
Author: Filipe Manana <fdmanana@suse.com>
Date:   Wed Jun 19 13:05:50 2019 +0100

    Btrfs: add missing inode version, ctime and mtime updates when punching hole
    
    commit 179006688a7e888cbff39577189f2e034786d06a upstream.
    
    If the range for which we are punching a hole covers only part of a page,
    we end up updating the inode item but we skip the update of the inode's
    iversion, mtime and ctime. Fix that by ensuring we update those properties
    of the inode.
    
    A patch for fstests test case generic/059 that tests this as been sent
    along with this fix.
    
    Fixes: 2aaa66558172b0 ("Btrfs: add hole punching")
    Fixes: e8c1c76e804b18 ("Btrfs: add missing inode update when punching hole")
    CC: stable@vger.kernel.org # 4.4+
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27639aebde6804e08d8a8879681cd75c25038ca1
Author: Mika Westerberg <mika.westerberg@linux.intel.com>
Date:   Wed Jun 12 13:57:39 2019 +0300

    PCI: Do not poll for PME if the device is in D3cold
    
    commit 000dd5316e1c756a1c028f22e01d06a38249dd4d upstream.
    
    PME polling does not take into account that a device that is directly
    connected to the host bridge may go into D3cold as well. This leads to a
    situation where the PME poll thread reads from a config space of a
    device that is in D3cold and gets incorrect information because the
    config space is not accessible.
    
    Here is an example from Intel Ice Lake system where two PCIe root ports
    are in D3cold (I've instrumented the kernel to log the PMCSR register
    contents):
    
      [   62.971442] pcieport 0000:00:07.1: Check PME status, PMCSR=0xffff
      [   62.971504] pcieport 0000:00:07.0: Check PME status, PMCSR=0xffff
    
    Since 0xffff is interpreted so that PME is pending, the root ports will
    be runtime resumed. This repeats over and over again essentially
    blocking all runtime power management.
    
    Prevent this from happening by checking whether the device is in D3cold
    before its PME status is read.
    
    Fixes: 71a83bd727cc ("PCI/PM: add runtime PM support to PCIe port")
    Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: Lukas Wunner <lukas@wunner.de>
    Cc: 3.6+ <stable@vger.kernel.org> # v3.6+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea405878e7d80f9eff259c232e78d9e02b394b01
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Tue Apr 30 19:59:42 2019 +0800

    9p/virtio: Add cleanup path in p9_virtio_init
    
    commit d4548543fc4ece56c6f04b8586f435fb4fd84c20 upstream.
    
    KASAN report this:
    
    BUG: unable to handle kernel paging request at ffffffffa0097000
    PGD 3870067 P4D 3870067 PUD 3871063 PMD 2326e2067 PTE 0
    Oops: 0000 [#1
    CPU: 0 PID: 5340 Comm: modprobe Not tainted 5.1.0-rc7+ #25
    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_add_valid+0x10/0x70
    Code: c3 48 8b 06 55 48 89 e5 5d 48 39 07 0f 94 c0 0f b6 c0 c3 90 90 90 90 90 90 90 55 48 89 d0 48 8b 52 08 48 89 e5 48 39 f2 75 19 <48> 8b 32 48 39 f0 75 3a
    
    RSP: 0018:ffffc90000e23c68 EFLAGS: 00010246
    RAX: ffffffffa00ad000 RBX: ffffffffa009d000 RCX: 0000000000000000
    RDX: ffffffffa0097000 RSI: ffffffffa0097000 RDI: ffffffffa009d000
    RBP: ffffc90000e23c68 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa0097000
    R13: ffff888231797180 R14: 0000000000000000 R15: ffffc90000e23e78
    FS:  00007fb215285540(0000) GS:ffff888237a00000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffa0097000 CR3: 000000022f144000 CR4: 00000000000006f0
    Call Trace:
     v9fs_register_trans+0x2f/0x60 [9pnet
     ? 0xffffffffa0087000
     p9_virtio_init+0x25/0x1000 [9pnet_virtio
     do_one_initcall+0x6c/0x3cc
     ? kmem_cache_alloc_trace+0x248/0x3b0
     do_init_module+0x5b/0x1f1
     load_module+0x1db1/0x2690
     ? m_show+0x1d0/0x1d0
     __do_sys_finit_module+0xc5/0xd0
     __x64_sys_finit_module+0x15/0x20
     do_syscall_64+0x6b/0x1d0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x7fb214d8e839
    Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01
    
    RSP: 002b:00007ffc96554278 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 000055e67eed2aa0 RCX: 00007fb214d8e839
    RDX: 0000000000000000 RSI: 000055e67ce95c2e RDI: 0000000000000003
    RBP: 000055e67ce95c2e R08: 0000000000000000 R09: 000055e67eed2aa0
    R10: 0000000000000003 R11: 0000000000000246 R12: 0000000000000000
    R13: 000055e67eeda500 R14: 0000000000040000 R15: 000055e67eed2aa0
    Modules linked in: 9pnet_virtio(+) 9pnet gre rfkill vmw_vsock_virtio_transport_common vsock [last unloaded: 9pnet_virtio
    CR2: ffffffffa0097000
    ---[ end trace 4a52bb13ff07b761
    
    If register_virtio_driver() fails in p9_virtio_init,
    we should call v9fs_unregister_trans() to do cleanup.
    
    Link: http://lkml.kernel.org/r/20190430115942.41840-1-yuehaibing@huawei.com
    Cc: stable@vger.kernel.org
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: b530cc794024 ("9p: add virtio transport")
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b414f53325530ecebf1d520a72139607c9a598c
Author: Daniel Jordan <daniel.m.jordan@oracle.com>
Date:   Tue Jul 16 12:32:53 2019 -0400

    padata: use smp_mb in padata_reorder to avoid orphaned padata jobs
    
    commit cf144f81a99d1a3928f90b0936accfd3f45c9a0a upstream.
    
    Testing padata with the tcrypt module on a 5.2 kernel...
    
        # modprobe tcrypt alg="pcrypt(rfc4106(gcm(aes)))" type=3
        # modprobe tcrypt mode=211 sec=1
    
    ...produces this splat:
    
        INFO: task modprobe:10075 blocked for more than 120 seconds.
              Not tainted 5.2.0-base+ #16
        modprobe        D    0 10075  10064 0x80004080
        Call Trace:
         ? __schedule+0x4dd/0x610
         ? ring_buffer_unlock_commit+0x23/0x100
         schedule+0x6c/0x90
         schedule_timeout+0x3b/0x320
         ? trace_buffer_unlock_commit_regs+0x4f/0x1f0
         wait_for_common+0x160/0x1a0
         ? wake_up_q+0x80/0x80
         { crypto_wait_req }             # entries in braces added by hand
         { do_one_aead_op }
         { test_aead_jiffies }
         test_aead_speed.constprop.17+0x681/0xf30 [tcrypt]
         do_test+0x4053/0x6a2b [tcrypt]
         ? 0xffffffffa00f4000
         tcrypt_mod_init+0x50/0x1000 [tcrypt]
         ...
    
    The second modprobe command never finishes because in padata_reorder,
    CPU0's load of reorder_objects is executed before the unlocking store in
    spin_unlock_bh(pd->lock), causing CPU0 to miss CPU1's increment:
    
    CPU0                                 CPU1
    
    padata_reorder                       padata_do_serial
      LOAD reorder_objects  // 0
                                           INC reorder_objects  // 1
                                           padata_reorder
                                             TRYLOCK pd->lock   // failed
      UNLOCK pd->lock
    
    CPU0 deletes the timer before returning from padata_reorder and since no
    other job is submitted to padata, modprobe waits indefinitely.
    
    Add a pair of full barriers to guarantee proper ordering:
    
    CPU0                                 CPU1
    
    padata_reorder                       padata_do_serial
      UNLOCK pd->lock
      smp_mb()
      LOAD reorder_objects
                                           INC reorder_objects
                                           smp_mb__after_atomic()
                                           padata_reorder
                                             TRYLOCK pd->lock
    
    smp_mb__after_atomic is needed so the read part of the trylock operation
    comes after the INC, as Andrea points out.   Thanks also to Andrea for
    help with writing a litmus test.
    
    Fixes: 16295bec6398 ("padata: Generic parallelization/serialization interface")
    Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com>
    Cc: <stable@vger.kernel.org>
    Cc: Andrea Parri <andrea.parri@amarulasolutions.com>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: Paul E. McKenney <paulmck@linux.ibm.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: linux-arch@vger.kernel.org
    Cc: linux-crypto@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0e0d33f50e2cb1ce9aa984d0a20c3f9cabc47b32
Author: Lyude Paul <lyude@redhat.com>
Date:   Wed Jun 26 14:10:27 2019 -0400

    drm/nouveau/i2c: Enable i2c pads & busses during preinit
    
    commit 7cb95eeea6706c790571042a06782e378b2561ea upstream.
    
    It turns out that while disabling i2c bus access from software when the
    GPU is suspended was a step in the right direction with:
    
    commit 342406e4fbba ("drm/nouveau/i2c: Disable i2c bus access after
    ->fini()")
    
    We also ended up accidentally breaking the vbios init scripts on some
    older Tesla GPUs, as apparently said scripts can actually use the i2c
    bus. Since these scripts are executed before initializing any
    subdevices, we end up failing to acquire access to the i2c bus which has
    left a number of cards with their fan controllers uninitialized. Luckily
    this doesn't break hardware - it just means the fan gets stuck at 100%.
    
    This also means that we've always been using our i2c busses before
    initializing them during the init scripts for older GPUs, we just didn't
    notice it until we started preventing them from being used until init.
    It's pretty impressive this never caused us any issues before!
    
    So, fix this by initializing our i2c pad and busses during subdev
    pre-init. We skip initializing aux busses during pre-init, as those are
    guaranteed to only ever be used by nouveau for DP aux transactions.
    
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Tested-by: Marc Meledandri <m.meledandri@gmail.com>
    Fixes: 342406e4fbba ("drm/nouveau/i2c: Disable i2c bus access after ->fini()")
    Cc: stable@vger.kernel.org
    Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e83234d7ef237931148b4b17834dadf57eb46c12
Author: Radoslaw Burny <rburny@google.com>
Date:   Tue Jul 16 16:26:51 2019 -0700

    fs/proc/proc_sysctl.c: fix the default values of i_uid/i_gid on /proc/sys inodes.
    
    commit 5ec27ec735ba0477d48c80561cc5e856f0c5dfaf upstream.
    
    Normally, the inode's i_uid/i_gid are translated relative to s_user_ns,
    but this is not a correct behavior for proc.  Since sysctl permission
    check in test_perm is done against GLOBAL_ROOT_[UG]ID, it makes more
    sense to use these values in u_[ug]id of proc inodes.  In other words:
    although uid/gid in the inode is not read during test_perm, the inode
    logically belongs to the root of the namespace.  I have confirmed this
    with Eric Biederman at LPC and in this thread:
      https://lore.kernel.org/lkml/87k1kzjdff.fsf@xmission.com
    
    Consequences
    ============
    
    Since the i_[ug]id values of proc nodes are not used for permissions
    checks, this change usually makes no functional difference.  However, it
    causes an issue in a setup where:
    
     * a namespace container is created without root user in container -
       hence the i_[ug]id of proc nodes are set to INVALID_[UG]ID
    
     * container creator tries to configure it by writing /proc/sys files,
       e.g. writing /proc/sys/kernel/shmmax to configure shared memory limit
    
    Kernel does not allow to open an inode for writing if its i_[ug]id are
    invalid, making it impossible to write shmmax and thus - configure the
    container.
    
    Using a container with no root mapping is apparently rare, but we do use
    this configuration at Google.  Also, we use a generic tool to configure
    the container limits, and the inability to write any of them causes a
    failure.
    
    History
    =======
    
    The invalid uids/gids in inodes first appeared due to 81754357770e (fs:
    Update i_[ug]id_(read|write) to translate relative to s_user_ns).
    However, AFAIK, this did not immediately cause any issues.  The
    inability to write to these "invalid" inodes was only caused by a later
    commit 0bd23d09b874 (vfs: Don't modify inodes with a uid or gid unknown
    to the vfs).
    
    Tested: Used a repro program that creates a user namespace without any
    mapping and stat'ed /proc/$PID/root/proc/sys/kernel/shmmax from outside.
    Before the change, it shows the overflow uid, with the change it's 0.
    The overflow uid indicates that the uid in the inode is not correct and
    thus it is not possible to open the file for writing.
    
    Link: http://lkml.kernel.org/r/20190708115130.250149-1-rburny@google.com
    Fixes: 0bd23d09b874 ("vfs: Don't modify inodes with a uid or gid unknown to the vfs")
    Signed-off-by: Radoslaw Burny <rburny@google.com>
    Acked-by: Luis Chamberlain <mcgrof@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: "Eric W . Biederman" <ebiederm@xmission.com>
    Cc: Seth Forshee <seth.forshee@canonical.com>
    Cc: John Sperbeck <jsperbeck@google.com>
    Cc: Alexey Dobriyan <adobriyan@gmail.com>
    Cc: <stable@vger.kernel.org>    [4.8+]
    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 39dd5959a06348f13cf34652bb942c9c58c725c5
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Thu Jun 20 09:17:00 2019 +0100

    arm64: tegra: Fix AGIC register range
    
    commit ba24eee6686f6ed3738602b54d959253316a9541 upstream.
    
    The Tegra AGIC interrupt controller is an ARM GIC400 interrupt
    controller. Per the ARM GIC device-tree binding, the first address
    region is for the GIC distributor registers and the second address
    region is for the GIC CPU interface registers. The address space for
    the distributor registers is 4kB, but currently this is incorrectly
    defined as 8kB for the Tegra AGIC and overlaps with the CPU interface
    registers. Correct the address space for the distributor to be 4kB.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Fixes: bcdbde433542 ("arm64: tegra: Add AGIC node for Tegra210")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3984eae04473472dec30f8280cc3aac514fb14ba
Author: Like Xu <like.xu@linux.intel.com>
Date:   Thu Jul 18 13:35:14 2019 +0800

    KVM: x86/vPMU: refine kvm_pmu err msg when event creation failed
    
    commit 6fc3977ccc5d3c22e851f2dce2d3ce2a0a843842 upstream.
    
    If a perf_event creation fails due to any reason of the host perf
    subsystem, it has no chance to log the corresponding event for guest
    which may cause abnormal sampling data in guest result. In debug mode,
    this message helps to understand the state of vPMC and we may not
    limit the number of occurrences but not in a spamming style.
    
    Suggested-by: Joe Perches <joe@perches.com>
    Signed-off-by: Like Xu <like.xu@linux.intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 927b5edaa1f13cf12f73403ce69e08f25abe3be7
Author: Ezequiel Garcia <ezequiel@collabora.com>
Date:   Thu May 2 18:00:43 2019 -0400

    media: coda: Remove unbalanced and unneeded mutex unlock
    
    commit 766b9b168f6c75c350dd87c3e0bc6a9b322f0013 upstream.
    
    The mutex unlock in the threaded interrupt handler is not paired
    with any mutex lock. Remove it.
    
    This bug has been here for a really long time, so it applies
    to any stable repo.
    
    Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Cc: stable@vger.kernel.org
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4652722d6d7feea0f9cd930fc365fbd13cc5abbd
Author: Boris Brezillon <boris.brezillon@collabora.com>
Date:   Wed Jun 19 05:21:33 2019 -0400

    media: v4l2: Test type instead of cfg->type in v4l2_ctrl_new_custom()
    
    commit 07d89227a983df957a6a7c56f7c040cde9ac571f upstream.
    
    cfg->type can be overridden by v4l2_ctrl_fill() and the new value is
    stored in the local type var. Fix the tests to use this local var.
    
    Fixes: 0996517cf8ea ("V4L/DVB: v4l2: Add new control handling framework")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
    [hverkuil-cisco@xs4all.nl: change to !qmenu and !qmenu_int (checkpatch)]
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27359248be5fee532432160bc514e1a4131f4463
Author: Hui Wang <hui.wang@canonical.com>
Date:   Tue Jul 16 15:21:34 2019 +0800

    ALSA: hda/realtek: apply ALC891 headset fixup to one Dell machine
    
    commit 4b4e0e32e4b09274dbc9d173016c1a026f44608c upstream.
    
    Without this patch, the headset-mic and headphone-mic don't work.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Hui Wang <hui.wang@canonical.com>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3dd2b24c48b947a7095d1b599fd0d8aebc57bdb1
Author: Takashi Iwai <tiwai@suse.de>
Date:   Mon Jul 15 22:50:27 2019 +0200

    ALSA: seq: Break too long mutex context in the write loop
    
    commit ede34f397ddb063b145b9e7d79c6026f819ded13 upstream.
    
    The fix for the racy writes and ioctls to sequencer widened the
    application of client->ioctl_mutex to the whole write loop.  Although
    it does unlock/relock for the lengthy operation like the event dup,
    the loop keeps the ioctl_mutex for the whole time in other
    situations.  This may take quite long time if the user-space would
    give a huge buffer, and this is a likely cause of some weird behavior
    spotted by syzcaller fuzzer.
    
    This patch puts a simple workaround, just adding a mutex break in the
    loop when a large number of events have been processed.  This
    shouldn't hit any performance drop because the threshold is set high
    enough for usual operations.
    
    Fixes: 7bd800915677 ("ALSA: seq: More protection for concurrent write and ioctl races")
    Reported-by: syzbot+97aae04ce27e39cbfca9@syzkaller.appspotmail.com
    Reported-by: syzbot+4c595632b98bb8ffcc66@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8fc18666c06ade5f132a995a7e1806f43b6bbda6
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Mon Jun 24 07:20:14 2019 +0000

    lib/scatterlist: Fix mapping iterator when sg->offset is greater than PAGE_SIZE
    
    commit aeb87246537a83c2aff482f3f34a2e0991e02cbc upstream.
    
    All mapping iterator logic is based on the assumption that sg->offset
    is always lower than PAGE_SIZE.
    
    But there are situations where sg->offset is such that the SG item
    is on the second page. In that case sg_copy_to_buffer() fails
    properly copying the data into the buffer. One of the reason is
    that the data will be outside the kmapped area used to access that
    data.
    
    This patch fixes the issue by adjusting the mapping iterator
    offset and pgoffset fields such that offset is always lower than
    PAGE_SIZE.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 4225fc8555a9 ("lib/scatterlist: use page iterator in the mapping iterator")
    Cc: stable@vger.kernel.org
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3332762ca382880a02b926d135a95d2b988ce5be
Author: Trond Myklebust <trond.myklebust@hammerspace.com>
Date:   Thu Jun 27 06:41:45 2019 -0400

    NFSv4: Handle the special Linux file open access mode
    
    commit 44942b4e457beda00981f616402a1a791e8c616e upstream.
    
    According to the open() manpage, Linux reserves the access mode 3
    to mean "check for read and write permission on the file and return
    a file descriptor that can't be used for reading or writing."
    
    Currently, the NFSv4 code will ask the server to open the file,
    and will use an incorrect share access mode of 0. Since it has
    an incorrect share access mode, the client later forgets to send
    a corresponding close, meaning it can leak stateids on the server.
    
    Fixes: ce4ef7c0a8a05 ("NFS: Split out NFS v4 file operations")
    Cc: stable@vger.kernel.org # 3.6+
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc19ad387e321c68d4fed011ed11ef1c303c650d
Author: Eiichi Tsukata <devel@etsukata.com>
Date:   Tue Jun 25 10:29:10 2019 +0900

    tracing/snapshot: Resize spare buffer if size changed
    
    commit 46cc0b44428d0f0e81f11ea98217fc0edfbeab07 upstream.
    
    Current snapshot implementation swaps two ring_buffers even though their
    sizes are different from each other, that can cause an inconsistency
    between the contents of buffer_size_kb file and the current buffer size.
    
    For example:
    
      # cat buffer_size_kb
      7 (expanded: 1408)
      # echo 1 > events/enable
      # grep bytes per_cpu/cpu0/stats
      bytes: 1441020
      # echo 1 > snapshot             // current:1408, spare:1408
      # echo 123 > buffer_size_kb     // current:123,  spare:1408
      # echo 1 > snapshot             // current:1408, spare:123
      # grep bytes per_cpu/cpu0/stats
      bytes: 1443700
      # cat buffer_size_kb
      123                             // != current:1408
    
    And also, a similar per-cpu case hits the following WARNING:
    
    Reproducer:
    
      # echo 1 > per_cpu/cpu0/snapshot
      # echo 123 > buffer_size_kb
      # echo 1 > per_cpu/cpu0/snapshot
    
    WARNING:
    
      WARNING: CPU: 0 PID: 1946 at kernel/trace/trace.c:1607 update_max_tr_single.part.0+0x2b8/0x380
      Modules linked in:
      CPU: 0 PID: 1946 Comm: bash Not tainted 5.2.0-rc6 #20
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-2.fc30 04/01/2014
      RIP: 0010:update_max_tr_single.part.0+0x2b8/0x380
      Code: ff e8 dc da f9 ff 0f 0b e9 88 fe ff ff e8 d0 da f9 ff 44 89 ee bf f5 ff ff ff e8 33 dc f9 ff 41 83 fd f5 74 96 e8 b8 da f9 ff <0f> 0b eb 8d e8 af da f9 ff 0f 0b e9 bf fd ff ff e8 a3 da f9 ff 48
      RSP: 0018:ffff888063e4fca0 EFLAGS: 00010093
      RAX: ffff888066214380 RBX: ffffffff99850fe0 RCX: ffffffff964298a8
      RDX: 0000000000000000 RSI: 00000000fffffff5 RDI: 0000000000000005
      RBP: 1ffff1100c7c9f96 R08: ffff888066214380 R09: ffffed100c7c9f9b
      R10: ffffed100c7c9f9a R11: 0000000000000003 R12: 0000000000000000
      R13: 00000000ffffffea R14: ffff888066214380 R15: ffffffff99851060
      FS:  00007f9f8173c700(0000) GS:ffff88806d000000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 0000000000714dc0 CR3: 0000000066fa6000 CR4: 00000000000006f0
      Call Trace:
       ? trace_array_printk_buf+0x140/0x140
       ? __mutex_lock_slowpath+0x10/0x10
       tracing_snapshot_write+0x4c8/0x7f0
       ? trace_printk_init_buffers+0x60/0x60
       ? selinux_file_permission+0x3b/0x540
       ? tracer_preempt_off+0x38/0x506
       ? trace_printk_init_buffers+0x60/0x60
       __vfs_write+0x81/0x100
       vfs_write+0x1e1/0x560
       ksys_write+0x126/0x250
       ? __ia32_sys_read+0xb0/0xb0
       ? do_syscall_64+0x1f/0x390
       do_syscall_64+0xc1/0x390
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    This patch adds resize_buffer_duplicate_size() to check if there is a
    difference between current/spare buffer sizes and resize a spare buffer
    if necessary.
    
    Link: http://lkml.kernel.org/r/20190625012910.13109-1-devel@etsukata.com
    
    Cc: stable@vger.kernel.org
    Fixes: ad909e21bbe69 ("tracing: Add internal tracing_snapshot() functions")
    Signed-off-by: Eiichi Tsukata <devel@etsukata.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb25d56dac6930ed1963a373a24f59e5ec15667a
Author: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Date:   Tue May 21 15:10:38 2019 +0300

    iwlwifi: pcie: don't service an interrupt that was masked
    
    commit 3b57a10ca14c619707398dc58fe5ece18c95b20b upstream.
    
    Sometimes the register status can include interrupts that
    were masked. We can, for example, get the RF-Kill bit set
    in the interrupt status register although this interrupt
    was masked. Then if we get the ALIVE interrupt (for example)
    that was not masked, we need to *not* service the RF-Kill
    interrupt.
    Fix this in the MSI-X interrupt handler.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 79c0a0b6d26930430df1ec397ec1e07c12d4d726
Author: Jon Hunter <jonathanh@nvidia.com>
Date:   Thu Jun 20 09:17:01 2019 +0100

    arm64: tegra: Update Jetson TX1 GPU regulator timings
    
    commit ece6031ece2dd64d63708cfe1088016cee5b10c0 upstream.
    
    The GPU regulator enable ramp delay for Jetson TX1 is set to 1ms which
    not sufficient because the enable ramp delay has been measured to be
    greater than 1ms. Furthermore, the downstream kernels released by NVIDIA
    for Jetson TX1 are using a enable ramp delay 2ms and a settling delay of
    160us. Update the GPU regulator enable ramp delay for Jetson TX1 to be
    2ms and add a settling delay of 160us.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
    Fixes: 5e6b9a89afce ("arm64: tegra: Add VDD_GPU regulator to Jetson TX1")
    Signed-off-by: Thierry Reding <treding@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 867ea728c702995e9eaf6b3a280b992ec2d359e3
Author: Krzysztof Kozlowski <krzk@kernel.org>
Date:   Sat Jun 29 13:44:45 2019 +0200

    regulator: s2mps11: Fix buck7 and buck8 wrong voltages
    
    commit 16da0eb5ab6ef2dd1d33431199126e63db9997cc upstream.
    
    On S2MPS11 device, the buck7 and buck8 regulator voltages start at 750
    mV, not 600 mV.  Using wrong minimal value caused shifting of these
    regulator values by 150 mV (e.g. buck7 usually configured to v1.35 V was
    reported as 1.2 V).
    
    On most of the boards these regulators are left in default state so this
    was only affecting reported voltage.  However if any driver wanted to
    change them, then effectively it would set voltage 150 mV higher than
    intended.
    
    Cc: <stable@vger.kernel.org>
    Fixes: cb74685ecb39 ("regulator: s2mps11: Add samsung s2mps11 regulator driver")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2628fa1a6d824ee1f3fe67a272a3d00ba33d23fa
Author: Grant Hernandez <granthernandez@google.com>
Date:   Sat Jul 13 01:00:12 2019 -0700

    Input: gtco - bounds check collection indent level
    
    commit 2a017fd82c5402b3c8df5e3d6e5165d9e6147dc1 upstream.
    
    The GTCO tablet input driver configures itself from an HID report sent
    via USB during the initial enumeration process. Some debugging messages
    are generated during the parsing. A debugging message indentation
    counter is not bounds checked, leading to the ability for a specially
    crafted HID report to cause '-' and null bytes be written past the end
    of the indentation array. As long as the kernel has CONFIG_DYNAMIC_DEBUG
    enabled, this code will not be optimized out.  This was discovered
    during code review after a previous syzkaller bug was found in this
    driver.
    
    Signed-off-by: Grant Hernandez <granthernandez@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c9a9f1bfdc454ad8c9564949ef686a6f9dc63f68
Author: Wen Yang <wen.yang99@zte.com.cn>
Date:   Mon Jul 8 14:19:03 2019 +0800

    crypto: crypto4xx - fix a potential double free in ppc4xx_trng_probe
    
    commit 95566aa75cd6b3b404502c06f66956b5481194b3 upstream.
    
    There is a possible double free issue in ppc4xx_trng_probe():
    
    85:     dev->trng_base = of_iomap(trng, 0);
    86:     of_node_put(trng);          ---> released here
    87:     if (!dev->trng_base)
    88:             goto err_out;
    ...
    110:    ierr_out:
    111:            of_node_put(trng);  ---> double released here
    ...
    
    This issue was detected by using the Coccinelle software.
    We fix it by removing the unnecessary of_node_put().
    
    Fixes: 5343e674f32f ("crypto4xx: integrate ppc4xx-rng into crypto4xx")
    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Cc: <stable@vger.kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Allison Randal <allison@lohutok.net>
    Cc: Armijn Hemel <armijn@tjaldur.nl>
    Cc: Julia Lawall <Julia.Lawall@lip6.fr>
    Cc: linux-crypto@vger.kernel.org
    Cc: linux-kernel@vger.kernel.org
    Acked-by: Julia Lawall <julia.lawall@lip6.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 16102fb921f297fa1fbb5561f2ddbd7271358ef7
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri May 31 11:12:30 2019 -0700

    crypto: chacha20poly1305 - fix atomic sleep when using async algorithm
    
    commit 7545b6c2087f4ef0287c8c9b7eba6a728c67ff8e upstream.
    
    Clear the CRYPTO_TFM_REQ_MAY_SLEEP flag when the chacha20poly1305
    operation is being continued from an async completion callback, since
    sleeping may not be allowed in that context.
    
    This is basically the same bug that was recently fixed in the xts and
    lrw templates.  But, it's always been broken in chacha20poly1305 too.
    This was found using syzkaller in combination with the updated crypto
    self-tests which actually test the MAY_SLEEP flag now.
    
    Reproducer:
    
        python -c 'import socket; socket.socket(socket.AF_ALG, 5, 0).bind(
                   ("aead", "rfc7539(cryptd(chacha20-generic),poly1305-generic)"))'
    
    Kernel output:
    
        BUG: sleeping function called from invalid context at include/crypto/algapi.h:426
        in_atomic(): 1, irqs_disabled(): 0, pid: 1001, name: kworker/2:2
        [...]
        CPU: 2 PID: 1001 Comm: kworker/2:2 Not tainted 5.2.0-rc2 #5
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-20181126_142135-anatol 04/01/2014
        Workqueue: crypto cryptd_queue_worker
        Call Trace:
         __dump_stack lib/dump_stack.c:77 [inline]
         dump_stack+0x4d/0x6a lib/dump_stack.c:113
         ___might_sleep kernel/sched/core.c:6138 [inline]
         ___might_sleep.cold.19+0x8e/0x9f kernel/sched/core.c:6095
         crypto_yield include/crypto/algapi.h:426 [inline]
         crypto_hash_walk_done+0xd6/0x100 crypto/ahash.c:113
         shash_ahash_update+0x41/0x60 crypto/shash.c:251
         shash_async_update+0xd/0x10 crypto/shash.c:260
         crypto_ahash_update include/crypto/hash.h:539 [inline]
         poly_setkey+0xf6/0x130 crypto/chacha20poly1305.c:337
         poly_init+0x51/0x60 crypto/chacha20poly1305.c:364
         async_done_continue crypto/chacha20poly1305.c:78 [inline]
         poly_genkey_done+0x15/0x30 crypto/chacha20poly1305.c:369
         cryptd_skcipher_complete+0x29/0x70 crypto/cryptd.c:279
         cryptd_skcipher_decrypt+0xcd/0x110 crypto/cryptd.c:339
         cryptd_queue_worker+0x70/0xa0 crypto/cryptd.c:184
         process_one_work+0x1ed/0x420 kernel/workqueue.c:2269
         worker_thread+0x3e/0x3a0 kernel/workqueue.c:2415
         kthread+0x11f/0x140 kernel/kthread.c:255
         ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:352
    
    Fixes: 71ebc4d1b27d ("crypto: chacha20poly1305 - Add a ChaCha20-Poly1305 AEAD construction, RFC7539")
    Cc: <stable@vger.kernel.org> # v4.2+
    Cc: Martin Willi <martin@strongswan.org>
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86d0b1955a139a482cd700b12aa39c2d2d621f80
Author: Elena Petrova <lenaptr@google.com>
Date:   Tue May 28 15:35:06 2019 +0100

    crypto: arm64/sha2-ce - correct digest for empty data in finup
    
    commit 6bd934de1e393466b319d29c4427598fda096c57 upstream.
    
    The sha256-ce finup implementation for ARM64 produces wrong digest
    for empty input (len=0). Expected: the actual digest, result: initial
    value of SHA internal state. The error is in sha256_ce_finup:
    for empty data `finalize` will be 1, so the code is relying on
    sha2_ce_transform to make the final round. However, in
    sha256_base_do_update, the block function will not be called when
    len == 0.
    
    Fix it by setting finalize to 0 if data is empty.
    
    Fixes: 03802f6a80b3a ("crypto: arm64/sha2-ce - move SHA-224/256 ARMv8 implementation to base layer")
    Cc: stable@vger.kernel.org
    Signed-off-by: Elena Petrova <lenaptr@google.com>
    Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 404b7fa99458e176ac3c141a060fcc729570e4e8
Author: Elena Petrova <lenaptr@google.com>
Date:   Tue May 28 13:41:52 2019 +0100

    crypto: arm64/sha1-ce - correct digest for empty data in finup
    
    commit 1d4aaf16defa86d2665ae7db0259d6cb07e2091f upstream.
    
    The sha1-ce finup implementation for ARM64 produces wrong digest
    for empty input (len=0). Expected: da39a3ee..., result: 67452301...
    (initial value of SHA internal state). The error is in sha1_ce_finup:
    for empty data `finalize` will be 1, so the code is relying on
    sha1_ce_transform to make the final round. However, in
    sha1_base_do_update, the block function will not be called when
    len == 0.
    
    Fix it by setting finalize to 0 if data is empty.
    
    Fixes: 07eb54d306f4 ("crypto: arm64/sha1-ce - move SHA-1 ARMv8 implementation to base layer")
    Cc: stable@vger.kernel.org
    Signed-off-by: Elena Petrova <lenaptr@google.com>
    Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit dee2408599745d5a78a810f648e9a15240aa3740
Author: Eric Biggers <ebiggers@google.com>
Date:   Thu May 30 10:50:39 2019 -0700

    crypto: ghash - fix unaligned memory access in ghash_setkey()
    
    commit 5c6bc4dfa515738149998bb0db2481a4fdead979 upstream.
    
    Changing ghash_mod_init() to be subsys_initcall made it start running
    before the alignment fault handler has been installed on ARM.  In kernel
    builds where the keys in the ghash test vectors happened to be
    misaligned in the kernel image, this exposed the longstanding bug that
    ghash_setkey() is incorrectly casting the key buffer (which can have any
    alignment) to be128 for passing to gf128mul_init_4k_lle().
    
    Fix this by memcpy()ing the key to a temporary buffer.
    
    Don't fix it by setting an alignmask on the algorithm instead because
    that would unnecessarily force alignment of the data too.
    
    Fixes: 2cdc6899a88e ("crypto: ghash - Add GHASH digest algorithm for GCM")
    Reported-by: Peter Robinson <pbrobinson@gmail.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Tested-by: Peter Robinson <pbrobinson@gmail.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1949bb58d74aacef02e74aa8d86b81692f7c4b4b
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Sun Jun 9 11:19:11 2019 +1000

    scsi: mac_scsi: Increase PIO/PDMA transfer length threshold
    
    commit 7398cee4c3e6aea1ba07a6449e5533ecd0b92cdd upstream.
    
    Some targets introduce delays when handshaking the response to certain
    commands. For example, a disk may send a 96-byte response to an INQUIRY
    command (or a 24-byte response to a MODE SENSE command) too slowly.
    
    Apparently the first 12 or 14 bytes are handshaked okay but then the system
    bus error timeout is reached while transferring the next word.
    
    Since the scsi bus phase hasn't changed, the driver then sets the target
    borken flag to prevent further PDMA transfers. The driver also logs the
    warning, "switching to slow handshake".
    
    Raise the PDMA threshold to 512 bytes so that PIO transfers will be used
    for these commands. This default is sufficiently low that PDMA will still
    be used for READ and WRITE commands.
    
    The existing threshold (16 bytes) was chosen more or less at random.
    However, best performance requires the threshold to be as low as possible.
    Those systems that don't need the PIO workaround at all may benefit from
    mac_scsi.setup_use_pdma=1
    
    Cc: Michael Schmitz <schmitzmic@gmail.com>
    Cc: stable@vger.kernel.org # v4.14+
    Fixes: 3a0f64bfa907 ("mac_scsi: Fix pseudo DMA implementation")
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Tested-by: Michael Schmitz <schmitzmic@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e21afa18d7477028269afe81fa448f47b34d937
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Sun Jun 9 11:19:11 2019 +1000

    scsi: NCR5380: Always re-enable reselection interrupt
    
    commit 57f31326518e98ee4cabf9a04efe00ed57c54147 upstream.
    
    The reselection interrupt gets disabled during selection and must be
    re-enabled when hostdata->connected becomes NULL. If it isn't re-enabled a
    disconnected command may time-out or the target may wedge the bus while
    trying to reselect the host. This can happen after a command is aborted.
    
    Fix this by enabling the reselection interrupt in NCR5380_main() after
    calls to NCR5380_select() and NCR5380_information_transfer() return.
    
    Cc: Michael Schmitz <schmitzmic@gmail.com>
    Cc: stable@vger.kernel.org # v4.9+
    Fixes: 8b00c3d5d40d ("ncr5380: Implement new eh_abort_handler")
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Tested-by: Stan Johnson <userm57@yahoo.com>
    Tested-by: Michael Schmitz <schmitzmic@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 24dcf8c4004866c4a308f89b3236e6a50bab5206
Author: Finn Thain <fthain@telegraphics.com.au>
Date:   Thu Sep 27 11:17:11 2018 +1000

    scsi: NCR5380: Reduce goto statements in NCR5380_select()
    
    commit 6a162836997c10bbefb7c7ca772201cc45c0e4a6 upstream.
    
    Replace a 'goto' statement with a simple 'return' where possible.  This
    improves readability. No functional change.
    
    Tested-by: Michael Schmitz <schmitzmic@gmail.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 259b0fc2caddc21a6b561b595747a8091102f7ff
Author: Juergen Gross <jgross@suse.com>
Date:   Wed Jun 19 11:00:56 2019 +0200

    xen: let alloc_xenballooned_pages() fail if not enough memory free
    
    commit a1078e821b605813b63bf6bca414a85f804d5c66 upstream.
    
    Instead of trying to allocate pages with GFP_USER in
    add_ballooned_pages() check the available free memory via
    si_mem_available(). GFP_USER is far less limiting memory exhaustion
    than the test via si_mem_available().
    
    This will avoid dom0 running out of memory due to excessive foreign
    page mappings especially on ARM and on x86 in PVH mode, as those don't
    have a pre-ballooned area which can be used for foreign mappings.
    
    As the normal ballooning suffers from the same problem don't balloon
    down more than si_mem_available() pages in one iteration. At the same
    time limit the default maximum number of retries.
    
    This is part of XSA-300.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0d1e561fc372d4e709db652145481f4bc2c370b2
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Jul 3 00:23:42 2019 +0900

    gtp: fix use-after-free in gtp_newlink()
    
    [ Upstream commit a2bed90704c68d3763bf24decb1b781a45395de8 ]
    
    Current gtp_newlink() could be called after unregister_pernet_subsys().
    gtp_newlink() uses gtp_net but it can be destroyed by
    unregister_pernet_subsys().
    So unregister_pernet_subsys() should be called after
    rtnl_link_unregister().
    
    Test commands:
       #SHELL 1
       while :
       do
               for i in {1..5}
               do
                    ./gtp-link add gtp$i &
               done
               killall gtp-link
       done
    
       #SHELL 2
       while :
       do
            modprobe -rv gtp
       done
    
    Splat looks like:
    [  753.176631] BUG: KASAN: use-after-free in gtp_newlink+0x9b4/0xa5c [gtp]
    [  753.177722] Read of size 8 at addr ffff8880d48f2458 by task gtp-link/7126
    [  753.179082] CPU: 0 PID: 7126 Comm: gtp-link Tainted: G        W         5.2.0-rc6+ #50
    [  753.185801] Call Trace:
    [  753.186264]  dump_stack+0x7c/0xbb
    [  753.186863]  ? gtp_newlink+0x9b4/0xa5c [gtp]
    [  753.187583]  print_address_description+0xc7/0x240
    [  753.188382]  ? gtp_newlink+0x9b4/0xa5c [gtp]
    [  753.189097]  ? gtp_newlink+0x9b4/0xa5c [gtp]
    [  753.189846]  __kasan_report+0x12a/0x16f
    [  753.190542]  ? gtp_newlink+0x9b4/0xa5c [gtp]
    [  753.191298]  kasan_report+0xe/0x20
    [  753.191893]  gtp_newlink+0x9b4/0xa5c [gtp]
    [  753.192580]  ? __netlink_ns_capable+0xc3/0xf0
    [  753.193370]  __rtnl_newlink+0xb9f/0x11b0
    [ ... ]
    [  753.241201] Allocated by task 7186:
    [  753.241844]  save_stack+0x19/0x80
    [  753.242399]  __kasan_kmalloc.constprop.3+0xa0/0xd0
    [  753.243192]  __kmalloc+0x13e/0x300
    [  753.243764]  ops_init+0xd6/0x350
    [  753.244314]  register_pernet_operations+0x249/0x6f0
    [ ... ]
    [  753.251770] Freed by task 7178:
    [  753.252288]  save_stack+0x19/0x80
    [  753.252833]  __kasan_slab_free+0x111/0x150
    [  753.253962]  kfree+0xc7/0x280
    [  753.254509]  ops_free_list.part.11+0x1c4/0x2d0
    [  753.255241]  unregister_pernet_operations+0x262/0x390
    [ ... ]
    [  753.285883] list_add corruption. next->prev should be prev (ffff8880d48f2458), but was ffff8880d497d878. (next.
    [  753.287241] ------------[ cut here ]------------
    [  753.287794] kernel BUG at lib/list_debug.c:25!
    [  753.288364] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
    [  753.289099] CPU: 0 PID: 7126 Comm: gtp-link Tainted: G    B   W         5.2.0-rc6+ #50
    [  753.291036] RIP: 0010:__list_add_valid+0x74/0xd0
    [  753.291589] Code: 48 39 da 75 27 48 39 f5 74 36 48 39 dd 74 31 48 83 c4 08 b8 01 00 00 00 5b 5d c3 48 89 d9 48b
    [  753.293779] RSP: 0018:ffff8880cae8f398 EFLAGS: 00010286
    [  753.294401] RAX: 0000000000000075 RBX: ffff8880d497d878 RCX: 0000000000000000
    [  753.296260] RDX: 0000000000000075 RSI: 0000000000000008 RDI: ffffed10195d1e69
    [  753.297070] RBP: ffff8880cd250ae0 R08: ffffed101b4bff21 R09: ffffed101b4bff21
    [  753.297899] R10: 0000000000000001 R11: ffffed101b4bff20 R12: ffff8880d497d878
    [  753.298703] R13: 0000000000000000 R14: ffff8880cd250ae0 R15: ffff8880d48f2458
    [  753.299564] FS:  00007f5f79805740(0000) GS:ffff8880da400000(0000) knlGS:0000000000000000
    [  753.300533] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  753.301231] CR2: 00007fe8c7ef4f10 CR3: 00000000b71a6006 CR4: 00000000000606f0
    [  753.302183] Call Trace:
    [  753.302530]  gtp_newlink+0x5f6/0xa5c [gtp]
    [  753.303037]  ? __netlink_ns_capable+0xc3/0xf0
    [  753.303576]  __rtnl_newlink+0xb9f/0x11b0
    [  753.304092]  ? rtnl_link_unregister+0x230/0x230
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1f9ec64e92bfb564d50f41eb1668a5f29b4090c3
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Wed Jul 3 00:23:13 2019 +0900

    gtp: fix Illegal context switch in RCU read-side critical section.
    
    [ Upstream commit 3f167e1921865b379a9becf03828e7202c7b4917 ]
    
    ipv4_pdp_add() is called in RCU read-side critical section.
    So GFP_KERNEL should not be used in the function.
    This patch make ipv4_pdp_add() to use GFP_ATOMIC instead of GFP_KERNEL.
    
    Test commands:
    gtp-link add gtp1 &
    gtp-tunnel add gtp1 v1 100 200 1.1.1.1 2.2.2.2
    
    Splat looks like:
    [  130.618881] =============================
    [  130.626382] WARNING: suspicious RCU usage
    [  130.626994] 5.2.0-rc6+ #50 Not tainted
    [  130.627622] -----------------------------
    [  130.628223] ./include/linux/rcupdate.h:266 Illegal context switch in RCU read-side critical section!
    [  130.629684]
    [  130.629684] other info that might help us debug this:
    [  130.629684]
    [  130.631022]
    [  130.631022] rcu_scheduler_active = 2, debug_locks = 1
    [  130.632136] 4 locks held by gtp-tunnel/1025:
    [  130.632925]  #0: 000000002b93c8b7 (cb_lock){++++}, at: genl_rcv+0x15/0x40
    [  130.634159]  #1: 00000000f17bc999 (genl_mutex){+.+.}, at: genl_rcv_msg+0xfb/0x130
    [  130.635487]  #2: 00000000c644ed8e (rtnl_mutex){+.+.}, at: gtp_genl_new_pdp+0x18c/0x1150 [gtp]
    [  130.636936]  #3: 0000000007a1cde7 (rcu_read_lock){....}, at: gtp_genl_new_pdp+0x187/0x1150 [gtp]
    [  130.638348]
    [  130.638348] stack backtrace:
    [  130.639062] CPU: 1 PID: 1025 Comm: gtp-tunnel Not tainted 5.2.0-rc6+ #50
    [  130.641318] Call Trace:
    [  130.641707]  dump_stack+0x7c/0xbb
    [  130.642252]  ___might_sleep+0x2c0/0x3b0
    [  130.642862]  kmem_cache_alloc_trace+0x1cd/0x2b0
    [  130.643591]  gtp_genl_new_pdp+0x6c5/0x1150 [gtp]
    [  130.644371]  genl_family_rcv_msg+0x63a/0x1030
    [  130.645074]  ? mutex_lock_io_nested+0x1090/0x1090
    [  130.645845]  ? genl_unregister_family+0x630/0x630
    [  130.646592]  ? debug_show_all_locks+0x2d0/0x2d0
    [  130.647293]  ? check_flags.part.40+0x440/0x440
    [  130.648099]  genl_rcv_msg+0xa3/0x130
    [ ... ]
    
    Fixes: 459aa660eb1d ("gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U)")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 427d80d8a462a8ce8554ab07410f229a3fe388c2
Author: csonsino <csonsino@gmail.com>
Date:   Wed Jun 12 15:00:52 2019 -0600

    Bluetooth: validate BLE connection interval updates
    
    [ Upstream commit c49a8682fc5d298d44e8d911f4fa14690ea9485e ]
    
    Problem: The Linux Bluetooth stack yields complete control over the BLE
    connection interval to the remote device.
    
    The Linux Bluetooth stack provides access to the BLE connection interval
    min and max values through /sys/kernel/debug/bluetooth/hci0/
    conn_min_interval and /sys/kernel/debug/bluetooth/hci0/conn_max_interval.
    These values are used for initial BLE connections, but the remote device
    has the ability to request a connection parameter update. In the event
    that the remote side requests to change the connection interval, the Linux
    kernel currently only validates that the desired value is within the
    acceptable range in the Bluetooth specification (6 - 3200, corresponding to
    7.5ms - 4000ms). There is currently no validation that the desired value
    requested by the remote device is within the min/max limits specified in
    the conn_min_interval/conn_max_interval configurations. This essentially
    leads to Linux yielding complete control over the connection interval to
    the remote device.
    
    The proposed patch adds a verification step to the connection parameter
    update mechanism, ensuring that the desired value is within the min/max
    bounds of the current connection. If the desired value is outside of the
    current connection min/max values, then the connection parameter update
    request is rejected and the negative response is returned to the remote
    device. Recall that the initial connection is established using the local
    conn_min_interval/conn_max_interval values, so this allows the Linux
    administrator to retain control over the BLE connection interval.
    
    The one downside that I see is that the current default Linux values for
    conn_min_interval and conn_max_interval typically correspond to 30ms and
    50ms respectively. If this change were accepted, then it is feasible that
    some devices would no longer be able to negotiate to their desired
    connection interval values. This might be remedied by setting the default
    Linux conn_min_interval and conn_max_interval values to the widest
    supported range (6 - 3200 / 7.5ms - 4000ms). This could lead to the same
    behavior as the current implementation, where the remote device could
    request to change the connection interval value to any value that is
    permitted by the Bluetooth specification, and Linux would accept the
    desired value.
    
    Signed-off-by: Carey Sonsino <csonsino@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0a5e8c134c6a4cd09c5f563d8704014d3d12c1c4
Author: Matias Karhumaa <matias.karhumaa@gmail.com>
Date:   Tue May 21 13:07:22 2019 +0300

    Bluetooth: Check state in l2cap_disconnect_rsp
    
    [ Upstream commit 28261da8a26f4915aa257d12d506c6ba179d961f ]
    
    Because of both sides doing L2CAP disconnection at the same time, it
    was possible to receive L2CAP Disconnection Response with CID that was
    already freed. That caused problems if CID was already reused and L2CAP
    Connection Request with same CID was sent out. Before this patch kernel
    deleted channel context regardless of the state of the channel.
    
    Example where leftover Disconnection Response (frame #402) causes local
    device to delete L2CAP channel which was not yet connected. This in
    turn confuses remote device's stack because same CID is re-used without
    properly disconnecting.
    
    Btmon capture before patch:
    ** snip **
    > ACL Data RX: Handle 43 flags 0x02 dlen 8                #394 [hci1] 10.748949
          Channel: 65 len 4 [PSM 3 mode 0] {chan 2}
          RFCOMM: Disconnect (DISC) (0x43)
             Address: 0x03 cr 1 dlci 0x00
             Control: 0x53 poll/final 1
             Length: 0
             FCS: 0xfd
    < ACL Data TX: Handle 43 flags 0x00 dlen 8                #395 [hci1] 10.749062
          Channel: 65 len 4 [PSM 3 mode 0] {chan 2}
          RFCOMM: Unnumbered Ack (UA) (0x63)
             Address: 0x03 cr 1 dlci 0x00
             Control: 0x73 poll/final 1
             Length: 0
             FCS: 0xd7
    < ACL Data TX: Handle 43 flags 0x00 dlen 12               #396 [hci1] 10.749073
          L2CAP: Disconnection Request (0x06) ident 17 len 4
            Destination CID: 65
            Source CID: 65
    > HCI Event: Number of Completed Packets (0x13) plen 5    #397 [hci1] 10.752391
            Num handles: 1
            Handle: 43
            Count: 1
    > HCI Event: Number of Completed Packets (0x13) plen 5    #398 [hci1] 10.753394
            Num handles: 1
            Handle: 43
            Count: 1
    > ACL Data RX: Handle 43 flags 0x02 dlen 12               #399 [hci1] 10.756499
          L2CAP: Disconnection Request (0x06) ident 26 len 4
            Destination CID: 65
            Source CID: 65
    < ACL Data TX: Handle 43 flags 0x00 dlen 12               #400 [hci1] 10.756548
          L2CAP: Disconnection Response (0x07) ident 26 len 4
            Destination CID: 65
            Source CID: 65
    < ACL Data TX: Handle 43 flags 0x00 dlen 12               #401 [hci1] 10.757459
          L2CAP: Connection Request (0x02) ident 18 len 4
            PSM: 1 (0x0001)
            Source CID: 65
    > ACL Data RX: Handle 43 flags 0x02 dlen 12               #402 [hci1] 10.759148
          L2CAP: Disconnection Response (0x07) ident 17 len 4
            Destination CID: 65
            Source CID: 65
    = bluetoothd: 00:1E:AB:4C:56:54: error updating services: Input/o..   10.759447
    > HCI Event: Number of Completed Packets (0x13) plen 5    #403 [hci1] 10.759386
            Num handles: 1
            Handle: 43
            Count: 1
    > ACL Data RX: Handle 43 flags 0x02 dlen 12               #404 [hci1] 10.760397
          L2CAP: Connection Request (0x02) ident 27 len 4
            PSM: 3 (0x0003)
            Source CID: 65
    < ACL Data TX: Handle 43 flags 0x00 dlen 16               #405 [hci1] 10.760441
          L2CAP: Connection Response (0x03) ident 27 len 8
            Destination CID: 65
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    < ACL Data TX: Handle 43 flags 0x00 dlen 27               #406 [hci1] 10.760449
          L2CAP: Configure Request (0x04) ident 19 len 19
            Destination CID: 65
            Flags: 0x0000
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 1013
            Option: Retransmission and Flow Control (0x04) [mandatory]
              Mode: Basic (0x00)
              TX window size: 0
              Max transmit: 0
              Retransmission timeout: 0
              Monitor timeout: 0
              Maximum PDU size: 0
    > HCI Event: Number of Completed Packets (0x13) plen 5    #407 [hci1] 10.761399
            Num handles: 1
            Handle: 43
            Count: 1
    > ACL Data RX: Handle 43 flags 0x02 dlen 16               #408 [hci1] 10.762942
          L2CAP: Connection Response (0x03) ident 18 len 8
            Destination CID: 66
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    *snip*
    
    Similar case after the patch:
    *snip*
    > ACL Data RX: Handle 43 flags 0x02 dlen 8            #22702 [hci0] 1664.411056
          Channel: 65 len 4 [PSM 3 mode 0] {chan 3}
          RFCOMM: Disconnect (DISC) (0x43)
             Address: 0x03 cr 1 dlci 0x00
             Control: 0x53 poll/final 1
             Length: 0
             FCS: 0xfd
    < ACL Data TX: Handle 43 flags 0x00 dlen 8            #22703 [hci0] 1664.411136
          Channel: 65 len 4 [PSM 3 mode 0] {chan 3}
          RFCOMM: Unnumbered Ack (UA) (0x63)
             Address: 0x03 cr 1 dlci 0x00
             Control: 0x73 poll/final 1
             Length: 0
             FCS: 0xd7
    < ACL Data TX: Handle 43 flags 0x00 dlen 12           #22704 [hci0] 1664.411143
          L2CAP: Disconnection Request (0x06) ident 11 len 4
            Destination CID: 65
            Source CID: 65
    > HCI Event: Number of Completed Pac.. (0x13) plen 5  #22705 [hci0] 1664.414009
            Num handles: 1
            Handle: 43
            Count: 1
    > HCI Event: Number of Completed Pac.. (0x13) plen 5  #22706 [hci0] 1664.415007
            Num handles: 1
            Handle: 43
            Count: 1
    > ACL Data RX: Handle 43 flags 0x02 dlen 12           #22707 [hci0] 1664.418674
          L2CAP: Disconnection Request (0x06) ident 17 len 4
            Destination CID: 65
            Source CID: 65
    < ACL Data TX: Handle 43 flags 0x00 dlen 12           #22708 [hci0] 1664.418762
          L2CAP: Disconnection Response (0x07) ident 17 len 4
            Destination CID: 65
            Source CID: 65
    < ACL Data TX: Handle 43 flags 0x00 dlen 12           #22709 [hci0] 1664.421073
          L2CAP: Connection Request (0x02) ident 12 len 4
            PSM: 1 (0x0001)
            Source CID: 65
    > ACL Data RX: Handle 43 flags 0x02 dlen 12           #22710 [hci0] 1664.421371
          L2CAP: Disconnection Response (0x07) ident 11 len 4
            Destination CID: 65
            Source CID: 65
    > HCI Event: Number of Completed Pac.. (0x13) plen 5  #22711 [hci0] 1664.424082
            Num handles: 1
            Handle: 43
            Count: 1
    > HCI Event: Number of Completed Pac.. (0x13) plen 5  #22712 [hci0] 1664.425040
            Num handles: 1
            Handle: 43
            Count: 1
    > ACL Data RX: Handle 43 flags 0x02 dlen 12           #22713 [hci0] 1664.426103
          L2CAP: Connection Request (0x02) ident 18 len 4
            PSM: 3 (0x0003)
            Source CID: 65
    < ACL Data TX: Handle 43 flags 0x00 dlen 16           #22714 [hci0] 1664.426186
          L2CAP: Connection Response (0x03) ident 18 len 8
            Destination CID: 66
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    < ACL Data TX: Handle 43 flags 0x00 dlen 27           #22715 [hci0] 1664.426196
          L2CAP: Configure Request (0x04) ident 13 len 19
            Destination CID: 65
            Flags: 0x0000
            Option: Maximum Transmission Unit (0x01) [mandatory]
              MTU: 1013
            Option: Retransmission and Flow Control (0x04) [mandatory]
              Mode: Basic (0x00)
              TX window size: 0
              Max transmit: 0
              Retransmission timeout: 0
              Monitor timeout: 0
              Maximum PDU size: 0
    > ACL Data RX: Handle 43 flags 0x02 dlen 16           #22716 [hci0] 1664.428804
          L2CAP: Connection Response (0x03) ident 12 len 8
            Destination CID: 66
            Source CID: 65
            Result: Connection successful (0x0000)
            Status: No further information available (0x0000)
    *snip*
    
    Fix is to check that channel is in state BT_DISCONN before deleting the
    channel.
    
    This bug was found while fuzzing Bluez's OBEX implementation using
    Synopsys Defensics.
    
    Reported-by: Matti Kamunen <matti.kamunen@synopsys.com>
    Reported-by: Ari Timonen <ari.timonen@synopsys.com>
    Signed-off-by: Matias Karhumaa <matias.karhumaa@gmail.com>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 09c3d4027f8627eddeb6c96bf9885c3be2b51a08
Author: Josua Mayer <josua.mayer@jm0.eu>
Date:   Sat Jul 6 17:54:46 2019 +0200

    Bluetooth: 6lowpan: search for destination address in all peers
    
    [ Upstream commit b188b03270b7f8568fc714101ce82fbf5e811c5a ]
    
    Handle overlooked case where the target address is assigned to a peer
    and neither route nor gateway exist.
    
    For one peer, no checks are performed to see if it is meant to receive
    packets for a given address.
    
    As soon as there is a second peer however, checks are performed
    to deal with routes and gateways for handling complex setups with
    multiple hops to a target address.
    This logic assumed that no route and no gateway imply that the
    destination address can not be reached, which is false in case of a
    direct peer.
    
    Acked-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
    Tested-by: Michael Scott <mike@foundries.io>
    Signed-off-by: Josua Mayer <josua.mayer@jm0.eu>
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fa729a351b7a5189ae00fff03852d9ecb79685cd
Author: Tomas Bortoli <tomasbortoli@gmail.com>
Date:   Tue May 28 15:42:58 2019 +0200

    Bluetooth: hci_bcsp: Fix memory leak in rx_skb
    
    [ Upstream commit 4ce9146e0370fcd573f0372d9b4e5a211112567c ]
    
    Syzkaller found that it is possible to provoke a memory leak by
    never freeing rx_skb in struct bcsp_struct.
    
    Fix by freeing in bcsp_close()
    
    Signed-off-by: Tomas Bortoli <tomasbortoli@gmail.com>
    Reported-by: syzbot+98162c885993b72f19c4@syzkaller.appspotmail.com
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d66de413dbf55ae276055f976fa139fc2bcbecde
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Jul 1 16:27:38 2019 +0200

    gpiolib: Fix references to gpiod_[gs]et_*value_cansleep() variants
    
    [ Upstream commit 3285170f28a850638794cdfe712eb6d93e51e706 ]
    
    Commit 372e722ea4dd4ca1 ("gpiolib: use descriptors internally") renamed
    the functions to use a "gpiod" prefix, and commit 79a9becda8940deb
    ("gpiolib: export descriptor-based GPIO interface") introduced the "raw"
    variants, but both changes forgot to update the comments.
    
    Readd a similar reference to gpiod_set_value(), which was accidentally
    removed by commit 1e77fc82110ac36f ("gpio: Add missing open drain/source
    handling to gpiod_set_value_cansleep()").
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20190701142738.25219-1-geert+renesas@glider.be
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9f561a746c78967422ffc74e4cd4213bf9d097b7
Author: Phong Tran <tranmanphong@gmail.com>
Date:   Tue Jul 2 07:10:08 2019 +0700

    net: usb: asix: init MAC address buffers
    
    [ Upstream commit 78226f6eaac80bf30256a33a4926c194ceefdf36 ]
    
    This is for fixing bug KMSAN: uninit-value in ax88772_bind
    
    Tested by
    https://groups.google.com/d/msg/syzkaller-bugs/aFQurGotng4/eB_HlNhhCwAJ
    
    Reported-by: syzbot+8a3fc6674bbc3978ed4e@syzkaller.appspotmail.com
    
    syzbot found the following crash on:
    
    HEAD commit:    f75e4cfe kmsan: use kmsan_handle_urb() in urb.c
    git tree:       kmsan
    console output: https://syzkaller.appspot.com/x/log.txt?x=136d720ea00000
    kernel config:
    https://syzkaller.appspot.com/x/.config?x=602468164ccdc30a
    dashboard link:
    https://syzkaller.appspot.com/bug?extid=8a3fc6674bbc3978ed4e
    compiler:       clang version 9.0.0 (/home/glider/llvm/clang
    06d00afa61eef8f7f501ebdb4e8612ea43ec2d78)
    syz repro:
    https://syzkaller.appspot.com/x/repro.syz?x=12788316a00000
    C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=120359aaa00000
    
    ==================================================================
    BUG: KMSAN: uninit-value in is_valid_ether_addr
    include/linux/etherdevice.h:200 [inline]
    BUG: KMSAN: uninit-value in asix_set_netdev_dev_addr
    drivers/net/usb/asix_devices.c:73 [inline]
    BUG: KMSAN: uninit-value in ax88772_bind+0x93d/0x11e0
    drivers/net/usb/asix_devices.c:724
    CPU: 0 PID: 3348 Comm: kworker/0:2 Not tainted 5.1.0+ #1
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Workqueue: usb_hub_wq hub_event
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0x191/0x1f0 lib/dump_stack.c:113
      kmsan_report+0x130/0x2a0 mm/kmsan/kmsan.c:622
      __msan_warning+0x75/0xe0 mm/kmsan/kmsan_instr.c:310
      is_valid_ether_addr include/linux/etherdevice.h:200 [inline]
      asix_set_netdev_dev_addr drivers/net/usb/asix_devices.c:73 [inline]
      ax88772_bind+0x93d/0x11e0 drivers/net/usb/asix_devices.c:724
      usbnet_probe+0x10f5/0x3940 drivers/net/usb/usbnet.c:1728
      usb_probe_interface+0xd66/0x1320 drivers/usb/core/driver.c:361
      really_probe+0xdae/0x1d80 drivers/base/dd.c:513
      driver_probe_device+0x1b3/0x4f0 drivers/base/dd.c:671
      __device_attach_driver+0x5b8/0x790 drivers/base/dd.c:778
      bus_for_each_drv+0x28e/0x3b0 drivers/base/bus.c:454
      __device_attach+0x454/0x730 drivers/base/dd.c:844
      device_initial_probe+0x4a/0x60 drivers/base/dd.c:891
      bus_probe_device+0x137/0x390 drivers/base/bus.c:514
      device_add+0x288d/0x30e0 drivers/base/core.c:2106
      usb_set_configuration+0x30dc/0x3750 drivers/usb/core/message.c:2027
      generic_probe+0xe7/0x280 drivers/usb/core/generic.c:210
      usb_probe_device+0x14c/0x200 drivers/usb/core/driver.c:266
      really_probe+0xdae/0x1d80 drivers/base/dd.c:513
      driver_probe_device+0x1b3/0x4f0 drivers/base/dd.c:671
      __device_attach_driver+0x5b8/0x790 drivers/base/dd.c:778
      bus_for_each_drv+0x28e/0x3b0 drivers/base/bus.c:454
      __device_attach+0x454/0x730 drivers/base/dd.c:844
      device_initial_probe+0x4a/0x60 drivers/base/dd.c:891
      bus_probe_device+0x137/0x390 drivers/base/bus.c:514
      device_add+0x288d/0x30e0 drivers/base/core.c:2106
      usb_new_device+0x23e5/0x2ff0 drivers/usb/core/hub.c:2534
      hub_port_connect drivers/usb/core/hub.c:5089 [inline]
      hub_port_connect_change drivers/usb/core/hub.c:5204 [inline]
      port_event drivers/usb/core/hub.c:5350 [inline]
      hub_event+0x48d1/0x7290 drivers/usb/core/hub.c:5432
      process_one_work+0x1572/0x1f00 kernel/workqueue.c:2269
      process_scheduled_works kernel/workqueue.c:2331 [inline]
      worker_thread+0x189c/0x2460 kernel/workqueue.c:2417
      kthread+0x4b5/0x4f0 kernel/kthread.c:254
      ret_from_fork+0x35/0x40 arch/x86/entry/entry_64.S:355
    
    Signed-off-by: Phong Tran <tranmanphong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f5194318f0d6c82b397713c91bd8563843d70e95
Author: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
Date:   Mon Apr 15 16:45:04 2019 +0300

    iwlwifi: mvm: Drop large non sta frames
    
    [ Upstream commit ac70499ee97231a418dc1a4d6c9dc102e8f64631 ]
    
    In some buggy scenarios we could possible attempt to transmit frames larger
    than maximum MSDU size. Since our devices don't know how to handle this,
    it may result in asserts, hangs etc.
    This can happen, for example, when we receive a large multicast frame
    and try to transmit it back to the air in AP mode.
    Since in a legal scenario this should never happen, drop such frames and
    warn about it.
    
    Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06ff4163bb7d64b56c44950a15dc23f991727eb3
Author: Coly Li <colyli@suse.de>
Date:   Fri Jun 28 19:59:25 2019 +0800

    bcache: check c->gc_thread by IS_ERR_OR_NULL in cache_set_flush()
    
    [ Upstream commit b387e9b58679c60f5b1e4313939bd4878204fc37 ]
    
    When system memory is in heavy pressure, bch_gc_thread_start() from
    run_cache_set() may fail due to out of memory. In such condition,
    c->gc_thread is assigned to -ENOMEM, not NULL pointer. Then in following
    failure code path bch_cache_set_error(), when cache_set_flush() gets
    called, the code piece to stop c->gc_thread is broken,
             if (!IS_ERR_OR_NULL(c->gc_thread))
                     kthread_stop(c->gc_thread);
    
    And KASAN catches such NULL pointer deference problem, with the warning
    information:
    
    [  561.207881] ==================================================================
    [  561.207900] BUG: KASAN: null-ptr-deref in kthread_stop+0x3b/0x440
    [  561.207904] Write of size 4 at addr 000000000000001c by task kworker/15:1/313
    
    [  561.207913] CPU: 15 PID: 313 Comm: kworker/15:1 Tainted: G        W         5.0.0-vanilla+ #3
    [  561.207916] Hardware name: Lenovo ThinkSystem SR650 -[7X05CTO1WW]-/-[7X05CTO1WW]-, BIOS -[IVE136T-2.10]- 03/22/2019
    [  561.207935] Workqueue: events cache_set_flush [bcache]
    [  561.207940] Call Trace:
    [  561.207948]  dump_stack+0x9a/0xeb
    [  561.207955]  ? kthread_stop+0x3b/0x440
    [  561.207960]  ? kthread_stop+0x3b/0x440
    [  561.207965]  kasan_report+0x176/0x192
    [  561.207973]  ? kthread_stop+0x3b/0x440
    [  561.207981]  kthread_stop+0x3b/0x440
    [  561.207995]  cache_set_flush+0xd4/0x6d0 [bcache]
    [  561.208008]  process_one_work+0x856/0x1620
    [  561.208015]  ? find_held_lock+0x39/0x1d0
    [  561.208028]  ? drain_workqueue+0x380/0x380
    [  561.208048]  worker_thread+0x87/0xb80
    [  561.208058]  ? __kthread_parkme+0xb6/0x180
    [  561.208067]  ? process_one_work+0x1620/0x1620
    [  561.208072]  kthread+0x326/0x3e0
    [  561.208079]  ? kthread_create_worker_on_cpu+0xc0/0xc0
    [  561.208090]  ret_from_fork+0x3a/0x50
    [  561.208110] ==================================================================
    [  561.208113] Disabling lock debugging due to kernel taint
    [  561.208115] irq event stamp: 11800231
    [  561.208126] hardirqs last  enabled at (11800231): [<ffffffff83008538>] do_syscall_64+0x18/0x410
    [  561.208127] BUG: unable to handle kernel NULL pointer dereference at 000000000000001c
    [  561.208129] #PF error: [WRITE]
    [  561.312253] hardirqs last disabled at (11800230): [<ffffffff830052ff>] trace_hardirqs_off_thunk+0x1a/0x1c
    [  561.312259] softirqs last  enabled at (11799832): [<ffffffff850005c7>] __do_softirq+0x5c7/0x8c3
    [  561.405975] PGD 0 P4D 0
    [  561.442494] softirqs last disabled at (11799821): [<ffffffff831add2c>] irq_exit+0x1ac/0x1e0
    [  561.791359] Oops: 0002 [#1] SMP KASAN NOPTI
    [  561.791362] CPU: 15 PID: 313 Comm: kworker/15:1 Tainted: G    B   W         5.0.0-vanilla+ #3
    [  561.791363] Hardware name: Lenovo ThinkSystem SR650 -[7X05CTO1WW]-/-[7X05CTO1WW]-, BIOS -[IVE136T-2.10]- 03/22/2019
    [  561.791371] Workqueue: events cache_set_flush [bcache]
    [  561.791374] RIP: 0010:kthread_stop+0x3b/0x440
    [  561.791376] Code: 00 00 65 8b 05 26 d5 e0 7c 89 c0 48 0f a3 05 ec aa df 02 0f 82 dc 02 00 00 4c 8d 63 20 be 04 00 00 00 4c 89 e7 e8 65 c5 53 00 <f0> ff 43 20 48 8d 7b 24 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48
    [  561.791377] RSP: 0018:ffff88872fc8fd10 EFLAGS: 00010286
    [  561.838895] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  561.838916] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  561.838934] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  561.838948] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  561.838966] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  561.838979] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  561.838996] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  563.067028] RAX: 0000000000000000 RBX: fffffffffffffffc RCX: ffffffff832dd314
    [  563.067030] RDX: 0000000000000000 RSI: 0000000000000004 RDI: 0000000000000297
    [  563.067032] RBP: ffff88872fc8fe88 R08: fffffbfff0b8213d R09: fffffbfff0b8213d
    [  563.067034] R10: 0000000000000001 R11: fffffbfff0b8213c R12: 000000000000001c
    [  563.408618] R13: ffff88dc61cc0f68 R14: ffff888102b94900 R15: ffff88dc61cc0f68
    [  563.408620] FS:  0000000000000000(0000) GS:ffff888f7dc00000(0000) knlGS:0000000000000000
    [  563.408622] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  563.408623] CR2: 000000000000001c CR3: 0000000f48a1a004 CR4: 00000000007606e0
    [  563.408625] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  563.408627] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  563.904795] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  563.915796] PKRU: 55555554
    [  563.915797] Call Trace:
    [  563.915807]  cache_set_flush+0xd4/0x6d0 [bcache]
    [  563.915812]  process_one_work+0x856/0x1620
    [  564.001226] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  564.033563]  ? find_held_lock+0x39/0x1d0
    [  564.033567]  ? drain_workqueue+0x380/0x380
    [  564.033574]  worker_thread+0x87/0xb80
    [  564.062823] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  564.118042]  ? __kthread_parkme+0xb6/0x180
    [  564.118046]  ? process_one_work+0x1620/0x1620
    [  564.118048]  kthread+0x326/0x3e0
    [  564.118050]  ? kthread_create_worker_on_cpu+0xc0/0xc0
    [  564.167066] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  564.252441]  ret_from_fork+0x3a/0x50
    [  564.252447] Modules linked in: msr rpcrdma sunrpc rdma_ucm ib_iser ib_umad rdma_cm ib_ipoib i40iw configfs iw_cm ib_cm libiscsi scsi_transport_iscsi mlx4_ib ib_uverbs mlx4_en ib_core nls_iso8859_1 nls_cp437 vfat fat intel_rapl skx_edac x86_pkg_temp_thermal coretemp iTCO_wdt iTCO_vendor_support crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel ses raid0 aesni_intel cdc_ether enclosure usbnet ipmi_ssif joydev aes_x86_64 i40e scsi_transport_sas mii bcache md_mod crypto_simd mei_me ioatdma crc64 ptp cryptd pcspkr i2c_i801 mlx4_core glue_helper pps_core mei lpc_ich dca wmi ipmi_si ipmi_devintf nd_pmem dax_pmem nd_btt ipmi_msghandler device_dax pcc_cpufreq button hid_generic usbhid mgag200 i2c_algo_bit drm_kms_helper syscopyarea sysfillrect xhci_pci sysimgblt fb_sys_fops xhci_hcd ttm megaraid_sas drm usbcore nfit libnvdimm sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua efivarfs
    [  564.299390] bcache: bch_count_io_errors() nvme0n1: IO error on writing btree.
    [  564.348360] CR2: 000000000000001c
    [  564.348362] ---[ end trace b7f0e5cc7b2103b0 ]---
    
    Therefore, it is not enough to only check whether c->gc_thread is NULL,
    we should use IS_ERR_OR_NULL() to check both NULL pointer and error
    value.
    
    This patch changes the above buggy code piece in this way,
             if (!IS_ERR_OR_NULL(c->gc_thread))
                     kthread_stop(c->gc_thread);
    
    Signed-off-by: Coly Li <colyli@suse.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 832858764e77c2b07f9e0020674e5ec9191627ed
Author: Eiichi Tsukata <devel@etsukata.com>
Date:   Wed Jun 26 14:40:11 2019 +0900

    EDAC: Fix global-out-of-bounds write when setting edac_mc_poll_msec
    
    [ Upstream commit d8655e7630dafa88bc37f101640e39c736399771 ]
    
    Commit 9da21b1509d8 ("EDAC: Poll timeout cannot be zero, p2") assumes
    edac_mc_poll_msec to be unsigned long, but the type of the variable still
    remained as int. Setting edac_mc_poll_msec can trigger out-of-bounds
    write.
    
    Reproducer:
    
      # echo 1001 > /sys/module/edac_core/parameters/edac_mc_poll_msec
    
    KASAN report:
    
      BUG: KASAN: global-out-of-bounds in edac_set_poll_msec+0x140/0x150
      Write of size 8 at addr ffffffffb91b2d00 by task bash/1996
    
      CPU: 1 PID: 1996 Comm: bash Not tainted 5.2.0-rc6+ #23
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-2.fc30 04/01/2014
      Call Trace:
       dump_stack+0xca/0x13e
       print_address_description.cold+0x5/0x246
       __kasan_report.cold+0x75/0x9a
       ? edac_set_poll_msec+0x140/0x150
       kasan_report+0xe/0x20
       edac_set_poll_msec+0x140/0x150
       ? dimmdev_location_show+0x30/0x30
       ? vfs_lock_file+0xe0/0xe0
       ? _raw_spin_lock+0x87/0xe0
       param_attr_store+0x1b5/0x310
       ? param_array_set+0x4f0/0x4f0
       module_attr_store+0x58/0x80
       ? module_attr_show+0x80/0x80
       sysfs_kf_write+0x13d/0x1a0
       kernfs_fop_write+0x2bc/0x460
       ? sysfs_kf_bin_read+0x270/0x270
       ? kernfs_notify+0x1f0/0x1f0
       __vfs_write+0x81/0x100
       vfs_write+0x1e1/0x560
       ksys_write+0x126/0x250
       ? __ia32_sys_read+0xb0/0xb0
       ? do_syscall_64+0x1f/0x390
       do_syscall_64+0xc1/0x390
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x7fa7caa5e970
      Code: 73 01 c3 48 8b 0d 28 d5 2b 00 f7 d8 64 89 01 48 83 c8 ff c3 66 0f 1f 44 00 00 83 3d 99 2d 2c 00 00 75 10 b8 01 00 00 00 04
      RSP: 002b:00007fff6acfdfe8 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
      RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00007fa7caa5e970
      RDX: 0000000000000005 RSI: 0000000000e95c08 RDI: 0000000000000001
      RBP: 0000000000e95c08 R08: 00007fa7cad1e760 R09: 00007fa7cb36a700
      R10: 0000000000000073 R11: 0000000000000246 R12: 0000000000000005
      R13: 0000000000000001 R14: 00007fa7cad1d600 R15: 0000000000000005
    
      The buggy address belongs to the variable:
       edac_mc_poll_msec+0x0/0x40
    
      Memory state around the buggy address:
       ffffffffb91b2c00: 00 00 00 00 fa fa fa fa 00 00 00 00 fa fa fa fa
       ffffffffb91b2c80: 00 00 00 00 fa fa fa fa 00 00 00 00 fa fa fa fa
      >ffffffffb91b2d00: 04 fa fa fa fa fa fa fa 04 fa fa fa fa fa fa fa
                         ^
       ffffffffb91b2d80: 04 fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
       ffffffffb91b2e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    
    Fix it by changing the type of edac_mc_poll_msec to unsigned int.
    The reason why this patch adopts unsigned int rather than unsigned long
    is msecs_to_jiffies() assumes arg to be unsigned int. We can avoid
    integer conversion bugs and unsigned int will be large enough for
    edac_mc_poll_msec.
    
    Reviewed-by: James Morse <james.morse@arm.com>
    Fixes: 9da21b1509d8 ("EDAC: Poll timeout cannot be zero, p2")
    Signed-off-by: Eiichi Tsukata <devel@etsukata.com>
    Signed-off-by: Tony Luck <tony.luck@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 796f458ad791979fc3a6e4d425c5cecad575ff0c
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jun 18 14:13:47 2019 +0200

    crypto: asymmetric_keys - select CRYPTO_HASH where needed
    
    [ Upstream commit 90acc0653d2bee203174e66d519fbaaa513502de ]
    
    Build testing with some core crypto options disabled revealed
    a few modules that are missing CRYPTO_HASH:
    
    crypto/asymmetric_keys/x509_public_key.o: In function `x509_get_sig_params':
    x509_public_key.c:(.text+0x4c7): undefined reference to `crypto_alloc_shash'
    x509_public_key.c:(.text+0x5e5): undefined reference to `crypto_shash_digest'
    crypto/asymmetric_keys/pkcs7_verify.o: In function `pkcs7_digest.isra.0':
    pkcs7_verify.c:(.text+0xab): undefined reference to `crypto_alloc_shash'
    pkcs7_verify.c:(.text+0x1b2): undefined reference to `crypto_shash_digest'
    pkcs7_verify.c:(.text+0x3c1): undefined reference to `crypto_shash_update'
    pkcs7_verify.c:(.text+0x411): undefined reference to `crypto_shash_finup'
    
    This normally doesn't show up in randconfig tests because there is
    a large number of other options that select CRYPTO_HASH.
    
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 847fe243d30e1da5fe59d4c54cd90c47bcea271a
Author: Mauro S. M. Rodrigues <maurosr@linux.vnet.ibm.com>
Date:   Thu May 23 16:11:12 2019 -0300

    ixgbe: Check DDM existence in transceiver before access
    
    [ Upstream commit 655c91414579d7bb115a4f7898ee726fc18e0984 ]
    
    Some transceivers may comply with SFF-8472 but not implement the Digital
    Diagnostic Monitoring (DDM) interface described in it. The existence of
    such area is specified by bit 6 of byte 92, set to 1 if implemented.
    
    Currently, due to not checking this bit ixgbe fails trying to read SFP
    module's eeprom with the follow message:
    
    ethtool -m enP51p1s0f0
    Cannot get Module EEPROM data: Input/output error
    
    Because it fails to read the additional 256 bytes in which it was assumed
    to exist the DDM data.
    
    This issue was noticed using a Mellanox Passive DAC PN 01FT738. The eeprom
    data was confirmed by Mellanox as correct and present in other Passive
    DACs in from other manufacturers.
    
    Signed-off-by: "Mauro S. M. Rodrigues" <maurosr@linux.vnet.ibm.com>
    Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2419d391d84366bb330c844220a1efd5a89d6a14
Author: Ferdinand Blomqvist <ferdinand.blomqvist@gmail.com>
Date:   Thu Jun 20 17:10:37 2019 +0300

    rslib: Fix handling of of caller provided syndrome
    
    [ Upstream commit ef4d6a8556b637ad27c8c2a2cff1dda3da38e9a9 ]
    
    Check if the syndrome provided by the caller is zero, and act
    accordingly.
    
    Signed-off-by: Ferdinand Blomqvist <ferdinand.blomqvist@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190620141039.9874-6-ferdinand.blomqvist@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5c345e2afe52d23499c861999894ba564486beb0
Author: Ferdinand Blomqvist <ferdinand.blomqvist@gmail.com>
Date:   Thu Jun 20 17:10:34 2019 +0300

    rslib: Fix decoding of shortened codes
    
    [ Upstream commit 2034a42d1747fc1e1eeef2c6f1789c4d0762cb9c ]
    
    The decoding of shortenend codes is broken. It only works as expected if
    there are no erasures.
    
    When decoding with erasures, Lambda (the error and erasure locator
    polynomial) is initialized from the given erasure positions. The pad
    parameter is not accounted for by the initialisation code, and hence
    Lambda is initialized from incorrect erasure positions.
    
    The fix is to adjust the erasure positions by the supplied pad.
    
    Signed-off-by: Ferdinand Blomqvist <ferdinand.blomqvist@gmail.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Link: https://lkml.kernel.org/r/20190620141039.9874-3-ferdinand.blomqvist@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df5b05868d66a58d184e2ce8b87abe86918a5fd8
Author: Marek Szyprowski <m.szyprowski@samsung.com>
Date:   Thu May 30 12:50:43 2019 +0200

    clocksource/drivers/exynos_mct: Increase priority over ARM arch timer
    
    [ Upstream commit 6282edb72bed5324352522d732080d4c1b9dfed6 ]
    
    Exynos SoCs based on CA7/CA15 have 2 timer interfaces: custom Exynos MCT
    (Multi Core Timer) and standard ARM Architected Timers.
    
    There are use cases, where both timer interfaces are used simultanously.
    One of such examples is using Exynos MCT for the main system timer and
    ARM Architected Timers for the KVM and virtualized guests (KVM requires
    arch timers).
    
    Exynos Multi-Core Timer driver (exynos_mct) must be however started
    before ARM Architected Timers (arch_timer), because they both share some
    common hardware blocks (global system counter) and turning on MCT is
    needed to get ARM Architected Timer working properly.
    
    To ensure selecting Exynos MCT as the main system timer, increase MCT
    timer rating. To ensure proper starting order of both timers during
    suspend/resume cycle, increase MCT hotplug priority over ARM Archictected
    Timers.
    
    Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org>
    Reviewed-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d9496f98b1bb025cb07fd4b86af35046f36c73dc
Author: Tejun Heo <tj@kernel.org>
Date:   Mon Jun 24 09:32:50 2019 -0700

    libata: don't request sense data on !ZAC ATA devices
    
    [ Upstream commit ca156e006add67e4beea7896be395160735e09b0 ]
    
    ZAC support added sense data requesting on error for both ZAC and ATA
    devices. This seems to cause erratic error handling behaviors on some
    SSDs where the device reports sense data availability and then
    delivers the wrong content making EH take the wrong actions.  The
    failure mode was sporadic on a LITE-ON ssd and couldn't be reliably
    reproduced.
    
    There is no value in requesting sense data from non-ZAC ATA devices
    while there's a significant risk of introducing EH misbehaviors which
    are difficult to reproduce and fix.  Let's do the sense data dancing
    only for ZAC devices.
    
    Reviewed-by: Hannes Reinecke <hare@suse.com>
    Tested-by: Masato Suzuki <masato.suzuki@wdc.com>
    Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit cb993d3d3b8fc20e9a84d00f3fa7fc9625994f34
Author: Kyle Meyer <kyle.meyer@hpe.com>
Date:   Thu Jun 20 14:36:30 2019 -0500

    perf tools: Increase MAX_NR_CPUS and MAX_CACHES
    
    [ Upstream commit 9f94c7f947e919c343b30f080285af53d0fa9902 ]
    
    Attempting to profile 1024 or more CPUs with perf causes two errors:
    
      perf record -a
      [ perf record: Woken up X times to write data ]
      way too many cpu caches..
      [ perf record: Captured and wrote X MB perf.data (X samples) ]
    
      perf report -C 1024
      Error: failed to set  cpu bitmap
      Requested CPU 1024 too large. Consider raising MAX_NR_CPUS
    
      Increasing MAX_NR_CPUS from 1024 to 2048 and redefining MAX_CACHES as
      MAX_NR_CPUS * 4 returns normal functionality to perf:
    
      perf record -a
      [ perf record: Woken up X times to write data ]
      [ perf record: Captured and wrote X MB perf.data (X samples) ]
    
      perf report -C 1024
      ...
    
    Signed-off-by: Kyle Meyer <kyle.meyer@hpe.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20190620193630.154025-1-meyerk@stormcage.eag.rdlabs.hpecorp.net
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 71145a2703cd8b7883b4a26c97e642f8d093689c
Author: Miaoqing Pan <miaoqing@codeaurora.org>
Date:   Thu May 30 09:49:20 2019 +0800

    ath10k: fix PCIE device wake up failed
    
    [ Upstream commit 011d4111c8c602ea829fa4917af1818eb0500a90 ]
    
    Observed PCIE device wake up failed after ~120 iterations of
    soft-reboot test. The error message is
    "ath10k_pci 0000:01:00.0: failed to wake up device : -110"
    
    The call trace as below:
    ath10k_pci_probe -> ath10k_pci_force_wake -> ath10k_pci_wake_wait ->
    ath10k_pci_is_awake
    
    Once trigger the device to wake up, we will continuously check the RTC
    state until it returns RTC_STATE_V_ON or timeout.
    
    But for QCA99x0 chips, we use wrong value for RTC_STATE_V_ON.
    Occasionally, we get 0x7 on the fist read, we thought as a failure
    case, but actually is the right value, also verified with the spec.
    So fix the issue by changing RTC_STATE_V_ON from 0x5 to 0x7, passed
    ~2000 iterations.
    
    Tested HW: QCA9984
    
    Signed-off-by: Miaoqing Pan <miaoqing@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 74f80765424b110b01011d5192b8ccc400b696c7
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Fri Jun 7 13:48:10 2019 +0200

    mt7601u: fix possible memory leak when the device is disconnected
    
    [ Upstream commit 23377c200b2eb48a60d0f228b2a2e75ed6ee6060 ]
    
    When the device is disconnected while passing traffic it is possible
    to receive out of order urbs causing a memory leak since the skb linked
    to the current tx urb is not removed. Fix the issue deallocating the skb
    cleaning up the tx ring. Moreover this patch fixes the following kernel
    warning
    
    [   57.480771] usb 1-1: USB disconnect, device number 2
    [   57.483451] ------------[ cut here ]------------
    [   57.483462] TX urb mismatch
    [   57.483481] WARNING: CPU: 1 PID: 32 at drivers/net/wireless/mediatek/mt7601u/dma.c:245 mt7601u_complete_tx+0x165/00
    [   57.483483] Modules linked in:
    [   57.483496] CPU: 1 PID: 32 Comm: kworker/1:1 Not tainted 5.2.0-rc1+ #72
    [   57.483498] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.12.0-2.fc30 04/01/2014
    [   57.483502] Workqueue: usb_hub_wq hub_event
    [   57.483507] RIP: 0010:mt7601u_complete_tx+0x165/0x1e0
    [   57.483510] Code: 8b b5 10 04 00 00 8b 8d 14 04 00 00 eb 8b 80 3d b1 cb e1 00 00 75 9e 48 c7 c7 a4 ea 05 82 c6 05 f
    [   57.483513] RSP: 0000:ffffc900000a0d28 EFLAGS: 00010092
    [   57.483516] RAX: 000000000000000f RBX: ffff88802c0a62c0 RCX: ffffc900000a0c2c
    [   57.483518] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffffff810a8371
    [   57.483520] RBP: ffff88803ced6858 R08: 0000000000000000 R09: 0000000000000001
    [   57.483540] R10: 0000000000000002 R11: 0000000000000000 R12: 0000000000000046
    [   57.483542] R13: ffff88802c0a6c88 R14: ffff88803baab540 R15: ffff88803a0cc078
    [   57.483548] FS:  0000000000000000(0000) GS:ffff88803eb00000(0000) knlGS:0000000000000000
    [   57.483550] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   57.483552] CR2: 000055e7f6780100 CR3: 0000000028c86000 CR4: 00000000000006a0
    [   57.483554] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [   57.483556] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [   57.483559] Call Trace:
    [   57.483561]  <IRQ>
    [   57.483565]  __usb_hcd_giveback_urb+0x77/0xe0
    [   57.483570]  xhci_giveback_urb_in_irq.isra.0+0x8b/0x140
    [   57.483574]  handle_cmd_completion+0xf5b/0x12c0
    [   57.483577]  xhci_irq+0x1f6/0x1810
    [   57.483581]  ? lockdep_hardirqs_on+0x9e/0x180
    [   57.483584]  ? _raw_spin_unlock_irq+0x24/0x30
    [   57.483588]  __handle_irq_event_percpu+0x3a/0x260
    [   57.483592]  handle_irq_event_percpu+0x1c/0x60
    [   57.483595]  handle_irq_event+0x2f/0x4c
    [   57.483599]  handle_edge_irq+0x7e/0x1a0
    [   57.483603]  handle_irq+0x17/0x20
    [   57.483607]  do_IRQ+0x54/0x110
    [   57.483610]  common_interrupt+0xf/0xf
    [   57.483612]  </IRQ>
    
    Acked-by: Jakub Kicinski <kubakici@wp.pl>
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 54ed2617c3590e2d5d4763f9e1282b2c2766feb2
Author: Masahiro Yamada <yamada.masahiro@socionext.com>
Date:   Tue Jun 25 16:26:22 2019 +0900

    x86/build: Add 'set -e' to mkcapflags.sh to delete broken capflags.c
    
    [ Upstream commit bc53d3d777f81385c1bb08b07bd1c06450ecc2c1 ]
    
    Without 'set -e', shell scripts continue running even after any
    error occurs. The missed 'set -e' is a typical bug in shell scripting.
    
    For example, when a disk space shortage occurs while this script is
    running, it actually ends up with generating a truncated capflags.c.
    
    Yet, mkcapflags.sh continues running and exits with 0. So, the build
    system assumes it has succeeded.
    
    It will not be re-generated in the next invocation of Make since its
    timestamp is newer than that of any of the source files.
    
    Add 'set -e' so that any error in this script is caught and propagated
    to the build system.
    
    Since 9c2af1c7377a ("kbuild: add .DELETE_ON_ERROR special target"),
    make automatically deletes the target on any failure. So, the broken
    capflags.c will be deleted automatically.
    
    Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Link: https://lkml.kernel.org/r/20190625072622.17679-1-yamada.masahiro@socionext.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f91d82c50038e1187681faf00bdf824f894aa95a
Author: Lorenzo Bianconi <lorenzo@kernel.org>
Date:   Fri Jun 7 13:48:09 2019 +0200

    mt7601u: do not schedule rx_tasklet when the device has been disconnected
    
    [ Upstream commit 4079e8ccabc3b6d1b503f2376123cb515d14921f ]
    
    Do not schedule rx_tasklet when the usb dongle is disconnected.
    Moreover do not grub rx_lock in mt7601u_kill_rx since usb_poison_urb
    can run concurrently with urb completion and we can unlink urbs from rx
    ring in any order.
    This patch fixes the common kernel warning reported when
    the device is removed.
    
    [   24.921354] usb 3-14: USB disconnect, device number 7
    [   24.921593] ------------[ cut here ]------------
    [   24.921594] RX urb mismatch
    [   24.921675] WARNING: CPU: 4 PID: 163 at drivers/net/wireless/mediatek/mt7601u/dma.c:200 mt7601u_complete_rx+0xcb/0xd0 [mt7601u]
    [   24.921769] CPU: 4 PID: 163 Comm: kworker/4:2 Tainted: G           OE     4.19.31-041931-generic #201903231635
    [   24.921770] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./Z97 Extreme4, BIOS P1.30 05/23/2014
    [   24.921782] Workqueue: usb_hub_wq hub_event
    [   24.921797] RIP: 0010:mt7601u_complete_rx+0xcb/0xd0 [mt7601u]
    [   24.921800] RSP: 0018:ffff9bd9cfd03d08 EFLAGS: 00010086
    [   24.921802] RAX: 0000000000000000 RBX: ffff9bd9bf043540 RCX: 0000000000000006
    [   24.921803] RDX: 0000000000000007 RSI: 0000000000000096 RDI: ffff9bd9cfd16420
    [   24.921804] RBP: ffff9bd9cfd03d28 R08: 0000000000000002 R09: 00000000000003a8
    [   24.921805] R10: 0000002f485fca34 R11: 0000000000000000 R12: ffff9bd9bf043c1c
    [   24.921806] R13: ffff9bd9c62fa3c0 R14: 0000000000000082 R15: 0000000000000000
    [   24.921807] FS:  0000000000000000(0000) GS:ffff9bd9cfd00000(0000) knlGS:0000000000000000
    [   24.921808] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [   24.921808] CR2: 00007fb2648b0000 CR3: 0000000142c0a004 CR4: 00000000001606e0
    [   24.921809] Call Trace:
    [   24.921812]  <IRQ>
    [   24.921819]  __usb_hcd_giveback_urb+0x8b/0x140
    [   24.921821]  usb_hcd_giveback_urb+0xca/0xe0
    [   24.921828]  xhci_giveback_urb_in_irq.isra.42+0x82/0xf0
    [   24.921834]  handle_cmd_completion+0xe02/0x10d0
    [   24.921837]  xhci_irq+0x274/0x4a0
    [   24.921838]  xhci_msi_irq+0x11/0x20
    [   24.921851]  __handle_irq_event_percpu+0x44/0x190
    [   24.921856]  handle_irq_event_percpu+0x32/0x80
    [   24.921861]  handle_irq_event+0x3b/0x5a
    [   24.921867]  handle_edge_irq+0x80/0x190
    [   24.921874]  handle_irq+0x20/0x30
    [   24.921889]  do_IRQ+0x4e/0xe0
    [   24.921891]  common_interrupt+0xf/0xf
    [   24.921892]  </IRQ>
    [   24.921900] RIP: 0010:usb_hcd_flush_endpoint+0x78/0x180
    [   24.921354] usb 3-14: USB disconnect, device number 7
    
    Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 98f458f2a68bfbc6c9795e343a5bf9e29511eada
Author: Philipp Zabel <p.zabel@pengutronix.de>
Date:   Tue Jun 18 12:45:22 2019 -0400

    media: coda: increment sequence offset for the last returned frame
    
    [ Upstream commit b3b7d96817cdb8b6fc353867705275dce8f41ccc ]
    
    If no more frames are decoded in bitstream end mode, and a previously
    decoded frame has been returned, the firmware still increments the frame
    number. To avoid a sequence number mismatch after decoder restart,
    increment the sequence_offset correction parameter.
    
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 06480fcbcbf5a838bfce524c9ea5e80200ba7445
Author: Philipp Zabel <p.zabel@pengutronix.de>
Date:   Tue Jun 18 12:45:10 2019 -0400

    media: coda: fix mpeg2 sequence number handling
    
    [ Upstream commit 56d159a4ec6d8da7313aac6fcbb95d8fffe689ba ]
    
    Sequence number handling assumed that the BIT processor frame number
    starts counting at 1, but this is not true for the MPEG-2 decoder,
    which starts at 0. Fix the sequence counter offset detection to handle
    this.
    
    Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d0524885b1574ccff0d159a87fe05077d8579ebe
Author: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Date:   Wed Jun 19 14:18:31 2019 +0200

    acpi/arm64: ignore 5.1 FADTs that are reported as 5.0
    
    [ Upstream commit 2af22f3ec3ca452f1e79b967f634708ff01ced8a ]
    
    Some Qualcomm Snapdragon based laptops built to run Microsoft Windows
    are clearly ACPI 5.1 based, given that that is the first ACPI revision
    that supports ARM, and introduced the FADT 'arm_boot_flags' field,
    which has a non-zero field on those systems.
    
    So in these cases, infer from the ARM boot flags that the FADT must be
    5.1 or later, and treat it as 5.1.
    
    Acked-by: Sudeep Holla <sudeep.holla@arm.com>
    Tested-by: Lee Jones <lee.jones@linaro.org>
    Reviewed-by: Graeme Gregory <graeme.gregory@linaro.org>
    Acked-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Acked-by: Hanjun Guo <guohanjun@huawei.com>
    Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8cc6df3db27df8070f44b7ba3e979e71717550b5
Author: Nathan Huckleberry <nhuck@google.com>
Date:   Fri Jun 14 11:16:04 2019 -0700

    timer_list: Guard procfs specific code
    
    [ Upstream commit a9314773a91a1d3b36270085246a6715a326ff00 ]
    
    With CONFIG_PROC_FS=n the following warning is emitted:
    
    kernel/time/timer_list.c:361:36: warning: unused variable
    'timer_list_sops' [-Wunused-const-variable]
       static const struct seq_operations timer_list_sops = {
    
    Add #ifdef guard around procfs specific code.
    
    Signed-off-by: Nathan Huckleberry <nhuck@google.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Cc: john.stultz@linaro.org
    Cc: sboyd@kernel.org
    Cc: clang-built-linux@googlegroups.com
    Link: https://github.com/ClangBuiltLinux/linux/issues/534
    Link: https://lkml.kernel.org/r/20190614181604.112297-1-nhuck@google.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5992cebc8371cac5c1e44e64e0f2a8cbb71eb976
Author: Miroslav Lichvar <mlichvar@redhat.com>
Date:   Tue Jun 18 17:47:13 2019 +0200

    ntp: Limit TAI-UTC offset
    
    [ Upstream commit d897a4ab11dc8a9fda50d2eccc081a96a6385998 ]
    
    Don't allow the TAI-UTC offset of the system clock to be set by adjtimex()
    to a value larger than 100000 seconds.
    
    This prevents an overflow in the conversion to int, prevents the CLOCK_TAI
    clock from getting too far ahead of the CLOCK_REALTIME clock, and it is
    still large enough to allow leap seconds to be inserted at the maximum rate
    currently supported by the kernel (once per day) for the next ~270 years,
    however unlikely it is that someone can survive a catastrophic event which
    slowed down the rotation of the Earth so much.
    
    Reported-by: Weikang shi <swkhack@gmail.com>
    Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: Prarit Bhargava <prarit@redhat.com>
    Cc: Richard Cochran <richardcochran@gmail.com>
    Cc: Stephen Boyd <sboyd@kernel.org>
    Link: https://lkml.kernel.org/r/20190618154713.20929-1-mlichvar@redhat.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 23497433517a86c13b5a636cdf3e4c06c64a3569
Author: Anders Roxell <anders.roxell@linaro.org>
Date:   Wed Jun 12 12:19:35 2019 -0400

    media: i2c: fix warning same module names
    
    [ Upstream commit b2ce5617dad254230551feda3599f2cc68e53ad8 ]
    
    When building with CONFIG_VIDEO_ADV7511 and CONFIG_DRM_I2C_ADV7511
    enabled as loadable modules, we see the following warning:
    
      drivers/gpu/drm/bridge/adv7511/adv7511.ko
      drivers/media/i2c/adv7511.ko
    
    Rework so that the file is named adv7511-v4l2.c.
    
    Signed-off-by: Anders Roxell <anders.roxell@linaro.org>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dfa3cee5e1dc0a606bfda0bd214c2aa5005dee45
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jun 18 13:22:13 2019 +0200

    ipsec: select crypto ciphers for xfrm_algo
    
    [ Upstream commit 597179b0ba550bd83fab1a9d57c42a9343c58514 ]
    
    kernelci.org reports failed builds on arc because of what looks
    like an old missed 'select' statement:
    
    net/xfrm/xfrm_algo.o: In function `xfrm_probe_algs':
    xfrm_algo.c:(.text+0x1e8): undefined reference to `crypto_has_ahash'
    
    I don't see this in randconfig builds on other architectures, but
    it's fairly clear we want to select the hash code for it, like we
    do for all its other users. As Herbert points out, CRYPTO_BLKCIPHER
    is also required even though it has not popped up in build tests.
    
    Fixes: 17bc19702221 ("ipsec: Use skcipher and ahash when probing algorithms")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e5b06598f22d4311e6f2ee9f293fa1da1efb8069
Author: Pan Bian <bianpan2016@163.com>
Date:   Thu Apr 18 10:27:18 2019 +0800

    EDAC/sysfs: Fix memory leak when creating a csrow object
    
    [ Upstream commit 585fb3d93d32dbe89e718b85009f9c322cc554cd ]
    
    In edac_create_csrow_object(), the reference to the object is not
    released when adding the device to the device hierarchy fails
    (device_add()). This may result in a memory leak.
    
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: James Morse <james.morse@arm.com>
    Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
    Cc: linux-edac <linux-edac@vger.kernel.org>
    Link: https://lkml.kernel.org/r/1555554438-103953-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a439637cd02d6294d17d7046aafb72eda5c9e114
Author: Denis Kirjanov <kda@linux-powerpc.org>
Date:   Mon Jun 17 10:53:40 2019 +0200

    ipoib: correcly show a VF hardware address
    
    [ Upstream commit 64d701c608fea362881e823b666327f5d28d7ffd ]
    
    in the case of IPoIB with SRIOV enabled hardware
    ip link show command incorrecly prints
    0 instead of a VF hardware address.
    
    Before:
    11: ib1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast
    state UP mode DEFAULT group default qlen 256
        link/infiniband
    80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
    00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
        vf 0 MAC 00:00:00:00:00:00, spoof checking off, link-state disable,
    trust off, query_rss off
    ...
    After:
    11: ib1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2044 qdisc pfifo_fast
    state UP mode DEFAULT group default qlen 256
        link/infiniband
    80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
    00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff
        vf 0     link/infiniband
    80:00:00:66:fe:80:00:00:00:00:00:00:24:8a:07:03:00:a4:3e:7c brd
    00:ff:ff:ff:ff:12:40:1b:ff:ff:00:00:00:00:00:00:ff:ff:ff:ff, spoof
    checking off, link-state disable, trust off, query_rss off
    
    v1->v2: just copy an address without modifing ifla_vf_mac
    v2->v3: update the changelog
    
    Signed-off-by: Denis Kirjanov <kda@linux-powerpc.org>
    Acked-by: Doug Ledford <dledford@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e2c2891981a3bce2898a79f9f4c46383d6a5b250
Author: Jason Wang <jasowang@redhat.com>
Date:   Mon Jun 17 05:20:54 2019 -0400

    vhost_net: disable zerocopy by default
    
    [ Upstream commit 098eadce3c622c07b328d0a43dda379b38cf7c5e ]
    
    Vhost_net was known to suffer from HOL[1] issues which is not easy to
    fix. Several downstream disable the feature by default. What's more,
    the datapath was split and datacopy path got the support of batching
    and XDP support recently which makes it faster than zerocopy part for
    small packets transmission.
    
    It looks to me that disable zerocopy by default is more
    appropriate. It cold be enabled by default again in the future if we
    fix the above issues.
    
    [1] https://patchwork.kernel.org/patch/3787671/
    
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0ee3341eb34eb1a6b1106df95ebd0bc8b394a7f7
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Mon Jun 17 14:32:53 2019 -0300

    perf evsel: Make perf_evsel__name() accept a NULL argument
    
    [ Upstream commit fdbdd7e8580eac9bdafa532746c865644d125e34 ]
    
    In which case it simply returns "unknown", like when it can't figure out
    the evsel->name value.
    
    This makes this code more robust and fixes a problem in 'perf trace'
    where a NULL evsel was being passed to a routine that only used the
    evsel for printing its name when a invalid syscall id was passed.
    
    Reported-by: Leo Yan <leo.yan@linaro.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lkml.kernel.org/n/tip-f30ztaasku3z935cn3ak3h53@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2d0dbd001b9a805084c723d5abe9ec4488c267a1
Author: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Date:   Fri Jun 14 11:13:55 2019 +0200

    xfrm: fix sa selector validation
    
    [ Upstream commit b8d6d0079757cbd1b69724cfd1c08e2171c68cee ]
    
    After commit b38ff4075a80, the following command does not work anymore:
    $ ip xfrm state add src 10.125.0.2 dst 10.125.0.1 proto esp spi 34 reqid 1 \
      mode tunnel enc 'cbc(aes)' 0xb0abdba8b782ad9d364ec81e3a7d82a1 auth-trunc \
      'hmac(sha1)' 0xe26609ebd00acb6a4d51fca13e49ea78a72c73e6 96 flag align4
    
    In fact, the selector is not mandatory, allow the user to provide an empty
    selector.
    
    Fixes: b38ff4075a80 ("xfrm: Fix xfrm sel prefix length validation")
    CC: Anirudh Gupta <anirudh.gupta@sophos.com>
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 587a816cbe4cc9e6607e83ffe20c36582deca111
Author: Tejun Heo <tj@kernel.org>
Date:   Thu Jun 13 15:30:41 2019 -0700

    blkcg, writeback: dead memcgs shouldn't contribute to writeback ownership arbitration
    
    [ Upstream commit 6631142229005e1b1c311a09efe9fb3cfdac8559 ]
    
    wbc_account_io() collects information on cgroup ownership of writeback
    pages to determine which cgroup should own the inode.  Pages can stay
    associated with dead memcgs but we want to avoid attributing IOs to
    dead blkcgs as much as possible as the association is likely to be
    stale.  However, currently, pages associated with dead memcgs
    contribute to the accounting delaying and/or confusing the
    arbitration.
    
    Fix it by ignoring pages associated with dead memcgs.
    
    Signed-off-by: Tejun Heo <tj@kernel.org>
    Cc: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8151383a170ae82a3c795027cf79933cd6a1edd9
Author: Waiman Long <longman@redhat.com>
Date:   Tue May 21 16:48:43 2019 -0400

    rcu: Force inlining of rcu_read_lock()
    
    [ Upstream commit 6da9f775175e516fc7229ceaa9b54f8f56aa7924 ]
    
    When debugging options are turned on, the rcu_read_lock() function
    might not be inlined. This results in lockdep's print_lock() function
    printing "rcu_read_lock+0x0/0x70" instead of rcu_read_lock()'s caller.
    For example:
    
    [   10.579995] =============================
    [   10.584033] WARNING: suspicious RCU usage
    [   10.588074] 4.18.0.memcg_v2+ #1 Not tainted
    [   10.593162] -----------------------------
    [   10.597203] include/linux/rcupdate.h:281 Illegal context switch in
    RCU read-side critical section!
    [   10.606220]
    [   10.606220] other info that might help us debug this:
    [   10.606220]
    [   10.614280]
    [   10.614280] rcu_scheduler_active = 2, debug_locks = 1
    [   10.620853] 3 locks held by systemd/1:
    [   10.624632]  #0: (____ptrval____) (&type->i_mutex_dir_key#5){.+.+}, at: lookup_slow+0x42/0x70
    [   10.633232]  #1: (____ptrval____) (rcu_read_lock){....}, at: rcu_read_lock+0x0/0x70
    [   10.640954]  #2: (____ptrval____) (rcu_read_lock){....}, at: rcu_read_lock+0x0/0x70
    
    These "rcu_read_lock+0x0/0x70" strings are not providing any useful
    information.  This commit therefore forces inlining of the rcu_read_lock()
    function so that rcu_read_lock()'s caller is instead shown.
    
    Signed-off-by: Waiman Long <longman@redhat.com>
    Signed-off-by: Paul E. McKenney <paulmck@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2b23f7074a8bc09bdb2fad6f4f585921f9e3c2d8
Author: Valdis Klētnieks <valdis.kletnieks@vt.edu>
Date:   Thu Jun 6 22:39:27 2019 -0400

    bpf: silence warning messages in core
    
    [ Upstream commit aee450cbe482a8c2f6fa5b05b178ef8b8ff107ca ]
    
    Compiling kernel/bpf/core.c with W=1 causes a flood of warnings:
    
    kernel/bpf/core.c:1198:65: warning: initialized field overwritten [-Woverride-init]
     1198 | #define BPF_INSN_3_TBL(x, y, z) [BPF_##x | BPF_##y | BPF_##z] = true
          |                                                                 ^~~~
    kernel/bpf/core.c:1087:2: note: in expansion of macro 'BPF_INSN_3_TBL'
     1087 |  INSN_3(ALU, ADD,  X),   \
          |  ^~~~~~
    kernel/bpf/core.c:1202:3: note: in expansion of macro 'BPF_INSN_MAP'
     1202 |   BPF_INSN_MAP(BPF_INSN_2_TBL, BPF_INSN_3_TBL),
          |   ^~~~~~~~~~~~
    kernel/bpf/core.c:1198:65: note: (near initialization for 'public_insntable[12]')
     1198 | #define BPF_INSN_3_TBL(x, y, z) [BPF_##x | BPF_##y | BPF_##z] = true
          |                                                                 ^~~~
    kernel/bpf/core.c:1087:2: note: in expansion of macro 'BPF_INSN_3_TBL'
     1087 |  INSN_3(ALU, ADD,  X),   \
          |  ^~~~~~
    kernel/bpf/core.c:1202:3: note: in expansion of macro 'BPF_INSN_MAP'
     1202 |   BPF_INSN_MAP(BPF_INSN_2_TBL, BPF_INSN_3_TBL),
          |   ^~~~~~~~~~~~
    
    98 copies of the above.
    
    The attached patch silences the warnings, because we *know* we're overwriting
    the default initializer. That leaves bpf/core.c with only 6 other warnings,
    which become more visible in comparison.
    
    Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu>
    Acked-by: Andrii Nakryiko <andriin@fb.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f84e5a753571465097734e3ee113f447f1027254
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Wed Jun 12 12:03:43 2019 +0100

    regmap: fix bulk writes on paged registers
    
    [ Upstream commit db057679de3e9e6a03c1bcd5aee09b0d25fd9f5b ]
    
    On buses like SlimBus and SoundWire which does not support
    gather_writes yet in regmap, A bulk write on paged register
    would be silently ignored after programming page.
    This is because local variable 'ret' value in regmap_raw_write_impl()
    gets reset to 0 once page register is written successfully and the
    code below checks for 'ret' value to be -ENOTSUPP before linearising
    the write buffer to send to bus->write().
    
    Fix this by resetting the 'ret' value to -ENOTSUPP in cases where
    gather_writes() is not supported or single register write is
    not possible.
    
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f7fa002429b818a431f52cdcc7ed6360235dd3d2
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Mon Jun 10 20:10:44 2019 +0300

    gpio: omap: ensure irq is enabled before wakeup
    
    [ Upstream commit c859e0d479b3b4f6132fc12637c51e01492f31f6 ]
    
    Documentation states:
    
      NOTE: There must be a correlation between the wake-up enable and
      interrupt-enable registers. If a GPIO pin has a wake-up configured
      on it, it must also have the corresponding interrupt enabled (on
      one of the two interrupt lines).
    
    Ensure that this condition is always satisfied by enabling the detection
    events after enabling the interrupt, and disabling the detection before
    disabling the interrupt.  This ensures interrupt/wakeup events can not
    happen until both the wakeup and interrupt enables correlate.
    
    If we do any clearing, clear between the interrupt enable/disable and
    trigger setting.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 58337d91911e1da8372b07d6a58a449202aed209
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Mon Jun 10 20:10:45 2019 +0300

    gpio: omap: fix lack of irqstatus_raw0 for OMAP4
    
    [ Upstream commit 64ea3e9094a1f13b96c33244a3fb3a0f45690bd2 ]
    
    Commit 384ebe1c2849 ("gpio/omap: Add DT support to GPIO driver") added
    the register definition tables to the gpio-omap driver. Subsequently to
    that commit, commit 4e962e8998cc ("gpio/omap: remove cpu_is_omapxxxx()
    checks from *_runtime_resume()") added definitions for irqstatus_raw*
    registers to the legacy OMAP4 definitions, but missed the DT
    definitions.
    
    This causes an unintentional change of behaviour for the 1.101 errata
    workaround on OMAP4 platforms. Fix this oversight.
    
    Fixes: 4e962e8998cc ("gpio/omap: remove cpu_is_omapxxxx() checks from *_runtime_resume()")
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
    Tested-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9a501cdb05348fa8f85db8df5a82f4b8cd11594e
Author: Thomas Richter <tmricht@linux.ibm.com>
Date:   Tue Jun 4 07:35:04 2019 +0200

    perf test 6: Fix missing kvm module load for s390
    
    [ Upstream commit 53fe307dfd309e425b171f6272d64296a54f4dff ]
    
    Command
    
       # perf test -Fv 6
    
    fails with error
    
       running test 100 'kvm-s390:kvm_s390_create_vm' failed to parse
        event 'kvm-s390:kvm_s390_create_vm', err -1, str 'unknown tracepoint'
        event syntax error: 'kvm-s390:kvm_s390_create_vm'
                             \___ unknown tracepoint
    
    when the kvm module is not loaded or not built in.
    
    Fix this by adding a valid function which tests if the module
    is loaded. Loaded modules (or builtin KVM support) have a
    directory named
      /sys/kernel/debug/tracing/events/kvm-s390
    for this tracepoint.
    
    Check for existence of this directory.
    
    Signed-off-by: Thomas Richter <tmricht@linux.ibm.com>
    Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
    Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
    Link: http://lkml.kernel.org/r/20190604053504.43073-1-tmricht@linux.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 239b64d9c6f5bf57f85e7737fc45632a5ed14d24
Author: Mathieu Poirier <mathieu.poirier@linaro.org>
Date:   Wed Jun 5 10:16:33 2019 -0600

    perf cs-etm: Properly set the value of 'old' and 'head' in snapshot mode
    
    [ Upstream commit e45c48a9a4d20ebc7b639a62c3ef8f4b08007027 ]
    
    This patch adds the necessary intelligence to properly compute the value
    of 'old' and 'head' when operating in snapshot mode.  That way we can
    get the latest information in the AUX buffer and be compatible with the
    generic AUX ring buffer mechanic.
    
    Tester notes:
    
    > Leo, have you had the chance to test/review this one? Suzuki?
    
    Sure.  I applied this patch on the perf/core branch (with latest
    commit 3e4fbf36c1e3 'perf augmented_raw_syscalls: Move reading
    filename to the loop') and passed testing with below steps:
    
      # perf record -e cs_etm/@tmc_etr0/ -S -m,64 --per-thread ./sort &
      [1] 19097
      Bubble sorting array of 30000 elements
    
      # kill -USR2 19097
      # kill -USR2 19097
      # kill -USR2 19097
      [ perf record: Woken up 4 times to write data ]
      [ perf record: Captured and wrote 0.753 MB perf.data ]
    
    Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org>
    Tested-by: Leo Yan <leo.yan@linaro.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/20190605161633.12245-1-mathieu.poirier@linaro.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4eebf3147cf0e88179cbbde179bc56daf2834111
Author: Julian Wiedmann <jwi@linux.ibm.com>
Date:   Mon Jun 3 07:47:04 2019 +0200

    s390/qdio: handle PENDING state for QEBSM devices
    
    [ Upstream commit 04310324c6f482921c071444833e70fe861b73d9 ]
    
    When a CQ-enabled device uses QEBSM for SBAL state inspection,
    get_buf_states() can return the PENDING state for an Output Queue.
    get_outbound_buffer_frontier() isn't prepared for this, and any PENDING
    buffer will permanently stall all further completion processing on this
    Queue.
    
    This isn't a concern for non-QEBSM devices, as get_buf_states() for such
    devices will manually turn PENDING buffers into EMPTY ones.
    
    Fixes: 104ea556ee7f ("qdio: support asynchronous delivery of storage blocks")
    Signed-off-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f4ba42d6f283cf26f701af4c997566fcd63362ea
Author: Robert Hancock <hancock@sedsystems.ca>
Date:   Thu Jun 6 16:28:17 2019 -0600

    net: axienet: Fix race condition causing TX hang
    
    [ Upstream commit 7de44285c1f69ccfbe8be1d6a16fcd956681fee6 ]
    
    It is possible that the interrupt handler fires and frees up space in
    the TX ring in between checking for sufficient TX ring space and
    stopping the TX queue in axienet_start_xmit. If this happens, the
    queue wake from the interrupt handler will occur before the queue is
    stopped, causing a lost wakeup and the adapter's transmit hanging.
    
    To avoid this, after stopping the queue, check again whether there is
    sufficient space in the TX ring. If so, wake up the queue again.
    
    Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c12b413c9685a71f73d785bbf05077bfc58a87e7
Author: Fabio Estevam <festevam@gmail.com>
Date:   Thu Jun 6 09:40:33 2019 -0300

    net: fec: Do not use netdev messages too early
    
    [ Upstream commit a19a0582363b9a5f8ba812f34f1b8df394898780 ]
    
    When a valid MAC address is not found the current messages
    are shown:
    
    fec 2188000.ethernet (unnamed net_device) (uninitialized): Invalid MAC address: 00:00:00:00:00:00
    fec 2188000.ethernet (unnamed net_device) (uninitialized): Using random MAC address: aa:9f:25:eb:7e:aa
    
    Since the network device has not been registered at this point, it is better
    to use dev_err()/dev_info() instead, which will provide cleaner log
    messages like these:
    
    fec 2188000.ethernet: Invalid MAC address: 00:00:00:00:00:00
    fec 2188000.ethernet: Using random MAC address: aa:9f:25:eb:7e:aa
    
    Tested on a imx6dl-pico-pi board.
    
    Signed-off-by: Fabio Estevam <festevam@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5e32f6db58f23713210c70cbe37ed8bed34ff586
Author: Abhishek Goel <huntbag@linux.vnet.ibm.com>
Date:   Wed May 29 04:30:33 2019 -0500

    cpupower : frequency-set -r option misses the last cpu in related cpu list
    
    [ Upstream commit 04507c0a9385cc8280f794a36bfff567c8cc1042 ]
    
    To set frequency on specific cpus using cpupower, following syntax can
    be used :
    cpupower -c #i frequency-set -f #f -r
    
    While setting frequency using cpupower frequency-set command, if we use
    '-r' option, it is expected to set frequency for all cpus related to
    cpu #i. But it is observed to be missing the last cpu in related cpu
    list. This patch fixes the problem.
    
    Signed-off-by: Abhishek Goel <huntbag@linux.vnet.ibm.com>
    Reviewed-by: Thomas Renninger <trenn@suse.de>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit bb64c41da34438bb9e268378ce241f3e9faa8491
Author: Kefeng Wang <wangkefeng.wang@huawei.com>
Date:   Thu May 30 03:25:49 2019 -0400

    media: wl128x: Fix some error handling in fm_v4l2_init_video_device()
    
    [ Upstream commit 69fbb3f47327d959830c94bf31893972b8c8f700 ]
    
    X-Originating-IP: [10.175.113.25]
    X-CFilter-Loop: Reflected
    The fm_v4l2_init_video_device() forget to unregister v4l2/video device
    in the error path, it could lead to UAF issue, eg,
    
      BUG: KASAN: use-after-free in atomic64_read include/asm-generic/atomic-instrumented.h:836 [inline]
      BUG: KASAN: use-after-free in atomic_long_read include/asm-generic/atomic-long.h:28 [inline]
      BUG: KASAN: use-after-free in __mutex_unlock_slowpath+0x92/0x690 kernel/locking/mutex.c:1206
      Read of size 8 at addr ffff8881e84a7c70 by task v4l_id/3659
    
      CPU: 1 PID: 3659 Comm: v4l_id Not tainted 5.1.0 #8
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
      Call Trace:
       __dump_stack lib/dump_stack.c:77 [inline]
       dump_stack+0xa9/0x10e lib/dump_stack.c:113
       print_address_description+0x65/0x270 mm/kasan/report.c:187
       kasan_report+0x149/0x18d mm/kasan/report.c:317
       atomic64_read include/asm-generic/atomic-instrumented.h:836 [inline]
       atomic_long_read include/asm-generic/atomic-long.h:28 [inline]
       __mutex_unlock_slowpath+0x92/0x690 kernel/locking/mutex.c:1206
       fm_v4l2_fops_open+0xac/0x120 [fm_drv]
       v4l2_open+0x191/0x390 [videodev]
       chrdev_open+0x20d/0x570 fs/char_dev.c:417
       do_dentry_open+0x700/0xf30 fs/open.c:777
       do_last fs/namei.c:3416 [inline]
       path_openat+0x7c4/0x2a90 fs/namei.c:3532
       do_filp_open+0x1a5/0x2b0 fs/namei.c:3563
       do_sys_open+0x302/0x490 fs/open.c:1069
       do_syscall_64+0x9f/0x450 arch/x86/entry/common.c:290
       entry_SYSCALL_64_after_hwframe+0x49/0xbe
      RIP: 0033:0x7f8180c17c8e
      ...
      Allocated by task 3642:
       set_track mm/kasan/common.c:87 [inline]
       __kasan_kmalloc.constprop.3+0xa0/0xd0 mm/kasan/common.c:497
       fm_drv_init+0x13/0x1000 [fm_drv]
       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
    
      Freed by task 3642:
       set_track mm/kasan/common.c:87 [inline]
       __kasan_slab_free+0x130/0x180 mm/kasan/common.c:459
       slab_free_hook mm/slub.c:1429 [inline]
       slab_free_freelist_hook mm/slub.c:1456 [inline]
       slab_free mm/slub.c:3003 [inline]
       kfree+0xe1/0x270 mm/slub.c:3958
       fm_drv_init+0x1e6/0x1000 [fm_drv]
       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
    
    Add relevant unregister functions to fix it.
    
    Cc: Hans Verkuil <hans.verkuil@cisco.com>
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1aa8b2554ab2db660c43a68475915b8977793ef2
Author: Imre Deak <imre.deak@intel.com>
Date:   Fri May 24 23:15:09 2019 +0300

    locking/lockdep: Fix merging of hlocks with non-zero references
    
    [ Upstream commit d9349850e188b8b59e5322fda17ff389a1c0cd7d ]
    
    The sequence
    
            static DEFINE_WW_CLASS(test_ww_class);
    
            struct ww_acquire_ctx ww_ctx;
            struct ww_mutex ww_lock_a;
            struct ww_mutex ww_lock_b;
            struct ww_mutex ww_lock_c;
            struct mutex lock_c;
    
            ww_acquire_init(&ww_ctx, &test_ww_class);
    
            ww_mutex_init(&ww_lock_a, &test_ww_class);
            ww_mutex_init(&ww_lock_b, &test_ww_class);
            ww_mutex_init(&ww_lock_c, &test_ww_class);
    
            mutex_init(&lock_c);
    
            ww_mutex_lock(&ww_lock_a, &ww_ctx);
    
            mutex_lock(&lock_c);
    
            ww_mutex_lock(&ww_lock_b, &ww_ctx);
            ww_mutex_lock(&ww_lock_c, &ww_ctx);
    
            mutex_unlock(&lock_c);  (*)
    
            ww_mutex_unlock(&ww_lock_c);
            ww_mutex_unlock(&ww_lock_b);
            ww_mutex_unlock(&ww_lock_a);
    
            ww_acquire_fini(&ww_ctx); (**)
    
    will trigger the following error in __lock_release() when calling
    mutex_release() at **:
    
            DEBUG_LOCKS_WARN_ON(depth <= 0)
    
    The problem is that the hlock merging happening at * updates the
    references for test_ww_class incorrectly to 3 whereas it should've
    updated it to 4 (representing all the instances for ww_ctx and
    ww_lock_[abc]).
    
    Fix this by updating the references during merging correctly taking into
    account that we can have non-zero references (both for the hlock that we
    merge into another hlock or for the hlock we are merging into).
    
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= <ville.syrjala@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will.deacon@arm.com>
    Link: https://lkml.kernel.org/r/20190524201509.9199-2-imre.deak@intel.com
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e95d432c382da4ddb0899fcc04b7251cf9ea3ce8
Author: David S. Miller <davem@davemloft.net>
Date:   Thu May 30 11:36:15 2019 -0700

    tua6100: Avoid build warnings.
    
    [ Upstream commit 621ccc6cc5f8d6730b740d31d4818227866c93c9 ]
    
    Rename _P to _P_VAL and _R to _R_VAL to avoid global
    namespace conflicts:
    
    drivers/media/dvb-frontends/tua6100.c: In function ‘tua6100_set_params’:
    drivers/media/dvb-frontends/tua6100.c:79: warning: "_P" redefined
     #define _P 32
    
    In file included from ./include/acpi/platform/aclinux.h:54,
                     from ./include/acpi/platform/acenv.h:152,
                     from ./include/acpi/acpi.h:22,
                     from ./include/linux/acpi.h:34,
                     from ./include/linux/i2c.h:17,
                     from drivers/media/dvb-frontends/tua6100.h:30,
                     from drivers/media/dvb-frontends/tua6100.c:32:
    ./include/linux/ctype.h:14: note: this is the location of the previous definition
     #define _P 0x10 /* punct */
    
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b24e816c9f053a4f489c8d4e87a78e9a851c83e7
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:18 2019 +0000

    crypto: talitos - Align SEC1 accesses to 32 bits boundaries.
    
    [ Upstream commit c9cca7034b34a2d82e9a03b757de2485c294851c ]
    
    The MPC885 reference manual states:
    
    SEC Lite-initiated 8xx writes can occur only on 32-bit-word boundaries, but
    reads can occur on any byte boundary. Writing back a header read from a
    non-32-bit-word boundary will yield unpredictable results.
    
    In order to ensure that, cra_alignmask is set to 3 for SEC1.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Fixes: 9c4a79653b35 ("crypto: talitos - Freescale integrated security engine (SEC) driver")
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 26b269a1d21f70e21f9672b57d48c8f48aa2125b
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Tue May 21 13:34:17 2019 +0000

    crypto: talitos - properly handle split ICV.
    
    [ Upstream commit eae55a586c3c8b50982bad3c3426e9c9dd7a0075 ]
    
    The driver assumes that the ICV is as a single piece in the last
    element of the scatterlist. This assumption is wrong.
    
    This patch ensures that the ICV is properly handled regardless of
    the scatterlist layout.
    
    Fixes: 9c4a79653b35 ("crypto: talitos - Freescale integrated security engine (SEC) driver")
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 6e6872b8ce53905e8d2a9dcfe05faa4fcb10c94b
Author: Ioana Ciornei <ioana.ciornei@nxp.com>
Date:   Tue May 28 20:38:09 2019 +0300

    net: phy: Check against net_device being NULL
    
    [ Upstream commit 82c76aca81187b3d28a6fb3062f6916450ce955e ]
    
    In general, we don't want MAC drivers calling phy_attach_direct with the
    net_device being NULL. Add checks against this in all the functions
    calling it: phy_attach() and phy_connect_direct().
    
    Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
    Suggested-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 209085ee2786319f3c78e7371ea842ffa474b5fb
Author: Shailendra Verma <shailendra.v@samsung.com>
Date:   Thu Nov 24 23:57:34 2016 -0500

    media: staging: media: davinci_vpfe: - Fix for memory leak if decoder initialization fails.
    
    [ Upstream commit 6995a659101bd4effa41cebb067f9dc18d77520d ]
    
    Fix to avoid possible memory leak if the decoder initialization
    got failed.Free the allocated memory for file handle object
    before return in case decoder initialization fails.
    
    Signed-off-by: Shailendra Verma <shailendra.v@samsung.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36212c3e29ffdb1ac489855aab24b5776b42574f
Author: Hans Verkuil <hverkuil@xs4all.nl>
Date:   Mon May 27 05:31:13 2019 -0400

    media: mc-device.c: don't memset __user pointer contents
    
    [ Upstream commit 518fa4e0e0da97ea2e17c95ab57647ce748a96e2 ]
    
    You can't memset the contents of a __user pointer. Instead, call copy_to_user to
    copy links.reserved (which is zeroed) to the user memory.
    
    This fixes this sparse warning:
    
    SPARSE:drivers/media/mc/mc-device.c drivers/media/mc/mc-device.c:521:16:  warning: incorrect type in argument 1 (different address spaces)
    
    Fixes: f49308878d720 ("media: media_device_enum_links32: clean a reserved field")
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Reviewed-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 92a63c227b4da95d685470945d0dba2f0a09b10e
Author: Anirudh Gupta <anirudhrudr@gmail.com>
Date:   Tue May 21 20:59:47 2019 +0530

    xfrm: Fix xfrm sel prefix length validation
    
    [ Upstream commit b38ff4075a80b4da5cb2202d7965332ca0efb213 ]
    
    Family of src/dst can be different from family of selector src/dst.
    Use xfrm selector family to validate address prefix length,
    while verifying new sa from userspace.
    
    Validated patch with this command:
    ip xfrm state add src 1.1.6.1 dst 1.1.6.2 proto esp spi 4260196 \
    reqid 20004 mode tunnel aead "rfc4106(gcm(aes))" \
    0x1111016400000000000000000000000044440001 128 \
    sel src 1011:1:4::2/128 sel dst 1021:1:4::2/128 dev Port5
    
    Fixes: 07bf7908950a ("xfrm: Validate address prefix lengths in the xfrm selector.")
    Signed-off-by: Anirudh Gupta <anirudh.gupta@sophos.com>
    Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f76107ce0d5be6d505aebf8e1491ae68c76464f0
Author: Jeremy Sowden <jeremy@azazel.net>
Date:   Sat May 25 19:09:35 2019 +0100

    af_key: fix leaks in key_pol_get_resp and dump_sp.
    
    [ Upstream commit 7c80eb1c7e2b8420477fbc998971d62a648035d9 ]
    
    In both functions, if pfkey_xfrm_policy2msg failed we leaked the newly
    allocated sk_buff.  Free it on error.
    
    Fixes: 55569ce256ce ("Fix conversion between IPSEC_MODE_xxx and XFRM_MODE_xxx.")
    Reported-by: syzbot+4f0529365f7f2208d9f0@syzkaller.appspotmail.com
    Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
    Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9ac2e1c3f650dd13c3e13e8bbf3a9ad8e72e33c3
Author: Eric W. Biederman <ebiederm@xmission.com>
Date:   Wed May 15 12:29:52 2019 -0500

    signal/pid_namespace: Fix reboot_pid_ns to use send_sig not force_sig
    
    [ Upstream commit f9070dc94542093fd516ae4ccea17ef46a4362c5 ]
    
    The locking in force_sig_info is not prepared to deal with a task that
    exits or execs (as sighand may change).  The is not a locking problem
    in force_sig as force_sig is only built to handle synchronous
    exceptions.
    
    Further the function force_sig_info changes the signal state if the
    signal is ignored, or blocked or if SIGNAL_UNKILLABLE will prevent the
    delivery of the signal.  The signal SIGKILL can not be ignored and can
    not be blocked and SIGNAL_UNKILLABLE won't prevent it from being
    delivered.
    
    So using force_sig rather than send_sig for SIGKILL is confusing
    and pointless.
    
    Because it won't impact the sending of the signal and and because
    using force_sig is wrong, replace force_sig with send_sig.
    
    Cc: Daniel Lezcano <daniel.lezcano@free.fr>
    Cc: Serge Hallyn <serge@hallyn.com>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Fixes: cf3f89214ef6 ("pidns: add reboot_pid_ns() to handle the reboot syscall")
    Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 49799ad83b6de4038856f9e9c05e82f5f7e32495
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Fri May 24 10:20:25 2019 +0200

    net: stmmac: dwmac4/5: Clear unused address entries
    
    [ Upstream commit 0620ec6c62a5a07625b65f699adc5d1b90394ee6 ]
    
    In case we don't use a given address entry we need to clear it because
    it could contain previous values that are no longer valid.
    
    Found out while running stmmac selftests.
    
    Signed-off-by: Jose Abreu <joabreu@synopsys.com>
    Cc: Joao Pinto <jpinto@synopsys.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Cc: Alexandre Torgue <alexandre.torgue@st.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit c66c5da5612ab64a5728a528a6f3ea7cb38082e0
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Fri May 24 10:20:21 2019 +0200

    net: stmmac: dwmac1000: Clear unused address entries
    
    [ Upstream commit 9463c445590091202659cdfdd44b236acadfbd84 ]
    
    In case we don't use a given address entry we need to clear it because
    it could contain previous values that are no longer valid.
    
    Found out while running stmmac selftests.
    
    Signed-off-by: Jose Abreu <joabreu@synopsys.com>
    Cc: Joao Pinto <jpinto@synopsys.com>
    Cc: David S. Miller <davem@davemloft.net>
    Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
    Cc: Alexandre Torgue <alexandre.torgue@st.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7897961f80d88c613675fa76b88acd6b3ef1a087
Author: Jungo Lin <jungo.lin@mediatek.com>
Date:   Tue Apr 2 21:44:27 2019 -0400

    media: media_device_enum_links32: clean a reserved field
    
    [ Upstream commit f49308878d7202e07d8761238e01bd0e5fce2750 ]
    
    In v4l2-compliance utility, test MEDIA_IOC_ENUM_ENTITIES
    will check whether reserved field of media_links_enum filled
    with zero.
    
    However, for 32 bit program, the reserved field is missing
    copy from kernel space to user space in media_device_enum_links32
    function.
    
    This patch adds the cleaning a reserved field logic in
    media_device_enum_links32 function.
    
    Signed-off-by: Jungo Lin <jungo.lin@mediatek.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit be8ba526f8867a2cef1abf83ca7355c0092627d8
Author: Kangjie Lu <kjlu@umn.edu>
Date:   Fri Mar 22 22:51:06 2019 -0400

    media: vpss: fix a potential NULL pointer dereference
    
    [ Upstream commit e08f0761234def47961d3252eac09ccedfe4c6a0 ]
    
    In case ioremap fails, the fix returns -ENOMEM to avoid NULL
    pointer dereference.
    
    Signed-off-by: Kangjie Lu <kjlu@umn.edu>
    Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b91c7b47ea9b87e801ceb6793d2f5df2a9201c6a
Author: Lubomir Rintel <lkundrak@v3.sk>
Date:   Sun May 5 10:00:23 2019 -0400

    media: marvell-ccic: fix DMA s/g desc number calculation
    
    [ Upstream commit 0c7aa32966dab0b8a7424e1b34c7f206817953ec ]
    
    The commit d790b7eda953 ("[media] vb2-dma-sg: move dma_(un)map_sg here")
    left dma_desc_nent unset. It previously contained the number of DMA
    descriptors as returned from dma_map_sg().
    
    We can now (since the commit referred to above) obtain the same value from
    the sg_table and drop dma_desc_nent altogether.
    
    Tested on OLPC XO-1.75 machine. Doesn't affect the OLPC XO-1's Cafe
    driver, since that one doesn't do DMA.
    
    [mchehab+samsung@kernel.org: fix a checkpatch warning]
    
    Fixes: d790b7eda953 ("[media] vb2-dma-sg: move dma_(un)map_sg here")
    Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 920cceb98b7460e6670d36c3c757ad736c8f3aef
Author: Christophe Leroy <christophe.leroy@c-s.fr>
Date:   Wed May 15 12:29:03 2019 +0000

    crypto: talitos - fix skcipher failure due to wrong output IV
    
    [ Upstream commit 3e03e792865ae48b8cfc69a0b4d65f02f467389f ]
    
    Selftests report the following:
    
    [    2.984845] alg: skcipher: cbc-aes-talitos encryption test failed (wrong output IV) on test vector 0, cfg="in-place"
    [    2.995377] 00000000: 3d af ba 42 9d 9e b4 30 b4 22 da 80 2c 9f ac 41
    [    3.032673] alg: skcipher: cbc-des-talitos encryption test failed (wrong output IV) on test vector 0, cfg="in-place"
    [    3.043185] 00000000: fe dc ba 98 76 54 32 10
    [    3.063238] alg: skcipher: cbc-3des-talitos encryption test failed (wrong output IV) on test vector 0, cfg="in-place"
    [    3.073818] 00000000: 7d 33 88 93 0f 93 b2 42
    
    This above dumps show that the actual output IV is indeed the input IV.
    This is due to the IV not being copied back into the request.
    
    This patch fixes that.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr>
    Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
    Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 1d2e6bd4b64da75e6dba06fc9e3977c6413632b1
Author: Oliver Neukum <oneukum@suse.com>
Date:   Tue Apr 30 09:07:36 2019 -0400

    media: dvb: usb: fix use after free in dvb_usb_device_exit
    
    [ Upstream commit 6cf97230cd5f36b7665099083272595c55d72be7 ]
    
    dvb_usb_device_exit() frees and uses the device name in that order.
    Fix by storing the name in a buffer before freeing it.
    
    Signed-off-by: Oliver Neukum <oneukum@suse.com>
    Reported-by: syzbot+26ec41e9f788b3eba396@syzkaller.appspotmail.com
    Signed-off-by: Sean Young <sean@mess.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 4a604de65da8e6696054481f3a3c3bed644dbe4b
Author: Jeremy Sowden <jeremy@azazel.net>
Date:   Tue May 21 20:58:57 2019 +0100

    batman-adv: fix for leaked TVLV handler.
    
    [ Upstream commit 17f78dd1bd624a4dd78ed5db3284a63ee807fcc3 ]
    
    A handler for BATADV_TVLV_ROAM was being registered when the
    translation-table was initialized, but not unregistered when the
    translation-table was freed.  Unregister it.
    
    Fixes: 122edaa05940 ("batman-adv: tvlv - convert roaming adv packet to use tvlv unicast packets")
    Reported-by: syzbot+d454a826e670502484b8@syzkaller.appspotmail.com
    Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e51d890ba290622500d4838930729f33854ef55b
Author: Anilkumar Kolli <akolli@codeaurora.org>
Date:   Wed Mar 6 23:06:11 2019 +0530

    ath: DFS JP domain W56 fixed pulse type 3 RADAR detection
    
    [ Upstream commit d8792393a783158cbb2c39939cb897dc5e5299b6 ]
    
    Increase pulse width range from 1-2usec to 0-4usec.
    During data traffic HW occasionally fails detecting radar pulses,
    so that SW cannot get enough radar reports to achieve the success rate.
    
    Tested ath10k hw and fw:
            * QCA9888(10.4-3.5.1-00052)
            * QCA4019(10.4-3.2.1.1-00017)
            * QCA9984(10.4-3.6-00104)
            * QCA988X(10.2.4-1.0-00041)
    
    Tested ath9k hw: AR9300
    
    Tested-by: Tamizh chelvam <tamizhr@codeaurora.org>
    Signed-off-by: Tamizh chelvam <tamizhr@codeaurora.org>
    Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8e8b0ba1dc67d1cba76ac9cada76ae3a9732d1e3
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Thu Apr 4 11:56:51 2019 +0300

    ath6kl: add some bounds checking
    
    [ Upstream commit 5d6751eaff672ea77642e74e92e6c0ac7f9709ab ]
    
    The "ev->traffic_class" and "reply->ac" variables come from the network
    and they're used as an offset into the wmi->stream_exist_for_ac[] array.
    Those variables are u8 so they can be 0-255 but the stream_exist_for_ac[]
    array only has WMM_NUM_AC (4) elements.  We need to add a couple bounds
    checks to prevent array overflows.
    
    I also modified one existing check from "if (traffic_class > 3) {" to
    "if (traffic_class >= WMM_NUM_AC) {" just to make them all consistent.
    
    Fixes: bdcd81707973 (" Add ath6kl cleaned up driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 2c1907eb6c0ad779bc04c45507d5eaeb5ced1ab0
Author: Tim Schumacher <timschumi@gmx.de>
Date:   Mon Mar 18 20:05:57 2019 +0100

    ath9k: Check for errors when reading SREV register
    
    [ Upstream commit 2f90c7e5d09437a4d8d5546feaae9f1cf48cfbe1 ]
    
    Right now, if an error is encountered during the SREV register
    read (i.e. an EIO in ath9k_regread()), that error code gets
    passed all the way to __ath9k_hw_init(), where it is visible
    during the "Chip rev not supported" message.
    
        ath9k_htc 1-1.4:1.0: ath9k_htc: HTC initialized with 33 credits
        ath: phy2: Mac Chip Rev 0x0f.3 is not supported by this driver
        ath: phy2: Unable to initialize hardware; initialization status: -95
        ath: phy2: Unable to initialize hardware; initialization status: -95
        ath9k_htc: Failed to initialize the device
    
    Check for -EIO explicitly in ath9k_hw_read_revisions() and return
    a boolean based on the success of the operation. Check for that in
    __ath9k_hw_init() and abort with a more debugging-friendly message
    if reading the revisions wasn't successful.
    
        ath9k_htc 1-1.4:1.0: ath9k_htc: HTC initialized with 33 credits
        ath: phy2: Failed to read SREV register
        ath: phy2: Could not read hardware revision
        ath: phy2: Unable to initialize hardware; initialization status: -95
        ath: phy2: Unable to initialize hardware; initialization status: -95
        ath9k_htc: Failed to initialize the device
    
    This helps when debugging by directly showing the first point of
    failure and it could prevent possible errors if a 0x0f.3 revision
    is ever supported.
    
    Signed-off-by: Tim Schumacher <timschumi@gmx.de>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit eedd6cd7d31345d019b9f2550b6e4b90abc538c7
Author: Surabhi Vishnoi <svishnoi@codeaurora.org>
Date:   Wed Apr 17 14:01:46 2019 +0530

    ath10k: Do not send probe response template for mesh
    
    [ Upstream commit 97354f2c432788e3163134df6bb144f4b6289d87 ]
    
    Currently mac80211 do not support probe response template for
    mesh point. When WMI_SERVICE_BEACON_OFFLOAD is enabled, host
    driver tries to configure probe response template for mesh, but
    it fails because the interface type is not NL80211_IFTYPE_AP but
    NL80211_IFTYPE_MESH_POINT.
    
    To avoid this failure, skip sending probe response template to
    firmware for mesh point.
    
    Tested HW: WCN3990/QCA6174/QCA9984
    
    Signed-off-by: Surabhi Vishnoi <svishnoi@codeaurora.org>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9b8a4a188a91dcc8ae9d28aeec6121b5b28ac818
Author: Sven Van Asbroeck <thesven73@gmail.com>
Date:   Mon Jun 24 10:07:31 2019 -0400

    dmaengine: imx-sdma: fix use-after-free on probe error path
    
    [ Upstream commit 2b8066c3deb9140fdf258417a51479b2aeaa7622 ]
    
    If probe() fails anywhere beyond the point where
    sdma_get_firmware() is called, then a kernel oops may occur.
    
    Problematic sequence of events:
    1. probe() calls sdma_get_firmware(), which schedules the
       firmware callback to run when firmware becomes available,
       using the sdma instance structure as the context
    2. probe() encounters an error, which deallocates the
       sdma instance structure
    3. firmware becomes available, firmware callback is
       called with deallocated sdma instance structure
    4. use after free - kernel oops !
    
    Solution: only attempt to load firmware when we're certain
    that probe() will succeed. This guarantees that the firmware
    callback's context will remain valid.
    
    Note that the remove() path is unaffected by this issue: the
    firmware loader will increment the driver module's use count,
    ensuring that the module cannot be unloaded while the
    firmware callback is pending or running.
    
    Signed-off-by: Sven Van Asbroeck <TheSven73@gmail.com>
    Reviewed-by: Robin Gong <yibin.gong@nxp.com>
    [vkoul: fixed braces for if condition]
    Signed-off-by: Vinod Koul <vkoul@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8ade566903be54d3c100753f90b64f99783b38d2
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Jun 25 21:20:17 2019 -0700

    arm64/efi: Mark __efistub_stext_offset as an absolute symbol explicitly
    
    [ Upstream commit aa69fb62bea15126e744af2e02acc0d6cf3ed4da ]
    
    After r363059 and r363928 in LLVM, a build using ld.lld as the linker
    with CONFIG_RANDOMIZE_BASE enabled fails like so:
    
    ld.lld: error: relocation R_AARCH64_ABS32 cannot be used against symbol
    __efistub_stext_offset; recompile with -fPIC
    
    Fangrui and Peter figured out that ld.lld is incorrectly considering
    __efistub_stext_offset as a relative symbol because of the order in
    which symbols are evaluated. _text is treated as an absolute symbol
    and stext is a relative symbol, making __efistub_stext_offset a
    relative symbol.
    
    Adding ABSOLUTE will force ld.lld to evalute this expression in the
    right context and does not change ld.bfd's behavior. ld.lld will
    need to be fixed but the developers do not see a quick or simple fix
    without some research (see the linked issue for further explanation).
    Add this simple workaround so that ld.lld can continue to link kernels.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/561
    Link: https://github.com/llvm/llvm-project/commit/025a815d75d2356f2944136269aa5874721ec236
    Link: https://github.com/llvm/llvm-project/commit/249fde85832c33f8b06c6b4ac65d1c4b96d23b83
    Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Debugged-by: Fangrui Song <maskray@google.com>
    Debugged-by: Peter Smith <peter.smith@linaro.org>
    Suggested-by: Fangrui Song <maskray@google.com>
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    [will: add comment]
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3989a20ad90d742d63f7e226f46b6ed032708faa
Author: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Date:   Wed Jun 19 15:08:18 2019 +0100

    MIPS: fix build on non-linux hosts
    
    [ Upstream commit 1196364f21ffe5d1e6d83cafd6a2edb89404a3ae ]
    
    calc_vmlinuz_load_addr.c requires SZ_64K to be defined for alignment
    purposes.  It included "../../../../include/linux/sizes.h" to define
    that size, however "sizes.h" tries to include <linux/const.h> which
    assumes linux system headers.  These may not exist eg. the following
    error was encountered when building Linux for OpenWrt under macOS:
    
    In file included from arch/mips/boot/compressed/calc_vmlinuz_load_addr.c:16:
    arch/mips/boot/compressed/../../../../include/linux/sizes.h:11:10: fatal error: 'linux/const.h' file not found
             ^~~~~~~~~~
    
    Change makefile to force building on local linux headers instead of
    system headers.  Also change eye-watering relative reference in include
    file spec.
    
    Thanks to Jo-Philip Wich & Petr Štetiar for assistance in tracking this
    down & fixing.
    
    Suggested-by: Jo-Philipp Wich <jo@mein.io>
    Signed-off-by: Petr Štetiar <ynezz@true.cz>
    Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 56b52fbb3089bf6f7d2f9af97055ef824438e40c
Author: Stefan Hellermann <stefan@the2masters.de>
Date:   Mon Jun 17 15:43:59 2019 +0200

    MIPS: ath79: fix ar933x uart parity mode
    
    [ Upstream commit db13a5ba2732755cf13320f3987b77cf2a71e790 ]
    
    While trying to get the uart with parity working I found setting even
    parity enabled odd parity insted. Fix the register settings to match
    the datasheet of AR9331.
    
    A similar patch was created by 8devices, but not sent upstream.
    https://github.com/8devices/openwrt-8devices/commit/77c5586ade3bb72cda010afad3f209ed0c98ea7c
    
    Signed-off-by: Stefan Hellermann <stefan@the2masters.de>
    Signed-off-by: Paul Burton <paul.burton@mips.com>
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Sasha Levin <sashal@kernel.org>