commit 36fa7559a1ce29b6fe8bbaa686b1524bfe8f7c77
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Jan 14 20:04:32 2020 +0100

    Linux 4.9.210

commit 571233331e1910206ec365ac61e5b51e77cce3b9
Author: Akeem G Abodunrin <akeem.g.abodunrin@intel.com>
Date:   Wed Jan 8 12:44:47 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 a6280b60debe02bd31c2efce0dcc72227781f206
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 76c146cef28dae3bf82839876e46db6730c63f81
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 135878c0b1e0d3135f72392c44f531322594987c
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 2c00bebd0b959fe8bec6d4a1a07010394b8008e4
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 78cb846f4aea6e20fc942d7bb8930107d1c6e34f
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 9bba4330671eaf1d21ac6025f950e7cca92f7aca
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 efa99b6f3844bd20d46c8afd78f92a0161a4718e
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 017927206a69a109c0ecd4646c7b1cdd2883e4b5
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 caeb5e1b50b7809f6b865361d36456c19bc31b3e
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 ebec01dfebe725149ced3f380453f695049f187a
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 be06f4843349263f90db0ae8624f9b261de6474b
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 6aacfedbd0b6af1c9823e3250435d17622b7a6d7
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 962e04ba8442d86cc5b5d38b343d2a72ebc87fdd
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 4a71db0fc51ec2ccece37ae3f6dcf2bd273d9968
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 b458d107a2b9903a0b177c1da52d60eaa90f0116
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 bd1f27f5159d5e8302b2ec43f166fea8528c7c30
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 b6b09649213b7ee081a08166128bc41204c5b441
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 3799b9a492b21cf5db4a1267b236e2d69cb73b17
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 7d2a38993c80ccd8aef4b0687067732cd8fdad86
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 43e6fb6a0c69add4496b98d4d22ddfafc3b296b1
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 5f27f97dfed4aa29fb95b98bf5911763bd3ef038
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 661967b7623b88985bdd3aeb171feb83d753aea9
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 4d29a64055970a204c8bef0c2b299c22e7e73617
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 2aa4a4c5098ee7fa7fc6c4adafc0e86be9def5a6
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 5cd0449a27b56a4686f48b5ba1c51bc87299f7e5
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 62599bee27f15d5dbf8340e663b3370331c0777e
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 638b632ddec39db8600efa90c765e9f7fa11a2ef
Author: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Date:   Sat Apr 1 11:00:21 2017 -0300

    tcp: minimize false-positives on TCP/GRO check
    
    commit 0b9aefea860063bb39e36bd7fe6c7087fed0ba87 upstream.
    
    Markus Trippelsdorf reported that after commit dcb17d22e1c2 ("tcp: warn
    on bogus MSS and try to amend it") the kernel started logging the
    warning for a NIC driver that doesn't even support GRO.
    
    It was diagnosed that it was possibly caused on connections that were
    using TCP Timestamps but some packets lacked the Timestamps option. As
    we reduce rcv_mss when timestamps are used, the lack of them would cause
    the packets to be bigger than expected, although this is a valid case.
    
    As this warning is more as a hint, getting a clean-cut on the
    threshold is probably not worth the execution time spent on it. This
    patch thus alleviates the false-positives with 2 quick checks: by
    accounting for the entire TCP option space and also checking against the
    interface MTU if it's available.
    
    These changes, specially the MTU one, might mask some real positives,
    though if they are really happening, it's possible that sooner or later
    it will be triggered anyway.
    
    Reported-by: Markus Trippelsdorf <markus@trippelsdorf.de>
    Cc: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Cc: Salvatore Bonaccorso <carnil@debian.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1b2e7f70557d2a94c54949a8eb9aecf7e39fc436
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 e0cedaf2d35eaa858a504992a2f6fb107d5f448b
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 d2c9ee451ea8e8256fb1903a04ebaa26cb74d6f5
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>

commit 475c1471f11a455a5332879cb28a3ae03d353598
Author: Jan Kara <jack@suse.cz>
Date:   Thu Mar 23 01:37:01 2017 +0100

    kobject: Export kobject_get_unless_zero()
    
    commit c70c176ff8c3ff0ac6ef9a831cd591ea9a66bd1a upstream.
    
    Make the function available for outside use and fortify it against NULL
    kobject.
    
    CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Acked-by: Tejun Heo <tj@kernel.org>
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Jens Axboe <axboe@fb.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>