commit dc16a7e5f36d65b25a1b66ade14356773ed52875
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Sun Aug 4 09:35:02 2019 +0200

    Linux 4.4.187

commit 00c26889e8222661f9d8603401ff33cd27429449
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 d65f740efff010eb8e7b6e7daf3220117dec1e3b
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 da358f365dab8fea00c6254621e2cfb2fd817d01
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 37fb924139954a28a1f04959070c3cc762b0de4c
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 56ea214b175643476a7f2979118c2ac560f29b3f
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 63a80df0ea2b94813f60e8372f9ee93856bcfd5b
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 4ef54f331818f5d651e18fd640ec47d0b6eebf46
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 8f0b77b71f3fec09f86f80cd98c36a1a35109499
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 ee2f25641633ffb03fb88e4fa8a6424d24d3f295
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 1ab1512366d45b7059b961be1b8d3c82c262bbd7
Author: Michal Hocko <mhocko@suse.com>
Date:   Fri Feb 5 15:36:24 2016 -0800

    mm, vmstat: make quiet_vmstat lighter
    
    commit f01f17d3705bb6081c9e5728078f64067982be36 upstream.
    
    Mike has reported a considerable overhead of refresh_cpu_vm_stats from
    the idle entry during pipe test:
    
        12.89%  [kernel]       [k] refresh_cpu_vm_stats.isra.12
         4.75%  [kernel]       [k] __schedule
         4.70%  [kernel]       [k] mutex_unlock
         3.14%  [kernel]       [k] __switch_to
    
    This is caused by commit 0eb77e988032 ("vmstat: make vmstat_updater
    deferrable again and shut down on idle") which has placed quiet_vmstat
    into cpu_idle_loop.  The main reason here seems to be that the idle
    entry has to get over all zones and perform atomic operations for each
    vmstat entry even though there might be no per cpu diffs.  This is a
    pointless overhead for _each_ idle entry.
    
    Make sure that quiet_vmstat is as light as possible.
    
    First of all it doesn't make any sense to do any local sync if the
    current cpu is already set in oncpu_stat_off because vmstat_update puts
    itself there only if there is nothing to do.
    
    Then we can check need_update which should be a cheap way to check for
    potential per-cpu diffs and only then do refresh_cpu_vm_stats.
    
    The original patch also did cancel_delayed_work which we are not doing
    here.  There are two reasons for that.  Firstly cancel_delayed_work from
    idle context will blow up on RT kernels (reported by Mike):
    
      CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.5.0-rt3 #7
      Hardware name: MEDION MS-7848/MS-7848, BIOS M7848W08.20C 09/23/2013
      Call Trace:
        dump_stack+0x49/0x67
        ___might_sleep+0xf5/0x180
        rt_spin_lock+0x20/0x50
        try_to_grab_pending+0x69/0x240
        cancel_delayed_work+0x26/0xe0
        quiet_vmstat+0x75/0xa0
        cpu_idle_loop+0x38/0x3e0
        cpu_startup_entry+0x13/0x20
        start_secondary+0x114/0x140
    
    And secondly, even on !RT kernels it might add some non trivial overhead
    which is not necessary.  Even if the vmstat worker wakes up and preempts
    idle then it will be most likely a single shot noop because the stats
    were already synced and so it would end up on the oncpu_stat_off anyway.
    We just need to teach both vmstat_shepherd and vmstat_update to stop
    scheduling the worker if there is nothing to do.
    
    [mgalbraith@suse.de: cancel pending work of the cpu_stat_off CPU]
    Signed-off-by: Michal Hocko <mhocko@suse.com>
    Reported-by: Mike Galbraith <umgwanakikbuti@gmail.com>
    Acked-by: Christoph Lameter <cl@linux.com>
    Signed-off-by: Mike Galbraith <mgalbraith@suse.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Daniel Wagner <wagi@monom.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fece2f828ffe83c55e9befe72aff59e252a501cc
Author: Christoph Lameter <cl@linux.com>
Date:   Fri Jan 22 10:46:14 2016 -0600

    vmstat: Remove BUG_ON from vmstat_update
    
    commit 587198ba5206cdf0d30855f7361af950a4172cd6 upstream.
    
    If we detect that there is nothing to do just set the flag and do not
    check if it was already set before.  Races really do not matter.  If the
    flag is set by any code then the shepherd will start dealing with the
    situation and reenable the vmstat workers when necessary again.
    
    Since commit 0eb77e988032 ("vmstat: make vmstat_updater deferrable again
    and shut down on idle") quiet_vmstat might update cpu_stat_off and mark
    a particular cpu to be handled by vmstat_shepherd.  This might trigger a
    VM_BUG_ON in vmstat_update because the work item might have been
    sleeping during the idle period and see the cpu_stat_off updated after
    the wake up.  The VM_BUG_ON is therefore misleading and no more
    appropriate.  Moreover it doesn't really suite any protection from real
    bugs because vmstat_shepherd will simply reschedule the vmstat_work
    anytime it sees a particular cpu set or vmstat_update would do the same
    from the worker context directly.  Even when the two would race the
    result wouldn't be incorrect as the counters update is fully idempotent.
    
    Reported-by: Sasha Levin <sasha.levin@oracle.com>
    Signed-off-by: Christoph Lameter <cl@linux.com>
    Acked-by: Michal Hocko <mhocko@suse.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Daniel Wagner <wagi@monom.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 204b14581f001877eed965a8c26a981b708be049
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 e67fd28f9ed887d0c8124bda96b66dab87823eac
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 77f9764ca4fc79492c78a798a36039ec8714dd98
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 3f9e3565c5df95dc4b29adb5511db23e22c732c9
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 fe7d7592df205c3ca74ace8cd5a73078652c6a64
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 cef888755a349443079b5538e6a74b88b3264c55
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 50b8699c6b44aa8389ba71a9fba2de5686a87c69
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 97b02599962b5e8216623ffcc99901446c15f5ea
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 77f962794b341aa3421fe1438a66d87b97caccf1
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 32a8925288cee8650941bcc27def5bf610f2b5e0
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 53372938b170260eacfd4941b738dd10836123ca
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 eb2f57fd9f62559700e3c5830f5f9bdb4cf4af52
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 d3888920665f397a2c9b759f4bc9782e80529a3e
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 723bcdcfdb964e97ea59788f9c425fff755bad56
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 d7b26901d8048bed6ae2e9a2f69ad16914a9111c
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 3cad2027c6e1ea2cd273f07a7a582f684e47d2b5
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 dec595841eb44db4d025e54b14ad045c21b60fc8
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 77bd558b2a02356a43b6e38de5168c6bb2afe9e8
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 6507b61cc79d9a25ad11d66520acadd046957f3e
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 76f095a6313fa7710eb82157f606417ebef29113
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 f833783b2674c9fa8025805fced7a858270c6827
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 7f06efe994032486db6e17138dca5224aa0f8b24
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 12fcb801a57d4e4f8fc7e9343fe7860252ad2561
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 35d67a0c5aeaf3c0e23af009437eb5a8124c3f38
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 83cf7513ef910689faf905096324937df40bde69
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 efe18f768714f969994ae7cdc6c2a8e273186e6d
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 623c3a62616ec3cebc9f10818e349d0bf8a514e6
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 4a5fd966eddfd954d2dcbb5a719604483f39ec39
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 f2915d784b547bb09fe81734ec2c0e955539b99e
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 959c7313967990e5a9eff4604abaa8bff4e6f8f9
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 718514c02cc9d43b9e2d9b62c22aae9e05e47c39
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 25d2b1b5f27b3b559ade1a4024e746bb41106c80
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 e14829d6f80f635dacb84615b67666dfd6457e26
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 d6ad3a06c646b5fa6b0d92df4a31ae87204c6d20
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 d72a857dea75977812baf4b032f168ba3daf0396
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 63d1bc1d212440c826f584cf259bc8274c9dcaa3
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 345f195da4fc020551677d0da4e24d03409cc9db
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 d11053e3cd96727628200fd124396fa3160c3074
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 d04ba4c317ae6ed84f7b93455a1031fa5ee5f02b
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 309e8863eba750a058354c3c42aa04352bbacb53
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 faf9d27a6b1e7378ab59746f35378ec04d3d900a
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 cda045c87b68ce69b66eb4f174a7905d45d22324
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 728009f37a3c0957d64a3c20986441108c566a2e
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 c499d67f070f9147dea5199710a30ec1c4647065
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 b49ba75c3c9f225c1d60166efccbcc2e00fb9638
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 c5b430eeaeda6c7231febfc94364837f56a04c01
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Jun 2 20:35:51 2017 -0700

    elevator: fix truncation of icq_cache_name
    
    commit 9bd2bbc01d17ddd567cc0f81f77fe1163e497462 upstream.
    
    gcc 7.1 reports the following warning:
    
        block/elevator.c: In function ‘elv_register’:
        block/elevator.c:898:5: warning: ‘snprintf’ output may be truncated before the last format character [-Wformat-truncation=]
             "%s_io_cq", e->elevator_name);
             ^~~~~~~~~~
        block/elevator.c:897:3: note: ‘snprintf’ output between 7 and 22 bytes into a destination of size 21
           snprintf(e->icq_cache_name, sizeof(e->icq_cache_name),
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
             "%s_io_cq", e->elevator_name);
             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    The bug is that the name of the icq_cache is 6 characters longer than
    the elevator name, but only ELV_NAME_MAX + 5 characters were reserved
    for it --- so in the case of a maximum-length elevator name, the 'q'
    character in "_io_cq" would be truncated by snprintf().  Fix it by
    reserving ELV_NAME_MAX + 6 characters instead.
    
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Reviewed-by: Bart Van Assche <Bart.VanAssche@sandisk.com>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3941d334d996bb7ed4d3a22f60c02351ae94169c
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 829fba2dcd7fdaccacc57b6e3507fb774638a641
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 ad4350ed9d98ea121db4102ae12296b4f66c67e5
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 2eb5ddc2bf38e2a2b9ec461ab18d91b43d9f8d93
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 364e03f191205642630a02eaeaabdb87900a5bc7
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 687075923787e436f6601557cca5ea6d0e6c107d
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 6979ab4d3c7c94beb18de3abd430301579281a6e
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 6334936646da6ea689c8d082cec2dc6f372348bc
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 7c8f2c52a72105b03618542a715e41112afab22c
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 2289103cd17a6f1d9bdecfdb6e2445e042b94fe7
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 7165159ddd608d6d057db85c44f67d5d0f4e874a
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 0efd6f2ec0475212e446afc1d930412e586059eb
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 4d285dcc9371d5661bcf8e13fcd334aba8fd2994
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 a4af24423e5f75a2bcb1dec95365d89a78cf7c7a
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 40f8aa133ba248742bec1d3f1e34286fef83f9f2
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 259cad0a1c173b53a37334cd927e756bbc3059a0
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 c288d39159d24457a5a4030a40ebf2d279f7f137
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 cc2dd82631ef555780ca9be4752c2b9bc651eade
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 fd68989d3a45b937ffa5bf711060e51c329cc43b
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 91071a5a4636b450d12bc4bd693c2acd70c11705
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 0e13274bcb81c06f537ba2c13e7fce3ba46a780c
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 ce41b6472bf3d24c338253fd970677214c82b1f8
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 25399eae2a5e1c7194f2909079d9c05fc9e4ff15
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 6b40b97899ed4449927674fc3e46c5b74ed592c3
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 d105eaf5fb67a193df8fe72e64690c43e343a560
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 df700168a2a4925175c6decfba64acd8f955f987
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 350de13e03e487575dbca4dfddb574cd6526115e
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 26d6284d5d392bd96c414f745bcbf3620e93c8fd
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 0a18fbb5b02b611e34de7948291d7b96f637d465
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 cbc4bc14352e0c4d589c9e8a70496a1fe8434a34
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 93b3fe8ae9163358b5c04a10f02416bf38ca160a
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 e5899605e9982181c748ca0f97c2794efc47e458
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 37717b3975adeb42d3c01acff0fb980f9341ded7
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 505c011f9f5379f6007a1aa800f3af5163a1b475
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 80fb02ad453cfe2d16fedf52feb6b410d235a240
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 a616b5631aa571d453cf4527ad422c2b8d07fb6e
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 dc427deccae37d44ebc0943a1e50a18792adfb59
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 2e85872cb2bbb94aae37f226b83e3466a609d784
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 68c5c3fec760a667ff538c8212ea0695cc3975c4
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 95067cbe54bd2138812391c269c8554afe4ee24f
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 70ffc0d5b9d9b9ff4d73443ef9ac45296dc79e70
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 3ca20e950203a6c7759186ec4e89cbd33ee2bf81
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 e3730353f15b49d2c86dfc36f4ae7c90f8869a5f
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 4c3877418d919a9d96dfdd7ab57c289599e4a473
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 6001a6cf742b2bdb3994139a56a7462270fc4873
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 ccc188308c0394571dcab9673ceee169839ef6b2
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 2f2c6a264cfbb6c961e3cdd27af26329c69be97d
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 233f5ed27bc04d9958dd23da61f50af3ffd38315
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 f65cbc7837eb09da1cd48beb61b3cc385aaed997
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 de5b20a30b6d97b464dd11363aa8aef2bf816fc4
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 27ba9eed3d396f006aa8b8043574ecf2ee6331bb
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 1ba62e51d435400f817e1e9a83dd4f4b9964b88e
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 a672374abdb0d2f4ceaaabdc3991c10b553c39d6
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 a7a7839b5537a5a0070d279d2007982c270a4516
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 3d2af3adeade7dc9242442159f3cb32bc12f39c1
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 36bfc2f574502032bd1a34391c4df34313fcdcc5
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 ff7f1db85c45e902e02d1978f59fbd2ce130dde9
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 ac2978c3c8c0e445c6c7e1a4f3eeaa508bde4246
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 391252c63f3109c6e9cf41a600914c9dbdf459cf
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 8379822d3a417bb7c75697925c3bc977cac53f0d
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 62099aba7990aee243fe12155bc99ed890ec8723
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 66166f9a0ee5d2da0a18e90f53ff7f4e291d72b9
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 41164dd56336bcccab95f0f0077bbbefa7891246
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 b4a4a5610104a0f69dceb156b19c2df9b218776e
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 473e040e8c8e633fef2e8b9621f2dcc30cab0d2f
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 a7ef2978f61623902920938b1706d00db5258b4c
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 b5f997a1d6a8c647bfdeaafbb6643f6141d0bd49
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 ffee58132ea668e7b0e7c813803543c37369edae
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 edf2ce9a7a96c466fb5939bade67d924a980a268
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 7dd2dc652435c0abb9f05ff9ef0b378fcf743f10
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 dd53d356618595cd33ea49d187174e3fd80c1456
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 56af78dffdaf5b07151b2cc18188b6217bba49f3
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 b1d99aabd239023366eabb6d3b960c0a1f92efe4
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 5f18429ae48faebefc00533cb24afdd01064754c
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 375fa4d379842b3737757e7785767841a7f1f034
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 3746962349336219f3678ec403dee108df3ea995
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 b5133a8463acbba4aad7d90d8dcb39110d67cc7a
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 c62493c78e15f79db4fbb9696f44009fbbbea77c
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 614ff8f4f3611316ea41a341f257e5d32397655e
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 aa147b3bcdbcfb51eeb1e578e8e04f5b43b6f2fe
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 3c910e70dcf004e2f2de7c359847945bc3510996
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 06816b2e5e3d8fb45d4b1f1f0366123e0e1ec6d3
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 caf13a88a511ecaa474f380b2ef9f9aafb0c4f54
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 228b0ef1dfeb337622f3a6e73aa3ae1bebc08312
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 33de7ba5ba53bf60c7cf5220225e3e3c26c22943
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 a6a605fd0b26b4e49621e29f88a0b61537e7a36f
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 f579e18f7b61b565f7b03226aa38f6bc4e6b8087
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 ed8b1a1b8a82befde1583d171117d5af4c75b295
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 102981b27a7fcb1fa9265be8cf07edef327809d5
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 4f8e99d6177ab5922a060e24030b227b4537b414
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 7e95655b54ca06487eb95595f3b95ad829b81dc8
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 11648a3cc09d871898ba89383a2095f895f27995
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 2e19549cd9543b23d9c9def772b4495c73ca2dbe
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 c1e1288d2e61727c1a9b9f28d0cf61da592a76bc
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 50d47c54bbe126f079c91cfdd91697aec01204da
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 737954d6f2ffa01a8d860c43b6163b1165c21d37
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 5239be20a1bddfbcc1ad5cdec1496de510fb72db
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 00d376f0c4b1f1c4de08fe0f5509b0ea76a4bf1c
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 074f0904c07cf4955d5110970fbdaabb03f8369e
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>