commit 4a070f3c06a103066c3155bd1ed3100aebea1a78
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Jan 23 08:18:41 2020 +0100

    Linux 4.4.211

commit fbac2e2d253d4b06cc5a610d16508da0019289e8
Author: Stephan Gerhold <stephan@gerhold.net>
Date:   Wed Nov 6 18:31:25 2019 +0100

    regulator: ab8500: Remove SYSCLKREQ from enum ab8505_regulator_id
    
    commit 458ea3ad033fc86e291712ce50cbe60c3428cf30 upstream.
    
    Those regulators are not actually supported by the AB8500 regulator
    driver. There is no ab8500_regulator_info for them and no entry in
    ab8505_regulator_match.
    
    As such, they cannot be registered successfully, and looking them
    up in ab8505_regulator_match causes an out-of-bounds array read.
    
    Fixes: 547f384f33db ("regulator: ab8500: add support for ab8505")
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Stephan Gerhold <stephan@gerhold.net>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20191106173125.14496-2-stephan@gerhold.net
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 27144b19d106a8c7601b14c7675c6a8a7eaba3db
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Fri Oct 25 17:46:25 2019 +0900

    perf probe: Fix wrong address verification
    
    commit 07d369857808b7e8e471bbbbb0074a6718f89b31 upstream.
    
    Since there are some DIE which has only ranges instead of the
    combination of entrypc/highpc, address verification must use
    dwarf_haspc() instead of dwarf_entrypc/dwarf_highpc.
    
    Also, the ranges only DIE will have a partial code in different section
    (e.g. unlikely code will be in text.unlikely as "FUNC.cold" symbol). In
    that case, we can not use dwarf_entrypc() or die_entrypc(), because the
    offset from original DIE can be a minus value.
    
    Instead, this simply gets the symbol and offset from symtab.
    
    Without this patch;
    
      # perf probe -D clear_tasks_mm_cpumask:1
      Failed to get entry address of clear_tasks_mm_cpumask
        Error: Failed to add events.
    
    And with this patch:
    
      # perf probe -D clear_tasks_mm_cpumask:1
      p:probe/clear_tasks_mm_cpumask clear_tasks_mm_cpumask+0
      p:probe/clear_tasks_mm_cpumask_1 clear_tasks_mm_cpumask+5
      p:probe/clear_tasks_mm_cpumask_2 clear_tasks_mm_cpumask+8
      p:probe/clear_tasks_mm_cpumask_3 clear_tasks_mm_cpumask+16
      p:probe/clear_tasks_mm_cpumask_4 clear_tasks_mm_cpumask+82
    
    Committer testing:
    
    I managed to reproduce the above:
    
      [root@quaco ~]# perf probe -D clear_tasks_mm_cpumask:1
      p:probe/clear_tasks_mm_cpumask _text+919968
      p:probe/clear_tasks_mm_cpumask_1 _text+919973
      p:probe/clear_tasks_mm_cpumask_2 _text+919976
      [root@quaco ~]#
    
    But then when trying to actually put the probe in place, it fails if I
    use :0 as the offset:
    
      [root@quaco ~]# perf probe -L clear_tasks_mm_cpumask | head -5
      <clear_tasks_mm_cpumask@/usr/src/debug/kernel-5.2.fc30/linux-5.2.18-200.fc30.x86_64/kernel/cpu.c:0>
            0  void clear_tasks_mm_cpumask(int cpu)
            1  {
            2       struct task_struct *p;
    
      [root@quaco ~]# perf probe clear_tasks_mm_cpumask:0
      Probe point 'clear_tasks_mm_cpumask' not found.
        Error: Failed to add events.
      [root@quaco
    
    The next patch is needed to fix this case.
    
    Fixes: 576b523721b7 ("perf probe: Fix probing symbols with optimization suffix")
    Reported-by: Arnaldo Carvalho de Melo <acme@kernel.org>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: http://lore.kernel.org/lkml/157199318513.8075.10463906803299647907.stgit@devnote2
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6f6007cfb429f381215ef04660dc66f4932cb790
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Fri Nov 1 14:14:47 2019 -0700

    scsi: core: scsi_trace: Use get_unaligned_be*()
    
    commit b1335f5b0486f61fb66b123b40f8e7a98e49605d upstream.
    
    This patch fixes an unintended sign extension on left shifts. From Colin
    King: "Shifting a u8 left will cause the value to be promoted to an
    integer. If the top bit of the u8 is set then the following conversion to
    an u64 will sign extend the value causing the upper 32 bits to be set in
    the result."
    
    Fix this by using get_unaligned_be*() instead.
    
    Fixes: bf8162354233 ("[SCSI] add scsi trace core functions and put trace points")
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Hannes Reinecke <hare@suse.com>
    Cc: Douglas Gilbert <dgilbert@interlog.com>
    Link: https://lore.kernel.org/r/20191101211447.187151-1-bvanassche@acm.org
    Reported-by: Colin Ian King <colin.king@canonical.com>
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3780ff0f10ce52919a2a6c9e8ea7684e156d9f10
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Thu Nov 7 13:55:25 2019 -0800

    scsi: target: core: Fix a pr_debug() argument
    
    commit c941e0d172605731de9b4628bd4146d35cf2e7d6 upstream.
    
    Print the string for which conversion failed instead of printing the
    function name twice.
    
    Fixes: 2650d71e244f ("target: move transport ID handling to the core")
    Cc: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/20191107215525.64415-1-bvanassche@acm.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4285e8d98695dd5480e58a48cc59eea114aa079
Author: Pan Bian <bianpan2016@163.com>
Date:   Wed Nov 6 20:32:21 2019 +0800

    scsi: bnx2i: fix potential use after free
    
    commit 29d28f2b8d3736ac61c28ef7e20fda63795b74d9 upstream.
    
    The member hba->pcidev may be used after its reference is dropped. Move the
    put function to where it is never used to avoid potential use after free
    issues.
    
    Fixes: a77171806515 ("[SCSI] bnx2i: Removed the reference to the netdev->base_addr")
    Link: https://lore.kernel.org/r/1573043541-19126-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d85074fe9e4bbfa81beb783c5f621ef56b668b5f
Author: Pan Bian <bianpan2016@163.com>
Date:   Tue Nov 5 17:25:27 2019 +0800

    scsi: qla4xxx: fix double free bug
    
    commit 3fe3d2428b62822b7b030577cd612790bdd8c941 upstream.
    
    The variable init_fw_cb is released twice, resulting in a double free
    bug. The call to the function dma_free_coherent() before goto is removed to
    get rid of potential double free.
    
    Fixes: 2a49a78ed3c8 ("[SCSI] qla4xxx: added IPv6 support.")
    Link: https://lore.kernel.org/r/1572945927-27796-1-git-send-email-bianpan2016@163.com
    Signed-off-by: Pan Bian <bianpan2016@163.com>
    Acked-by: Manish Rangankar <mrangankar@marvell.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9024e1153d68580e72a88500af807c8824073ca3
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Oct 22 13:23:24 2019 +0300

    scsi: esas2r: unlock on error in esas2r_nvram_read_direct()
    
    commit 906ca6353ac09696c1bf0892513c8edffff5e0a6 upstream.
    
    This error path is missing an unlock.
    
    Fixes: 26780d9e12ed ("[SCSI] esas2r: ATTO Technology ExpressSAS 6G SAS/SATA RAID Adapter Driver")
    Link: https://lore.kernel.org/r/20191022102324.GA27540@mwanda
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d0c85e0ac9e1347bcfff7d986eb6227806099344
Author: Johannes Berg <johannes.berg@intel.com>
Date:   Mon Jan 13 12:53:59 2020 +0100

    cfg80211: check for set_wiphy_params
    
    commit 24953de0a5e31dcca7e82c8a3c79abc2dfe8fb6e upstream.
    
    Check if set_wiphy_params is assigned and return an error if not,
    some drivers (e.g. virt_wifi where syzbot reported it) don't have
    it.
    
    Reported-by: syzbot+e8a797964a4180eb57d5@syzkaller.appspotmail.com
    Reported-by: syzbot+34b582cf32c1db008f8e@syzkaller.appspotmail.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Link: https://lore.kernel.org/r/20200113125358.ac07f276efff.Ibd85ee1b12e47b9efb00a2adc5cd3fac50da791a@changeid
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b196a0ce26a46157aa4e7e7eaed794840373dd67
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Oct 1 14:45:01 2019 +0300

    cw1200: Fix a signedness bug in cw1200_load_firmware()
    
    commit 4a50d454502f1401171ff061a5424583f91266db upstream.
    
    The "priv->hw_type" is an enum and in this context GCC will treat it
    as an unsigned int so the error handling will never trigger.
    
    Fixes: a910e4a94f69 ("cw1200: add driver for the ST-E CW1100 & CW1200 WLAN chipsets")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a05a4e27a02d27037bc48891c97e3ea6f9b97f8e
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Mon Dec 9 13:14:44 2019 -0700

    xen/blkfront: Adjust indentation in xlvbd_alloc_gendisk
    
    commit 589b72894f53124a39d1bb3c0cecaf9dcabac417 upstream.
    
    Clang warns:
    
    ../drivers/block/xen-blkfront.c:1117:4: warning: misleading indentation;
    statement is not part of the previous 'if' [-Wmisleading-indentation]
                    nr_parts = PARTS_PER_DISK;
                    ^
    ../drivers/block/xen-blkfront.c:1115:3: note: previous statement is here
                    if (err)
                    ^
    
    This is because there is a space at the beginning of this line; remove
    it so that the indentation is consistent according to the Linux kernel
    coding style and clang no longer warns.
    
    While we are here, the previous line has some trailing whitespace; clean
    that up as well.
    
    Fixes: c80a420995e7 ("xen-blkfront: handle Xen major numbers other than XENVBD")
    Link: https://github.com/ClangBuiltLinux/linux/issues/791
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 809accc950d47eb40b8d2beca605607d7dc47ce1
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Jan 13 09:27:11 2020 -0800

    net: usb: lan78xx: limit size of local TSO packets
    
    [ Upstream commit f8d7408a4d7f60f8b2df0f81decdc882dd9c20dc ]
    
    lan78xx_tx_bh() makes sure to not exceed MAX_SINGLE_PACKET_SIZE
    bytes in the aggregated packets it builds, but does
    nothing to prevent large GSO packets being submitted.
    
    Pierre-Francois reported various hangs when/if TSO is enabled.
    
    For localy generated packets, we can use netif_set_gso_max_size()
    to limit the size of TSO packets.
    
    Note that forwarded packets could still hit the issue,
    so a complete fix might require implementing .ndo_features_check
    for this driver, forcing a software segmentation if the size
    of the TSO packet exceeds MAX_SINGLE_PACKET_SIZE.
    
    Fixes: 55d7de9de6c3 ("Microchip's LAN7800 family USB 2/3 to 10/100/1000 Ethernet device driver")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: RENARD Pierre-Francois <pfrenard@gmail.com>
    Tested-by: RENARD Pierre-Francois <pfrenard@gmail.com>
    Cc: Stefan Wahren <stefan.wahren@i2se.com>
    Cc: Woojung Huh <woojung.huh@microchip.com>
    Cc: Microchip Linux Driver Support <UNGLinuxDriver@microchip.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad1c5fb881a4cb95254ad75becb255ea9febe723
Author: Pengcheng Yang <yangpc@wangsu.com>
Date:   Tue Jan 14 17:23:40 2020 +0800

    tcp: fix marked lost packets not being retransmitted
    
    [ Upstream commit e176b1ba476cf36f723cfcc7a9e57f3cb47dec70 ]
    
    When the packet pointed to by retransmit_skb_hint is unlinked by ACK,
    retransmit_skb_hint will be set to NULL in tcp_clean_rtx_queue().
    If packet loss is detected at this time, retransmit_skb_hint will be set
    to point to the current packet loss in tcp_verify_retransmit_hint(),
    then the packets that were previously marked lost but not retransmitted
    due to the restriction of cwnd will be skipped and cannot be
    retransmitted.
    
    To fix this, when retransmit_skb_hint is NULL, retransmit_skb_hint can
    be reset only after all marked lost packets are retransmitted
    (retrans_out >= lost_out), otherwise we need to traverse from
    tcp_rtx_queue_head in tcp_xmit_retransmit_queue().
    
    Packetdrill to demonstrate:
    
    // Disable RACK and set max_reordering to keep things simple
        0 `sysctl -q net.ipv4.tcp_recovery=0`
       +0 `sysctl -q net.ipv4.tcp_max_reordering=3`
    
    // Establish a connection
       +0 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3
       +0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
       +0 bind(3, ..., ...) = 0
       +0 listen(3, 1) = 0
    
      +.1 < S 0:0(0) win 32792 <mss 1000,sackOK,nop,nop,nop,wscale 7>
       +0 > S. 0:0(0) ack 1 <...>
     +.01 < . 1:1(0) ack 1 win 257
       +0 accept(3, ..., ...) = 4
    
    // Send 8 data segments
       +0 write(4, ..., 8000) = 8000
       +0 > P. 1:8001(8000) ack 1
    
    // Enter recovery and 1:3001 is marked lost
     +.01 < . 1:1(0) ack 1 win 257 <sack 3001:4001,nop,nop>
       +0 < . 1:1(0) ack 1 win 257 <sack 5001:6001 3001:4001,nop,nop>
       +0 < . 1:1(0) ack 1 win 257 <sack 5001:7001 3001:4001,nop,nop>
    
    // Retransmit 1:1001, now retransmit_skb_hint points to 1001:2001
       +0 > . 1:1001(1000) ack 1
    
    // 1001:2001 was ACKed causing retransmit_skb_hint to be set to NULL
     +.01 < . 1:1(0) ack 2001 win 257 <sack 5001:8001 3001:4001,nop,nop>
    // Now retransmit_skb_hint points to 4001:5001 which is now marked lost
    
    // BUG: 2001:3001 was not retransmitted
       +0 > . 2001:3001(1000) ack 1
    
    Signed-off-by: Pengcheng Yang <yangpc@wangsu.com>
    Acked-by: Neal Cardwell <ncardwell@google.com>
    Tested-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6ab4f78f1d5748e2ac9e2c5c2223099cdf0f14bd
Author: Johan Hovold <johan@kernel.org>
Date:   Tue Jan 14 09:27:29 2020 +0100

    r8152: add missing endpoint sanity check
    
    [ Upstream commit 86f3f4cd53707ceeec079b83205c8d3c756eca93 ]
    
    Add missing endpoint sanity check to probe in order to prevent a
    NULL-pointer dereference (or slab out-of-bounds access) when retrieving
    the interrupt-endpoint bInterval on ndo_open() in case a device lacks
    the expected endpoints.
    
    Fixes: 40a82917b1d3 ("net/usb/r8152: enable interrupt transfer")
    Cc: hayeswang <hayeswang@realtek.com>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1bf5a3b07a5031b007ad70a5286304d1668c92ba
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Jan 14 13:00:35 2020 -0800

    macvlan: use skb_reset_mac_header() in macvlan_queue_xmit()
    
    [ Upstream commit 1712b2fff8c682d145c7889d2290696647d82dab ]
    
    I missed the fact that macvlan_broadcast() can be used both
    in RX and TX.
    
    skb_eth_hdr() makes only sense in TX paths, so we can not
    use it blindly in macvlan_broadcast()
    
    Fixes: 96cc4b69581d ("macvlan: do not assume mac_header is set in macvlan_broadcast()")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: Jurgen Van Ham <juvanham@gmail.com>
    Tested-by: Matteo Croce <mcroce@redhat.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5dd3cd576f5e4418823a514b8dfce3c617537382
Author: Sven Eckelmann <sven@narfation.org>
Date:   Thu Nov 28 12:25:45 2019 +0100

    batman-adv: Fix DAT candidate selection on little endian systems
    
    commit 4cc4a1708903f404d2ca0dfde30e71e052c6cbc9 upstream.
    
    The distributed arp table is using a DHT to store and retrieve MAC address
    information for an IP address. This is done using unicast messages to
    selected peers. The potential peers are looked up using the IP address and
    the VID.
    
    While the IP address is always stored in big endian byte order, this is not
    the case of the VID. It can (depending on the host system) either be big
    endian or little endian. The host must therefore always convert it to big
    endian to ensure that all devices calculate the same peers for the same
    lookup data.
    
    Fixes: be1db4f6615b ("batman-adv: make the Distributed ARP Table vlan aware")
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 629ae6077258ed01dc5ee66b242cb0c87593c0cb
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Fri Jan 10 11:53:08 2020 -0800

    netfilter: fix a use-after-free in mtype_destroy()
    
    commit c120959387efa51479056fd01dc90adfba7a590c upstream.
    
    map->members is freed by ip_set_free() right before using it in
    mtype_ext_cleanup() again. So we just have to move it down.
    
    Reported-by: syzbot+4c3cc6dbe7259dbf9054@syzkaller.appspotmail.com
    Fixes: 40cd63bf33b2 ("netfilter: ipset: Support extensions which need a per data destroy function")
    Acked-by: Jozsef Kadlecsik <kadlec@netfilter.org>
    Signed-off-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 c51977ac593a903b9d6b08d5354d82e3e0c1f690
Author: Dinh Nguyen <dinguyen@kernel.org>
Date:   Wed Nov 20 09:15:17 2019 -0600

    arm64: dts: agilex/stratix10: fix pmu interrupt numbers
    
    [ Upstream commit 210de0e996aee8e360ccc9e173fe7f0a7ed2f695 ]
    
    Fix up the correct interrupt numbers for the PMU unit on Agilex
    and Stratix10.
    
    Fixes: 78cd6a9d8e15 ("arm64: dts: Add base stratix 10 dtsi")
    Cc: linux-stable <stable@vger.kernel.org>
    Reported-by: Meng Li <Meng.Li@windriver.com>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit f438de085af3f3fa43e49ccd62c3e55effcdd0e9
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Tue Jan 7 21:15:49 2020 +0100

    scsi: fnic: fix invalid stack access
    
    [ Upstream commit 42ec15ceaea74b5f7a621fc6686cbf69ca66c4cf ]
    
    gcc -O3 warns that some local variables are not properly initialized:
    
    drivers/scsi/fnic/vnic_dev.c: In function 'fnic_dev_hang_notify':
    drivers/scsi/fnic/vnic_dev.c:511:16: error: 'a0' is used uninitialized in this function [-Werror=uninitialized]
      vdev->args[0] = *a0;
      ~~~~~~~~~~~~~~^~~~~
    drivers/scsi/fnic/vnic_dev.c:691:6: note: 'a0' was declared here
      u64 a0, a1;
          ^~
    drivers/scsi/fnic/vnic_dev.c:512:16: error: 'a1' is used uninitialized in this function [-Werror=uninitialized]
      vdev->args[1] = *a1;
      ~~~~~~~~~~~~~~^~~~~
    drivers/scsi/fnic/vnic_dev.c:691:10: note: 'a1' was declared here
      u64 a0, a1;
              ^~
    drivers/scsi/fnic/vnic_dev.c: In function 'fnic_dev_mac_addr':
    drivers/scsi/fnic/vnic_dev.c:512:16: error: 'a1' is used uninitialized in this function [-Werror=uninitialized]
      vdev->args[1] = *a1;
      ~~~~~~~~~~~~~~^~~~~
    drivers/scsi/fnic/vnic_dev.c:698:10: note: 'a1' was declared here
      u64 a0, a1;
              ^~
    
    Apparently the code relies on the local variables occupying adjacent memory
    locations in the same order, but this is of course not guaranteed.
    
    Use an array of two u64 variables where needed to make it work correctly.
    
    I suspect there is also an endianness bug here, but have not digged in deep
    enough to be sure.
    
    Fixes: 5df6d737dd4b ("[SCSI] fnic: Add new Cisco PCI-Express FCoE HBA")
    Fixes: mmtom ("init/Kconfig: enable -O3 for all arches")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20200107201602.4096790-1-arnd@arndb.de
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 11f9b4d8c1fb519f3f0a1038a458345daa1b999b
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Sat Oct 22 20:32:26 2016 +0300

    scsi: fnic: use kernel's '%pM' format option to print MAC
    
    [ Upstream commit 36fe90b0f0bdc9d030e88ba2153f3c8d6b6a5964 ]
    
    Instead of supplying each byte through stack let's use %pM specifier.
    
    Cc: Hiral Patel <hiralpat@cisco.com>
    Cc: Suma Ramars <sramars@cisco.com>
    Acked-by: Tom Tucker <tom@opengridcomputing.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 9d25f0d17bc9f84aacc7d11b5175fecfa2da3617
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:25 2020 +0100

    USB: serial: keyspan: handle unbound ports
    
    [ Upstream commit 3018dd3fa114b13261e9599ddb5656ef97a1fa17 ]
    
    Check for NULL port data in the control URB completion handlers to avoid
    dereferencing a NULL pointer in the unlikely case where a port device
    isn't bound to a driver (e.g. after an allocation failure on port
    probe()).
    
    Fixes: 0ca1268e109a ("USB Serial Keyspan: add support for USA-49WG & USA-28XG")
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8144d3b60613bee0929493a8846a4bed50aff68f
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:23 2020 +0100

    USB: serial: io_edgeport: handle unbound ports on URB completion
    
    [ Upstream commit e37d1aeda737a20b1846a91a3da3f8b0f00cf690 ]
    
    Check for NULL port data in the shared interrupt and bulk completion
    callbacks to avoid dereferencing a NULL pointer in case a device sends
    data for a port device which isn't bound to a driver (e.g. due to a
    malicious device having unexpected endpoints or after an allocation
    failure on port probe).
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit faec8f618ec6f25b4313d2f59e8dbd72fd754513
Author: John Ogness <john.ogness@linutronix.de>
Date:   Sun Jun 24 00:32:06 2018 +0200

    USB: serial: io_edgeport: use irqsave() in USB's complete callback
    
    [ Upstream commit dd1fae527612543e560e84f2eba4f6ef2006ac55 ]
    
    The USB completion callback does not disable interrupts while acquiring
    the lock. We want to remove the local_irq_disable() invocation from
    __usb_hcd_giveback_urb() and therefore it is required for the callback
    handler to disable the interrupts while acquiring the lock.
    The callback may be invoked either in IRQ or BH context depending on the
    USB host controller.
    Use the _irqsave() variant of the locking primitives.
    
    Signed-off-by: John Ogness <john.ogness@linutronix.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 66a9b9761a3cbbbde9a8d3de6b170e214e5072f7
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Wed Dec 18 11:17:42 2019 +0100

    net: stmmac: Enable 16KB buffer size
    
    commit b2f3a481c4cd62f78391b836b64c0a6e72b503d2 upstream.
    
    XGMAC supports maximum MTU that can go to 16KB. Lets add this check in
    the calculation of RX buffer size.
    
    Fixes: 7ac6653a085b ("stmmac: Move the STMicroelectronics driver")
    Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2c1e5c5e4c749060664762f76e02e06ac879c642
