commit adc0acf587768b7db6ca1d7c395a9116865c9e07
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jan 14 20:08:40 2020 +0100

    Linux 5.4.12

commit 53b9bd37af59d1def99b20707536105857eb9bd0
Author: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
Date:   Wed Jan 8 09:34:16 2020 -0800

    drm/i915/gen9: Clear residual context state on context switch
    
    commit bc8a76a152c5f9ef3b48104154a65a68a8b76946 upstream.
    
    Intel ID: PSIRT-TA-201910-001
    CVEID: CVE-2019-14615
    
    Intel GPU Hardware prior to Gen11 does not clear EU state
    during a context switch. This can result in information
    leakage between contexts.
    
    For Gen8 and Gen9, hardware provides a mechanism for
    fast cleardown of the EU state, by issuing a PIPE_CONTROL
    with bit 27 set. We can use this in a context batch buffer
    to explicitly cleardown the state on every context switch.
    
    As this workaround is already in place for gen8, we can borrow
    the code verbatim for Gen9.
    
    Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
    Signed-off-by: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
    Cc: Kumar Valsan Prathap <prathap.kumar.valsan@intel.com>
    Cc: Chris Wilson <chris.p.wilson@intel.com>
    Cc: Balestrieri Francesco <francesco.balestrieri@intel.com>
    Cc: Bloomfield Jon <jon.bloomfield@intel.com>
    Cc: Dutt Sudeep <sudeep.dutt@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f58642c1bc7946c315d8617d61916f754d90583f