Author: Jose Abreu <Jose.Abreu@synopsys.com>
Date:   Wed Dec 18 11:17:41 2019 +0100

    net: stmmac: 16KB buffer must be 16 byte aligned
    
    commit 8605131747e7e1fd8f6c9f97a00287aae2b2c640 upstream.
    
    The 16KB RX Buffer must also be 16 byte aligned. Fix it.
    
    Fixes: 7ac6653a085b ("stmmac: Move the STMicroelectronics driver")
    Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe87fc086f51c2dbd0c6e8869dcfd74dc9e96c29
Author: Wen Yang <wenyang@linux.alibaba.com>
Date:   Mon Jan 13 16:29:23 2020 -0800

    mm/page-writeback.c: avoid potential division by zero in wb_min_max_ratio()
    
    commit 6d9e8c651dd979aa666bee15f086745f3ea9c4b3 upstream.
    
    Patch series "use div64_ul() instead of div_u64() if the divisor is
    unsigned long".
    
    We were first inspired by commit b0ab99e7736a ("sched: Fix possible divide
    by zero in avg_atom () calculation"), then refer to the recently analyzed
    mm code, we found this suspicious place.
    
     201                 if (min) {
     202                         min *= this_bw;
     203                         do_div(min, tot_bw);
     204                 }
    
    And we also disassembled and confirmed it:
    
      /usr/src/debug/kernel-4.9.168-016.ali3000/linux-4.9.168-016.ali3000.alios7.x86_64/mm/page-writeback.c: 201
      0xffffffff811c37da <__wb_calc_thresh+234>:      xor    %r10d,%r10d
      0xffffffff811c37dd <__wb_calc_thresh+237>:      test   %rax,%rax
      0xffffffff811c37e0 <__wb_calc_thresh+240>:      je 0xffffffff811c3800 <__wb_calc_thresh+272>
      /usr/src/debug/kernel-4.9.168-016.ali3000/linux-4.9.168-016.ali3000.alios7.x86_64/mm/page-writeback.c: 202
      0xffffffff811c37e2 <__wb_calc_thresh+242>:      imul   %r8,%rax
      /usr/src/debug/kernel-4.9.168-016.ali3000/linux-4.9.168-016.ali3000.alios7.x86_64/mm/page-writeback.c: 203
      0xffffffff811c37e6 <__wb_calc_thresh+246>:      mov    %r9d,%r10d    ---> truncates it to 32 bits here
      0xffffffff811c37e9 <__wb_calc_thresh+249>:      xor    %edx,%edx
      0xffffffff811c37eb <__wb_calc_thresh+251>:      div    %r10
      0xffffffff811c37ee <__wb_calc_thresh+254>:      imul   %rbx,%rax
      0xffffffff811c37f2 <__wb_calc_thresh+258>:      shr    $0x2,%rax
      0xffffffff811c37f6 <__wb_calc_thresh+262>:      mul    %rcx
      0xffffffff811c37f9 <__wb_calc_thresh+265>:      shr    $0x2,%rdx
      0xffffffff811c37fd <__wb_calc_thresh+269>:      mov    %rdx,%r10
    
    This series uses div64_ul() instead of div_u64() if the divisor is
    unsigned long, to avoid truncation to 32-bit on 64-bit platforms.
    
    This patch (of 3):
    
    The variables 'min' and 'max' are unsigned long and do_div truncates
    them to 32 bits, which means it can test non-zero and be truncated to
    zero for division.  Fix this issue by using div64_ul() instead.
    
    Link: http://lkml.kernel.org/r/20200102081442.8273-2-wenyang@linux.alibaba.com
    Fixes: 693108a8a667 ("writeback: make bdi->min/max_ratio handling cgroup writeback aware")
    Signed-off-by: Wen Yang <wenyang@linux.alibaba.com>
    Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
    Cc: Qian Cai <cai@lca.pw>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 453e6e38da971e06a3fe0e33d28a24fcc3bc8c2b
Author: Ard Biesheuvel <ardb@kernel.org>
Date:   Tue Dec 24 14:29:09 2019 +0100

    x86/efistub: Disable paging at mixed mode entry
    
    commit 4911ee401b7ceff8f38e0ac597cbf503d71e690c upstream.
    
    The EFI mixed mode entry code goes through the ordinary startup_32()
    routine before jumping into the kernel's EFI boot code in 64-bit
    mode. The 32-bit startup code must be entered with paging disabled,
    but this is not documented as a requirement for the EFI handover
    protocol, and so we should disable paging explicitly when entering
    the kernel from 32-bit EFI firmware.
    
    Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
    Cc: <stable@vger.kernel.org>
    Cc: Arvind Sankar <nivedita@alum.mit.edu>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: https://lkml.kernel.org/r/20191224132909.102540-4-ardb@kernel.org
    Signed-off-by: Ingo Molnar <mingo@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9892e195928cf5fdf68aa8e27fafb43ca7913917
Author: Keiya Nobuta <nobuta.keiya@fujitsu.com>
Date:   Thu Jan 9 14:14:48 2020 +0900

    usb: core: hub: Improved device recognition on remote wakeup
    
    commit 9c06ac4c83df6d6fbdbf7488fbad822b4002ba19 upstream.
    
    If hub_activate() is called before D+ has stabilized after remote
    wakeup, the following situation might occur:
    
             __      ___________________
            /  \    /
    D+   __/    \__/
    
    Hub  _______________________________
              |  ^   ^           ^
              |  |   |           |
    Host _____v__|___|___________|______
              |  |   |           |
              |  |   |           \-- Interrupt Transfer (*3)
              |  |    \-- ClearPortFeature (*2)
              |   \-- GetPortStatus (*1)
              \-- Host detects remote wakeup
    
    - D+ goes high, Host starts running by remote wakeup
    - D+ is not stable, goes low
    - Host requests GetPortStatus at (*1) and gets the following hub status:
      - Current Connect Status bit is 0
      - Connect Status Change bit is 1
    - D+ stabilizes, goes high
    - Host requests ClearPortFeature and thus Connect Status Change bit is
      cleared at (*2)
    - After waiting 100 ms, Host starts the Interrupt Transfer at (*3)
    - Since the Connect Status Change bit is 0, Hub returns NAK.
    
    In this case, port_event() is not called in hub_event() and Host cannot
    recognize device. To solve this issue, flag change_bits even if only
    Connect Status Change bit is 1 when got in the first GetPortStatus.
    
    This issue occurs rarely because it only if D+ changes during a very
    short time between GetPortStatus and ClearPortFeature. However, it is
    fatal if it occurs in embedded system.
    
    Signed-off-by: Keiya Nobuta <nobuta.keiya@fujitsu.com>
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Link: https://lore.kernel.org/r/20200109051448.28150-1-nobuta.keiya@fujitsu.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 952fc03b38b8dca3923f3c61e3273c8f8ed2bd86
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Jan 14 15:34:14 2020 +0300

    scsi: mptfusion: Fix double fetch bug in ioctl
    
    commit 28d76df18f0ad5bcf5fa48510b225f0ed262a99b upstream.
    
    Tom Hatskevich reported that we look up "iocp" then, in the called
    functions we do a second copy_from_user() and look it up again.
    The problem that could cause is:
    
    drivers/message/fusion/mptctl.c
       674          /* All of these commands require an interrupt or
       675           * are unknown/illegal.
       676           */
       677          if ((ret = mptctl_syscall_down(iocp, nonblock)) != 0)
                                                   ^^^^
    We take this lock.
    
       678                  return ret;
       679
       680          if (cmd == MPTFWDOWNLOAD)
       681                  ret = mptctl_fw_download(arg);
                                                     ^^^
    Then the user memory changes and we look up "iocp" again but a different
    one so now we are holding the incorrect lock and have a race condition.
    
       682          else if (cmd == MPTCOMMAND)
       683                  ret = mptctl_mpt_command(arg);
    
    The security impact of this bug is not as bad as it could have been
    because these operations are all privileged and root already has
    enormous destructive power.  But it's still worth fixing.
    
    This patch passes the "iocp" pointer to the functions to avoid the
    second lookup.  That deletes 100 lines of code from the driver so
    it's a nice clean up as well.
    
    Link: https://lore.kernel.org/r/20200114123414.GA7957@kadam
    Reported-by: Tom Hatskevich <tom2001tom.23@gmail.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7f10c491c0f070c9a73dec0cb934a35a9fdb2542
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 15:35:26 2020 +0100

    USB: serial: quatech2: handle unbound ports
    
    commit 9715a43eea77e42678a1002623f2d9a78f5b81a1 upstream.
    
    Check for NULL port data in the modem- and line-status handlers to avoid
    dereferencing a NULL pointer in the unlikely case where a port device
    isn't bound to a driver (e.g. after an allocation failure on port
    probe).
    
    Note that the other (stubbed) event handlers qt2_process_xmit_empty()
    and qt2_process_flush() would need similar sanity checks in case they
    are ever implemented.
    
    Fixes: f7a33e608d9a ("USB: serial: add quatech2 usb to serial driver")
    Cc: stable <stable@vger.kernel.org>     # 3.5
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7c02152b7cef2902e718aebab3684da46ddf787e
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:24 2020 +0100

    USB: serial: io_edgeport: add missing active-port sanity check
    
    commit 1568c58d11a7c851bd09341aeefd6a1c308ac40d upstream.
    
    The driver receives the active port number from the device, but never
    made sure that the port number was valid. This could lead to a
    NULL-pointer dereference or memory corruption in case a device sends
    data for an invalid port.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e468b2b38c9476b59e59d397801644885533ee6
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 17 10:50:22 2020 +0100

    USB: serial: ch341: handle unbound port at reset_resume
    
    commit 4d5ef53f75c22d28f490bcc5c771fcc610a9afa4 upstream.
    
    Check for NULL port data in reset_resume() to avoid dereferencing a NULL
    pointer in case the port device isn't bound to a driver (e.g. after a
    failed control request at port probe).
    
    Fixes: 1ded7ea47b88 ("USB: ch341 serial: fix port number changed after resume")
    Cc: stable <stable@vger.kernel.org>     # 2.6.30
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3145bf4a1aaa78955ffece7cecef3dd6521b9ae
Author: Johan Hovold <johan@kernel.org>
Date:   Thu Jan 16 17:07:05 2020 +0100

    USB: serial: suppress driver bind attributes
    
    commit fdb838efa31e1ed9a13ae6ad0b64e30fdbd00570 upstream.
    
    USB-serial drivers must not be unbound from their ports before the
    corresponding USB driver is unbound from the parent interface so
    suppress the bind and unbind attributes.
    
    Unbinding a serial driver while it's port is open is a sure way to
    trigger a crash as any driver state is released on unbind while port
    hangup is handled on the parent USB interface level. Drivers for
    multiport devices where ports share a resource such as an interrupt
    endpoint also generally cannot handle individual ports going away.
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7e3b38de330af60340b1714a16ceab2d94413802
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Jan 13 18:22:13 2020 +0100

    USB: serial: opticon: fix control-message timeouts
    
    commit 5e28055f340275a8616eee88ef19186631b4d136 upstream.
    
    The driver was issuing synchronous uninterruptible control requests
    without using a timeout. This could lead to the driver hanging
    on open() or tiocmset() due to a malfunctioning (or malicious) device
    until the device is physically disconnected.
    
    The USB upper limit of five seconds per request should be more than
    enough.
    
    Fixes: 309a057932ab ("USB: opticon: add rts and cts support")
    Cc: stable <stable@vger.kernel.org>     # 2.6.39
    Cc: Martin Jansen <martin.jansen@opticon.com>
    Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e4bc62dab4415e4c21cffacad945399def7249be
Author: Jerónimo Borque <jeronimo@borque.com.ar>
Date:   Thu Jan 9 12:23:34 2020 -0300

    USB: serial: simple: Add Motorola Solutions TETRA MTP3xxx and MTP85xx
    
    commit 260e41ac4dd3e5acb90be624c03ba7f019615b75 upstream.
    
    Add device-ids for the Motorola Solutions TETRA radios MTP3xxx series
    and MTP85xx series
    
    $ lsusb -vd 0cad:
    
    Bus 001 Device 009: ID 0cad:9015 Motorola CGISS TETRA PEI interface
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      idVendor           0x0cad Motorola CGISS
      idProduct          0x9015
      bcdDevice           24.16
      iManufacturer           1
      iProduct                2
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0037
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          3
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              500mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               0
    
    Bus 001 Device 010: ID 0cad:9013 Motorola CGISS TETRA PEI interface
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0        64
      idVendor           0x0cad Motorola CGISS
      idProduct          0x9013
      bcdDevice           24.16
      iManufacturer           1
      iProduct                2
      iSerial                 0
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0037
        bNumInterfaces          2
        bConfigurationValue     1
        iConfiguration          3
        bmAttributes         0x80
          (Bus Powered)
        MaxPower              500mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol      0
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0200  1x 512 bytes
            bInterval               0
    
    Signed-off-by: Jerónimo Borque <jeronimo@borque.com.ar>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b8cd70b724f0f48915027a51e7d1397cb66f5b91