Author: Florian Westphal <fw@strlen.de>
Date:   Wed Jan 8 10:59:38 2020 +0100

    netfilter: ipset: avoid null deref when IPSET_ATTR_LINENO is present
    
    commit 22dad713b8a5ff488e07b821195270672f486eb2 upstream.
    
    The set uadt functions assume lineno is never NULL, but it is in
    case of ip_set_utest().
    
    syzkaller managed to generate a netlink message that calls this with
    LINENO attr present:
    
    general protection fault: 0000 [#1] PREEMPT SMP KASAN
    RIP: 0010:hash_mac4_uadt+0x1bc/0x470 net/netfilter/ipset/ip_set_hash_mac.c:104
    Call Trace:
     ip_set_utest+0x55b/0x890 net/netfilter/ipset/ip_set_core.c:1867
     nfnetlink_rcv_msg+0xcf2/0xfb0 net/netfilter/nfnetlink.c:229
     netlink_rcv_skb+0x177/0x450 net/netlink/af_netlink.c:2477
     nfnetlink_rcv+0x1ba/0x460 net/netfilter/nfnetlink.c:563
    
    pass a dummy lineno storage, its easier than patching all set
    implementations.
    
    This seems to be a day-0 bug.
    
    Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Reported-by: syzbot+34bd2369d38707f3f4a7@syzkaller.appspotmail.com
    Fixes: a7b4f989a6294 ("netfilter: ipset: IP set core support")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Acked-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 99a55d8a7fa4c788afc74d6e5ded8903d1712d1a
Author: Florian Westphal <fw@strlen.de>
Date:   Mon Jan 6 23:34:17 2020 +0100

    netfilter: conntrack: dccp, sctp: handle null timeout argument
    
    commit 1d9a7acd3d1e74c2d150d8934f7f55bed6d70858 upstream.
    
    The timeout pointer can be NULL which means we should modify the
    per-nets timeout instead.
    
    All do this, except sctp and dccp which instead give:
    
    general protection fault: 0000 [#1] PREEMPT SMP KASAN
    net/netfilter/nf_conntrack_proto_dccp.c:682
     ctnl_timeout_parse_policy+0x150/0x1d0 net/netfilter/nfnetlink_cttimeout.c:67
     cttimeout_default_set+0x150/0x1c0 net/netfilter/nfnetlink_cttimeout.c:368
     nfnetlink_rcv_msg+0xcf2/0xfb0 net/netfilter/nfnetlink.c:229
     netlink_rcv_skb+0x177/0x450 net/netlink/af_netlink.c:2477
    
    Reported-by: syzbot+46a4ad33f345d1dd346e@syzkaller.appspotmail.com
    Fixes: c779e849608a8 ("netfilter: conntrack: remove get_timeout() indirection")
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 503ff0dcfba7519b86a04e82b6954dc73df80aac
Author: Florian Westphal <fw@strlen.de>
Date:   Fri Dec 27 01:33:10 2019 +0100

    netfilter: arp_tables: init netns pointer in xt_tgchk_param struct
    
    commit 1b789577f655060d98d20ed0c6f9fbd469d6ba63 upstream.
    
    We get crash when the targets checkentry function tries to make
    use of the network namespace pointer for arptables.
    
    When the net pointer got added back in 2010, only ip/ip6/ebtables were
    changed to initialize it, so arptables has this set to NULL.
    
    This isn't a problem for normal arptables because no existing
    arptables target has a checkentry function that makes use of par->net.
    
    However, direct users of the setsockopt interface can provide any
    target they want as long as its registered for ARP or UNPSEC protocols.
    
    syzkaller managed to send a semi-valid arptables rule for RATEEST target
    which is enough to trigger NULL deref:
    
    kasan: GPF could be caused by NULL-ptr deref or user memory access
    general protection fault: 0000 [#1] PREEMPT SMP KASAN
    RIP: xt_rateest_tg_checkentry+0x11d/0xb40 net/netfilter/xt_RATEEST.c:109
    [..]
     xt_check_target+0x283/0x690 net/netfilter/x_tables.c:1019
     check_target net/ipv4/netfilter/arp_tables.c:399 [inline]
     find_check_entry net/ipv4/netfilter/arp_tables.c:422 [inline]
     translate_table+0x1005/0x1d70 net/ipv4/netfilter/arp_tables.c:572
     do_replace net/ipv4/netfilter/arp_tables.c:977 [inline]
     do_arpt_set_ctl+0x310/0x640 net/ipv4/netfilter/arp_tables.c:1456
    
    Fixes: add67461240c1d ("netfilter: add struct net * to target parameters")
    Reported-by: syzbot+d7358a458d8a81aee898@syzkaller.appspotmail.com
    Signed-off-by: Florian Westphal <fw@strlen.de>
    Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2deeba3623429a84103b26297a402634b7221973
Author: Tony Lindgren <tony@atomide.com>
Date:   Sun Dec 22 10:00:19 2019 -0800

    phy: cpcap-usb: Fix flakey host idling and enumerating of devices
    
    commit 049226b9fd7442149dcbcf55f15408f5973cceda upstream.
    
    We must let the USB host idle things properly before we switch to debug
    UART mode. Otherwise the USB host may never idle after disconnecting
    devices, and that causes the next enumeration to be flakey.
    
    Cc: Jacopo Mondi <jacopo@jmondi.org>
    Cc: Marcel Partap <mpartap@gmx.net>
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Michael Scott <hashcode0f@gmail.com>
    Cc: NeKit <nekit1000@gmail.com>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Sebastian Reichel <sre@kernel.org>
    Acked-by: Pavel Machek <pavel@ucw.cz>
    Fixes: 6d6ce40f63af ("phy: cpcap-usb: Add CPCAP PMIC USB support")
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73681018f00c980fc512b46074e8fbee02471bee
Author: Tony Lindgren <tony@atomide.com>
Date:   Fri Dec 20 16:21:40 2019 +0530

    phy: cpcap-usb: Fix error path when no host driver is loaded
    
    commit 4acb0200ab2b07843e3ef5599add3454c7440f03 upstream.
    
    If musb_mailbox() returns an error, we must still continue to finish
    configuring the phy.
    
    Otherwise the phy state may end up only half initialized, and this can
    cause the debug serial console to stop working. And this will happen if the
    usb driver musb controller is not loaded.
    
    Let's fix the issue by adding helper for cpcap_usb_try_musb_mailbox().
    
    Fixes: 6d6ce40f63af ("phy: cpcap-usb: Add CPCAP PMIC USB support")
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Sebastian Reichel <sre@kernel.org>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fcaac70d298fc69d4c63f5bc5494bab30ec4ee1
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon Jan 6 10:43:42 2020 -0500

    USB: Fix: Don't skip endpoint descriptors with maxpacket=0
    
    commit 2548288b4fb059b2da9ceada172ef763077e8a59 upstream.
    
    It turns out that even though endpoints with a maxpacket length of 0
    aren't useful for data transfer, the descriptors do serve other
    purposes.  In particular, skipping them will also skip over other
    class-specific descriptors for classes such as UVC.  This unexpected
    side effect has caused some UVC cameras to stop working.
    
    In addition, the USB spec requires that when isochronous endpoint
    descriptors are present in an interface's altsetting 0 (which is true
    on some devices), the maxpacket size _must_ be set to 0.  Warning
    about such things seems like a bad idea.
    
    This patch updates an earlier commit which would log a warning and
    skip these endpoint descriptors.  Now we only log a warning, and we
    don't even do that for isochronous endpoints in altsetting 0.
    
    We don't need to worry about preventing endpoints with maxpacket = 0
    from ever being used for data transfers; usb_submit_urb() already
    checks for this.
    
    Reported-and-tested-by: Roger Whittaker <Roger.Whittaker@suse.com>
    Fixes: d482c7bb0541 ("USB: Skip endpoints with 0 maxpacket length")
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
    Link: https://marc.info/?l=linux-usb&m=157790377329882&w=2
    Link: https://lore.kernel.org/r/Pine.LNX.4.44L0.2001061040270.1514-100000@iolanthe.rowland.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ea36fba56ef33475b0b95276062ea242ffd53d4
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Tue Dec 17 14:50:21 2019 -0800

    HID: hiddev: fix mess in hiddev_open()
    
    commit 18a1b06e5b91d47dc86c0a66a762646ea7c5d141 upstream.
    
    The open method of hiddev handler fails to bring the device out of
    autosuspend state as was promised in 0361a28d3f9a, as it actually has 2
    blocks that try to start the transport (call hid_hw_open()) with both
    being guarded by the "open" counter, so the 2nd block is never executed as
    the first block increments the counter so it is never at 0 when we check
    it for the second block.
    
    Additionally hiddev_open() was leaving counter incremented on errors,
    causing the device to never be reopened properly if there was ever an
    error.
    
    Let's fix all of this by factoring out code that creates client structure
    and powers up the device into a separate function that is being called
    from usbhid_open() with the "existancelock" being held.
    
    Fixes: 0361a28d3f9a ("HID: autosuspend support for USB HID")
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad1e0d1976b9061bf2aca99249b0187c9bbd3334
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Thu Sep 19 20:36:26 2019 -0500

    ath10k: fix memory leak
    
    commit b8d17e7d93d2beb89e4f34c59996376b8b544792 upstream.
    
    In ath10k_usb_hif_tx_sg the allocated urb should be released if
    usb_submit_urb fails.
    
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e380d974731502d24e0353df36a883fe232c866b
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Thu Sep 19 22:00:41 2019 -0500

    rtl8xxxu: prevent leaking urb
    
    commit a2cdd07488e666aa93a49a3fc9c9b1299e27ef3c upstream.
    
    In rtl8xxxu_submit_int_urb if usb_submit_urb fails the allocated urb
    should be released.
    
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Reviewed-by: Chris Chiu <chiu@endlessm.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 448fe0b67c68d36cb45c09444c6b8298130d4c5e
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Tue Sep 10 18:44:15 2019 -0500

    scsi: bfa: release allocated memory in case of error
    
    commit 0e62395da2bd5166d7c9e14cbc7503b256a34cb0 upstream.
    
    In bfad_im_get_stats if bfa_port_get_stats fails, allocated memory needs to
    be released.
    
    Link: https://lore.kernel.org/r/20190910234417.22151-1-navid.emamdoost@gmail.com
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5bbe72cf486c3b983f739b3e1d98b61c8a205795
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Mon Sep 16 22:31:23 2019 -0500

    rpmsg: char: release allocated memory
    
    commit bbe692e349e2a1edf3fe0a29a0e05899c9c94d51 upstream.
    
    In rpmsg_eptdev_write_iter, if copy_from_iter_full fails the allocated
    buffer needs to be released.
    
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3fe1ced40e189e31c21f6723fbe4bdf8d2731922
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Fri Oct 4 15:08:52 2019 -0500

    mwifiex: pcie: Fix memory leak in mwifiex_pcie_alloc_cmdrsp_buf
    
    commit db8fd2cde93227e566a412cf53173ffa227998bc upstream.
    
    In mwifiex_pcie_alloc_cmdrsp_buf, a new skb is allocated which should be
    released if mwifiex_map_pci_memory() fails. The release is added.
    
    Fixes: fc3314609047 ("mwifiex: use pci_alloc/free_consistent APIs for PCIe")
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Acked-by: Ganapathi Bhat <gbhat@marvell.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cbd6a85021a38ce3071fc50f2e11b709b0add8c7
Author: Ganapathi Bhat <gbhat@marvell.com>
Date:   Thu Nov 21 21:34:38 2019 +0530

    mwifiex: fix possible heap overflow in mwifiex_process_country_ie()
    
    commit 3d94a4a8373bf5f45cf5f939e88b8354dbf2311b upstream.
    
    mwifiex_process_country_ie() function parse elements of bss
    descriptor in beacon packet. When processing WLAN_EID_COUNTRY
    element, there is no upper limit check for country_ie_len before
    calling memcpy. The destination buffer domain_info->triplet is an
    array of length MWIFIEX_MAX_TRIPLET_802_11D(83). The remote
    attacker can build a fake AP with the same ssid as real AP, and
    send malicous beacon packet with long WLAN_EID_COUNTRY elemen
    (country_ie_len > 83). Attacker can  force STA connect to fake AP
    on a different channel. When the victim STA connects to fake AP,
    will trigger the heap buffer overflow. Fix this by checking for
    length and if found invalid, don not connect to the AP.
    
    This fix addresses CVE-2019-14895.
    
    Reported-by: huangwen <huangwenabc@gmail.com>
    Signed-off-by: Ganapathi Bhat <gbhat@marvell.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fa2bdff31cbf5a6e9beb67fba5e8cd59cc9ecfae
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Fri Dec 20 21:15:33 2019 +0000

    staging: vt6656: remove bool from vnt_radio_power_on ret
    
    commit 07f59f180ee083c48c32a1e69ae1d0091444d212 upstream.
    
    The driver uses logical only error checking a bool true would flag error.
    
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/cc52b67c-9ef8-3e57-815a-44d10701919e@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8c9ff5c7ddcb6230fbb5b8224733a0a6250b6904
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Sat Jan 4 13:39:30 2020 +0100

    um: Implement copy_thread_tls
    
    commit 457677c70c7672a4586b0b8abc396cc1ecdd376d upstream.
    
    This is required for clone3 which passes the TLS value through a
    struct rather than a register.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: linux-um@lists.infradead.org
    Cc: <stable@vger.kernel.org> # 5.3.x
    Link: https://lore.kernel.org/r/20200104123928.1048822-1-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f43cdc72331bdbf3562d266969779aed7a834af
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Thu Jan 2 18:24:13 2020 +0100

    clone3: ensure copy_thread_tls is implemented
    
    commit dd499f7a7e34270208350a849ef103c0b3ae477f upstream.
    
    copy_thread implementations handle CLONE_SETTLS by reading the TLS
    value from the registers containing the syscall arguments for
    clone. This doesn't work with clone3 since the TLS value is passed
    in clone_args instead.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: <stable@vger.kernel.org> # 5.3.x
    Link: https://lore.kernel.org/r/20200102172413.654385-8-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3981d85a91824e529de5ee5128ec0b5bb63d1a42
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Thu Jan 2 18:24:12 2020 +0100

    xtensa: Implement copy_thread_tls
    
    commit c346b94f8c5d1b7d637522c908209de93305a8eb upstream.
    
    This is required for clone3 which passes the TLS value through a
    struct rather than a register.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: linux-xtensa@linux-xtensa.org
    Cc: <stable@vger.kernel.org> # 5.3.x
    Link: https://lore.kernel.org/r/20200102172413.654385-7-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0b6a32ef88530dc2f55adf4a5e8a16453c33b0ff
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Thu Jan 2 18:24:11 2020 +0100

    riscv: Implement copy_thread_tls
    
    commit 20bda4ed62f507ed72e30e817b43c65fdba60be7 upstream.
    
    This is required for clone3 which passes the TLS value through a
    struct rather than a register.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: linux-riscv@lists.infradead.org
    Cc: <stable@vger.kernel.org> # 5.3.x
    Link: https://lore.kernel.org/r/20200102172413.654385-6-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0bdd4e601a9a7b0e80ab30ebcb7bea827b7c9871
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Thu Jan 2 18:24:10 2020 +0100

    parisc: Implement copy_thread_tls
    
    commit d2f36c787b2181561d8b95814f8cdad64b348ad7 upstream.
    
    This is required for clone3 which passes the TLS value through a
    struct rather than a register.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: linux-parisc@vger.kernel.org
    Cc: <stable@vger.kernel.org> # 5.3.x
    Link: https://lore.kernel.org/r/20200102172413.654385-5-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ca7bbad38dd16cdb645a56984730e15f9850e9eb
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Thu Jan 2 18:24:09 2020 +0100

    arm: Implement copy_thread_tls
    
    commit 167ee0b82429cb5df272808c7a21370b7c961ab2 upstream.
    
    This is required for clone3 which passes the TLS value through a
    struct rather than a register.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: <stable@vger.kernel.org> # 5.3.x
    Link: https://lore.kernel.org/r/20200102172413.654385-4-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 472f8a5821acb6c2c869fbc35dc52ed0df90ab0d
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Thu Jan 2 18:24:08 2020 +0100

    arm64: Implement copy_thread_tls
    
    commit a4376f2fbcc8084832f2f114577c8d68234c7903 upstream.
    
    This is required for clone3 which passes the TLS value through a
    struct rather than a register.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: <stable@vger.kernel.org> # 5.3.x
    Acked-by: Will Deacon <will@kernel.org>
    Link: https://lore.kernel.org/r/20200102172413.654385-3-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bac641643c70d1ec4a4146bfc5665a1a51efb2e7
Author: Amanieu d'Antras <amanieu@gmail.com>
Date:   Thu Jan 2 18:24:07 2020 +0100

    arm64: Move __ARCH_WANT_SYS_CLONE3 definition to uapi headers
    
    commit 3e3c8ca5a351350031f0f3d5ecedf7048b1b9008 upstream.
    
    Previously this was only defined in the internal headers which
    resulted in __NR_clone3 not being defined in the user headers.
    
    Signed-off-by: Amanieu d'Antras <amanieu@gmail.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: <stable@vger.kernel.org> # 5.3.x
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20200102172413.654385-2-amanieu@gmail.com
    Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d32d6d2bee55168dc27cda2e401793d0c19dbe21
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Fri Dec 27 17:44:34 2019 +0000

    tty: always relink the port
    
    commit 273f632912f1b24b642ba5b7eb5022e43a72f3b5 upstream.
    
    If the serial device is disconnected and reconnected, it re-enumerates
    properly but does not link it. fwiw, linking means just saving the port
    index, so allow it always as there is no harm in saving the same value
    again even if it tries to relink with the same port.
    
    Fixes: fb2b90014d78 ("tty: link tty and port before configuring it as console")
    Reported-by: Kenneth R. Crudup <kenny@panix.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20191227174434.12057-1-sudipm.mukherjee@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 46e4035d558dfe85d2adf5159cdcd1c1155a3109
Author: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
Date:   Thu Dec 12 13:16:02 2019 +0000

    tty: link tty and port before configuring it as console
    
    commit fb2b90014d782d80d7ebf663e50f96d8c507a73c upstream.
    
    There seems to be a race condition in tty drivers and I could see on
    many boot cycles a NULL pointer dereference as tty_init_dev() tries to
    do 'tty->port->itty = tty' even though tty->port is NULL.
    'tty->port' will be set by the driver and if the driver has not yet done
    it before we open the tty device we can get to this situation. By adding
    some extra debug prints, I noticed that:
    
    6.650130: uart_add_one_port
    6.663849: register_console
    6.664846: tty_open
    6.674391: tty_init_dev
    6.675456: tty_port_link_device
    
    uart_add_one_port() registers the console, as soon as it registers, the
    userspace tries to use it and that leads to tty_open() but
    uart_add_one_port() has not yet done tty_port_link_device() and so
    tty->port is not yet configured when control reaches tty_init_dev().
    
    Further look into the code and tty_port_link_device() is done by
    uart_add_one_port(). After registering the console uart_add_one_port()
    will call tty_port_register_device_attr_serdev() and
    tty_port_link_device() is called from this.
    
    Call add tty_port_link_device() before uart_configure_port() is done and
    add a check in tty_port_link_device() so that it only links the port if
    it has not been done yet.
    
    Suggested-by: Jiri Slaby <jslaby@suse.com>
    Signed-off-by: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20191212131602.29504-1-sudipm.mukherjee@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d12d10211b4cc7b253e26fb9ebd3ae3fa9fb6a00
Author: Patrick Steinhardt <ps@pks.im>
Date:   Fri Dec 27 00:56:18 2019 +0100

    iommu/vt-d: Fix adding non-PCI devices to Intel IOMMU
    
    commit 4a350a0ee5b0a14f826fcdf60dd1a3199cafbfd6 upstream.
    
    Starting with commit fa212a97f3a3 ("iommu/vt-d: Probe DMA-capable ACPI
    name space devices"), we now probe DMA-capable ACPI name
    space devices. On Dell XPS 13 9343, which has an Intel LPSS platform
    device INTL9C60 enumerated via ACPI, this change leads to the following
    warning:
    
        ------------[ cut here ]------------
        WARNING: CPU: 1 PID: 1 at pci_device_group+0x11a/0x130
        CPU: 1 PID: 1 Comm: swapper/0 Tainted: G                T 5.5.0-rc3+ #22
        Hardware name: Dell Inc. XPS 13 9343/0310JH, BIOS A20 06/06/2019
        RIP: 0010:pci_device_group+0x11a/0x130
        Code: f0 ff ff 48 85 c0 49 89 c4 75 c4 48 8d 74 24 10 48 89 ef e8 48 ef ff ff 48 85 c0 49 89 c4 75 af e8 db f7 ff ff 49 89 c4 eb a5 <0f> 0b 49 c7 c4 ea ff ff ff eb 9a e8 96 1e c7 ff 66 0f 1f 44 00 00
        RSP: 0000:ffffc0d6c0043cb0 EFLAGS: 00010202
        RAX: 0000000000000000 RBX: ffffa3d1d43dd810 RCX: 0000000000000000
        RDX: ffffa3d1d4fecf80 RSI: ffffa3d12943dcc0 RDI: ffffa3d1d43dd810
        RBP: ffffa3d1d43dd810 R08: 0000000000000000 R09: ffffa3d1d4c04a80
        R10: ffffa3d1d4c00880 R11: ffffa3d1d44ba000 R12: 0000000000000000
        R13: ffffa3d1d4383b80 R14: ffffa3d1d4c090d0 R15: ffffa3d1d4324530
        FS:  0000000000000000(0000) GS:ffffa3d1d6700000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000000 CR3: 000000000460a001 CR4: 00000000003606e0
        Call Trace:
         ? iommu_group_get_for_dev+0x81/0x1f0
         ? intel_iommu_add_device+0x61/0x170
         ? iommu_probe_device+0x43/0xd0
         ? intel_iommu_init+0x1fa2/0x2235
         ? pci_iommu_init+0x52/0xe7
         ? e820__memblock_setup+0x15c/0x15c
         ? do_one_initcall+0xcc/0x27e
         ? kernel_init_freeable+0x169/0x259
         ? rest_init+0x95/0x95
         ? kernel_init+0x5/0xeb
         ? ret_from_fork+0x35/0x40
        ---[ end trace 28473e7abc25b92c ]---
        DMAR: ACPI name space devices didn't probe correctly
    
    The bug results from the fact that while we now enumerate ACPI devices,
    we aren't able to handle any non-PCI device when generating the device
    group. Fix the issue by implementing an Intel-specific callback that
    returns `pci_device_group` only if the device is a PCI device.
    Otherwise, it will return a generic device group.
    
    Fixes: fa212a97f3a3 ("iommu/vt-d: Probe DMA-capable ACPI name space devices")
    Signed-off-by: Patrick Steinhardt <ps@pks.im>
    Cc: stable@vger.kernel.org # v5.3+
    Acked-by: Lu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d6ac466168aa4b1a6217e4b023d3fe23a8bcafe7
Author: Punit Agrawal <punit1.agrawal@toshiba.co.jp>
Date:   Thu Dec 19 19:03:45 2019 +0900

    serdev: Don't claim unsupported ACPI serial devices
    
    commit c5ee0b3104e0b292d353e63fd31cb8c692645d8c upstream.
    
    Serdev sub-system claims all ACPI serial devices that are not already
    initialised. As a result, no device node is created for serial ports
    on certain boards such as the Apollo Lake based UP2. This has the
    unintended consequence of not being able to raise the login prompt via
    serial connection.
    
    Introduce a blacklist to reject ACPI serial devices that should not be
    claimed by serdev sub-system. Add the peripheral ids for Intel HS UART
    to the blacklist to bring back serial port on SoCs carrying them.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Punit Agrawal <punit1.agrawal@toshiba.co.jp>
    Acked-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Johan Hovold <johan@kernel.org>
    Cc: Rob Herring <robh@kernel.org>
    Link: https://lore.kernel.org/r/20191219100345.911093-1-punit1.agrawal@toshiba.co.jp
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e7fecc2112fad78e1a1912f3714412c912d406ee
Author: Michael Straube <straube.linux@gmail.com>
Date:   Sat Dec 28 15:37:25 2019 +0100

    staging: rtl8188eu: Add device code for TP-Link TL-WN727N v5.21
    
    commit 58dcc5bf4030cab548d5c98cd4cd3632a5444d5a upstream.
    
    This device was added to the stand-alone driver on github.
    Add it to the staging driver as well.
    
    Link: https://github.com/lwfinger/rtl8188eu/commit/b9b537aa25a8
    Signed-off-by: Michael Straube <straube.linux@gmail.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20191228143725.24455-1-straube.linux@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de8757801ef0920b4114c430125b8c02fedbc828
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Fri Dec 20 21:15:24 2019 +0000

    staging: vt6656: limit reg output to block size
    
    commit 69cc1f925e1aa74b96e2ace67e3453a50d091d2f upstream.
    
    vnt_control_out appears to fail when BBREG is greater than 64 writes.
    
    Create new function that will relay an array in no larger than
    the indicated block size.
    
    It appears that this command has always failed but was ignored by
    driver until the introduction of error checking.
    
    Cc: stable <stable@vger.kernel.org> # v5.3+
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/a41f0601-df46-ce6e-ab7c-35e697946e2a@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 42609009ea1f0768f4e065c4cfa76c650c6ea2f3
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Fri Dec 20 21:15:09 2019 +0000

    staging: vt6656: correct return of vnt_init_registers.
    
    commit 7de6155c8968a3342d1bef3f7a2084d31ae6e4be upstream.
    
    The driver standard error returns remove bool false conditions.
    
    Cc: stable <stable@vger.kernel.org> # v5.3+
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/072ec0b3-425f-277e-130c-1e3a116c90d6@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23533ddf9e4f8155e8952e5e2e2635a8488db592
Author: Ian Abbott <abbotti@mev.co.uk>
Date:   Fri Dec 27 17:00:54 2019 +0000

    staging: comedi: adv_pci1710: fix AI channels 16-31 for PCI-1713
    
    commit a9d3a9cedc1330c720e0ddde1978a8e7771da5ab upstream.
    
    The Advantech PCI-1713 has 32 analog input channels, but an incorrect
    bit-mask in the definition of the `PCI171X_MUX_CHANH(x)` and
    PCI171X_MUX_CHANL(x)` macros is causing channels 16 to 31 to be aliases
    of channels 0 to 15.  Change the bit-mask value from 0xf to 0xff to fix
    it.  Note that the channel numbers will have been range checked already,
    so the bit-mask isn't really needed.
    
    Fixes: 92c65e5553ed ("staging: comedi: adv_pci1710: define the mux control register bits")
    Reported-by: Dmytro Fil <monkdaf@gmail.com>
    Cc: <stable@vger.kernel.org> # v4.5+
    Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
    Link: https://lore.kernel.org/r/20191227170054.32051-1-abbotti@mev.co.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 26219c6befa15a79250cf40026918ab9c4ae0200
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Mon Dec 16 10:18:43 2019 -0600

    usb: musb: dma: Correct parameter passed to IRQ handler
    
    commit c80d0f4426c7fdc7efd6ae8d8b021dcfc89b4254 upstream.
    
    The IRQ handler was passed a pointer to a struct dma_controller, but the
    argument was then casted to a pointer to a struct musb_dma_controller.
    
    Fixes: 427c4f333474 ("usb: struct device - replace bus_id with dev_name(), dev_set_name()")
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Tested-by: Artur Rojek <contact@artur-rojek.eu>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Link: https://lore.kernel.org/r/20191216161844.772-2-b-liu@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25eecc1f14754071a61fbbd0ed32d1cf7309e0ab
Author: Paul Cercueil <paul@crapouillou.net>
Date:   Tue Jan 7 09:26:25 2020 -0600

    usb: musb: Disable pullup at init
    
    commit 96a0c12843109e5c4d5eb1e09d915fdd0ce31d25 upstream.
    
    The pullup may be already enabled before the driver is initialized. This
    happens for instance on JZ4740.
    
    It has to be disabled at init time, as we cannot guarantee that a gadget
    driver will be bound to the UDC.
    
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Suggested-by: Bin Liu <b-liu@ti.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Link: https://lore.kernel.org/r/20200107152625.857-3-b-liu@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32199ac31d263eaaebc7139894277ca5e88d22da
Author: Tony Lindgren <tony@atomide.com>
Date:   Tue Jan 7 09:26:24 2020 -0600

    usb: musb: fix idling for suspend after disconnect interrupt
    
    commit 5fbf7a2534703fd71159d3d71504b0ad01b43394 upstream.
    
    When disconnected as USB B-device, suspend interrupt should come before
    diconnect interrupt, because the DP/DM pins are shorter than the
    VBUS/GND pins on the USB connectors. But we sometimes get a suspend
    interrupt after disconnect interrupt. In that case we have devctl set to
    99 with VBUS still valid and musb_pm_runtime_check_session() wrongly
    thinks we have an active session. We have no other interrupts after
    disconnect coming in this case at least with the omap2430 glue.
    
    Let's fix the issue by checking the interrupt status again with
    delayed work for the devctl 99 case. In the suspend after disconnect
    case the devctl session bit has cleared by then and musb can idle.
    For a typical USB B-device connect case we just continue with normal
    interrupts.
    
    Fixes: 467d5c980709 ("usb: musb: Implement session bit based runtime PM for musb-core")
    
    Cc: Merlijn Wajer <merlijn@wizzup.org>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Sebastian Reichel <sre@kernel.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Bin Liu <b-liu@ti.com>
    Link: https://lore.kernel.org/r/20200107152625.857-2-b-liu@ti.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 855e2d927f41febe8af04dc8fb11807ab72165dc
Author: Daniele Palmas <dnlplm@gmail.com>
Date:   Thu Dec 19 11:07:07 2019 +0100

    USB: serial: option: add ZLP support for 0x1bc7/0x9010
    
    commit 2438c3a19dec5e98905fd3ffcc2f24716aceda6b upstream.
    
    Telit FN980 flashing device 0x1bc7/0x9010 requires zero packet
    to be sent if out data size is is equal to the endpoint max size.
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    [ johan: switch operands in conditional ]
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2989d2209f2e639caf824edb711f031491e35ccb
Author: Douglas Gilbert <dgilbert@interlog.com>
Date:   Sun Dec 29 22:35:44 2019 -0500

    USB-PD tcpm: bad warning+size, PPS adapters
    
    commit c215e48e97d232249a33849fc46fc50311043e11 upstream.
    
    Augmented Power Delivery Objects (A)PDO_s are used by USB-C
    PD power adapters to advertize the voltages and currents
    they support. There can be up to 7 PDO_s but before PPS
    (programmable power supply) there were seldom more than 4
    or 5. Recently Samsung released an optional PPS 45 Watt power
    adapter (EP-TA485) that has 7 PDO_s. It is for the Galaxy 10+
    tablet and charges it quicker than the adapter supplied at
    purchase. The EP-TA485 causes an overzealous WARN_ON to soil
    the log plus it miscalculates the number of bytes to read.
    
    So this bug has been there for some time but goes
    undetected for the majority of USB-C PD power adapters on
    the market today that have 6 or less PDO_s. That may soon
    change as more USB-C PD adapters with PPS come to market.
    
    Tested on a EP-TA485 and an older Lenovo PN: SA10M13950
    USB-C 65 Watt adapter (without PPS and has 4 PDO_s) plus
    several other PD power adapters.
    
    Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
    Reviewed-by: Guenter Roeck <linux@roeck-us.net>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20191230033544.1809-1-dgilbert@interlog.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 21e327468ea1adbaeb19ef6cb788e905d045c381
Author: Colin Ian King <colin.king@canonical.com>
Date:   Tue Jan 7 12:39:01 2020 +0000

    usb: ohci-da8xx: ensure error return on variable error is set
    
    commit ba9b40810bb43e6bf73b395012b98633c03f7f59 upstream.
    
    Currently when an error occurs when calling devm_gpiod_get_optional or
    calling gpiod_to_irq it causes an uninitialized error return in variable
    'error' to be returned.  Fix this by ensuring the error variable is set
    from da8xx_ohci->oc_gpio and oc_irq.
    
    Thanks to Dan Carpenter for spotting the uninitialized error in the
    gpiod_to_irq failure case.
    
    Addresses-Coverity: ("Uninitialized scalar variable")
    Fixes: d193abf1c913 ("usb: ohci-da8xx: add vbus and overcurrent gpios")
    Signed-off-by: Colin Ian King <colin.king@canonical.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20200107123901.101190-1-colin.king@canonical.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1fcfe22933bdef1d5c25fdee81adb7abda5dd1a
Author: Peter Chen <peter.chen@nxp.com>
Date:   Fri Dec 27 17:10:04 2019 +0800

    usb: cdns3: should not use the same dev_id for shared interrupt handler
    
    commit af58e1fca9840192f14b6f03c59595d64bff9127 upstream.
    
    Both drd and gadget interrupt handler use the struct cdns3 pointer as
    dev_id, it causes devm_free_irq at cdns3_gadget_exit doesn't free
    gadget's interrupt handler, it freed drd's handler. So, when the
    host interrupt occurs, the gadget's interrupt hanlder is still
    called, and causes below oops. To fix it, we use gadget's private
    data priv_dev as interrupt dev_id for gadget.
    
    Unable to handle kernel NULL pointer dereference at virtual address 0000000000000380
    Mem abort info:
      ESR = 0x96000006
      EC = 0x25: DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
    Data abort info:
      ISV = 0, ISS = 0x00000006
      CM = 0, WnR = 0
    user pgtable: 4k pages, 48-bit VAs, pgdp=0000000971d79000
    [0000000000000380] pgd=0000000971d6f003, pud=0000000971d6e003, pmd=0000000000000000
    Internal error: Oops: 96000006 [#1] PREEMPT SMP
    Modules linked in: mxc_jpeg_encdec crct10dif_ce fsl_imx8_ddr_perf
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.4.0-03486-g69f4e7d9c54a-dirty #254
    Hardware name: Freescale i.MX8QM MEK (DT)
    pstate: 00000085 (nzcv daIf -PAN -UAO)
    pc : cdns3_device_irq_handler+0x1c/0xb8
    lr : __handle_irq_event_percpu+0x78/0x2c0
    sp : ffff800010003e30
    x29: ffff800010003e30 x28: ffff8000129bb000
    x27: ffff8000126e9000 x26: ffff0008f61b5600
    x25: ffff800011fe1018 x24: ffff8000126ea120
    x23: ffff800010003f04 x22: 0000000000000000
    x21: 0000000000000093 x20: ffff0008f61b5600
    x19: ffff0008f5061a80 x18: 0000000000000000
    x17: 0000000000000000 x16: 0000000000000000
    x15: 0000000000000000 x14: 003d090000000000
    x13: 00003d0900000000 x12: 0000000000000000
    x11: 00003d0900000000 x10: 0000000000000040
    x9 : ffff800012708cb8 x8 : ffff800012708cb0
    x7 : ffff0008f7c7a9d0 x6 : 0000000000000000
    x5 : ffff0008f7c7a910 x4 : ffff8008ed359000
    x3 : ffff800010003f40 x2 : 0000000000000000
    x1 : ffff0008f5061a80 x0 : ffff800010161a60
    Call trace:
     cdns3_device_irq_handler+0x1c/0xb8
     __handle_irq_event_percpu+0x78/0x2c0
     handle_irq_event_percpu+0x40/0x98
     handle_irq_event+0x4c/0xd0
     handle_fasteoi_irq+0xbc/0x168
     generic_handle_irq+0x34/0x50
     __handle_domain_irq+0x6c/0xc0
     gic_handle_irq+0xd4/0x174
     el1_irq+0xb8/0x180
     arch_cpu_idle+0x3c/0x230
     default_idle_call+0x38/0x40
     do_idle+0x20c/0x298
     cpu_startup_entry+0x28/0x48
     rest_init+0xdc/0xe8
     arch_call_rest_init+0x14/0x1c
     start_kernel+0x48c/0x4b8
    Code: aa0103f3 aa1e03e0 d503201f f9409662 (f941c040)
    ---[ end trace 091dcf4dee011b0e ]---
    Kernel panic - not syncing: Fatal exception in interrupt
    SMP: stopping secondary CPUs
    Kernel Offset: disabled
    CPU features: 0x0002,2100600c
    Memory Limit: none
    ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
    
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Cc: <stable@vger.kernel.org> #v5.4
    Signed-off-by: Peter Chen <peter.chen@nxp.com>
    Link: https://lore.kernel.org/r/1577437804-18146-1-git-send-email-peter.chen@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b062fb0ca0aa5ddb195133164e6e135bb51a0c79
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Fri Dec 20 21:14:59 2019 +0000

    staging: vt6656: Fix non zero logical return of, usb_control_msg
    
    commit 58c3e681b04dd57c70d0dcb7b69fe52d043ff75a upstream.
    
    Starting with commit 59608cb1de1856
    ("staging: vt6656: clean function's error path in usbpipe.c")
    the usb control functions have returned errors throughout driver
    with only logical variable checking.
    
    However, usb_control_msg return the amount of bytes transferred
    this means that normal operation causes errors.
    
    Correct the return function so only return zero when transfer
    is successful.
    
    Cc: stable <stable@vger.kernel.org> # v5.3+
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/08e88842-6f78-a2e3-a7a0-139fec960b2b@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f2a6955c9b74cf20f471ab8a33b2aa6d257af013
Author: Malcolm Priestley <tvboxspy@gmail.com>
Date:   Fri Dec 20 21:15:59 2019 +0000

    staging: vt6656: set usb_set_intfdata on driver fail.
    
    commit c0bcf9f3f5b661d4ace2a64a79ef661edd2a4dc8 upstream.
    
    intfdata will contain stale pointer when the device is detached after
    failed initialization when referenced in vt6656_disconnect
    
    Provide driver access to it here and NULL it.
    
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com>
    Link: https://lore.kernel.org/r/6de448d7-d833-ef2e-dd7b-3ef9992fee0e@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c617a3b777b92a0e80ceff2dffaae9350d4c3850
Author: Kees Cook <keescook@chromium.org>
Date:   Wed Jan 8 10:06:54 2020 -0800

    pstore/ram: Regularize prz label allocation lifetime
    
    commit e163fdb3f7f8c62dccf194f3f37a7bcb3c333aa8 upstream.
    
    In my attempt to fix a memory leak, I introduced a double-free in the
    pstore error path. Instead of trying to manage the allocation lifetime
    between persistent_ram_new() and its callers, adjust the logic so
    persistent_ram_new() always takes a kstrdup() copy, and leaves the
    caller's allocation lifetime up to the caller. Therefore callers are
    _always_ responsible for freeing their label. Before, it only needed
    freeing when the prz itself failed to allocate, and not in any of the
    other prz failure cases, which callers would have no visibility into,
    which is the root design problem that lead to both the leak and now
    double-free bugs.
    
    Reported-by: Cengiz Can <cengiz@kernel.wtf>
    Link: https://lore.kernel.org/lkml/d4ec59002ede4aaf9928c7f7526da87c@kernel.wtf
    Fixes: 8df955a32a73 ("pstore/ram: Fix error-path memory leak in persistent_ram_new() callers")
    Cc: stable@vger.kernel.org
    Signed-off-by: Kees Cook <keescook@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 85b60d32210ae5c57999b94ff26c0120a47f9fe4
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Jan 5 17:03:57 2020 +0100

    gpiolib: acpi: Add honor_wakeup module-option + quirk mechanism
    
    commit aa23ca3d98f756d5b1e503fb140665fb24a41a38 upstream.
    
    On some laptops enabling wakeup on the GPIO interrupts used for ACPI _AEI
    event handling causes spurious wakeups.
    
    This commit adds a new honor_wakeup option, defaulting to true (our current
    behavior), which can be used to disable wakeup on troublesome hardware
    to avoid these spurious wakeups.
    
    This is a workaround for an architectural problem with s2idle under Linux
    where we do not have any mechanism to immediately go back to sleep after
    wakeup events, other then for embedded-controller events using the standard
    ACPI EC interface, for details see:
    https://lore.kernel.org/linux-acpi/61450f9b-cbc6-0c09-8b3a-aff6bf9a0b3c@redhat.com/
    
    One series of laptops which is not able to suspend without this workaround
    is the HP x2 10 Cherry Trail models, this commit adds a DMI based quirk
    which makes sets honor_wakeup to false on these models.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20200105160357.97154-3-hdegoede@redhat.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d09934c8c3a45085e14cb47328b1fa37a3b260b
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Sun Jan 5 17:03:56 2020 +0100

    gpiolib: acpi: Turn dmi_system_id table into a generic quirk table
    
    commit 1ad1b54099c231aed8f6f257065c1b322583f264 upstream.
    
    Turn the existing run_edge_events_on_boot_blacklist dmi_system_id table
    into a generic quirk table, storing the quirks in the driver_data ptr.
    
    This is a preparation patch for adding other types of (DMI based) quirks.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Mika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20200105160357.97154-2-hdegoede@redhat.com
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a0dbd93fb148764c5ccc099307bba0b68e7fda4d
Author: Oliver Hartkopp <socketcan@hartkopp.net>
Date:   Sat Dec 7 19:34:18 2019 +0100

    can: can_dropped_invalid_skb(): ensure an initialized headroom in outgoing CAN sk_buffs
    
    commit e7153bf70c3496bac00e7e4f395bb8d8394ac0ea upstream.
    
    KMSAN sysbot detected a read access to an untinitialized value in the
    headroom of an outgoing CAN related sk_buff. When using CAN sockets this
    area is filled appropriately - but when using a packet socket this
    initialization is missing.
    
    The problematic read access occurs in the CAN receive path which can
    only be triggered when the sk_buff is sent through a (virtual) CAN
    interface. So we check in the sending path whether we need to perform
    the missing initializations.
    
    Fixes: d3b58c47d330d ("can: replace timestamp as unique skb attribute")
    Reported-by: syzbot+b02ff0707a97e4e79ebb@syzkaller.appspotmail.com
    Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Cc: linux-stable <stable@vger.kernel.org> # >= v4.1
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 584b8299f7250b69396138823b5a94f33016340f
Author: Florian Faber <faber@faberman.de>
Date:   Thu Dec 26 19:51:24 2019 +0100

    can: mscan: mscan_rx_poll(): fix rx path lockup when returning from polling to irq mode
    
    commit 2d77bd61a2927be8f4e00d9478fe6996c47e8d45 upstream.
    
    Under load, the RX side of the mscan driver can get stuck while TX still
    works. Restarting the interface locks up the system. This behaviour
    could be reproduced reliably on a MPC5121e based system.
    
    The patch fixes the return value of the NAPI polling function (should be
    the number of processed packets, not constant 1) and the condition under
    which IRQs are enabled again after polling is finished.
    
    With this patch, no more lockups were observed over a test period of ten
    days.
    
    Fixes: afa17a500a36 ("net/can: add driver for mscan family & mpc52xx_mscan")
    Signed-off-by: Florian Faber <faber@faberman.de>
    Cc: linux-stable <stable@vger.kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1ad3ee211d331cdc60260952c3b3c61ddda4ed64
Author: Sean Nyekjaer <sean@geanix.com>
Date:   Wed Dec 11 14:58:52 2019 +0100

    can: tcan4x5x: tcan4x5x_can_probe(): get the device out of standby before register access
    
    commit 3069ce620daed85e4ef2b0c087dca2509f809470 upstream.
    
    The m_can tries to detect if Non ISO Operation is available while in
    standby mode, this function results in the following error:
    
    | tcan4x5x spi2.0 (unnamed net_device) (uninitialized): Failed to init module
    | tcan4x5x spi2.0: m_can device registered (irq=84, version=32)
    | tcan4x5x spi2.0 can2: TCAN4X5X successfully initialized.
    
    When the tcan device comes out of reset it goes in standby mode. The
    m_can driver tries to access the control register but fails due to the
    device being in standby mode.
    
    So this patch will put the tcan device in normal mode before the m_can
    driver does the initialization.
    
    Fixes: 5443c226ba91 ("can: tcan4x5x: Add tcan4x5x driver to the kernel")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Nyekjaer <sean@geanix.com>
    Acked-by: Dan Murphy <dmurphy@ti.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a05b169456468190549af475076e6d6b630b172a
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Dec 10 12:32:31 2019 +0100

    can: gs_usb: gs_usb_probe(): use descriptors of current altsetting
    
    commit 2f361cd9474ab2c4ab9ac8db20faf81e66c6279b upstream.
    
    Make sure to always use the descriptors of the current alternate setting
    to avoid future issues when accessing fields that may differ between
    settings.
    
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Fixes: d08e973a77d1 ("can: gs_usb: Added support for the GS_USB CAN devices")
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e791b56a298b3d17a880a0d875e2787d17fa0d59
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Dec 10 12:32:30 2019 +0100

    can: kvaser_usb: fix interface sanity check
    
    commit 5660493c637c9d83786f1c9297f403eae44177b6 upstream.
    
    Make sure to use the current alternate setting when verifying the
    interface descriptors to avoid binding to an invalid interface.
    
    Failing to do so could cause the driver to misbehave or trigger a WARN()
    in usb_submit_urb() that kernels with panic_on_warn set would choke on.
    
    Fixes: aec5fb2268b7 ("can: kvaser_usb: Add support for Kvaser USB hydra family")
    Cc: stable <stable@vger.kernel.org>     # 4.19
    Cc: Jimmy Assarsson <extja@kvaser.com>
    Cc: Christer Beskow <chbe@kvaser.com>
    Cc: Nicklas Johansson <extnj@kvaser.com>
    Cc: Martin Henriksson <mh@kvaser.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 578ab7d4d9477c89d494c7beaf815de003290078
Author: Kaike Wan <kaike.wan@intel.com>
Date:   Thu Dec 19 18:19:20 2019 -0500

    IB/hfi1: Adjust flow PSN with the correct resync_psn
    
    commit b2ff0d510182eb5cc05a65d1b2371af62c4b170c upstream.
    
    When a TID RDMA ACK to RESYNC request is received, the flow PSNs for
    pending TID RDMA WRITE segments will be adjusted with the next flow
    generation number, based on the resync_psn value extracted from the flow
    PSN of the TID RDMA ACK packet. The resync_psn value indicates the last
    flow PSN for which a TID RDMA WRITE DATA packet has been received by the
    responder and the requester should resend TID RDMA WRITE DATA packets,
    starting from the next flow PSN.
    
    However, if resync_psn points to the last flow PSN for a segment and the
    next segment flow PSN starts with a new generation number, use of the old
    resync_psn to adjust the flow PSN for the next segment will lead to
    miscalculation, resulting in WARN_ON and sge rewinding errors:
    
      WARNING: CPU: 4 PID: 146961 at /nfs/site/home/phcvs2/gitrepo/ifs-all/components/Drivers/tmp/rpmbuild/BUILD/ifs-kernel-updates-3.10.0_957.el7.x86_64/hfi1/tid_rdma.c:4764 hfi1_rc_rcv_tid_rdma_ack+0x8f6/0xa90 [hfi1]
      Modules linked in: ib_ipoib(OE) hfi1(OE) rdmavt(OE) rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfsv3 nfs_acl nfs lockd grace fscache iTCO_wdt iTCO_vendor_support skx_edac intel_powerclamp coretemp intel_rapl iosf_mbi kvm irqbypass crc32_pclmul ghash_clmulni_intel ib_isert iscsi_target_mod target_core_mod aesni_intel lrw gf128mul glue_helper ablk_helper cryptd rpcrdma sunrpc opa_vnic ast ttm ib_iser libiscsi drm_kms_helper scsi_transport_iscsi ipmi_ssif syscopyarea sysfillrect sysimgblt fb_sys_fops drm joydev ipmi_si pcspkr sg drm_panel_orientation_quirks ipmi_devintf lpc_ich i2c_i801 ipmi_msghandler wmi rdma_ucm ib_ucm ib_uverbs acpi_cpufreq acpi_power_meter ib_umad rdma_cm ib_cm iw_cm ip_tables ext4 mbcache jbd2 sd_mod crc_t10dif crct10dif_generic crct10dif_pclmul i2c_algo_bit crct10dif_common
       crc32c_intel e1000e ib_core ahci libahci ptp libata pps_core nfit libnvdimm [last unloaded: rdmavt]
      CPU: 4 PID: 146961 Comm: kworker/4:0H Kdump: loaded Tainted: G        W  OE  ------------   3.10.0-957.el7.x86_64 #1
      Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.0X.02.0117.040420182310 04/04/2018
      Workqueue: hfi0_0 _hfi1_do_tid_send [hfi1]
      Call Trace:
       <IRQ>  [<ffffffff9e361dc1>] dump_stack+0x19/0x1b
       [<ffffffff9dc97648>] __warn+0xd8/0x100
       [<ffffffff9dc9778d>] warn_slowpath_null+0x1d/0x20
       [<ffffffffc05d28c6>] hfi1_rc_rcv_tid_rdma_ack+0x8f6/0xa90 [hfi1]
       [<ffffffffc05c21cc>] hfi1_kdeth_eager_rcv+0x1dc/0x210 [hfi1]
       [<ffffffffc05c23ef>] ? hfi1_kdeth_expected_rcv+0x1ef/0x210 [hfi1]
       [<ffffffffc0574f15>] kdeth_process_eager+0x35/0x90 [hfi1]
       [<ffffffffc0575b5a>] handle_receive_interrupt_nodma_rtail+0x17a/0x2b0 [hfi1]
       [<ffffffffc056a623>] receive_context_interrupt+0x23/0x40 [hfi1]
       [<ffffffff9dd4a294>] __handle_irq_event_percpu+0x44/0x1c0
       [<ffffffff9dd4a442>] handle_irq_event_percpu+0x32/0x80
       [<ffffffff9dd4a4cc>] handle_irq_event+0x3c/0x60
       [<ffffffff9dd4d27f>] handle_edge_irq+0x7f/0x150
       [<ffffffff9dc2e554>] handle_irq+0xe4/0x1a0
       [<ffffffff9e3795dd>] do_IRQ+0x4d/0xf0
       [<ffffffff9e36b362>] common_interrupt+0x162/0x162
       <EOI>  [<ffffffff9dfa0f79>] ? swiotlb_map_page+0x49/0x150
       [<ffffffffc05c2ed1>] hfi1_verbs_send_dma+0x291/0xb70 [hfi1]
       [<ffffffffc05c2c40>] ? hfi1_wait_kmem+0xf0/0xf0 [hfi1]
       [<ffffffffc05c3f26>] hfi1_verbs_send+0x126/0x2b0 [hfi1]
       [<ffffffffc05ce683>] _hfi1_do_tid_send+0x1d3/0x320 [hfi1]
       [<ffffffff9dcb9d4f>] process_one_work+0x17f/0x440
       [<ffffffff9dcbade6>] worker_thread+0x126/0x3c0
       [<ffffffff9dcbacc0>] ? manage_workers.isra.25+0x2a0/0x2a0
       [<ffffffff9dcc1c31>] kthread+0xd1/0xe0
       [<ffffffff9dcc1b60>] ? insert_kthread_work+0x40/0x40
       [<ffffffff9e374c1d>] ret_from_fork_nospec_begin+0x7/0x21
       [<ffffffff9dcc1b60>] ? insert_kthread_work+0x40/0x40
    
    This patch fixes the issue by adjusting the resync_psn first if the flow
    generation has been advanced for a pending segment.
    
    Fixes: 9e93e967f7b4 ("IB/hfi1: Add a function to receive TID RDMA ACK packet")
    Link: https://lore.kernel.org/r/20191219231920.51069.37147.stgit@awfm-01.aw.intel.com
    Cc: <stable@vger.kernel.org>
    Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Signed-off-by: Kaike Wan <kaike.wan@intel.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e1a17ea063a8bf0d735dbd477694857a1b3f4690
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Jan 6 12:39:21 2020 +0000

    drm/i915/gt: Mark up virtual engine uabi_instance
    
    commit 1325008f5c8dbc84aa835d98af8447fa0569bc4d upstream.
    
    Be sure to initialise the uabi_instance on the virtual engine to the
    special invalid value, just in case we ever peek at it from the uAPI.
    
    Reported-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Fixes: 750e76b4f9f6 ("drm/i915/gt: Move the [class][inst] lookup for engines onto the GT")
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Cc: <stable@vger.kernel.org> # v5.4+
    Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200106123921.2543886-1-chris@chris-wilson.co.uk
    (cherry picked from commit f75fc37b5e70b75f21550410f88e2379648120e2)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 843f6795576ee240e05f53ffbf2353d677268d4b
Author: Matt Roper <matthew.d.roper@intel.com>
Date:   Tue Dec 31 11:07:13 2019 -0800

    drm/i915: Add Wa_1407352427:icl,ehl
    
    commit 25b79ad51bf04a8aa67b5bccd631fc05f963b8e0 upstream.
    
    The workaround database now indicates we need to disable psdunit clock
    gating as well.
    
    v3:
     - Rebase on top of other workarounds that have landed.
     - Restrict cc:stable tag to 5.2+ since that's when ICL was first
       officially supported.
    
    Bspec: 32354
    Bspec: 33450
    Bspec: 33451
    Suggested-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: stable@vger.kernel.org # v5.2+
    Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: Matt Atwood <matthew.s.atwood@intel.com>
    Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
    Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191231190713.1549533-1-matthew.d.roper@intel.com
    (cherry picked from commit 1cd21a7c5679015352e8a6f46813aced51d71bb8)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 59aa28fcf770605911f176a0715fe4c840e84f8a
Author: Wayne Lin <Wayne.Lin@amd.com>
Date:   Fri Jan 3 13:50:01 2020 +0800

    drm/dp_mst: correct the shifting in DP_REMOTE_I2C_READ
    
    commit c4e4fccc5d52d881afaac11d3353265ef4eccb8b upstream.
    
    [Why]
    According to DP spec, it should shift left 4 digits for NO_STOP_BIT
    in REMOTE_I2C_READ message. Not 5 digits.
    
    In current code, NO_STOP_BIT is always set to zero which means I2C
    master is always generating a I2C stop at the end of each I2C write
    transaction while handling REMOTE_I2C_READ sideband message. This issue
    might have the generated I2C signal not meeting the requirement. Take
    random read in I2C for instance, I2C master should generate a repeat
    start to start to read data after writing the read address. This issue
    will cause the I2C master to generate a stop-start rather than a
    re-start which is not expected in I2C random read.
    
    [How]
    Correct the shifting value of NO_STOP_BIT for DP_REMOTE_I2C_READ case in
    drm_dp_encode_sideband_req().
    
    Changes since v1:(https://patchwork.kernel.org/patch/11312667/)
    * Add more descriptions in commit and cc to stable
    
    Fixes: ad7f8a1f9ced ("drm/helper: add Displayport multi-stream helper (v0.6)")
    Reviewed-by: Harry Wentland <harry.wentland@amd.com>
    Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Lyude Paul <lyude@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200103055001.10287-1-Wayne.Lin@amd.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03eb90320651d91c62f69116b604d6834242fb8f
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Mon Dec 30 14:27:34 2019 +0100

    drm/fb-helper: Round up bits_per_pixel if possible
    
    commit f30e27779d3031a092c2a177b7fb76adccc45241 upstream.
    
    When userspace requests a video mode parameter value that is not
    supported, frame buffer device drivers should round it up to a supported
    value, if possible, instead of just rejecting it.  This allows
    applications to quickly scan for supported video modes.
    
    Currently this rule is not followed for the number of bits per pixel,
    causing e.g. "fbset -depth N" to fail, if N is smaller than the current
    number of bits per pixel.
    
    Fix this by returning an error only if bits per pixel is too large, and
    setting it to the current value otherwise.
    
    See also Documentation/fb/framebuffer.rst, Section 2 (Programmer's View
    of /dev/fb*").
    
    Fixes: 865afb11949e5bf4 ("drm/fb-helper: reject any changes to the fbdev")
    Cc: stable@vger.kernel.org
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191230132734.4538-1-geert+renesas@glider.be
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c001b900caa6ddafd5becf09fef7614141cf583e
Author: Chen-Yu Tsai <wens@csie.org>
Date:   Tue Jan 7 15:01:13 2020 +0800

    drm/sun4i: tcon: Set RGB DCLK min. divider based on hardware model
    
    commit 4396393fb96449c56423fb4b351f76e45a6bcaf6 upstream.
    
    In commit 0b8e7bbde5e7 ("drm/sun4i: tcon: Set min division of TCON0_DCLK
    to 1.") it was assumed that all TCON variants support a minimum divider
    of 1 if only DCLK was used.
    
    However, the oldest generation of hardware only supports minimum divider
    of 4 if only DCLK is used. If a divider of 1 was used on this old
    hardware, some scrolling artifact would appear. A divider of 2 seemed
    OK, but a divider of 3 had artifacts as well.
    
    Set the minimum divider when outputing to parallel RGB based on the
    hardware model, with a minimum of 4 for the oldest (A10/A10s/A13/A20)
    hardware, and a minimum of 1 for the rest. A value is not set for the
    TCON variants lacking channel 0.
    
    This fixes the scrolling artifacts seen on my A13 tablet.
    
    Fixes: 0b8e7bbde5e7 ("drm/sun4i: tcon: Set min division of TCON0_DCLK to 1.")
    Cc: <stable@vger.kernel.org> # 5.4.x
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20200107070113.28951-1-wens@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 825fb807747b5f19e30e8c8fcd08e065fb609ddd
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Mon Jan 6 15:24:47 2020 -0500

    Revert "drm/amdgpu: Set no-retry as default."
    
    commit 7aec9ec1cf324d5c5a8d17b9c78a34c388e5f17b upstream.
    
    This reverts commit 51bfac71cade386966791a8db87a5912781d249f.
    
    This causes stability issues on some raven boards.  Revert
    for now until a proper fix is completed.
    
    Bug: https://gitlab.freedesktop.org/drm/amd/issues/934
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=206017
    Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4f1fa1164ddfd339d961c9ff563e11f77e6bd514
Author: Matt Roper <matthew.d.roper@intel.com>
Date:   Mon Dec 23 17:20:25 2019 -0800

    drm/i915: Add Wa_1408615072 and Wa_1407596294 to icl,ehl
    
    commit a7f3ad37f80d0d5eec9dad156964c0dac800a80e upstream.
    
    Workaround database indicates we should disable clock gating of both the
    vsunit and hsunit.
    
    Bspec: 33450
    Bspec: 33451
    Cc: stable@kernel.vger.org
    Cc: Lucas De Marchi <lucas.demarchi@intel.com>
    Cc: Matt Atwood <matthew.s.atwood@intel.com>
    Cc: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
    Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20191224012026.3157766-3-matthew.d.roper@intel.com
    Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
    (cherry picked from commit b9cf9dac3dac4c1d2a47d34f30ec53c0423cecf8)
    Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 854ac5dee5be03a280faf1a4f7907b4e9a4b3be1
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Fri Dec 13 14:06:58 2019 -0800

    Input: input_event - fix struct padding on sparc64
    
    commit f729a1b0f8df7091cea3729fc0e414f5326e1163 upstream.
    
    Going through all uses of timeval, I noticed that we screwed up
    input_event in the previous attempts to fix it:
    
    The time fields now match between kernel and user space, but all following
    fields are in the wrong place.
    
    Add the required padding that is implied by the glibc timeval definition
    to fix the layout, and use a struct initializer to avoid leaking kernel
    stack data.
    
    Fixes: 141e5dcaa735 ("Input: input_event - fix the CONFIG_SPARC64 mixup")
    Fixes: 2e746942ebac ("Input: input_event - provide override for sparc64")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Link: https://lore.kernel.org/r/20191213204936.3643476-2-arnd@arndb.de
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39f711b69799c49e0e385494b9b8c0787f51293f
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Fri Dec 13 14:56:16 2019 -0800

    Input: add safety guards to input_set_keycode()
    
    commit cb222aed03d798fc074be55e59d9a112338ee784 upstream.
    
    If we happen to have a garbage in input device's keycode table with values
    too big we'll end up doing clear_bit() with offset way outside of our
    bitmaps, damaging other objects within an input device or even outside of
    it. Let's add sanity checks to the returned old keycodes.
    
    Reported-by: syzbot+c769968809f9359b07aa@syzkaller.appspotmail.com
    Reported-by: syzbot+76f3a30e88d256644c78@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20191207212757.GA245964@dtor-ws
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4091fbf6cc143c8ccd8275eaa642b2f2afe7c4ab
Author: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date:   Sat Dec 7 13:05:18 2019 -0800

    HID: hid-input: clear unmapped usages
    
    commit 4f3882177240a1f55e45a3d241d3121341bead78 upstream.
    
    We should not be leaving half-mapped usages with potentially invalid
    keycodes, as that may confuse hidinput_find_key() when the key is located
    by index, which may end up feeding way too large keycode into the VT
    keyboard handler and cause OOB write there:
    
    BUG: KASAN: global-out-of-bounds in clear_bit include/asm-generic/bitops-instrumented.h:56 [inline]
    BUG: KASAN: global-out-of-bounds in kbd_keycode drivers/tty/vt/keyboard.c:1411 [inline]
    BUG: KASAN: global-out-of-bounds in kbd_event+0xe6b/0x3790 drivers/tty/vt/keyboard.c:1495
    Write of size 8 at addr ffffffff89a1b2d8 by task syz-executor108/1722
    ...
     kbd_keycode drivers/tty/vt/keyboard.c:1411 [inline]
     kbd_event+0xe6b/0x3790 drivers/tty/vt/keyboard.c:1495
     input_to_handler+0x3b6/0x4c0 drivers/input/input.c:118
     input_pass_values.part.0+0x2e3/0x720 drivers/input/input.c:145
     input_pass_values drivers/input/input.c:949 [inline]
     input_set_keycode+0x290/0x320 drivers/input/input.c:954
     evdev_handle_set_keycode_v2+0xc4/0x120 drivers/input/evdev.c:882
     evdev_do_ioctl drivers/input/evdev.c:1150 [inline]
    
    Cc: stable@vger.kernel.org
    Reported-by: syzbot+19340dff067c2d3835c0@syzkaller.appspotmail.com
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
    Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e38d7bb30cbe8f9070607a424bb25f27c3cf3d35
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Wed Dec 4 03:37:13 2019 +0100

    HID: hidraw: Fix returning EPOLLOUT from hidraw_poll
    
    commit 9f3b61dc1dd7b81e99e7ed23776bb64a35f39e1a upstream.
    
    When polling a connected /dev/hidrawX device, it is useful to get the
    EPOLLOUT when writing is possible. Since writing is possible as soon as
    the device is connected, always return it.
    
    Right now EPOLLOUT is only returned when there are also input reports
    are available. This works if devices start sending reports when
    connected, but some HID devices might need an output report first before
    sending any input reports. This change will allow using EPOLLOUT here as
    well.
    
    Fixes: 378b80370aa1 ("hidraw: Return EPOLLOUT from hidraw_poll")
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 566dbc0db3fc58335df35336083feb44649051a3
Author: Marcel Holtmann <marcel@holtmann.org>
Date:   Wed Dec 4 03:43:55 2019 +0100

    HID: uhid: Fix returning EPOLLOUT from uhid_char_poll
    
    commit be54e7461ffdc5809b67d2aeefc1ddc9a91470c7 upstream.
    
    Always return EPOLLOUT from uhid_char_poll to allow polling /dev/uhid
    for writable state.
    
    Fixes: 1f9dec1e0164 ("HID: uhid: allow poll()'ing on uhid devices")
    Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2cc7eb656286e761fec47eccccacc953db6e0cff
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Tue Dec 10 16:26:11 2019 -0500

    HID: Fix slab-out-of-bounds read in hid_field_extract
    
    commit 8ec321e96e056de84022c032ffea253431a83c3c upstream.
    
    The syzbot fuzzer found a slab-out-of-bounds bug in the HID report
    handler.  The bug was caused by a report descriptor which included a
    field with size 12 bits and count 4899, for a total size of 7349
    bytes.
    
    The usbhid driver uses at most a single-page 4-KB buffer for reports.
    In the test there wasn't any problem about overflowing the buffer,
    since only one byte was received from the device.  Rather, the bug
    occurred when the HID core tried to extract the data from the report
    fields, which caused it to try reading data beyond the end of the
    allocated buffer.
    
    This patch fixes the problem by rejecting any report whose total
    length exceeds the HID_MAX_BUFFER_SIZE limit (minus one byte to allow
    for a possible report index).  In theory a device could have a report
    longer than that, but if there was such a thing we wouldn't handle it
    correctly anyway.
    
    Reported-and-tested-by: syzbot+09ef48aa58261464b621@syzkaller.appspotmail.com
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    CC: <stable@vger.kernel.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5270a752defa4d71e4a3ca7e2a1026e9806340e4
Author: Joel Fernandes (Google) <joel@joelfernandes.org>
Date:   Thu Jan 2 14:46:25 2020 -0500

    tracing: Change offset type to s32 in preempt/irq tracepoints
    
    commit bf44f488e168368cae4139b4b33c3d0aaa11679c upstream.
    
    Discussion in the below link reported that symbols in modules can appear
    to be before _stext on ARM architecture, causing wrapping with the
    offsets of this tracepoint. Change the offset type to s32 to fix this.
    
    Link: http://lore.kernel.org/r/20191127154428.191095-1-antonio.borneo@st.com
    Link: http://lkml.kernel.org/r/20200102194625.226436-1-joel@joelfernandes.org
    
    Cc: Bjorn Helgaas <bhelgaas@google.com>
    Cc: David Sterba <dsterba@suse.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Mike Rapoport <rppt@linux.ibm.com>
    Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
    Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
    Cc: Antonio Borneo <antonio.borneo@st.com>
    Cc: stable@vger.kernel.org
    Fixes: d59158162e032 ("tracing: Add support for preempt and irq enable/disable events")
    Signed-off-by: Joel Fernandes (Google) <joel@joelfernandes.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 907062a7503a64b1d48df4bf4d3cde9c4d58a267
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Thu Jan 2 22:02:41 2020 -0500

    tracing: Have stack tracer compile when MCOUNT_INSN_SIZE is not defined
    
    commit b8299d362d0837ae39e87e9019ebe6b736e0f035 upstream.
    
    On some archs with some configurations, MCOUNT_INSN_SIZE is not defined, and
    this makes the stack tracer fail to compile. Just define it to zero in this
    case.
    
    Link: https://lore.kernel.org/r/202001020219.zvE3vsty%lkp@intel.com
    
    Cc: stable@vger.kernel.org
    Fixes: 4df297129f622 ("tracing: Remove most or all of stack tracer stack size from stack_max_size")
    Reported-by: kbuild test robot <lkp@intel.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 654eced27a13c5b45af9ea9ca7e4626bb050eb68
Author: Kaitao Cheng <pilgrimtao@gmail.com>
Date:   Tue Dec 31 05:35:30 2019 -0800

    kernel/trace: Fix do not unregister tracepoints when register sched_migrate_task fail
    
    commit 50f9ad607ea891a9308e67b81f774c71736d1098 upstream.
    
    In the function, if register_trace_sched_migrate_task() returns error,
    sched_switch/sched_wakeup_new/sched_wakeup won't unregister. That is
    why fail_deprobe_sched_switch was added.
    
    Link: http://lkml.kernel.org/r/20191231133530.2794-1-pilgrimtao@gmail.com
    
    Cc: stable@vger.kernel.org
    Fixes: 478142c39c8c2 ("tracing: do not grab lock in wakeup latency function tracing")
    Signed-off-by: Kaitao Cheng <pilgrimtao@gmail.com>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cfa719c2cc5989d81ffeb5994005b5a18e89a75c
Author: Chen-Yu Tsai <wens@csie.org>
Date:   Thu Dec 5 16:50:54 2019 +0800

    rtc: sun6i: Add support for RTC clocks on R40
    
    commit 111bf02b8f544f98de53ea1f912ae01f598b161b upstream.
    
    When support for the R40 in the rtc-sun6i driver was split out for a
    separate compatible string, only the RTC half was covered, and not the
    clock half. Unfortunately this results in the whole driver not working,
    as the RTC half expects the clock half to have been initialized.
    
    Add support for the clock part as well. The clock part is like the H3,
    but does not need to export the internal oscillator, nor does it have
    a gateable LOSC external output.
    
    This fixes issues with WiFi and Bluetooth not working on the BPI M2U.
    
    Fixes: d6624cc75021 ("rtc: sun6i: Add R40 compatible")
    Cc: <stable@vger.kernel.org> # 5.3.x
    Signed-off-by: Chen-Yu Tsai <wens@csie.org>
    Acked-by: Maxime Ripard <mripard@kernel.org>
    Link: https://lore.kernel.org/r/20191205085054.6049-1-wens@kernel.org
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 18c395532370dc30d4abe526d77a58c2372add2b
Author: Tadeusz Struk <tadeusz.struk@intel.com>
Date:   Tue Jan 7 14:04:48 2020 -0800

    tpm: Handle negative priv->response_len in tpm_common_read()
    
    commit a430e67d9a2c62a8c7b315b99e74de02018d0a96 upstream.
    
    The priv->response_length can hold the size of an response or an negative
    error code, and the tpm_common_read() needs to handle both cases correctly.
    Changed the type of response_length to signed and accounted for negative
    value in tpm_common_read().
    
    Cc: stable@vger.kernel.org
    Fixes: d23d12484307 ("tpm: fix invalid locking in NONBLOCKING mode")
    Reported-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
    Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e1a0a118abe853cd9217368a551f53a0cdff15b
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Tue Nov 26 08:17:53 2019 -0500

    tpm: Revert "tpm_tis_core: Turn on the TPM before probing IRQ's"
    
    commit aa4a63dd981682b1742baa01237036e48bc11923 upstream.
    
    There has been a bunch of reports (one from kernel bugzilla linked)
    reporting that when this commit is applied it causes on some machines
    boot freezes.
    
    Unfortunately hardware where this commit causes a failure is not widely
    available (only one I'm aware is Lenovo T490), which means we cannot
    predict yet how long it will take to properly fix tpm_tis interrupt
    probing.
    
    Thus, the least worst short term action is to revert the code to the
    state before this commit. In long term we need fix the tpm_tis probing
    code to work on machines that Stefan's fix was supposed to fix.
    
    Fixes: 21df4a8b6018 ("tpm_tis: reserve chip for duration of tpm_tis_core_init")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=205935
    Cc: stable@vger.kernel.org
    Cc: Jerry Snitselaar <jsnitsel@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Xiaoping Zhou <xiaoping.zhou@intel.com>
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Reported-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 495e9443cab9db3b8d51e837923f8170b3085c71
Author: Stefan Berger <stefanb@linux.ibm.com>
Date:   Tue Nov 26 08:17:52 2019 -0500

    tpm: Revert "tpm_tis_core: Set TPM_CHIP_FLAG_IRQ before probing for interrupts"
    
    commit dda8b2af395b2ed508e2ef314ae32e122841b447 upstream.
    
    There has been a bunch of reports (one from kernel bugzilla linked)
    reporting that when this commit is applied it causes on some machines
    boot freezes.
    
    Unfortunately hardware where this commit causes a failure is not widely
    available (only one I'm aware is Lenovo T490), which means we cannot
    predict yet how long it will take to properly fix tpm_tis interrupt
    probing.
    
    Thus, the least worst short term action is to revert the code to the
    state before this commit. In long term we need fix the tpm_tis probing
    code to work on machines that Stefan's fix was supposed to fix.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=205935
    Fixes: 1ea32c83c699 ("tpm_tis_core: Set TPM_CHIP_FLAG_IRQ before probing for interrupts")
    Cc: stable@vger.kernel.org
    Cc: Jerry Snitselaar <jsnitsel@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Xiaoping Zhou <xiaoping.zhou@intel.com>
    Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
    Reported-by: Jerry Snitselaar <jsnitsel@redhat.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6de025ef5840dff4ddb6e9043ae6ca3d1b95c1cd
Author: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date:   Tue Dec 31 01:19:59 2019 +0200

    tpm: Revert "tpm_tis: reserve chip for duration of tpm_tis_core_init"
    
    commit 9550f210492c6f88415709002f42a9d15c0e6231 upstream.
    
    Revert a commit, which was included in Linux v5.5-rc3 because it did not
    properly fix the issues it was supposed to fix.
    
    Fixes: 21df4a8b6018 ("tpm_tis: reserve chip for duration of tpm_tis_core_init")
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=205935
    Cc: stable@vger.kernel.org
    Cc: Jerry Snitselaar <jsnitsel@redhat.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Dan Williams <dan.j.williams@intel.com>
    Tested-by: Xiaoping Zhou <xiaoping.zhou@intel.com>
    Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 86353aa70ed085f1b8ef9dae45491d5beb0728dd
Author: Kailang Yang <kailang@realtek.com>
Date:   Wed Jan 8 16:47:56 2020 +0800

    ALSA: hda/realtek - Add quirk for the bass speaker on Lenovo Yoga X1 7th gen
    
    commit 54a6a7dc107da0492a9e84fd7e9a107b3c58138d upstream.
    
    Add quirk to ALC285_FIXUP_SPEAKER2_TO_DAC1, which is the same fixup
    applied for X1 Carbon 7th gen in commit d2cd795c4ece ("ALSA: hda -
    fixup for the bass speaker on Lenovo Carbon X1 7th gen").
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Reviewed-by: Jaroslav Kysela <perex@perex.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 69ec8c0e3377f2f94ae160377fad585fbd062caf
Author: Kailang Yang <kailang@realtek.com>
Date:   Tue Jan 7 17:22:19 2020 +0800

    ALSA: hda/realtek - Set EAPD control to default for ALC222
    
    commit 9194a1ebbc56d7006835e2b4cacad301201fb832 upstream.
    
    Set EAPD control to verb control.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b25acd7045df332edd142efbad9594eb18d91e6d
Author: Kailang Yang <kailang@realtek.com>
Date:   Fri Jan 3 16:24:06 2020 +0800

    ALSA: hda/realtek - Add new codec supported for ALCS1200A
    
    commit 6d9ffcff646bbd0ede6c2a59f4cd28414ecec6e0 upstream.
    
    Add ALCS1200A supported.
    It was similar as ALC900.
    
    Signed-off-by: Kailang Yang <kailang@realtek.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/a9bd3cdaa02d4fa197623448d5c51e50@realtek.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d496377685e3e8a2fd32cf6567aab99a30585b46
Author: Takashi Iwai <tiwai@suse.de>
Date:   Sat Jan 4 12:09:36 2020 +0100

    ALSA: usb-audio: Apply the sample rate quirk for Bose Companion 5
    
    commit 51d4efab7865e6ea6a4ebcd25b3f03c019515c4c upstream.
    
    Bose Companion 5 (with USB ID 05a7:1020) doesn't seem supporting
    reading back the sample rate, so the existing quirk is needed.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206063
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200104110936.14288-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5c477d904eb179cbaf82b9e263b011f65ee249b
Author: Guenter Roeck <linux@roeck-us.net>
Date:   Thu Dec 26 07:57:54 2019 -0800

    usb: chipidea: host: Disable port power only if previously enabled
    
    commit c1ffba305dbcf3fb9ca969c20a97acbddc38f8e9 upstream.
    
    On shutdown, ehci_power_off() is called unconditionally to power off
    each port, even if it was never called to power on the port.
    For chipidea, this results in a call to ehci_ci_portpower() with a request
    to power off ports even if the port was never powered on.
    This results in the following warning from the regulator code.
    
    WARNING: CPU: 0 PID: 182 at drivers/regulator/core.c:2596 _regulator_disable+0x1a8/0x210
    unbalanced disables for usb_otg2_vbus
    Modules linked in:
    CPU: 0 PID: 182 Comm: init Not tainted 5.4.6 #1
    Hardware name: Freescale i.MX7 Dual (Device Tree)
    [<c0313658>] (unwind_backtrace) from [<c030d698>] (show_stack+0x10/0x14)
    [<c030d698>] (show_stack) from [<c1133afc>] (dump_stack+0xe0/0x10c)
    [<c1133afc>] (dump_stack) from [<c0349098>] (__warn+0xf4/0x10c)
    [<c0349098>] (__warn) from [<c0349128>] (warn_slowpath_fmt+0x78/0xbc)
    [<c0349128>] (warn_slowpath_fmt) from [<c09f36ac>] (_regulator_disable+0x1a8/0x210)
    [<c09f36ac>] (_regulator_disable) from [<c09f374c>] (regulator_disable+0x38/0xe8)
    [<c09f374c>] (regulator_disable) from [<c0df7bac>] (ehci_ci_portpower+0x38/0xdc)
    [<c0df7bac>] (ehci_ci_portpower) from [<c0db4fa4>] (ehci_port_power+0x50/0xa4)
    [<c0db4fa4>] (ehci_port_power) from [<c0db5420>] (ehci_silence_controller+0x5c/0xc4)
    [<c0db5420>] (ehci_silence_controller) from [<c0db7644>] (ehci_stop+0x3c/0xcc)
    [<c0db7644>] (ehci_stop) from [<c0d5bdc4>] (usb_remove_hcd+0xe0/0x19c)
    [<c0d5bdc4>] (usb_remove_hcd) from [<c0df7638>] (host_stop+0x38/0xa8)
    [<c0df7638>] (host_stop) from [<c0df2f34>] (ci_hdrc_remove+0x44/0xe4)
    ...
    
    Keeping track of the power enable state avoids the warning and traceback.
    
    Fixes: c8679a2fb8dec ("usb: chipidea: host: add portpower override")
    Cc: Michael Grzeschik <m.grzeschik@pengutronix.de>
    Cc: Peter Chen <peter.chen@freescale.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Peter Chen <peter.chen@nxp.com>
    Link: https://lore.kernel.org/r/20191226155754.25451-1-linux@roeck-us.net
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7ce45829cbfff0c4fc082d05823dac8cd241fdf
Author: Harry Pan <harry.pan@intel.com>
Date:   Mon Dec 30 22:36:56 2019 +0800

    powercap: intel_rapl: add NULL pointer check to rapl_mmio_cpu_online()
    
    commit 3aa3c5882e4fb2274448908aaed605a3ed7dd15d upstream.
    
    RAPL MMIO support depends on the RAPL common driver.  During CPU
    initialization rapl_mmio_cpu_online() is called via CPU hotplug
    to initialize the MMIO RAPL for the new CPU, but if that CPU is
    not present in the common RAPL driver's support list, rapl_defaults
    is NULL and the kernel crashes on an attempt to dereference it:
    
    [    4.188566] BUG: kernel NULL pointer dereference, address: 0000000000000020
    ...snip...
    [    4.189555] RIP: 0010:rapl_add_package+0x223/0x574
    [    4.189555] Code: b5 a0 31 c0 49 8b 4d 78 48 01 d9 48 8b 0c c1 49 89 4c c6 10 48 ff c0 48 83 f8 05 75 e7 49 83 ff 03 75 15 48 8b 05 09 bc 18 01 <8b> 70 20 41 89 b6 0c 05 00 00 85 f6 75 1a 49 81 c6 18 9
    [    4.189555] RSP: 0000:ffffb3adc00b3d90 EFLAGS: 00010246
    [    4.189555] RAX: 0000000000000000 RBX: 0000000000000098 RCX: 0000000000000000
    [    4.267161] usb 1-1: New USB device found, idVendor=2109, idProduct=2812, bcdDevice= b.e0
    [    4.189555] RDX: 0000000000001000 RSI: 0000000000000000 RDI: ffff9340caafd000
    [    4.189555] RBP: ffffb3adc00b3df8 R08: ffffffffa0246e28 R09: ffff9340caafc000
    [    4.189555] R10: 000000000000024a R11: ffffffff9ff1f6f2 R12: 00000000ffffffed
    [    4.189555] R13: ffff9340caa94800 R14: ffff9340caafc518 R15: 0000000000000003
    [    4.189555] FS:  0000000000000000(0000) GS:ffff9340ce200000(0000) knlGS:0000000000000000
    [    4.189555] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [    4.189555] CR2: 0000000000000020 CR3: 0000000302c14001 CR4: 00000000003606f0
    [    4.189555] Call Trace:
    [    4.189555]  ? __switch_to_asm+0x40/0x70
    [    4.189555]  rapl_mmio_cpu_online+0x47/0x64
    [    4.189555]  ? rapl_mmio_write_raw+0x33/0x33
    [    4.281059] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [    4.189555]  cpuhp_invoke_callback+0x29f/0x66f
    [    4.189555]  ? __schedule+0x46d/0x6a0
    [    4.189555]  cpuhp_thread_fun+0xb9/0x11c
    [    4.189555]  smpboot_thread_fn+0x17d/0x22f
    [    4.297006] usb 1-1: Product: USB2.0 Hub
    [    4.189555]  ? cpu_report_death+0x43/0x43
    [    4.189555]  kthread+0x137/0x13f
    [    4.189555]  ? cpu_report_death+0x43/0x43
    [    4.189555]  ? kthread_blkcg+0x2e/0x2e
    [    4.312951] usb 1-1: Manufacturer: VIA Labs, Inc.
    [    4.189555]  ret_from_fork+0x1f/0x40
    [    4.189555] Modules linked in:
    [    4.189555] CR2: 0000000000000020
    [    4.189555] ---[ end trace 01bb812aabc791f4 ]---
    
    To avoid that problem, check rapl_defaults NULL upfront and return an
    error code if it is NULL.  [Note that it does not make sense to even
    try to allocate memory in that case, because it is not going to be
    used anyway.]
    
    Fixes: 555c45fe0d04 ("int340X/processor_thermal_device: add support for MMIO RAPL")
    Cc: 5.3+ <stable@vger.kernel.org> # 5.3+
    Signed-off-by: Harry Pan <harry.pan@intel.com>
    [ rjw: Subject & changelog ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d7e2f25a0fde3e216a97e90b6556adf0d7d3eca
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Sun Dec 15 16:39:05 2019 +0000

    i2c: fix bus recovery stop mode timing
    
    commit cf8ce8b80f8bf9669f6ec4e71e16668430febdac upstream.
    
    The I2C specification states that tsu:sto for standard mode timing must
    be at minimum 4us. Pictographically, this is:
    
    SCL: ____/~~~~~~~~~
    SDA: _________/~~~~
           ->|    |<- 4us minimum
    
    We are currently waiting 2.5us between asserting SCL and SDA, which is
    in violation of the standard. Adjust the timings to ensure that we meet
    what is stipulated as the minimum timings to ensure that all devices
    correctly interpret the STOP bus transition.
    
    This is more important than trying to generate a square wave with even
    duty cycle.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 341464390512ed50d5e96cf8f5340dcfbebd837a
Author: Will Deacon <will@kernel.org>
Date:   Thu Dec 19 12:02:03 2019 +0000

    chardev: Avoid potential use-after-free in 'chrdev_open()'
    
    commit 68faa679b8be1a74e6663c21c3a9d25d32f1c079 upstream.
    
    'chrdev_open()' calls 'cdev_get()' to obtain a reference to the
    'struct cdev *' stashed in the 'i_cdev' field of the target inode
    structure. If the pointer is NULL, then it is initialised lazily by
    looking up the kobject in the 'cdev_map' and so the whole procedure is
    protected by the 'cdev_lock' spinlock to serialise initialisation of
    the shared pointer.
    
    Unfortunately, it is possible for the initialising thread to fail *after*
    installing the new pointer, for example if the subsequent '->open()' call
    on the file fails. In this case, 'cdev_put()' is called, the reference
    count on the kobject is dropped and, if nobody else has taken a reference,
    the release function is called which finally clears 'inode->i_cdev' from
    'cdev_purge()' before potentially freeing the object. The problem here
    is that a racing thread can happily take the 'cdev_lock' and see the
    non-NULL pointer in the inode, which can result in a refcount increment
    from zero and a warning:
    
      |  ------------[ cut here ]------------
      |  refcount_t: addition on 0; use-after-free.
      |  WARNING: CPU: 2 PID: 6385 at lib/refcount.c:25 refcount_warn_saturate+0x6d/0xf0
      |  Modules linked in:
      |  CPU: 2 PID: 6385 Comm: repro Not tainted 5.5.0-rc2+ #22
      |  Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
      |  RIP: 0010:refcount_warn_saturate+0x6d/0xf0
      |  Code: 05 55 9a 15 01 01 e8 9d aa c8 ff 0f 0b c3 80 3d 45 9a 15 01 00 75 ce 48 c7 c7 00 9c 62 b3 c6 08
      |  RSP: 0018:ffffb524c1b9bc70 EFLAGS: 00010282
      |  RAX: 0000000000000000 RBX: ffff9e9da1f71390 RCX: 0000000000000000
      |  RDX: ffff9e9dbbd27618 RSI: ffff9e9dbbd18798 RDI: ffff9e9dbbd18798
      |  RBP: 0000000000000000 R08: 000000000000095f R09: 0000000000000039
      |  R10: 0000000000000000 R11: ffffb524c1b9bb20 R12: ffff9e9da1e8c700
      |  R13: ffffffffb25ee8b0 R14: 0000000000000000 R15: ffff9e9da1e8c700
      |  FS:  00007f3b87d26700(0000) GS:ffff9e9dbbd00000(0000) knlGS:0000000000000000
      |  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      |  CR2: 00007fc16909c000 CR3: 000000012df9c000 CR4: 00000000000006e0
      |  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      |  DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      |  Call Trace:
      |   kobject_get+0x5c/0x60
      |   cdev_get+0x2b/0x60
      |   chrdev_open+0x55/0x220
      |   ? cdev_put.part.3+0x20/0x20
      |   do_dentry_open+0x13a/0x390
      |   path_openat+0x2c8/0x1470
      |   do_filp_open+0x93/0x100
      |   ? selinux_file_ioctl+0x17f/0x220
      |   do_sys_open+0x186/0x220
      |   do_syscall_64+0x48/0x150
      |   entry_SYSCALL_64_after_hwframe+0x44/0xa9
      |  RIP: 0033:0x7f3b87efcd0e
      |  Code: 89 54 24 08 e8 a3 f4 ff ff 8b 74 24 0c 48 8b 3c 24 41 89 c0 44 8b 54 24 08 b8 01 01 00 00 89 f4
      |  RSP: 002b:00007f3b87d259f0 EFLAGS: 00000293 ORIG_RAX: 0000000000000101
      |  RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007f3b87efcd0e
      |  RDX: 0000000000000000 RSI: 00007f3b87d25a80 RDI: 00000000ffffff9c
      |  RBP: 00007f3b87d25e90 R08: 0000000000000000 R09: 0000000000000000
      |  R10: 0000000000000000 R11: 0000000000000293 R12: 00007ffe188f504e
      |  R13: 00007ffe188f504f R14: 00007f3b87d26700 R15: 0000000000000000
      |  ---[ end trace 24f53ca58db8180a ]---
    
    Since 'cdev_get()' can already fail to obtain a reference, simply move
    it over to use 'kobject_get_unless_zero()' instead of 'kobject_get()',
    which will cause the racing thread to return -ENXIO if the initialising
    thread fails unexpectedly.
    
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Reported-by: syzbot+82defefbbd8527e1c2cb@syzkaller.appspotmail.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20191219120203.32691-1-will@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>