Author: Mikulas Patocka <mpatocka@redhat.com>
Date:   Wed Jan 15 08:35:25 2020 -0500

    block: fix an integer overflow in logical block size
    
    commit ad6bf88a6c19a39fb3b0045d78ea880325dfcf15 upstream.
    
    Logical block size has type unsigned short. That means that it can be at
    most 32768. However, there are architectures that can run with 64k pages
    (for example arm64) and on these architectures, it may be possible to
    create block devices with 64k block size.
    
    For exmaple (run this on an architecture with 64k pages):
    
    Mount will fail with this error because it tries to read the superblock using 2-sector
    access:
      device-mapper: writecache: I/O is not aligned, sector 2, size 1024, block size 65536
      EXT4-fs (dm-0): unable to read superblock
    
    This patch changes the logical block size from unsigned short to unsigned
    int to avoid the overflow.
    
    Cc: stable@vger.kernel.org
    Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
    Reviewed-by: Ming Lei <ming.lei@redhat.com>
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c075d325ec23a9bd99b7097f0b82ec04b007093
Author: Jari Ruusu <jari.ruusu@gmail.com>
Date:   Sun Jan 12 15:00:53 2020 +0200

    Fix built-in early-load Intel microcode alignment
    
    commit f5ae2ea6347a308cfe91f53b53682ce635497d0d upstream.
    
    Intel Software Developer's Manual, volume 3, chapter 9.11.6 says:
    
     "Note that the microcode update must be aligned on a 16-byte boundary
      and the size of the microcode update must be 1-KByte granular"
    
    When early-load Intel microcode is loaded from initramfs, userspace tool
    'iucode_tool' has already 16-byte aligned those microcode bits in that
    initramfs image.  Image that was created something like this:
    
     iucode_tool --write-earlyfw=FOO.cpio microcode-files...
    
    However, when early-load Intel microcode is loaded from built-in
    firmware BLOB using CONFIG_EXTRA_FIRMWARE= kernel config option, that
    16-byte alignment is not guaranteed.
    
    Fix this by forcing all built-in firmware BLOBs to 16-byte alignment.
    
    [ If we end up having other firmware with much bigger alignment
      requirements, we might need to introduce some method for the firmware
      to specify it, this is the minimal "just increase the alignment a bit
      to account for this one special case" patch    - Linus ]
    
    Signed-off-by: Jari Ruusu <jari.ruusu@gmail.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Luis Chamberlain <mcgrof@kernel.org>
    Cc: stable@kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 98ca09ec2d2a675f370832c838176e63a3542065
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Jan 15 21:37:33 2020 +0100

    ALSA: seq: Fix racy access for queue timer in proc read
    
    commit 60adcfde92fa40fcb2dbf7cc52f9b096e0cd109a upstream.
    
    snd_seq_info_timer_read() reads the information of the timer assigned
    for each queue, but it's done in a racy way which may lead to UAF as
    spotted by syzkaller.
    
    This patch applies the missing q->timer_mutex lock while accessing the
    timer object as well as a slight code change to adapt the standard
    coding style.
    
    Reported-by: syzbot+2b2ef983f973e5c40943@syzkaller.appspotmail.com
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20200115203733.26530-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 05ee97a3924d62a821e907a61bc1b0ccc420c654
Author: Kai Li <li.kai4@h3c.com>
Date:   Sat Jan 4 13:00:18 2020 -0800

    ocfs2: call journal flush to mark journal as empty after journal recovery when mount
    
    [ Upstream commit 397eac17f86f404f5ba31d8c3e39ec3124b39fd3 ]
    
    If journal is dirty when mount, it will be replayed but jbd2 sb log tail
    cannot be updated to mark a new start because journal->j_flag has
    already been set with JBD2_ABORT first in journal_init_common.
    
    When a new transaction is committed, it will be recored in block 1
    first(journal->j_tail is set to 1 in journal_reset).  If emergency
    restart happens again before journal super block is updated
    unfortunately, the new recorded trans will not be replayed in the next
    mount.
    
    The following steps describe this procedure in detail.
    1. mount and touch some files
    2. these transactions are committed to journal area but not checkpointed
    3. emergency restart
    4. mount again and its journals are replayed
    5. journal super block's first s_start is 1, but its s_seq is not updated
    6. touch a new file and its trans is committed but not checkpointed
    7. emergency restart again
    8. mount and journal is dirty, but trans committed in 6 will not be
    replayed.
    
    This exception happens easily when this lun is used by only one node.
    If it is used by multi-nodes, other node will replay its journal and its
    journal super block will be updated after recovery like what this patch
    does.
    
    ocfs2_recover_node->ocfs2_replay_journal.
    
    The following jbd2 journal can be generated by touching a new file after
    journal is replayed, and seq 15 is the first valid commit, but first seq
    is 13 in journal super block.
    
    logdump:
      Block 0: Journal Superblock
      Seq: 0   Type: 4 (JBD2_SUPERBLOCK_V2)
      Blocksize: 4096   Total Blocks: 32768   First Block: 1
      First Commit ID: 13   Start Log Blknum: 1
      Error: 0
      Feature Compat: 0
      Feature Incompat: 2 block64
      Feature RO compat: 0
      Journal UUID: 4ED3822C54294467A4F8E87D2BA4BC36
      FS Share Cnt: 1   Dynamic Superblk Blknum: 0
      Per Txn Block Limit    Journal: 0    Data: 0
    
      Block 1: Journal Commit Block
      Seq: 14   Type: 2 (JBD2_COMMIT_BLOCK)
    
      Block 2: Journal Descriptor
      Seq: 15   Type: 1 (JBD2_DESCRIPTOR_BLOCK)
      No. Blocknum        Flags
       0. 587             none
      UUID: 00000000000000000000000000000000
       1. 8257792         JBD2_FLAG_SAME_UUID
       2. 619             JBD2_FLAG_SAME_UUID
       3. 24772864        JBD2_FLAG_SAME_UUID
       4. 8257802         JBD2_FLAG_SAME_UUID
       5. 513             JBD2_FLAG_SAME_UUID JBD2_FLAG_LAST_TAG
      ...
      Block 7: Inode
      Inode: 8257802   Mode: 0640   Generation: 57157641 (0x3682809)
      FS Generation: 2839773110 (0xa9437fb6)
      CRC32: 00000000   ECC: 0000
      Type: Regular   Attr: 0x0   Flags: Valid
      Dynamic Features: (0x1) InlineData
      User: 0 (root)   Group: 0 (root)   Size: 7
      Links: 1   Clusters: 0
      ctime: 0x5de5d870 0x11104c61 -- Tue Dec  3 11:37:20.286280801 2019
      atime: 0x5de5d870 0x113181a1 -- Tue Dec  3 11:37:20.288457121 2019
      mtime: 0x5de5d870 0x11104c61 -- Tue Dec  3 11:37:20.286280801 2019
      dtime: 0x0 -- Thu Jan  1 08:00:00 1970
      ...
      Block 9: Journal Commit Block
      Seq: 15   Type: 2 (JBD2_COMMIT_BLOCK)
    
    The following is journal recovery log when recovering the upper jbd2
    journal when mount again.
    
    syslog:
      ocfs2: File system on device (252,1) was not unmounted cleanly, recovering it.
      fs/jbd2/recovery.c:(do_one_pass, 449): Starting recovery pass 0
      fs/jbd2/recovery.c:(do_one_pass, 449): Starting recovery pass 1
      fs/jbd2/recovery.c:(do_one_pass, 449): Starting recovery pass 2
      fs/jbd2/recovery.c:(jbd2_journal_recover, 278): JBD2: recovery, exit status 0, recovered transactions 13 to 13
    
    Due to first commit seq 13 recorded in journal super is not consistent
    with the value recorded in block 1(seq is 14), journal recovery will be
    terminated before seq 15 even though it is an unbroken commit, inode
    8257802 is a new file and it will be lost.
    
    Link: http://lkml.kernel.org/r/20191217020140.2197-1-li.kai4@h3c.com
    Signed-off-by: Kai Li <li.kai4@h3c.com>
    Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>
    Reviewed-by: Changwei Ge <gechangwei@live.cn>
    Cc: Mark Fasheh <mark@fasheh.com>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Junxiao Bi <junxiao.bi@oracle.com>
    Cc: Gang He <ghe@suse.com>
    Cc: Jun Piao <piaojun@huawei.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit e8592a2f53e981cf6c7876973a781f6bd1cf0e80
Author: Nick Desaulniers <ndesaulniers@google.com>
Date:   Sat Jan 4 13:00:02 2020 -0800

    hexagon: work around compiler crash
    
    [ Upstream commit 63e80314ab7cf4783526d2e44ee57a90514911c9 ]
    
    Clang cannot translate the string "r30" into a valid register yet.
    
    Link: https://github.com/ClangBuiltLinux/linux/issues/755
    Link: http://lkml.kernel.org/r/20191028155722.23419-1-ndesaulniers@google.com
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Suggested-by: Sid Manning <sidneym@quicinc.com>
    Reviewed-by: Brian Cain <bcain@codeaurora.org>
    Cc: Allison Randal <allison@lohutok.net>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Richard Fontana <rfontana@redhat.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dcfbddaf6bd2a56be99fe869022b579db0a745d9
Author: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Date:   Wed Dec 11 11:28:57 2019 -0500

    rseq/selftests: Turn off timeout setting
    
    [ Upstream commit af9cb29c5488381083b0b5ccdfb3cd931063384a ]
    
    As the rseq selftests can run for a long period of time, disable the
    timeout that the general selftests have.
    
    Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Shuah Khan <skhan@linuxfoundation.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: "Paul E. McKenney" <paulmck@linux.ibm.com>
    Cc: Boqun Feng <boqun.feng@gmail.com>
    Cc: "H . Peter Anvin" <hpa@zytor.com>
    Cc: Paul Turner <pjt@google.com>
    Cc: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 77412600a358f6217f1c3d36a0689953b2538c7a
Author: Kars de Jong <jongk@linux-m68k.org>
Date:   Sat Nov 16 12:05:48 2019 +0100

    rtc: msm6242: Fix reading of 10-hour digit
    
    commit e34494c8df0cd96fc432efae121db3212c46ae48 upstream.
    
    The driver was reading the wrong register as the 10-hour digit due to
    a misplaced ')'. It was in fact reading the 1-second digit register due
    to this bug.
    
    Also remove the use of a magic number for the hour mask and use the define
    for it which was already present.
    
    Fixes: 4f9b9bba1dd1 ("rtc: Add an RTC driver for the Oki MSM6242")
    Tested-by: Kars de Jong <jongk@linux-m68k.org>
    Signed-off-by: Kars de Jong <jongk@linux-m68k.org>
    Link: https://lore.kernel.org/r/20191116110548.8562-1-jongk@linux-m68k.org
    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4915aa3b3bb976996624c6ffa81da8e5a705c7d2
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Oct 22 17:47:03 2019 -0700

    rtlwifi: Remove unnecessary NULL check in rtl_regd_init
    
    commit 091c6e9c083f7ebaff00b37ad13562d51464d175 upstream.
    
    When building with Clang + -Wtautological-pointer-compare:
    
    drivers/net/wireless/realtek/rtlwifi/regd.c:389:33: warning: comparison
    of address of 'rtlpriv->regd' equal to a null pointer is always false
    [-Wtautological-pointer-compare]
            if (wiphy == NULL || &rtlpriv->regd == NULL)
                                  ~~~~~~~~~^~~~    ~~~~
    1 warning generated.
    
    The address of an array member is never NULL unless it is the first
    struct member so remove the unnecessary check. This was addressed in
    the staging version of the driver in commit f986978b32b3 ("Staging:
    rtlwifi: remove unnecessary NULL check").
    
    While we are here, fix the following checkpatch warning:
    
    CHECK: Comparison to NULL could be written "!wiphy"
    35: FILE: drivers/net/wireless/realtek/rtlwifi/regd.c:389:
    +       if (wiphy == NULL)
    
    Fixes: 0c8173385e54 ("rtl8192ce: Add new driver")
    Link:https://github.com/ClangBuiltLinux/linux/issues/750
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Acked-by: Ping-Ke Shih <pkshih@realtek.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caa13f4790746ac2ed61e8a2868406d16959fc8e
Author: Mans Rullgard <mans@mansr.com>
Date:   Fri Oct 18 17:35:04 2019 +0200

    spi: atmel: fix handling of cs_change set on non-last xfer
    
    commit fed8d8c7a6dc2a76d7764842853d81c770b0788e upstream.
    
    The driver does the wrong thing when cs_change is set on a non-last
    xfer in a message.  When cs_change is set, the driver deactivates the
    CS and leaves it off until a later xfer again has cs_change set whereas
    it should be briefly toggling CS off and on again.
    
    This patch brings the behaviour of the driver back in line with the
    documentation and common sense.  The delay of 10 us is the same as is
    used by the default spi_transfer_one_message() function in spi.c.
    [gregory: rebased on for-5.5 from spi tree]
    Fixes: 8090d6d1a415 ("spi: atmel: Refactor spi-atmel to use SPI framework queue")
    Signed-off-by: Mans Rullgard <mans@mansr.com>
    Acked-by: Nicolas Ferre <nicolas.ferre@atmel.com>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Link: https://lore.kernel.org/r/20191018153504.4249-1-gregory.clement@bootlin.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 627d070535cd90684ba519f5338f7969a99fc3b8
Author: Seung-Woo Kim <sw0312.kim@samsung.com>
Date:   Fri Oct 18 07:20:52 2019 -0300

    media: exynos4-is: Fix recursive locking in isp_video_release()
    
    commit 704c6c80fb471d1bb0ef0d61a94617d1d55743cd upstream.
    
    >From isp_video_release(), &isp->video_lock is held and subsequent
    vb2_fop_release() tries to lock vdev->lock which is same with the
    previous one. Replace vb2_fop_release() with _vb2_fop_release() to
    fix the recursive locking.
    
    Fixes: 1380f5754cb0 ("[media] videobuf2: Add missing lock held on vb2_fop_release")
    Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
    Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df1f6b1f8a3426035783d8b30d13ca5cfcbfc29b
Author: Peng Fan <peng.fan@nxp.com>
Date:   Wed Nov 13 05:37:42 2019 +0000

    tty: serial: pch_uart: correct usage of dma_unmap_sg
    
    commit 74887542fdcc92ad06a48c0cca17cdf09fc8aa00 upstream.
    
    Per Documentation/DMA-API-HOWTO.txt,
    To unmap a scatterlist, just call:
            dma_unmap_sg(dev, sglist, nents, direction);
    
    .. note::
    
            The 'nents' argument to the dma_unmap_sg call must be
            the _same_ one you passed into the dma_map_sg call,
            it should _NOT_ be the 'count' value _returned_ from the
            dma_map_sg call.
    
    However in the driver, priv->nent is directly assigned with value
    returned from dma_map_sg, and dma_unmap_sg use priv->nent for unmap,
    this breaks the API usage.
    
    So introduce a new entry orig_nent to remember 'nents'.
    
    Fixes: da3564ee027e ("pch_uart: add multi-scatter processing")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/r/1573623259-6339-1-git-send-email-peng.fan@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d3edf86ff7530120ed8147917f9788f7b9ba854e
Author: Peng Fan <peng.fan@nxp.com>
Date:   Thu Nov 7 06:42:53 2019 +0000

    tty: serial: imx: use the sg count from dma_map_sg
    
    commit 596fd8dffb745afcebc0ec6968e17fe29f02044c upstream.
    
    The dmaengine_prep_slave_sg needs to use sg count returned
    by dma_map_sg, not use sport->dma_tx_nents, because the return
    value of dma_map_sg is not always same with "nents".
    
    Fixes: b4cdc8f61beb ("serial: imx: add DMA support for imx6q")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Link: https://lore.kernel.org/r/1573108875-26530-1-git-send-email-peng.fan@nxp.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e78bd32d94f8090d77974f868008e463f7ffa9eb
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Jun 3 23:06:00 2019 +0200

    compat_ioctl: handle SIOCOUTQNSD
    
    commit 9d7bf41fafa5b5ddd4c13eb39446b0045f0a8167 upstream.
    
    Unlike the normal SIOCOUTQ, SIOCOUTQNSD was never handled in compat
    mode. Add it to the common socket compat handler along with similar
    ones.
    
    Fixes: 2f4e1b397097 ("tcp: ioctl type SIOCOUTQNSD returns amount of data not sent")
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: netdev@vger.kernel.org
    Cc: "David S. Miller" <davem@davemloft.net>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f526c55f3f54e3f148da946d573e15aa03daa9ae
Author: Marian Mihailescu <mihailescu2m@gmail.com>
Date:   Tue Oct 29 11:20:25 2019 +1030

    clk: samsung: exynos5420: Preserve CPU clocks configuration during suspend/resume
    
    commit e21be0d1d7bd7f78a77613f6bcb6965e72b22fc1 upstream.
    
    Save and restore top PLL related configuration registers for big (APLL)
    and LITTLE (KPLL) cores during suspend/resume cycle. So far, CPU clocks
    were reset to default values after suspend/resume cycle and performance
    after system resume was affected when performance governor has been selected.
    
    Fixes: 773424326b51 ("clk: samsung: exynos5420: add more registers to restore list")
    Signed-off-by: Marian Mihailescu <mihailescu2m@gmail.com>
    Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 855577aee5fa463cab9acddf9a7d6e60117e9d8d
Author: Alexander Usyskin <alexander.usyskin@intel.com>
Date:   Tue Oct 8 03:57:34 2019 +0300

    mei: fix modalias documentation
    
    commit 73668309215285366c433489de70d31362987be9 upstream.
    
    mei client bus added the client protocol version to the device alias,
    but ABI documentation was not updated.
    
    Fixes: b26864cad1c9 (mei: bus: add client protocol version to the device alias)
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Link: https://lore.kernel.org/r/20191008005735.12707-1-tomas.winkler@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8e48c3c422907f4e659e721be16e79c243ecfe34
Author: Alexandru Ardelean <alexandru.ardelean@analog.com>
Date:   Fri Nov 1 11:35:03 2019 +0200

    iio: imu: adis16480: assign bias value only if operation succeeded
    
    commit 9b742763d9d4195e823ae6ece760c9ed0500c1dc upstream.
    
    This was found only after the whole thing with the inline functions, but
    the compiler actually found something. The value of the `bias` (in
    adis16480_get_calibbias()) should only be set if the read operation was
    successful.
    
    No actual known problem occurs as users of this function all
    ultimately check the return value.  Hence probably not stable material.
    
    Fixes: 2f3abe6cbb6c9 ("iio:imu: Add support for the ADIS16480 and similar IMUs")
    Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0ea98e08aef3b500a8bbbb40cca226d3ba13098f
Author: Jian-Hong Pan <jian-hong@endlessm.com>
Date:   Mon Dec 30 16:30:45 2019 +0800

    platform/x86: asus-wmi: Fix keyboard brightness cannot be set to 0
    
    commit 176a7fca81c5090a7240664e3002c106d296bf31 upstream.
    
    Some of ASUS laptops like UX431FL keyboard backlight cannot be set to
    brightness 0. According to ASUS' information, the brightness should be
    0x80 ~ 0x83. This patch fixes it by following the logic.
    
    Fixes: e9809c0b9670 ("asus-wmi: add keyboard backlight support")
    Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com>
    Reviewed-by: Daniel Drake <drake@endlessm.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b8b57d7e7031cb5a59f6fc08955dca2d095466c
Author: Xiang Chen <chenxiang66@hisilicon.com>
Date:   Thu Jan 9 09:12:24 2020 +0800

    scsi: sd: Clear sdkp->protection_type if disk is reformatted without PI
    
    commit 465f4edaecc6c37f81349233e84d46246bcac11a upstream.
    
    If an attached disk with protection information enabled is reformatted
    to Type 0 the revalidation code does not clear the original protection
    type and subsequent accesses will keep setting RDPROTECT/WRPROTECT.
    
    Set the protection type to 0 if the disk reports PROT_EN=0 in READ
    CAPACITY(16).
    
    [mkp: commit desc]
    
    Fixes: fe542396da73 ("[SCSI] sd: Ensure we correctly disable devices with unknown protection type")
    Link: https://lore.kernel.org/r/1578532344-101668-1-git-send-email-chenxiang66@hisilicon.com
    Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cdbeeb4b2fa446bbb3456dee47779e28c9a7051d
Author: James Bottomley <James.Bottomley@HansenPartnership.com>
Date:   Wed Jan 8 17:21:32 2020 -0800

    scsi: enclosure: Fix stale device oops with hot replug
    
    commit 529244bd1afc102ab164429d338d310d5d65e60d upstream.
    
    Doing an add/remove/add on a SCSI device in an enclosure leads to an oops
    caused by poisoned values in the enclosure device list pointers.  The
    reason is because we are keeping the enclosure device across the enclosed
    device add/remove/add but the current code is doing a
    device_add/device_del/device_add on it.  This is the wrong thing to do in
    sysfs, so fix it by not doing a device_del on the enclosure device simply
    because of a hot remove of the drive in the slot.
    
    [mkp: added missing email addresses]
    
    Fixes: 43d8eb9cfd0a ("[SCSI] ses: add support for enclosure component hot removal")
    Link: https://lore.kernel.org/r/1578532892.3852.10.camel@HansenPartnership.com
    Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
    Reported-by: Luo Jiaxing <luojiaxing@huawei.com>
    Tested-by: John Garry <john.garry@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4c28ab85d4ab6ca5ba20f084490079304941b3e7
Author: Bart Van Assche <bvanassche@acm.org>
Date:   Tue Nov 5 13:46:32 2019 -0800

    RDMA/srpt: Report the SCSI residual to the initiator
    
    commit e88982ad1bb12db699de96fbc07096359ef6176c upstream.
    
    The code added by this patch is similar to the code that already exists in
    ibmvscsis_determine_resid(). This patch has been tested by running the
    following command:
    
    strace sg_raw -r 1k /dev/sdb 12 00 00 00 60 00 -o inquiry.bin |&
        grep resid=
    
    Link: https://lore.kernel.org/r/20191105214632.183302-1-bvanassche@acm.org
    Fixes: a42d985bd5b2 ("ib_srpt: Initial SRP Target merge for v3.3-rc1")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Acked-by: Honggang Li <honli@redhat.com>
    Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit be6e629f9936c46a5a67c1ee057f7a1b05fe06a4
Author: Nathan Chancellor <natechancellor@gmail.com>
Date:   Tue Dec 17 20:04:51 2019 -0700

    cifs: Adjust indentation in smb2_open_file
    
    commit 7935799e041ae10d380d04ea23868240f082bd11 upstream.
    
    Clang warns:
    
    ../fs/cifs/smb2file.c:70:3: warning: misleading indentation; statement
    is not part of the previous 'if' [-Wmisleading-indentation]
             if (oparms->tcon->use_resilient) {
             ^
    ../fs/cifs/smb2file.c:66:2: note: previous statement is here
            if (rc)
            ^
    1 warning generated.
    
    This warning occurs because there is a space after the tab on this line.
    Remove it so that the indentation is consistent with the Linux kernel
    coding style and clang no longer warns.
    
    Fixes: 592fafe644bf ("Add resilienthandles mount parm")
    Link: https://github.com/ClangBuiltLinux/linux/issues/826
    Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f6d09646c7a67c43cdf8d55d031b7f3785606907
Author: Taehee Yoo <ap420073@gmail.com>
Date:   Sun Dec 22 11:27:08 2019 +0000

    hsr: reset network header when supervision frame is created
    
    commit 3ed0a1d563903bdb4b4c36c58c4d9c1bcb23a6e6 upstream.
    
    The supervision frame is L2 frame.
    When supervision frame is created, hsr module doesn't set network header.
    If tap routine is enabled, dev_queue_xmit_nit() is called and it checks
    network_header. If network_header pointer wasn't set(or invalid),
    it resets network_header and warns.
    In order to avoid unnecessary warning message, resetting network_header
    is needed.
    
    Test commands:
        ip netns add nst
        ip link add veth0 type veth peer name veth1
        ip link add veth2 type veth peer name veth3
        ip link set veth1 netns nst
        ip link set veth3 netns nst
        ip link set veth0 up
        ip link set veth2 up
        ip link add hsr0 type hsr slave1 veth0 slave2 veth2
        ip a a 192.168.100.1/24 dev hsr0
        ip link set hsr0 up
        ip netns exec nst ip link set veth1 up
        ip netns exec nst ip link set veth3 up
        ip netns exec nst ip link add hsr1 type hsr slave1 veth1 slave2 veth3
        ip netns exec nst ip a a 192.168.100.2/24 dev hsr1
        ip netns exec nst ip link set hsr1 up
        tcpdump -nei veth0
    
    Splat looks like:
    [  175.852292][    C3] protocol 88fb is buggy, dev veth0
    
    Fixes: f421436a591d ("net/hsr: Add support for the High-availability Seamless Redundancy protocol (HSRv0)")
    Signed-off-by: Taehee Yoo <ap420073@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 25447b08cb283a67a112c12a486090ce6b39ddda
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Nov 27 10:59:19 2019 +0100

    gpio: Fix error message on out-of-range GPIO in lookup table
    
    commit d935bd50dd14a7714cbdba9a76435dbb56edb1ae upstream.
    
    When a GPIO offset in a lookup table is out-of-range, the printed error
    message (1) does not include the actual out-of-range value, and (2)
    contains an off-by-one error in the upper bound.
    
    Avoid user confusion by also printing the actual GPIO offset, and
    correcting the upper bound of the range.
    While at it, use "%u" for unsigned int.
    
    Sample impact:
    
        -requested GPIO 0 is out of range [0..32] for chip e6052000.gpio
        +requested GPIO 0 (45) is out of range [0..31] for chip e6052000.gpio
    
    Fixes: 2a3cf6a3599e9015 ("gpiolib: return -ENOENT if no GPIO mapping exists")
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lore.kernel.org/r/20191127095919.4214-1-geert+renesas@glider.be
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a41e0c5b87879f72cafddf4c5c07bea2a65f947d
Author: Jon Derrick <jonathan.derrick@intel.com>
Date:   Tue Dec 31 13:24:19 2019 -0700

    iommu: Remove device link to group on failure
    
    commit 7d4e6ccd1fb09dbfbc49746ca82bd5c25ad4bfe4 upstream.
    
    This adds the missing teardown step that removes the device link from
    the group when the device addition fails.
    
    Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
    Fixes: 797a8b4d768c5 ("iommu: Handle default domain attach failure")
    Reviewed-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 cb9bbb958b75b582209712c50c4956fc364fbf7a
Author: Ran Bi <ran.bi@mediatek.com>
Date:   Wed Dec 11 17:43:54 2019 +0800

    rtc: mt6397: fix alarm register overwrite
    
    commit 653997eeecef95c3ead4fba1b2d27e6a5854d6cd upstream.
    
    Alarm registers high byte was reserved for other functions.
    This add mask in alarm registers operation functions.
    This also fix error condition in interrupt handler.
    
    Fixes: fc2979118f3f ("rtc: mediatek: Add MT6397 RTC driver")
    
    Signed-off-by: Ran Bi <ran.bi@mediatek.com>
    Signed-off-by: Hsin-Hsiung Wang <hsin-hsiung.wang@mediatek.com>
    Link: https://lore.kernel.org/r/1576057435-3561-6-git-send-email-hsin-hsiung.wang@mediatek.com
    Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a5c290ebb46d33f8700aab2edb996c9a0478b3b8
Author: YueHaibing <yuehaibing@huawei.com>
Date:   Mon Apr 1 09:35:54 2019 +0800

    dccp: Fix memleak in __feat_register_sp
    
    commit 1d3ff0950e2b40dc861b1739029649d03f591820 upstream.
    
    If dccp_feat_push_change fails, we forget free the mem
    which is alloced by kmemdup in dccp_feat_clone_sp_val.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: e8ef967a54f4 ("dccp: Registration routines for changing feature values")
    Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
    Signed-off-by: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9058e11caf2bc2ceae91846e61248ced4f8c9956
Author: Theodore Ts'o <tytso@mit.edu>
Date:   Thu Nov 7 21:43:41 2019 -0500

    ext4: add more paranoia checking in ext4_expand_extra_isize handling
    
    commit 4ea99936a1630f51fc3a2d61a58ec4a1c4b7d55a upstream.
    
    It's possible to specify a non-zero s_want_extra_isize via debugging
    option, and this can cause bad things(tm) to happen when using a file
    system with an inode size of 128 bytes.
    
    Add better checking when the file system is mounted, as well as when
    we are actually doing the trying to do the inode expansion.
    
    Link: https://lore.kernel.org/r/20191110121510.GH23325@mit.edu
    Reported-by: syzbot+f8d6f8386ceacdbfff57@syzkaller.appspotmail.com
    Reported-by: syzbot+33d7ea72e47de3bdf4e1@syzkaller.appspotmail.com
    Reported-by: syzbot+44b6763edfc17144296f@syzkaller.appspotmail.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 4.4: adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 94143b65f27211a5d51a63caf1a8f076f7156786
Author: Barret Rhoden <brho@google.com>
Date:   Thu Apr 25 11:55:50 2019 -0400

    ext4: fix use-after-free race with debug_want_extra_isize
    
    commit 7bc04c5c2cc467c5b40f2b03ba08da174a0d5fa7 upstream.
    
    When remounting with debug_want_extra_isize, we were not performing the
    same checks that we do during a normal mount.  That allowed us to set a
    value for s_want_extra_isize that reached outside the s_inode_size.
    
    Fixes: e2b911c53584 ("ext4: clean up feature test macros with predicate functions")
    Reported-by: syzbot+f584efa0ac7213c226b7@syzkaller.appspotmail.com
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Barret Rhoden <brho@google.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 4.4: The debug_want_extra_isize mount option is not
     supported]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 73128b959c0e2346026e566cc3d31f60aae550fb
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Fri Oct 25 23:53:30 2019 -0500

    wimax: i2400: Fix memory leak in i2400m_op_rfkill_sw_toggle
    
    commit 6f3ef5c25cc762687a7341c18cbea5af54461407 upstream.
    
    In the implementation of i2400m_op_rfkill_sw_toggle() the allocated
    buffer for cmd should be released before returning. The
    documentation for i2400m_msg_to_dev() says when it returns the buffer
    can be reused. Meaning cmd should be released in either case. Move
    kfree(cmd) before return to be reached by all execution paths.
    
    Fixes: 2507e6ab7a9a ("wimax: i2400: fix memory leak")
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ec0557c7c2bde1aa524cd7c549706ef8d79c2b96
Author: Navid Emamdoost <navid.emamdoost@gmail.com>
Date:   Tue Sep 10 18:01:40 2019 -0500

    wimax: i2400: fix memory leak
    
    commit 2507e6ab7a9a440773be476141a255934468c5ef upstream.
    
    In i2400m_op_rfkill_sw_toggle cmd buffer should be released along with
    skb response.
    
    Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

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

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

commit 8e03351be73e095f6562ee22629b7b91a3f11453
Author: Igor Redko <redkoi@virtuozzo.com>
Date:   Thu Mar 17 14:19:05 2016 -0700

    mm/page_alloc.c: calculate 'available' memory in a separate function
    
    commit d02bd27bd33dd7e8d22594cd568b81be0cb584cd upstream.
    
    Add a new field, VIRTIO_BALLOON_S_AVAIL, to virtio_balloon memory
    statistics protocol, corresponding to 'Available' in /proc/meminfo.
    
    It indicates to the hypervisor how big the balloon can be inflated
    without pushing the guest system to swap.  This metric would be very
    useful in VM orchestration software to improve memory management of
    different VMs under overcommit.
    
    This patch (of 2):
    
    Factor out calculation of the available memory counter into a separate
    exportable function, in order to be able to use it in other parts of the
    kernel.
    
    In particular, it appears a relevant metric to report to the hypervisor
    via virtio-balloon statistics interface (in a followup patch).
    
    Signed-off-by: Igor Redko <redkoi@virtuozzo.com>
    Signed-off-by: Denis V. Lunev <den@openvz.org>
    Reviewed-by: Roman Kagan <rkagan@virtuozzo.com>
    Cc: Michael S. Tsirkin <mst@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 4.4 as dependency of commit a1078e821b60
     "xen: let alloc_xenballooned_pages() fail if not enough memory free"]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03a630fc2e5c7964ffc124dd4f094edb5722af3c
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Aug 21 20:00:02 2019 +0200

    ALSA: line6: Fix memory leak at line6_init_pcm() error path
    
    commit 1bc8d18c75fef3b478dbdfef722aae09e2a9fde7 upstream.
    
    I forgot to release the allocated object at the early error path in
    line6_init_pcm().  For addressing it, slightly shuffle the code so
    that the PCM destructor (pcm->private_free) is assigned properly
    before all error paths.
    
    Fixes: 3450121997ce ("ALSA: line6: Fix write on zero-sized buffer")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 4.4: adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 81b83ca3e45b83e632b8063cd27bdb072ecfc135
Author: Takashi Iwai <tiwai@suse.de>
Date:   Tue Jul 2 20:07:21 2019 +0200

    ALSA: line6: Fix write on zero-sized buffer
    
    commit 3450121997ce872eb7f1248417225827ea249710 upstream.
    
    LINE6 drivers allocate the buffers based on the value returned from
    usb_maxpacket() calls.  The manipulated device may return zero for
    this, and this results in the kmalloc() with zero size (and it may
    succeed) while the other part of the driver code writes the packet
    data with the fixed size -- which eventually overwrites.
    
    This patch adds a simple sanity check for the invalid buffer size for
    avoiding that problem.
    
    Reported-by: syzbot+219f00fb49874dcaea17@syzkaller.appspotmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    [bwh: Backported to 4.4: Driver doesn't support asymmetrical packet
     sizes, so only check snd_line6_pcm::max_packet_size]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e2c48c1e6ef5e806b68ca685216dda05e5267be2
Author: Alan Stern <stern@rowland.harvard.edu>
Date:   Mon May 20 10:44:21 2019 -0400

    p54usb: Fix race between disconnect and firmware loading
    
    commit 6e41e2257f1094acc37618bf6c856115374c6922 upstream.
    
    The syzbot fuzzer found a bug in the p54 USB wireless driver.  The
    issue involves a race between disconnect and the firmware-loader
    callback routine, and it has several aspects.
    
    One big problem is that when the firmware can't be loaded, the
    callback routine tries to unbind the driver from the USB _device_ (by
    calling device_release_driver) instead of from the USB _interface_ to
    which it is actually bound (by calling usb_driver_release_interface).
    
    The race involves access to the private data structure.  The driver's
    disconnect handler waits for a completion that is signalled by the
    firmware-loader callback routine.  As soon as the completion is
    signalled, you have to assume that the private data structure may have
    been deallocated by the disconnect handler -- even if the firmware was
    loaded without errors.  However, the callback routine does access the
    private data several times after that point.
    
    Another problem is that, in order to ensure that the USB device
    structure hasn't been freed when the callback routine runs, the driver
    takes a reference to it.  This isn't good enough any more, because now
    that the callback routine calls usb_driver_release_interface, it has
    to ensure that the interface structure hasn't been freed.
    
    Finally, the driver takes an unnecessary reference to the USB device
    structure in the probe function and drops the reference in the
    disconnect handler.  This extra reference doesn't accomplish anything,
    because the USB core already guarantees that a device structure won't
    be deallocated while a driver is still bound to any of its interfaces.
    
    To fix these problems, this patch makes the following changes:
    
            Call usb_driver_release_interface() rather than
            device_release_driver().
    
            Don't signal the completion until after the important
            information has been copied out of the private data structure,
            and don't refer to the private data at all thereafter.
    
            Lock udev (the interface's parent) before unbinding the driver
            instead of locking udev->parent.
    
            During the firmware loading process, take a reference to the
            USB interface instead of the USB device.
    
            Don't take an unnecessary reference to the device during probe
            (and then don't drop it during disconnect).
    
    Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
    Reported-and-tested-by: syzbot+200d4bb11b23d929335f@syzkaller.appspotmail.com
    Acked-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    [bwh: Backported to 4.4: adjust filename]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e6c986b15703eb2e0d59a3f79e99fd2aa6221b51
Author: Vandana BN <bnvandana@gmail.com>
Date:   Wed May 22 04:34:15 2019 -0400

    media: usb:zr364xx:Fix KASAN:null-ptr-deref Read in zr364xx_vidioc_querycap
    
    commit 5d2e73a5f80a5b5aff3caf1ec6d39b5b3f54b26e upstream.
    
    SyzKaller hit the null pointer deref while reading from uninitialized
    udev->product in zr364xx_vidioc_querycap().
    
    ==================================================================
    BUG: KASAN: null-ptr-deref in read_word_at_a_time+0xe/0x20
    include/linux/compiler.h:274
    Read of size 1 at addr 0000000000000000 by task v4l_id/5287
    
    CPU: 1 PID: 5287 Comm: v4l_id Not tainted 5.1.0-rc3-319004-g43151d6 #6
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
    Google 01/01/2011
    Call Trace:
      __dump_stack lib/dump_stack.c:77 [inline]
      dump_stack+0xe8/0x16e lib/dump_stack.c:113
      kasan_report.cold+0x5/0x3c mm/kasan/report.c:321
      read_word_at_a_time+0xe/0x20 include/linux/compiler.h:274
      strscpy+0x8a/0x280 lib/string.c:207
      zr364xx_vidioc_querycap+0xb5/0x210 drivers/media/usb/zr364xx/zr364xx.c:706
      v4l_querycap+0x12b/0x340 drivers/media/v4l2-core/v4l2-ioctl.c:1062
      __video_do_ioctl+0x5bb/0xb40 drivers/media/v4l2-core/v4l2-ioctl.c:2874
      video_usercopy+0x44e/0xf00 drivers/media/v4l2-core/v4l2-ioctl.c:3056
      v4l2_ioctl+0x14e/0x1a0 drivers/media/v4l2-core/v4l2-dev.c:364
      vfs_ioctl fs/ioctl.c:46 [inline]
      file_ioctl fs/ioctl.c:509 [inline]
      do_vfs_ioctl+0xced/0x12f0 fs/ioctl.c:696
      ksys_ioctl+0xa0/0xc0 fs/ioctl.c:713
      __do_sys_ioctl fs/ioctl.c:720 [inline]
      __se_sys_ioctl fs/ioctl.c:718 [inline]
      __x64_sys_ioctl+0x74/0xb0 fs/ioctl.c:718
      do_syscall_64+0xcf/0x4f0 arch/x86/entry/common.c:290
      entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x7f3b56d8b347
    Code: 90 90 90 48 8b 05 f1 fa 2a 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff
    ff c3 90 90 90 90 90 90 90 90 90 90 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff
    ff 73 01 c3 48 8b 0d c1 fa 2a 00 31 d2 48 29 c2 64
    RSP: 002b:00007ffe005d5d68 EFLAGS: 00000202 ORIG_RAX: 0000000000000010
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007f3b56d8b347
    RDX: 00007ffe005d5d70 RSI: 0000000080685600 RDI: 0000000000000003
    RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000400884
    R13: 00007ffe005d5ec0 R14: 0000000000000000 R15: 0000000000000000
    ==================================================================
    
    For this device udev->product is not initialized and accessing it causes a NULL pointer deref.
    
    The fix is to check for NULL before strscpy() and copy empty string, if
    product is NULL
    
    Reported-by: syzbot+66010012fd4c531a1a96@syzkaller.appspotmail.com
    Signed-off-by: Vandana BN <bnvandana@gmail.com>
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    [bwh: Backported to 4.4: This function uses strlcpy() instead of strscpy()]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 622c77a3addefa54d61205177635409de87a8a7c
Author: Jouni Malinen <jouni@codeaurora.org>
Date:   Wed Sep 11 16:03:05 2019 +0300

    mac80211: Do not send Layer 2 Update frame before authorization
    
    commit 3e493173b7841259a08c5c8e5cbe90adb349da7e upstream.
    
    The Layer 2 Update frame is used to update bridges when a station roams
    to another AP even if that STA does not transmit any frames after the
    reassociation. This behavior was described in IEEE Std 802.11F-2003 as
    something that would happen based on MLME-ASSOCIATE.indication, i.e.,
    before completing 4-way handshake. However, this IEEE trial-use
    recommended practice document was published before RSN (IEEE Std
    802.11i-2004) and as such, did not consider RSN use cases. Furthermore,
    IEEE Std 802.11F-2003 was withdrawn in 2006 and as such, has not been
    maintained amd should not be used anymore.
    
    Sending out the Layer 2 Update frame immediately after association is
    fine for open networks (and also when using SAE, FT protocol, or FILS
    authentication when the station is actually authenticated by the time
    association completes). However, it is not appropriate for cases where
    RSN is used with PSK or EAP authentication since the station is actually
    fully authenticated only once the 4-way handshake completes after
    authentication and attackers might be able to use the unauthenticated
    triggering of Layer 2 Update frame transmission to disrupt bridge
    behavior.
    
    Fix this by postponing transmission of the Layer 2 Update frame from
    station entry addition to the point when the station entry is marked
    authorized. Similarly, send out the VLAN binding update only if the STA
    entry has already been authorized.
    
    Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
    Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [bwh: Backported to 4.4: adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d9805179c7c195a9468a31d93974d1cf1800ae9
Author: Dedy Lansky <dlansky@codeaurora.org>
Date:   Sun Jul 29 14:59:16 2018 +0300

    cfg80211/mac80211: make ieee80211_send_layer2_update a public function
    
    commit 30ca1aa536211f5ac3de0173513a7a99a98a97f3 upstream.
    
    Make ieee80211_send_layer2_update() a common function so other drivers
    can re-use it.
    
    Signed-off-by: Dedy Lansky <dlansky@codeaurora.org>
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    [bwh: Backported to 4.4 as dependency of commit 3e493173b784
     "mac80211: Do not send Layer 2 Update frame before authorization":
     - Retain type-casting of skb_put() return value
     - Adjust context]
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 80427a7b1195e7946992baffeb112b2635245198
Author: Sanjay Konduri <sanjay.konduri@redpinesignals.com>
Date:   Tue May 15 14:34:30 2018 +0530

    rsi: add fix for crash during assertions
    
    commit abd39c6ded9db53aa44c2540092bdd5fb6590fa8 upstream.
    
    Observed crash in some scenarios when assertion has occurred,
    this is because hw structure is freed and is tried to get
    accessed in some functions where null check is already
    present. So, avoided the crash by making the hw to NULL after
    freeing.
    
    Signed-off-by: Sanjay Konduri <sanjay.konduri@redpinesignals.com>
    Signed-off-by: Sushant Kumar Mishra <sushant.mishra@redpinesignals.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit acebe8464be16133c656c5578e325ee69db12166
Author: Jiri Kosina <jkosina@suse.cz>
Date:   Fri Jan 10 15:32:51 2020 +0100

    HID: hidraw, uhid: Always report EPOLLOUT
    
    [ Upstream commit 9e635c2851df6caee651e589fbf937b637973c91 ]
    
    hidraw and uhid device nodes are always available for writing so we should
    always report EPOLLOUT and EPOLLWRNORM bits, not only in the cases when
    there is nothing to read.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Fixes: be54e7461ffdc ("HID: uhid: Fix returning EPOLLOUT from uhid_char_poll")
    Fixes: 9f3b61dc1dd7b ("HID: hidraw: Fix returning EPOLLOUT from hidraw_poll")
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

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

    HID: hidraw: Fix returning EPOLLOUT from hidraw_poll
    
    [ Upstream commit 9f3b61dc1dd7b81e99e7ed23776bb64a35f39e1a ]
    
    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: Sasha Levin <sashal@kernel.org>

commit ae545017ff74ffe09d52909228510da85852b789
Author: Fabian Henneke <fabian.henneke@gmail.com>
Date:   Tue Jul 9 13:03:37 2019 +0200

    hidraw: Return EPOLLOUT from hidraw_poll
    
    [ Upstream commit 378b80370aa1fe50f9c48a3ac8af3e416e73b89f ]
    
    Always return EPOLLOUT from hidraw_poll when a device is connected.
    This is safe since writes are always possible (but will always block).
    
    hidraw does not support non-blocking writes and instead always calls
    blocking backend functions on write requests. Hence, so far, a call to
    poll never returned EPOLLOUT, which confuses tools like socat.
    
    Signed-off-by: Fabian Henneke <fabian.henneke@gmail.com>
    In-reply-to: <CA+hv5qkyis03CgYTWeWX9cr0my-d2Oe+aZo+mjmWRXgjrGqyrw@mail.gmail.com>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
