commit 5fd3cce374df811af0c71585bc3d1096b04da9c9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Tue Dec 14 10:18:10 2021 +0100

    Linux 4.19.221
    
    Link: https://lore.kernel.org/r/20211213092930.763200615@linuxfoundation.org
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3abc67ecf3364d6be3df4c129e9ec01c1ea742f3
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Thu Sep 27 14:47:56 2018 +0000

    net: sched: make function qdisc_free_cb() static
    
    commit 5362700c942b2cc4bab328361545a6d6fe649534 upstream.
    
    Fixes the following sparse warning:
    
    net/sched/sch_generic.c:944:6: warning:
     symbol 'qdisc_free_cb' was not declared. Should it be static?
    
    Fixes: 3a7d0d07a386 ("net: sched: extend Qdisc with rcu")
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f9ff09e266ca70c801b9911280f6ae64c9183d85
Author: Cong Wang <xiyou.wangcong@gmail.com>
Date:   Thu Sep 27 13:42:19 2018 -0700

    net_sched: fix a crash in tc_new_tfilter()
    
    commit 460b360104d51552a57f39e54b2589c9fd7fa0b3 upstream.
    
    When tcf_block_find() fails, it already rollbacks the qdisc refcnt,
    so its caller doesn't need to clean up this again. Avoid calling
    qdisc_put() again by resetting qdisc to NULL for callers.
    
    Reported-by: syzbot+37b8770e6d5a8220a039@syzkaller.appspotmail.com
    Fixes: e368fdb61d8e ("net: sched: use Qdisc rcu API instead of relying on rtnl lock")
    Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d7b6d5f0e9c681c9390d25af8d23606e12fbc5f8
Author: Vladimir Murzin <vladimir.murzin@arm.com>
Date:   Wed Dec 1 11:02:58 2021 +0000

    irqchip: nvic: Fix offset for Interrupt Priority Offsets
    
    commit c5e0cbe2858d278a27d5b3fe31890aea5be064c4 upstream.
    
    According to ARM(v7M) ARM Interrupt Priority Offsets located at
    0xE000E400-0xE000E5EC, while 0xE000E300-0xE000E33C covers read-only
    Interrupt Active Bit Registers
    
    Fixes: 292ec080491d ("irqchip: Add support for ARMv7-M NVIC")
    Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211201110259.84857-1-vladimir.murzin@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0642f669d9509d481be3c5ab02cdd9dac5f5e095
Author: Wudi Wang <wangwudi@hisilicon.com>
Date:   Wed Dec 8 09:54:29 2021 +0800

    irqchip/irq-gic-v3-its.c: Force synchronisation when issuing INVALL
    
    commit b383a42ca523ce54bcbd63f7c8f3cf974abc9b9a upstream.
    
    INVALL CMD specifies that the ITS must ensure any caching associated with
    the interrupt collection defined by ICID is consistent with the LPI
    configuration tables held in memory for all Redistributors. SYNC is
    required to ensure that INVALL is executed.
    
    Currently, LPI configuration data may be inconsistent with that in the
    memory within a short period of time after the INVALL command is executed.
    
    Signed-off-by: Wudi Wang <wangwudi@hisilicon.com>
    Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Fixes: cc2d3216f53c ("irqchip: GICv3: ITS command queue")
    Link: https://lore.kernel.org/r/20211208015429.5007-1-zhangshaokun@hisilicon.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ea4361bedddeaa56d31d3bdbf615ef3e09d0347f
Author: Pali Rohár <pali@kernel.org>
Date:   Thu Nov 25 14:00:57 2021 +0100

    irqchip/armada-370-xp: Fix support for Multi-MSI interrupts
    
    commit d0a553502efd545c1ce3fd08fc4d423f8e4ac3d6 upstream.
    
    irq-armada-370-xp driver already sets MSI_FLAG_MULTI_PCI_MSI flag into
    msi_domain_info structure. But allocated interrupt numbers for Multi-MSI
    needs to be properly aligned otherwise devices send MSI interrupt with
    wrong number.
    
    Fix this issue by using function bitmap_find_free_region() instead of
    bitmap_find_next_zero_area() to allocate aligned interrupt numbers.
    
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Fixes: a71b9412c90c ("irqchip/armada-370-xp: Allow allocation of multiple MSIs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211125130057.26705-2-pali@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9b3ed0c3b20d204457d9255431c06b52b6d9217b
Author: Pali Rohár <pali@kernel.org>
Date:   Thu Nov 25 14:00:56 2021 +0100

    irqchip/armada-370-xp: Fix return value of armada_370_xp_msi_alloc()
    
    commit ce20eff57361e72878a772ef08b5239d3ae102b6 upstream.
    
    IRQ domain alloc function should return zero on success. Non-zero value
    indicates failure.
    
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Fixes: fcc392d501bd ("irqchip/armada-370-xp: Use the generic MSI infrastructure")
    Cc: stable@vger.kernel.org
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20211125130057.26705-1-pali@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a3730f74159ad00a28960c0efe2a931fe6fe6b45
Author: Yang Yingliang <yangyingliang@huawei.com>
Date:   Mon Oct 25 20:41:59 2021 +0800

    iio: accel: kxcjk-1013: Fix possible memory leak in probe and remove
    
    commit 70c9774e180d151abaab358108e3510a8e615215 upstream.
    
    When ACPI type is ACPI_SMO8500, the data->dready_trig will not be set, the
    memory allocated by iio_triggered_buffer_setup() will not be freed, and cause
    memory leak as follows:
    
    unreferenced object 0xffff888009551400 (size 512):
      comm "i2c-SMO8500-125", pid 911, jiffies 4294911787 (age 83.852s)
      hex dump (first 32 bytes):
        02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 20 e2 e5 c0 ff ff ff ff  ........ .......
      backtrace:
        [<0000000041ce75ee>] kmem_cache_alloc_trace+0x16d/0x360
        [<000000000aeb17b0>] iio_kfifo_allocate+0x41/0x130 [kfifo_buf]
        [<000000004b40c1f5>] iio_triggered_buffer_setup_ext+0x2c/0x210 [industrialio_triggered_buffer]
        [<000000004375b15f>] kxcjk1013_probe+0x10c3/0x1d81 [kxcjk_1013]
    
    Fix it by remove data->dready_trig condition in probe and remove.
    
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Fixes: a25691c1f967 ("iio: accel: kxcjk1013: allow using an external trigger")
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Cc: <Stable@vger.kernel.org>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20211025124159.2700301-1-yangyingliang@huawei.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e40ddc4bdcbf4130abb88d9c2f9a629984230126
Author: Evgeny Boger <boger@wirenboard.com>
Date:   Wed Nov 17 00:37:46 2021 +0300

    iio: adc: axp20x_adc: fix charging current reporting on AXP22x
    
    commit 92beafb76a31bdc02649eb44e93a8e4f4cfcdbe8 upstream.
    
    Both the charging and discharging currents on AXP22x are stored as
    12-bit integers, in accordance with the datasheet.
    It's also confirmed by vendor BSP (axp20x_adc.c:axp22_icharge_to_mA).
    
    The scale factor of 0.5 is never mentioned in datasheet, nor in the
    vendor source code. I think it was here to compensate for
    erroneous addition bit in register width.
    
    Tested on custom A40i+AXP221s board with external ammeter as
    a reference.
    
    Fixes: 0e34d5de961d ("iio: adc: add support for X-Powers AXP20X and AXP22X PMICs ADCs")
    Signed-off-by: Evgeny Boger <boger@wirenboard.com>
    Acked-by: Chen-Yu Tsai <wens@csie.org>
    Link: https://lore.kernel.org/r/20211116213746.264378-1-boger@wirenboard.com
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 243ace2cc467ca2f72c5c94eb4c8e281e636b714
Author: Gwendal Grignou <gwendal@chromium.org>
Date:   Thu Nov 4 01:24:08 2021 -0700

    iio: at91-sama5d2: Fix incorrect sign extension
    
    commit 652e7df485c6884d552085ae2c73efa6cfea3547 upstream.
    
    Use scan_type when processing raw data which also fixes that the sign
    extension was from the wrong bit.
    
    Use channel definition as root of trust and replace constant
    when reading elements directly using the raw sysfs attributes.
    
    Fixes: 6794e23fa3fe ("iio: adc: at91-sama5d2_adc: add support for oversampling resolution")
    Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
    Reviewed-by: Eugen Hristev <eugen.hristev@microchip.com>
    Cc: <Stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211104082413.3681212-9-gwendal@chromium.org
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6ad5822070371f7e573de7201e7fe95ceb06b3d
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Mon Nov 1 14:30:43 2021 +0100

    iio: dln2: Check return value of devm_iio_trigger_register()
    
    commit 90751fb9f224e0e1555b49a8aa9e68f6537e4cec upstream.
    
    Registering a trigger can fail and the return value of
    devm_iio_trigger_register() must be checked. Otherwise undefined behavior
    can occur when the trigger is used.
    
    Fixes: 7c0299e879dd ("iio: adc: Add support for DLN2 ADC")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211101133043.6974-1-lars@metafoo.de
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9c1f3bdec0cb08ce284517ebbe2694c8dd6ed762
Author: Noralf Trønnes <noralf@tronnes.org>
Date:   Mon Oct 18 13:37:31 2021 +0200

    iio: dln2-adc: Fix lockdep complaint
    
    commit 59f92868176f191eefde70d284bdfc1ed76a84bc upstream.
    
    When reading the voltage:
    
    $ cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw
    
    Lockdep complains:
    
    [  153.910616] ======================================================
    [  153.916918] WARNING: possible circular locking dependency detected
    [  153.923221] 5.14.0+ #5 Not tainted
    [  153.926692] ------------------------------------------------------
    [  153.932992] cat/717 is trying to acquire lock:
    [  153.937525] c2585358 (&indio_dev->mlock){+.+.}-{3:3}, at: iio_device_claim_direct_mode+0x28/0x44
    [  153.946541]
                   but task is already holding lock:
    [  153.952487] c2585860 (&dln2->mutex){+.+.}-{3:3}, at: dln2_adc_read_raw+0x94/0x2bc [dln2_adc]
    [  153.961152]
                   which lock already depends on the new lock.
    
    Fix this by not calling into the iio core underneath the dln2->mutex lock.
    
    Fixes: 7c0299e879dd ("iio: adc: Add support for DLN2 ADC")
    Cc: Jack Andersen <jackoalan@gmail.com>
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Link: https://lore.kernel.org/r/20211018113731.25723-1-noralf@tronnes.org
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 36322c395b4ffe82fd95683debaf099d1197e080
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Mon Nov 1 15:40:54 2021 +0100

    iio: itg3200: Call iio_trigger_notify_done() on error
    
    commit 67fe29583e72b2103abb661bb58036e3c1f00277 upstream.
    
    IIO trigger handlers must call iio_trigger_notify_done() when done. This
    must be done even when an error occurred. Otherwise the trigger will be
    seen as busy indefinitely and the trigger handler will never be called
    again.
    
    The itg3200 driver neglects to call iio_trigger_notify_done() when there is
    an error reading the gyro data. Fix this by making sure that
    iio_trigger_notify_done() is included in the error exit path.
    
    Fixes: 9dbf091da080 ("iio: gyro: Add itg3200")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211101144055.13858-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b3f2482dd2d2ca1b6e26f99f246784f33cacff99
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 19:12:50 2021 +0200

    iio: kxsd9: Don't return error code in trigger handler
    
    commit 45febe0d63917ee908198c5be08511c64ee1790a upstream.
    
    IIO trigger handlers need to return one of the irqreturn_t values.
    Returning an error code is not supported.
    
    The kxsd9 interrupt handler returns an error code if reading the data
    registers fails. In addition when exiting due to an error the trigger
    handler does not call `iio_trigger_notify_done()`. Which when not done
    keeps the triggered disabled forever.
    
    Modify the code so that the function returns a valid irqreturn_t value as
    well as calling `iio_trigger_notify_done()` on all exit paths.
    
    Since we can't return the error code make sure to at least log it as part
    of the error message.
    
    Fixes: 0427a106a98a ("iio: accel: kxsd9: Add triggered buffer handling")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
    Link: https://lore.kernel.org/r/20211024171251.22896-2-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f7db20fdd6eff8ffe96ec87d724143f41effa6f0
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 19:12:49 2021 +0200

    iio: ltr501: Don't return error code in trigger handler
    
    commit ef9d67fa72c1b149a420587e435a3e888bdbf74f upstream.
    
    IIO trigger handlers need to return one of the irqreturn_t values.
    Returning an error code is not supported.
    
    The ltr501 interrupt handler gets this right for most error paths, but
    there is one case where it returns the error code.
    
    In addition for this particular case the trigger handler does not call
    `iio_trigger_notify_done()`. Which when not done keeps the triggered
    disabled forever.
    
    Modify the code so that the function returns a valid irqreturn_t value as
    well as calling `iio_trigger_notify_done()` on all exit paths.
    
    Fixes: 2690be905123 ("iio: Add Lite-On ltr501 ambient light / proximity sensor driver")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211024171251.22896-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5deab10ced368c807866283f8b79144c4823be8
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 11:26:59 2021 +0200

    iio: mma8452: Fix trigger reference couting
    
    commit cd0082235783f814241a1c9483fb89e405f4f892 upstream.
    
    The mma8452 driver directly assigns a trigger to the struct iio_dev. The
    IIO core when done using this trigger will call `iio_trigger_put()` to drop
    the reference count by 1.
    
    Without the matching `iio_trigger_get()` in the driver the reference count
    can reach 0 too early, the trigger gets freed while still in use and a
    use-after-free occurs.
    
    Fix this by getting a reference to the trigger before assigning it to the
    IIO device.
    
    Fixes: ae6d9ce05691 ("iio: mma8452: Add support for interrupt driven triggers.")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211024092700.6844-1-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ed04c87d83ff7cfba44c0c3b57fba1f8ea18d872
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 19:12:51 2021 +0200

    iio: stk3310: Don't return error code in interrupt handler
    
    commit 8e1eeca5afa7ba84d885987165dbdc5decf15413 upstream.
    
    Interrupt handlers must return one of the irqreturn_t values. Returning a
    error code is not supported.
    
    The stk3310 event interrupt handler returns an error code when reading the
    flags register fails.
    
    Fix the implementation to always return an irqreturn_t value.
    
    Fixes: 3dd477acbdd1 ("iio: light: Add threshold interrupt support for STK3310")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Link: https://lore.kernel.org/r/20211024171251.22896-3-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 37e85bdff6d30204680f9ef26db724104625ce42
Author: Alyssa Ross <hi@alyssa.is>
Date:   Thu Nov 25 18:28:48 2021 +0000

    iio: trigger: stm32-timer: fix MODULE_ALIAS
    
    commit 893621e0606747c5bbefcaf2794d12c7aa6212b7 upstream.
    
    modprobe can't handle spaces in aliases.
    
    Fixes: 93fbe91b5521 ("iio: Add STM32 timer trigger driver")
    Signed-off-by: Alyssa Ross <hi@alyssa.is>
    Link: https://lore.kernel.org/r/20211125182850.2645424-1-hi@alyssa.is
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a2cce4fed1470b79747b5191b0a0730661b53cf8
Author: Lars-Peter Clausen <lars@metafoo.de>
Date:   Sun Oct 24 11:27:00 2021 +0200

    iio: trigger: Fix reference counting
    
    commit a827a4984664308f13599a0b26c77018176d0c7c upstream.
    
    In viio_trigger_alloc() device_initialize() is used to set the initial
    reference count of the trigger to 1. Then another get_device() is called on
    trigger. This sets the reference count to 2 before the trigger is returned.
    
    iio_trigger_free(), which is the matching API to viio_trigger_alloc(),
    calls put_device() which decreases the reference count by 1. But the second
    reference count acquired in viio_trigger_alloc() is never dropped.
    
    As a result the iio_trigger_release() function is never called and the
    memory associated with the trigger is never freed.
    
    Since there is no reason for the trigger to start its lifetime with two
    reference counts just remove the extra get_device() in
    viio_trigger_alloc().
    
    Fixes: 5f9c035cae18 ("staging:iio:triggers. Add a reference get to the core for triggers.")
    Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
    Acked-by: Nuno Sá <nuno.sa@analog.com>
    Link: https://lore.kernel.org/r/20211024092700.6844-2-lars@metafoo.de
    Cc: <Stable@vger.kernel.org>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cc7c2818c71ebace207df40cc586c8c74e3d1a59
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Dec 10 16:17:35 2021 +0200

    xhci: avoid race between disable slot command and host runtime suspend
    
    commit 7faac1953ed1f658f719cdf7bb7303fa5eef822c upstream.
    
    Make xhci_disable_slot() synchronous, thus ensuring it, and
    xhci_free_dev() calling it return after xHC controller completes
    the disable slot command.
    
    Otherwise the roothub and xHC host may runtime suspend, and clear the
    command ring while the disable slot command is being processed.
    
    This causes a command completion mismatch as the completion event can't
    be mapped to the correct command.
    Command ring gets out of sync and commands time out.
    Driver finally assumes host is unresponsive and bails out.
    
    usb 2-4: USB disconnect, device number 10
    xhci_hcd 0000:00:0d.0: ERROR mismatched command completion event
    ...
    xhci_hcd 0000:00:0d.0: xHCI host controller not responding, assume dead
    xhci_hcd 0000:00:0d.0: HC died; cleaning up
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211210141735.1384209-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d843b2b5dbdc29b07ad9cc97efd9e249796cd02c
Author: Pavel Hofman <pavel.hofman@ivitera.com>
Date:   Fri Dec 10 09:52:19 2021 +0100

    usb: core: config: using bit mask instead of individual bits
    
    commit ca5737396927afd4d57b133fd2874bbcf3421cdb upstream.
    
    Using standard USB_EP_MAXP_MULT_MASK instead of individual bits for
    extracting multiple-transactions bits from wMaxPacketSize value.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Link: https://lore.kernel.org/r/20211210085219.16796-2-pavel.hofman@ivitera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5054e9aecffa55f4798bde75917003ed965fdb77
Author: Kai-Heng Feng <kai.heng.feng@canonical.com>
Date:   Fri Dec 10 16:17:34 2021 +0200

    xhci: Remove CONFIG_USB_DEFAULT_PERSIST to prevent xHCI from runtime suspending
    
    commit 811ae81320da53a5670c36970cefacca8519f90e upstream.
    
    When the xHCI is quirked with XHCI_RESET_ON_RESUME, runtime resume
    routine also resets the controller.
    
    This is bad for USB drivers without reset_resume callback, because
    there's no subsequent call of usb_dev_complete() ->
    usb_resume_complete() to force rebinding the driver to the device. For
    instance, btusb device stops working after xHCI controller is runtime
    resumed, if the controlled is quirked with XHCI_RESET_ON_RESUME.
    
    So always take XHCI_RESET_ON_RESUME into account to solve the issue.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211210141735.1384209-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3db1cbe2dbd8a71ddc89d61ac3c56df3fcf20f75
Author: Pavel Hofman <pavel.hofman@ivitera.com>
Date:   Fri Dec 10 09:52:18 2021 +0100

    usb: core: config: fix validation of wMaxPacketValue entries
    
    commit 1a3910c80966e4a76b25ce812f6bea0ef1b1d530 upstream.
    
    The checks performed by commit aed9d65ac327 ("USB: validate
    wMaxPacketValue entries in endpoint descriptors") require that initial
    value of the maxp variable contains both maximum packet size bits
    (10..0) and multiple-transactions bits (12..11). However, the existing
    code assings only the maximum packet size bits. This patch assigns all
    bits of wMaxPacketSize to the variable.
    
    Fixes: aed9d65ac327 ("USB: validate wMaxPacketValue entries in endpoint descriptors")
    Cc: stable <stable@vger.kernel.org>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
    Link: https://lore.kernel.org/r/20211210085219.16796-1-pavel.hofman@ivitera.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32de5efd483db68f12233fbf63743a2d92f20ae4
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Dec 9 19:02:15 2021 +0100

    USB: gadget: zero allocate endpoint 0 buffers
    
    commit 86ebbc11bb3f60908a51f3e41a17e3f477c2eaa3 upstream.
    
    Under some conditions, USB gadget devices can show allocated buffer
    contents to a host.  Fix this up by zero-allocating them so that any
    extra data will all just be zeros.
    
    Reported-by: Szymon Heidrich <szymon.heidrich@gmail.com>
    Tested-by: Szymon Heidrich <szymon.heidrich@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 13e45e7a262dd96e8161823314679543048709b9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Dec 9 18:59:27 2021 +0100

    USB: gadget: detect too-big endpoint 0 requests
    
    commit 153a2d7e3350cc89d406ba2d35be8793a64c2038 upstream.
    
    Sometimes USB hosts can ask for buffers that are too large from endpoint
    0, which should not be allowed.  If this happens for OUT requests, stall
    the endpoint, but for IN requests, trim the request size to the endpoint
    buffer size.
    
    Co-developed-by: Szymon Heidrich <szymon.heidrich@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eddd1f2f13c7ddf8c6f5529a2a39d4dc980874fa
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Tue Dec 7 11:24:16 2021 +0300

    net/qla3xxx: fix an error code in ql_adapter_up()
    
    commit d17b9737c2bc09b4ac6caf469826e5a7ce3ffab7 upstream.
    
    The ql_wait_for_drvr_lock() fails and returns false, then this
    function should return an error code instead of returning success.
    
    The other problem is that the success path prints an error message
    netdev_err(ndev, "Releasing driver lock\n");  Delete that and
    re-order the code a little to make it more clear.
    
    Fixes: 5a4faa873782 ("[PATCH] qla3xxx NIC driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211207082416.GA16110@kili
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5177509b01e51457254671442902e211c34fbe60
Author: Eric Dumazet <edumazet@google.com>
Date:   Mon Dec 6 08:53:29 2021 -0800

    net, neigh: clear whole pneigh_entry at alloc time
    
    commit e195e9b5dee6459d8c8e6a314cc71a644a0537fd upstream.
    
    Commit 2c611ad97a82 ("net, neigh: Extend neigh->flags to 32 bit
    to allow for extensions") enables a new KMSAM warning [1]
    
    I think the bug is actually older, because the following intruction
    only occurred if ndm->ndm_flags had NTF_PROXY set.
    
            pn->flags = ndm->ndm_flags;
    
    Let's clear all pneigh_entry fields at alloc time.
    
    [1]
    BUG: KMSAN: uninit-value in pneigh_fill_info+0x986/0xb30 net/core/neighbour.c:2593
     pneigh_fill_info+0x986/0xb30 net/core/neighbour.c:2593
     pneigh_dump_table net/core/neighbour.c:2715 [inline]
     neigh_dump_info+0x1e3f/0x2c60 net/core/neighbour.c:2832
     netlink_dump+0xaca/0x16a0 net/netlink/af_netlink.c:2265
     __netlink_dump_start+0xd1c/0xee0 net/netlink/af_netlink.c:2370
     netlink_dump_start include/linux/netlink.h:254 [inline]
     rtnetlink_rcv_msg+0x181b/0x18c0 net/core/rtnetlink.c:5534
     netlink_rcv_skb+0x447/0x800 net/netlink/af_netlink.c:2491
     rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:5589
     netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
     netlink_unicast+0x1095/0x1360 net/netlink/af_netlink.c:1345
     netlink_sendmsg+0x16f3/0x1870 net/netlink/af_netlink.c:1916
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg net/socket.c:724 [inline]
     sock_write_iter+0x594/0x690 net/socket.c:1057
     call_write_iter include/linux/fs.h:2162 [inline]
     new_sync_write fs/read_write.c:503 [inline]
     vfs_write+0x1318/0x2030 fs/read_write.c:590
     ksys_write+0x28c/0x520 fs/read_write.c:643
     __do_sys_write fs/read_write.c:655 [inline]
     __se_sys_write fs/read_write.c:652 [inline]
     __x64_sys_write+0xdb/0x120 fs/read_write.c:652
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Uninit was created at:
     slab_post_alloc_hook mm/slab.h:524 [inline]
     slab_alloc_node mm/slub.c:3251 [inline]
     slab_alloc mm/slub.c:3259 [inline]
     __kmalloc+0xc3c/0x12d0 mm/slub.c:4437
     kmalloc include/linux/slab.h:595 [inline]
     pneigh_lookup+0x60f/0xd70 net/core/neighbour.c:766
     arp_req_set_public net/ipv4/arp.c:1016 [inline]
     arp_req_set+0x430/0x10a0 net/ipv4/arp.c:1032
     arp_ioctl+0x8d4/0xb60 net/ipv4/arp.c:1232
     inet_ioctl+0x4ef/0x820 net/ipv4/af_inet.c:947
     sock_do_ioctl net/socket.c:1118 [inline]
     sock_ioctl+0xa3f/0x13e0 net/socket.c:1235
     vfs_ioctl fs/ioctl.c:51 [inline]
     __do_sys_ioctl fs/ioctl.c:874 [inline]
     __se_sys_ioctl+0x2df/0x4a0 fs/ioctl.c:860
     __x64_sys_ioctl+0xd8/0x110 fs/ioctl.c:860
     do_syscall_x64 arch/x86/entry/common.c:51 [inline]
     do_syscall_64+0x54/0xd0 arch/x86/entry/common.c:82
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    CPU: 1 PID: 20001 Comm: syz-executor.0 Not tainted 5.16.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 62dd93181aaa ("[IPV6] NDISC: Set per-entry is_router flag in Proxy NA.")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Roopa Prabhu <roopa@nvidia.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20211206165329.1049835-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9549dab5bce75def1def119f078e1107e93f9b5e
Author: Joakim Zhang <qiangqing.zhang@nxp.com>
Date:   Mon Dec 6 21:54:57 2021 +0800

    net: fec: only clear interrupt of handling queue in fec_enet_rx_queue()
    
    commit b5bd95d17102b6719e3531d627875b9690371383 upstream.
    
    Background:
    We have a customer is running a Profinet stack on the 8MM which receives and
    responds PNIO packets every 4ms and PNIO-CM packets every 40ms. However, from
    time to time the received PNIO-CM package is "stock" and is only handled when
    receiving a new PNIO-CM or DCERPC-Ping packet (tcpdump shows the PNIO-CM and
    the DCERPC-Ping packet at the same time but the PNIO-CM HW timestamp is from
    the expected 40 ms and not the 2s delay of the DCERPC-Ping).
    
    After debugging, we noticed PNIO, PNIO-CM and DCERPC-Ping packets would
    be handled by different RX queues.
    
    The root cause should be driver ack all queues' interrupt when handle a
    specific queue in fec_enet_rx_queue(). The blamed patch is introduced to
    receive as much packets as possible once to avoid interrupt flooding.
    But it's unreasonable to clear other queues'interrupt when handling one
    queue, this patch tries to fix it.
    
    Fixes: ed63f1dcd578 (net: fec: clear receive interrupts before processing a packet)
    Cc: Russell King <rmk+kernel@arm.linux.org.uk>
    Reported-by: Nicolas Diaz <nicolas.diaz@nxp.com>
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Link: https://lore.kernel.org/r/20211206135457.15946-1-qiangqing.zhang@nxp.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 797f299e517f0dc0739fd4f9306ab3ca9adb054c
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Fri Dec 3 13:11:28 2021 +0300

    net: altera: set a couple error code in probe()
    
    commit badd7857f5c933a3dc34942a2c11d67fdbdc24de upstream.
    
    There are two error paths which accidentally return success instead of
    a negative error code.
    
    Fixes: bbd2190ce96d ("Altera TSE: Add main and header file for Altera Ethernet Driver")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 0301ca1453b3ad86ffad35bc84b5566ada87327c
Author: Lee Jones <lee.jones@linaro.org>
Date:   Thu Dec 2 14:34:37 2021 +0000

    net: cdc_ncm: Allow for dwNtbOutMaxSize to be unset or zero
    
    commit 2be6d4d16a0849455a5c22490e3c5983495fed00 upstream.
    
    Currently, due to the sequential use of min_t() and clamp_t() macros,
    in cdc_ncm_check_tx_max(), if dwNtbOutMaxSize is not set, the logic
    sets tx_max to 0.  This is then used to allocate the data area of the
    SKB requested later in cdc_ncm_fill_tx_frame().
    
    This does not cause an issue presently because when memory is
    allocated during initialisation phase of SKB creation, more memory
    (512b) is allocated than is required for the SKB headers alone (320b),
    leaving some space (512b - 320b = 192b) for CDC data (172b).
    
    However, if more elements (for example 3 x u64 = [24b]) were added to
    one of the SKB header structs, say 'struct skb_shared_info',
    increasing its original size (320b [320b aligned]) to something larger
    (344b [384b aligned]), then suddenly the CDC data (172b) no longer
    fits in the spare SKB data area (512b - 384b = 128b).
    
    Consequently the SKB bounds checking semantics fails and panics:
    
      skbuff: skb_over_panic: text:ffffffff830a5b5f len:184 put:172   \
         head:ffff888119227c00 data:ffff888119227c00 tail:0xb8 end:0x80 dev:<NULL>
    
      ------------[ cut here ]------------
      kernel BUG at net/core/skbuff.c:110!
      RIP: 0010:skb_panic+0x14f/0x160 net/core/skbuff.c:106
      <snip>
      Call Trace:
       <IRQ>
       skb_over_panic+0x2c/0x30 net/core/skbuff.c:115
       skb_put+0x205/0x210 net/core/skbuff.c:1877
       skb_put_zero include/linux/skbuff.h:2270 [inline]
       cdc_ncm_ndp16 drivers/net/usb/cdc_ncm.c:1116 [inline]
       cdc_ncm_fill_tx_frame+0x127f/0x3d50 drivers/net/usb/cdc_ncm.c:1293
       cdc_ncm_tx_fixup+0x98/0xf0 drivers/net/usb/cdc_ncm.c:1514
    
    By overriding the max value with the default CDC_NCM_NTB_MAX_SIZE_TX
    when not offered through the system provided params, we ensure enough
    data space is allocated to handle the CDC data, meaning no crash will
    occur.
    
    Cc: Oliver Neukum <oliver@neukum.org>
    Fixes: 289507d3364f9 ("net: cdc_ncm: use sysfs for rx/tx aggregation tuning")
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Reviewed-by: Bjørn Mork <bjorn@mork.no>
    Link: https://lore.kernel.org/r/20211202143437.1411410-1-lee.jones@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a96af5b76d78615391336bca69989814a4ffced1
Author: Arnaldo Carvalho de Melo <acme@redhat.com>
Date:   Tue Nov 30 10:12:41 2021 -0300

    tools build: Remove needless libpython-version feature check that breaks test-all fast path
    
    commit 3d1d57debee2d342a47615707588b96658fabb85 upstream.
    
    Since 66dfdff03d196e51 ("perf tools: Add Python 3 support") we don't use
    the tools/build/feature/test-libpython-version.c version in any Makefile
    feature check:
    
      $ find tools/ -type f | xargs grep feature-libpython-version
      $
    
    The only place where this was used was removed in 66dfdff03d196e51:
    
      -        ifneq ($(feature-libpython-version), 1)
      -          $(warning Python 3 is not yet supported; please set)
      -          $(warning PYTHON and/or PYTHON_CONFIG appropriately.)
      -          $(warning If you also have Python 2 installed, then)
      -          $(warning try something like:)
      -          $(warning $(and ,))
      -          $(warning $(and ,)  make PYTHON=python2)
      -          $(warning $(and ,))
      -          $(warning Otherwise, disable Python support entirely:)
      -          $(warning $(and ,))
      -          $(warning $(and ,)  make NO_LIBPYTHON=1)
      -          $(warning $(and ,))
      -          $(error   $(and ,))
      -        else
      -          LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
      -          EXTLIBS += $(PYTHON_EMBED_LIBADD)
      -          LANG_BINDINGS += $(obj-perf)python/perf.so
      -          $(call detected,CONFIG_LIBPYTHON)
      -        endif
    
    And nowadays we either build with PYTHON=python3 or just install the
    python3 devel packages and perf will build against it.
    
    But the leftover feature-libpython-version check made the fast path
    feature detection to break in all cases except when python2 devel files
    were installed:
    
      $ rpm -qa | grep python.*devel
      python3-devel-3.9.7-1.fc34.x86_64
      $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ;
      $ make -C tools/perf O=/tmp/build/perf install-bin
      make: Entering directory '/var/home/acme/git/perf/tools/perf'
        BUILD:   Doing 'make -j32' parallel build
        HOSTCC  /tmp/build/perf/fixdep.o
      <SNIP>
      $ cat /tmp/build/perf/feature/test-all.make.output
      In file included from test-all.c:18:
      test-libpython-version.c:5:10: error: #error
          5 |         #error
            |          ^~~~~
      $ ldd ~/bin/perf | grep python
            libpython3.9.so.1.0 => /lib64/libpython3.9.so.1.0 (0x00007fda6dbcf000)
      $
    
    As python3 is the norm these days, fix this by just removing the unused
    feature-libpython-version feature check, making the test-all fast path
    to work with the common case.
    
    With this:
    
      $ rm -rf /tmp/build/perf ; mkdir -p /tmp/build/perf ;
      $ make -C tools/perf O=/tmp/build/perf install-bin |& head
      make: Entering directory '/var/home/acme/git/perf/tools/perf'
        BUILD:   Doing 'make -j32' parallel build
        HOSTCC  /tmp/build/perf/fixdep.o
        HOSTLD  /tmp/build/perf/fixdep-in.o
        LINK    /tmp/build/perf/fixdep
    
      Auto-detecting system features:
      ...                         dwarf: [ on  ]
      ...            dwarf_getlocations: [ on  ]
      ...                         glibc: [ on  ]
      $ ldd ~/bin/perf | grep python
            libpython3.9.so.1.0 => /lib64/libpython3.9.so.1.0 (0x00007f58800b0000)
      $ cat /tmp/build/perf/feature/test-all.make.output
      $
    
    Reviewed-by: James Clark <james.clark@arm.com>
    Fixes: 66dfdff03d196e51 ("perf tools: Add Python 3 support")
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jaroslav Škarvada <jskarvad@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Link: https://lore.kernel.org/lkml/YaYmeeC6CS2b8OSz@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fc0bb5f52e6599b4928ff2e3294abcd7b21454f2
Author: Herve Codina <herve.codina@bootlin.com>
Date:   Fri Nov 19 16:03:15 2021 +0100

    mtd: rawnand: fsmc: Take instruction delay into account
    
    commit a4ca0c439f2d5ce9a3dc118d882f9f03449864c8 upstream.
    
    The FSMC NAND controller should apply a delay after the
    instruction has been issued on the bus.
    The FSMC NAND controller driver did not handle this delay.
    
    Add this waiting delay in the FSMC NAND controller driver.
    
    Fixes: 4da712e70294 ("mtd: nand: fsmc: use ->exec_op()")
    Signed-off-by: Herve Codina <herve.codina@bootlin.com>
    Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/linux-mtd/20211119150316.43080-4-herve.codina@bootlin.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4b689c3619619778fe58bc35adac858e61e9428e
Author: Mateusz Palczewski <mateusz.palczewski@intel.com>
Date:   Fri Jul 16 11:33:56 2021 +0200

    i40e: Fix pre-set max number of queues for VF
    
    commit 8aa55ab422d9d0d825ebfb877702ed661e96e682 upstream.
    
    After setting pre-set combined to 16 queues and reserving 16 queues by
    tc qdisc, pre-set maximum combined queues returned to default value
    after VF reset being 4 and this generated errors during removing tc.
    Fixed by removing clear num_req_queues before reset VF.
    
    Fixes: e284fc280473 (i40e: Add and delete cloud filter)
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Bindushree P <Bindushree.p@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bf959d8e431d614bc124c5a97ac1c9c8cc6e4459
Author: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Date:   Tue Nov 30 16:31:10 2021 +0000

    ASoC: qdsp6: q6routing: Fix return value from msm_routing_put_audio_mixer
    
    commit 4739d88ad8e1900f809f8a5c98f3c1b65bf76220 upstream.
    
    msm_routing_put_audio_mixer() can return incorrect value in various scenarios.
    
    scenario 1:
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 0
    
    return value is 0 instead of 1 eventhough value was changed
    
    scenario 2:
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1
    
    return value is 1 instead of 0 eventhough the value was not changed
    
    scenario 3:
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 0
    return value is 1 instead of 0 eventhough the value was not changed
    
    Fix this by adding checks, so that change notifications are sent correctly.
    
    Fixes: e3a33673e845 ("ASoC: qdsp6: q6routing: Add q6routing driver")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211130163110.5628-1-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 358544866727256a4184512913e03922968ec2c1
Author: Manish Chopra <manishc@marvell.com>
Date:   Fri Dec 3 09:44:13 2021 -0800

    qede: validate non LSO skb length
    
    commit 8e227b198a55859bf790dc7f4b1e30c0859c6756 upstream.
    
    Although it is unlikely that stack could transmit a non LSO
    skb with length > MTU, however in some cases or environment such
    occurrences actually resulted into firmware asserts due to packet
    length being greater than the max supported by the device (~9700B).
    
    This patch adds the safeguard for such odd cases to avoid firmware
    asserts.
    
    v2: Added "Fixes" tag with one of the initial driver commit
        which enabled the TX traffic actually (as this was probably
        day1 issue which was discovered recently by some customer
        environment)
    
    Fixes: a2ec6172d29c ("qede: Add support for link")
    Signed-off-by: Manish Chopra <manishc@marvell.com>
    Signed-off-by: Alok Prasad <palok@marvell.com>
    Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com>
    Signed-off-by: Ariel Elior <aelior@marvell.com>
    Link: https://lore.kernel.org/r/20211203174413.13090-1-manishc@marvell.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23047a238f44bd11c0316598691eef2bfd2d557e
Author: Davidlohr Bueso <dave@stgolabs.net>
Date:   Fri Dec 10 10:20:58 2021 -0800

    block: fix ioprio_get(IOPRIO_WHO_PGRP) vs setuid(2)
    
    commit e6a59aac8a8713f335a37d762db0dbe80e7f6d38 upstream.
    
    do_each_pid_thread(PIDTYPE_PGID) can race with a concurrent
    change_pid(PIDTYPE_PGID) that can move the task from one hlist
    to another while iterating. Serialize ioprio_get to take
    the tasklist_lock in this case, just like it's set counterpart.
    
    Fixes: d69b78ba1de (ioprio: grab rcu_read_lock in sys_ioprio_{set,get}())
    Acked-by: Oleg Nesterov <oleg@redhat.com>
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Link: https://lore.kernel.org/r/20211210182058.43417-1-dave@stgolabs.net
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 1e06540f8d2b94d0459e6cd2724001e5c8657416
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Tue Dec 7 17:17:29 2021 -0500

    tracefs: Set all files to the same group ownership as the mount option
    
    commit 48b27b6b5191e2e1f2798cd80877b6e4ef47c351 upstream.
    
    As people have been asking to allow non-root processes to have access to
    the tracefs directory, it was considered best to only allow groups to have
    access to the directory, where it is easier to just set the tracefs file
    system to a specific group (as other would be too dangerous), and that way
    the admins could pick which processes would have access to tracefs.
    
    Unfortunately, this broke tooling on Android that expected the other bit
    to be set. For some special cases, for non-root tools to trace the system,
    tracefs would be mounted and change the permissions of the top level
    directory which gave access to all running tasks permission to the
    tracing directory. Even though this would be dangerous to do in a
    production environment, for testing environments this can be useful.
    
    Now with the new changes to not allow other (which is still the proper
    thing to do), it breaks the testing tooling. Now more code needs to be
    loaded on the system to change ownership of the tracing directory.
    
    The real solution is to have tracefs honor the gid=xxx option when
    mounting. That is,
    
    (tracing group tracing has value 1003)
    
     mount -t tracefs -o gid=1003 tracefs /sys/kernel/tracing
    
    should have it that all files in the tracing directory should be of the
    given group.
    
    Copy the logic from d_walk() from dcache.c and simplify it for the mount
    case of tracefs if gid is set. All the files in tracefs will be walked and
    their group will be set to the value passed in.
    
    Link: https://lkml.kernel.org/r/20211207171729.2a54e1b3@gandalf.local.home
    
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: linux-fsdevel@vger.kernel.org
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Reported-by: Kalesh Singh <kaleshsingh@google.com>
    Reported-by: Yabin Cui <yabinc@google.com>
    Fixes: 49d67e445742 ("tracefs: Have tracefs directories not set OTH permission bits by default")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 321fba81ec034f88aea4898993c1bf15605c023f
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 10 15:53:12 2021 -0800

    aio: fix use-after-free due to missing POLLFREE handling
    
    commit 50252e4b5e989ce64555c7aef7516bdefc2fea72 upstream.
    
    signalfd_poll() and binder_poll() are special in that they use a
    waitqueue whose lifetime is the current task, rather than the struct
    file as is normally the case.  This is okay for blocking polls, since a
    blocking poll occurs within one task; however, non-blocking polls
    require another solution.  This solution is for the queue to be cleared
    before it is freed, by sending a POLLFREE notification to all waiters.
    
    Unfortunately, only eventpoll handles POLLFREE.  A second type of
    non-blocking poll, aio poll, was added in kernel v4.18, and it doesn't
    handle POLLFREE.  This allows a use-after-free to occur if a signalfd or
    binder fd is polled with aio poll, and the waitqueue gets freed.
    
    Fix this by making aio poll handle POLLFREE.
    
    A patch by Ramji Jiyani <ramjiyani@google.com>
    (https://lore.kernel.org/r/20211027011834.2497484-1-ramjiyani@google.com)
    tried to do this by making aio_poll_wake() always complete the request
    inline if POLLFREE is seen.  However, that solution had two bugs.
    First, it introduced a deadlock, as it unconditionally locked the aio
    context while holding the waitqueue lock, which inverts the normal
    locking order.  Second, it didn't consider that POLLFREE notifications
    are missed while the request has been temporarily de-queued.
    
    The second problem was solved by my previous patch.  This patch then
    properly fixes the use-after-free by handling POLLFREE in a
    deadlock-free way.  It does this by taking advantage of the fact that
    freeing of the waitqueue is RCU-delayed, similar to what eventpoll does.
    
    Fixes: 2c14fa838cbe ("aio: implement IOCB_CMD_POLL")
    Cc: <stable@vger.kernel.org> # v4.18+
    Link: https://lore.kernel.org/r/20211209010455.42744-6-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 580c7e023303ce3a187adcaa40868bfc740725d2
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 10 15:53:11 2021 -0800

    aio: keep poll requests on waitqueue until completed
    
    commit 363bee27e25804d8981dd1c025b4ad49dc39c530 upstream.
    
    Currently, aio_poll_wake() will always remove the poll request from the
    waitqueue.  Then, if aio_poll_complete_work() sees that none of the
    polled events are ready and the request isn't cancelled, it re-adds the
    request to the waitqueue.  (This can easily happen when polling a file
    that doesn't pass an event mask when waking up its waitqueue.)
    
    This is fundamentally broken for two reasons:
    
      1. If a wakeup occurs between vfs_poll() and the request being
         re-added to the waitqueue, it will be missed because the request
         wasn't on the waitqueue at the time.  Therefore, IOCB_CMD_POLL
         might never complete even if the polled file is ready.
    
      2. When the request isn't on the waitqueue, there is no way to be
         notified that the waitqueue is being freed (which happens when its
         lifetime is shorter than the struct file's).  This is supposed to
         happen via the waitqueue entries being woken up with POLLFREE.
    
    Therefore, leave the requests on the waitqueue until they are actually
    completed (or cancelled).  To keep track of when aio_poll_complete_work
    needs to be scheduled, use new fields in struct poll_iocb.  Remove the
    'done' field which is now redundant.
    
    Note that this is consistent with how sys_poll() and eventpoll work;
    their wakeup functions do *not* remove the waitqueue entries.
    
    Fixes: 2c14fa838cbe ("aio: implement IOCB_CMD_POLL")
    Cc: <stable@vger.kernel.org> # v4.18+
    Link: https://lore.kernel.org/r/20211209010455.42744-5-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f226fdd855b7d9c1f2a6e878d82eb3e1fbc880e9
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 10 15:53:10 2021 -0800

    signalfd: use wake_up_pollfree()
    
    commit 9537bae0da1f8d1e2361ab6d0479e8af7824e160 upstream.
    
    wake_up_poll() uses nr_exclusive=1, so it's not guaranteed to wake up
    all exclusive waiters.  Yet, POLLFREE *must* wake up all waiters.  epoll
    and aio poll are fortunately not affected by this, but it's very
    fragile.  Thus, the new function wake_up_pollfree() has been introduced.
    
    Convert signalfd to use wake_up_pollfree().
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Fixes: d80e731ecab4 ("epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree()")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211209010455.42744-4-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 32288f504035b6c359cc33ee615f74f14be2e38a
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 10 15:53:09 2021 -0800

    binder: use wake_up_pollfree()
    
    commit a880b28a71e39013e357fd3adccd1d8a31bc69a8 upstream.
    
    wake_up_poll() uses nr_exclusive=1, so it's not guaranteed to wake up
    all exclusive waiters.  Yet, POLLFREE *must* wake up all waiters.  epoll
    and aio poll are fortunately not affected by this, but it's very
    fragile.  Thus, the new function wake_up_pollfree() has been introduced.
    
    Convert binder to use wake_up_pollfree().
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Fixes: f5cb779ba163 ("ANDROID: binder: remove waitqueue when thread exits.")
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211209010455.42744-3-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8dd7c46a59756bdc29cb9783338b899cd3fb4b83
Author: Eric Biggers <ebiggers@google.com>
Date:   Fri Dec 10 15:53:08 2021 -0800

    wait: add wake_up_pollfree()
    
    commit 42288cb44c4b5fff7653bc392b583a2b8bd6a8c0 upstream.
    
    Several ->poll() implementations are special in that they use a
    waitqueue whose lifetime is the current task, rather than the struct
    file as is normally the case.  This is okay for blocking polls, since a
    blocking poll occurs within one task; however, non-blocking polls
    require another solution.  This solution is for the queue to be cleared
    before it is freed, using 'wake_up_poll(wq, EPOLLHUP | POLLFREE);'.
    
    However, that has a bug: wake_up_poll() calls __wake_up() with
    nr_exclusive=1.  Therefore, if there are multiple "exclusive" waiters,
    and the wakeup function for the first one returns a positive value, only
    that one will be called.  That's *not* what's needed for POLLFREE;
    POLLFREE is special in that it really needs to wake up everyone.
    
    Considering the three non-blocking poll systems:
    
    - io_uring poll doesn't handle POLLFREE at all, so it is broken anyway.
    
    - aio poll is unaffected, since it doesn't support exclusive waits.
      However, that's fragile, as someone could add this feature later.
    
    - epoll doesn't appear to be broken by this, since its wakeup function
      returns 0 when it sees POLLFREE.  But this is fragile.
    
    Although there is a workaround (see epoll), it's better to define a
    function which always sends POLLFREE to all waiters.  Add such a
    function.  Also make it verify that the queue really becomes empty after
    all waiters have been woken up.
    
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211209010455.42744-2-ebiggers@kernel.org
    Signed-off-by: Eric Biggers <ebiggers@google.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 00fceb6e185b32af4c36bf4a6ba048245178d407
Author: Hannes Reinecke <hare@suse.de>
Date:   Wed Dec 8 07:58:53 2021 +0100

    libata: add horkage for ASMedia 1092
    
    commit a66307d473077b7aeba74e9b09c841ab3d399c2d upstream.
    
    The ASMedia 1092 has a configuration mode which will present a
    dummy device; sadly the implementation falsely claims to provide
    a device with 100M which doesn't actually exist.
    So disable this device to avoid errors during boot.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Hannes Reinecke <hare@suse.de>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ad66b892278fff24f95e2dce94c7b40ce2cfbb2e
Author: Brian Silverman <brian.silverman@bluerivertech.com>
Date:   Mon Nov 29 14:26:28 2021 -0800

    can: m_can: Disable and ignore ELO interrupt
    
    commit f58ac1adc76b5beda43c64ef359056077df4d93a upstream.
    
    With the design of this driver, this condition is often triggered.
    However, the counter that this interrupt indicates an overflow is never
    read either, so overflowing is harmless.
    
    On my system, when a CAN bus starts flapping up and down, this locks up
    the whole system with lots of interrupts and printks.
    
    Specifically, this interrupt indicates the CEL field of ECR has
    overflowed. All reads of ECR mask out CEL.
    
    Fixes: e0d1f4816f2a ("can: m_can: add Bosch M_CAN controller support")
    Link: https://lore.kernel.org/all/20211129222628.7490-1-brian.silverman@bluerivertech.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Brian Silverman <brian.silverman@bluerivertech.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e193ef4e0a3f5bf92ede83ef214cb09d01b00aa
Author: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Date:   Tue Nov 23 20:16:54 2021 +0900

    can: pch_can: pch_can_rx_normal: fix use after free
    
    commit 94cddf1e9227a171b27292509d59691819c458db upstream.
    
    After calling netif_receive_skb(skb), dereferencing skb is unsafe.
    Especially, the can_frame cf which aliases skb memory is dereferenced
    just after the call netif_receive_skb(skb).
    
    Reordering the lines solves the issue.
    
    Fixes: b21d18b51b31 ("can: Topcliff: Add PCH_CAN driver.")
    Link: https://lore.kernel.org/all/20211123111654.621610-1-mailhol.vincent@wanadoo.fr
    Cc: stable@vger.kernel.org
    Signed-off-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 62b461e9ae88ff22417846a07c2711fce51eb840
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Date:   Tue Nov 16 02:34:07 2021 +0300

    clk: qcom: regmap-mux: fix parent clock lookup
    
    commit 9a61f813fcc8d56d85fcf9ca6119cf2b5ac91dd5 upstream.
    
    The function mux_get_parent() uses qcom_find_src_index() to find the
    parent clock index, which is incorrect: qcom_find_src_index() uses src
    enum for the lookup, while mux_get_parent() should use cfg field (which
    corresponds to the register value). Add qcom_find_cfg_index() function
    doing this kind of lookup and use it for mux parent lookup.
    
    Fixes: df964016490b ("clk: qcom: add parent map for regmap mux")
    Cc: stable@vger.kernel.org
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20211115233407.1046179-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7d795454ccb2a523d1d2146bda45e6f3b45d7d9f
Author: Steven Rostedt (VMware) <rostedt@goodmis.org>
Date:   Wed Dec 8 07:57:20 2021 -0500

    tracefs: Have new files inherit the ownership of their parent
    
    commit ee7f3666995d8537dec17b1d35425f28877671a9 upstream.
    
    If directories in tracefs have their ownership changed, then any new files
    and directories that are created under those directories should inherit
    the ownership of the director they are created in.
    
    Link: https://lkml.kernel.org/r/20211208075720.4855d180@gandalf.local.home
    
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Yabin Cui <yabinc@google.com>
    Cc: Christian Brauner <christian.brauner@ubuntu.com>
    Cc: stable@vger.kernel.org
    Fixes: 4282d60689d4f ("tracefs: Add new tracefs file system")
    Reported-by: Kalesh Singh <kaleshsingh@google.com>
    Reported: https://lore.kernel.org/all/CAC_TJve8MMAv+H_NdLSJXZUSoxOEq2zB_pVaJ9p=7H6Bu3X76g@mail.gmail.com/
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7cf51a98d42d921cab4fef507ee95091f18ea65e
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 1 08:36:06 2021 +0100

    ALSA: pcm: oss: Handle missing errors in snd_pcm_oss_change_params*()
    
    commit 6665bb30a6b1a4a853d52557c05482ee50e71391 upstream.
    
    A couple of calls in snd_pcm_oss_change_params_locked() ignore the
    possible errors.  Catch those errors and abort the operation for
    avoiding further problems.
    
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211201073606.11660-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 2e54cf6794bf82a54aaefc78da13819aea9cd28a
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 1 08:36:05 2021 +0100

    ALSA: pcm: oss: Limit the period size to 16MB
    
    commit 8839c8c0f77ab8fc0463f4ab8b37fca3f70677c2 upstream.
    
    Set the practical limit to the period size (the fragment shift in OSS)
    instead of a full 31bit; a too large value could lead to the exhaust
    of memory as we allocate temporary buffers of the period size, too.
    
    As of this patch, we set to 16MB limit, which should cover all use
    cases.
    
    Reported-by: syzbot+bb348e9f9a954d42746f@syzkaller.appspotmail.com
    Reported-by: Bixuan Cui <cuibixuan@linux.alibaba.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1638270978-42412-1-git-send-email-cuibixuan@linux.alibaba.com
    Link: https://lore.kernel.org/r/20211201073606.11660-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f96c0959c1ee92adc911c10d6ec209af50105049
Author: Takashi Iwai <tiwai@suse.de>
Date:   Wed Dec 1 08:36:04 2021 +0100

    ALSA: pcm: oss: Fix negative period/buffer sizes
    
    commit 9d2479c960875ca1239bcb899f386970c13d9cfe upstream.
    
    The period size calculation in OSS layer may receive a negative value
    as an error, but the code there assumes only the positive values and
    handle them with size_t.  Due to that, a too big value may be passed
    to the lower layers.
    
    This patch changes the code to handle with ssize_t and adds the proper
    error checks appropriately.
    
    Reported-by: syzbot+bb348e9f9a954d42746f@syzkaller.appspotmail.com
    Reported-by: Bixuan Cui <cuibixuan@linux.alibaba.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/1638270978-42412-1-git-send-email-cuibixuan@linux.alibaba.com
    Link: https://lore.kernel.org/r/20211201073606.11660-2-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fd753901ca921877cf585dc315dd5b36f672a404
Author: Alan Young <consult.awy@gmail.com>
Date:   Thu Dec 2 15:06:07 2021 +0000

    ALSA: ctl: Fix copy of updated id with element read/write
    
    commit b6409dd6bdc03aa178bbff0d80db2a30d29b63ac upstream.
    
    When control_compat.c:copy_ctl_value_to_user() is used, by
    ctl_elem_read_user() & ctl_elem_write_user(), it must also copy back the
    snd_ctl_elem_id value that may have been updated (filled in) by the call
    to snd_ctl_elem_read/snd_ctl_elem_write().
    
    This matches the functionality provided by snd_ctl_elem_read_user() and
    snd_ctl_elem_write_user(), via snd_ctl_build_ioff().
    
    Without this, and without making additional calls to snd_ctl_info()
    which are unnecessary when using the non-compat calls, a userspace
    application will not know the numid value for the element and
    consequently will not be able to use the poll/read interface on the
    control file to determine which elements have updates.
    
    Signed-off-by: Alan Young <consult.awy@gmail.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211202150607.543389-1-consult.awy@gmail.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 505039dd0fe6493565e27b55700e46f43f20580d
Author: Manjong Lee <mj0123.lee@samsung.com>
Date:   Fri Dec 10 14:47:11 2021 -0800

    mm: bdi: initialize bdi_min_ratio when bdi is unregistered
    
    commit 3c376dfafbf7a8ea0dea212d095ddd83e93280bb upstream.
    
    Initialize min_ratio if it is set during bdi unregistration.  This can
    prevent problems that may occur a when bdi is removed without resetting
    min_ratio.
    
    For example.
    1) insert external sdcard
    2) set external sdcard's min_ratio 70
    3) remove external sdcard without setting min_ratio 0
    4) insert external sdcard
    5) set external sdcard's min_ratio 70 << error occur(can't set)
    
    Because when an sdcard is removed, the present bdi_min_ratio value will
    remain.  Currently, the only way to reset bdi_min_ratio is to reboot.
    
    [akpm@linux-foundation.org: tweak comment and coding style]
    
    Link: https://lkml.kernel.org/r/20211021161942.5983-1-mj0123.lee@samsung.com
    Signed-off-by: Manjong Lee <mj0123.lee@samsung.com>
    Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Changheun Lee <nanich.lee@samsung.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Christoph Hellwig <hch@infradead.org>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: <seunghwan.hyun@samsung.com>
    Cc: <sookwan7.kim@samsung.com>
    Cc: <yt0928.kim@samsung.com>
    Cc: <junho89.kim@samsung.com>
    Cc: <jisoo2146.oh@samsung.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 28e98eafdc0f358cac36c0fa9430304d07b4854a
Author: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
Date:   Mon Nov 29 14:19:52 2021 -0500

    IB/hfi1: Correct guard on eager buffer deallocation
    
    commit 9292f8f9a2ac42eb320bced7153aa2e63d8cc13a upstream.
    
    The code tests the dma address which legitimately can be 0.
    
    The code should test the kernel logical address to avoid leaking eager
    buffer allocations that happen to map to a dma address of 0.
    
    Fixes: 60368186fd85 ("IB/hfi1: Fix user-space buffers mapping with IOMMU enabled")
    Link: https://lore.kernel.org/r/20211129191952.101968.17137.stgit@awfm-01.cornelisnetworks.com
    Signed-off-by: Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>
    Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c90d2408288d179ecd598a686bbd05d950e21b00
Author: Jianguo Wu <wujianguo@chinatelecom.cn>
Date:   Wed Dec 8 18:03:33 2021 +0800

    udp: using datalen to cap max gso segments
    
    commit 158390e45612ef0fde160af0826f1740c36daf21 upstream.
    
    The max number of UDP gso segments is intended to cap to UDP_MAX_SEGMENTS,
    this is checked in udp_send_skb():
    
        if (skb->len > cork->gso_size * UDP_MAX_SEGMENTS) {
            kfree_skb(skb);
            return -EINVAL;
        }
    
    skb->len contains network and transport header len here, we should use
    only data len instead.
    
    Fixes: bec1f6f69736 ("udp: generate gso with UDP_SEGMENT")
    Signed-off-by: Jianguo Wu <wujianguo@chinatelecom.cn>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Link: https://lore.kernel.org/r/900742e5-81fb-30dc-6e0b-375c6cdd7982@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 6431e71093f3da586a00c6d931481ffb0dc2db0e
Author: Andrea Mayer <andrea.mayer@uniroma2.it>
Date:   Wed Dec 8 20:54:09 2021 +0100

    seg6: fix the iif in the IPv6 socket control block
    
    commit ae68d93354e5bf5191ee673982251864ea24dd5c upstream.
    
    When an IPv4 packet is received, the ip_rcv_core(...) sets the receiving
    interface index into the IPv4 socket control block (v5.16-rc4,
    net/ipv4/ip_input.c line 510):
    
        IPCB(skb)->iif = skb->skb_iif;
    
    If that IPv4 packet is meant to be encapsulated in an outer IPv6+SRH
    header, the seg6_do_srh_encap(...) performs the required encapsulation.
    In this case, the seg6_do_srh_encap function clears the IPv6 socket control
    block (v5.16-rc4 net/ipv6/seg6_iptunnel.c line 163):
    
        memset(IP6CB(skb), 0, sizeof(*IP6CB(skb)));
    
    The memset(...) was introduced in commit ef489749aae5 ("ipv6: sr: clear
    IP6CB(skb) on SRH ip4ip6 encapsulation") a long time ago (2019-01-29).
    
    Since the IPv6 socket control block and the IPv4 socket control block share
    the same memory area (skb->cb), the receiving interface index info is lost
    (IP6CB(skb)->iif is set to zero).
    
    As a side effect, that condition triggers a NULL pointer dereference if
    commit 0857d6f8c759 ("ipv6: When forwarding count rx stats on the orig
    netdev") is applied.
    
    To fix that issue, we set the IP6CB(skb)->iif with the index of the
    receiving interface once again.
    
    Fixes: ef489749aae5 ("ipv6: sr: clear IP6CB(skb) on SRH ip4ip6 encapsulation")
    Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20211208195409.12169-1-andrea.mayer@uniroma2.it
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit eb51f639ef3fd5498b7def290ed8681b6aadd9a7
Author: Jianglei Nie <niejianglei2021@163.com>
Date:   Thu Dec 9 14:15:11 2021 +0800

    nfp: Fix memory leak in nfp_cpp_area_cache_add()
    
    commit c56c96303e9289cc34716b1179597b6f470833de upstream.
    
    In line 800 (#1), nfp_cpp_area_alloc() allocates and initializes a
    CPP area structure. But in line 807 (#2), when the cache is allocated
    failed, this CPP area structure is not freed, which will result in
    memory leak.
    
    We can fix it by freeing the CPP area when the cache is allocated
    failed (#2).
    
    792 int nfp_cpp_area_cache_add(struct nfp_cpp *cpp, size_t size)
    793 {
    794     struct nfp_cpp_area_cache *cache;
    795     struct nfp_cpp_area *area;
    
    800     area = nfp_cpp_area_alloc(cpp, NFP_CPP_ID(7, NFP_CPP_ACTION_RW, 0),
    801                               0, size);
            // #1: allocates and initializes
    
    802     if (!area)
    803             return -ENOMEM;
    
    805     cache = kzalloc(sizeof(*cache), GFP_KERNEL);
    806     if (!cache)
    807             return -ENOMEM; // #2: missing free
    
    817     return 0;
    818 }
    
    Fixes: 4cb584e0ee7d ("nfp: add CPP access core")
    Signed-off-by: Jianglei Nie <niejianglei2021@163.com>
    Acked-by: Simon Horman <simon.horman@corigine.com>
    Link: https://lore.kernel.org/r/20211209061511.122535-1-niejianglei2021@163.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f1a3e17508065beb32ab53aedbe21eb0e7ac7fad
Author: Eric Dumazet <edumazet@google.com>
Date:   Thu Dec 2 18:27:18 2021 -0800

    bonding: make tx_rebalance_counter an atomic
    
    commit dac8e00fb640e9569cdeefd3ce8a75639e5d0711 upstream.
    
    KCSAN reported a data-race [1] around tx_rebalance_counter
    which can be accessed from different contexts, without
    the protection of a lock/mutex.
    
    [1]
    BUG: KCSAN: data-race in bond_alb_init_slave / bond_alb_monitor
    
    write to 0xffff888157e8ca24 of 4 bytes by task 7075 on cpu 0:
     bond_alb_init_slave+0x713/0x860 drivers/net/bonding/bond_alb.c:1613
     bond_enslave+0xd94/0x3010 drivers/net/bonding/bond_main.c:1949
     do_set_master net/core/rtnetlink.c:2521 [inline]
     __rtnl_newlink net/core/rtnetlink.c:3475 [inline]
     rtnl_newlink+0x1298/0x13b0 net/core/rtnetlink.c:3506
     rtnetlink_rcv_msg+0x745/0x7e0 net/core/rtnetlink.c:5571
     netlink_rcv_skb+0x14e/0x250 net/netlink/af_netlink.c:2491
     rtnetlink_rcv+0x18/0x20 net/core/rtnetlink.c:5589
     netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
     netlink_unicast+0x5fc/0x6c0 net/netlink/af_netlink.c:1345
     netlink_sendmsg+0x6e1/0x7d0 net/netlink/af_netlink.c:1916
     sock_sendmsg_nosec net/socket.c:704 [inline]
     sock_sendmsg net/socket.c:724 [inline]
     ____sys_sendmsg+0x39a/0x510 net/socket.c:2409
     ___sys_sendmsg net/socket.c:2463 [inline]
     __sys_sendmsg+0x195/0x230 net/socket.c:2492
     __do_sys_sendmsg net/socket.c:2501 [inline]
     __se_sys_sendmsg net/socket.c:2499 [inline]
     __x64_sys_sendmsg+0x42/0x50 net/socket.c:2499
     do_syscall_x64 arch/x86/entry/common.c:50 [inline]
     do_syscall_64+0x44/0xd0 arch/x86/entry/common.c:80
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    read to 0xffff888157e8ca24 of 4 bytes by task 1082 on cpu 1:
     bond_alb_monitor+0x8f/0xc00 drivers/net/bonding/bond_alb.c:1511
     process_one_work+0x3fc/0x980 kernel/workqueue.c:2298
     worker_thread+0x616/0xa70 kernel/workqueue.c:2445
     kthread+0x2c7/0x2e0 kernel/kthread.c:327
     ret_from_fork+0x1f/0x30
    
    value changed: 0x00000001 -> 0x00000064
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 1082 Comm: kworker/u4:3 Not tainted 5.16.0-rc3-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Workqueue: bond1 bond_alb_monitor
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 4696fa37c74197b02705d5ceff9f88d615198bcf
Author: Jesse Brandeburg <jesse.brandeburg@intel.com>
Date:   Fri Oct 22 17:28:17 2021 -0700

    ice: ignore dropped packets during init
    
    commit 28dc1b86f8ea9fd6f4c9e0b363db73ecabf84e22 upstream.
    
    If the hardware is constantly receiving unicast or broadcast packets
    during driver load, the device previously counted many GLV_RDPC (VSI
    dropped packets) events during init. This causes confusing dropped
    packet statistics during driver load. The dropped packets counter
    incrementing does stop once the driver finishes loading.
    
    Avoid this problem by baselining our statistics at the end of driver
    open instead of the end of probe.
    
    Fixes: cdedef59deb0 ("ice: Configure VSIs for Tx/Rx")
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Gurucharan G <gurucharanx.g@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c315bd96252887c20bf799293763f273e05394b2
Author: Maxim Mikityanskiy <maximmi@nvidia.com>
Date:   Tue Nov 30 20:16:07 2021 +0200

    bpf: Fix the off-by-two error in range markings
    
    commit 2fa7d94afc1afbb4d702760c058dc2d7ed30f226 upstream.
    
    The first commit cited below attempts to fix the off-by-one error that
    appeared in some comparisons with an open range. Due to this error,
    arithmetically equivalent pieces of code could get different verdicts
    from the verifier, for example (pseudocode):
    
      // 1. Passes the verifier:
      if (data + 8 > data_end)
          return early
      read *(u64 *)data, i.e. [data; data+7]
    
      // 2. Rejected by the verifier (should still pass):
      if (data + 7 >= data_end)
          return early
      read *(u64 *)data, i.e. [data; data+7]
    
    The attempted fix, however, shifts the range by one in a wrong
    direction, so the bug not only remains, but also such piece of code
    starts failing in the verifier:
    
      // 3. Rejected by the verifier, but the check is stricter than in #1.
      if (data + 8 >= data_end)
          return early
      read *(u64 *)data, i.e. [data; data+7]
    
    The change performed by that fix converted an off-by-one bug into
    off-by-two. The second commit cited below added the BPF selftests
    written to ensure than code chunks like #3 are rejected, however,
    they should be accepted.
    
    This commit fixes the off-by-two error by adjusting new_range in the
    right direction and fixes the tests by changing the range into the
    one that should actually fail.
    
    Fixes: fb2a311a31d3 ("bpf: fix off by one for range markings with L{T, E} patterns")
    Fixes: b37242c773b2 ("bpf: add test cases to bpf selftests to cover all access tests")
    Signed-off-by: Maxim Mikityanskiy <maximmi@nvidia.com>
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Link: https://lore.kernel.org/bpf/20211130181607.593149-1-maximmi@nvidia.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3b861a40325eac9c4c13b6c53874ad90617e944d
Author: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Date:   Thu Dec 9 09:13:07 2021 +0100

    nfc: fix potential NULL pointer deref in nfc_genl_dump_ses_done
    
    commit 4cd8371a234d051f9c9557fcbb1f8c523b1c0d10 upstream.
    
    The done() netlink callback nfc_genl_dump_ses_done() should check if
    received argument is non-NULL, because its allocation could fail earlier
    in dumpit() (nfc_genl_dump_ses()).
    
    Fixes: ac22ac466a65 ("NFC: Add a GET_SE netlink API")
    Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20211209081307.57337-1-krzysztof.kozlowski@canonical.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae214e04b95ff64a4b0e9aab6742520bfde6ff0c
Author: Vlad Buslov <vladbu@mellanox.com>
Date:   Fri Dec 10 10:47:29 2021 +0000

    net: sched: use Qdisc rcu API instead of relying on rtnl lock
    
    [ Upstream commit e368fdb61d8e7c67ac70791b23345b26d7bbc661 ]
    
    As a preparation from removing rtnl lock dependency from rules update path,
    use Qdisc rcu and reference counting capabilities instead of relying on
    rtnl lock while working with Qdiscs. Create new tcf_block_release()
    function, and use it to free resources taken by tcf_block_find().
    Currently, this function only releases Qdisc and it is extended in next
    patches in this series.
    
    Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [Lee: Sent to Stable]
    Link: https://syzkaller.appspot.com/bug?id=d7e411c5472dd5da33d8cc921ccadc747743a568
    Reported-by: syzbot+5f229e48cccc804062c0@syzkaller.appspotmail.com
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit da1d324088c40fa0a382224c466175fc5c704106
Author: Vlad Buslov <vladbu@mellanox.com>
Date:   Fri Dec 10 10:47:28 2021 +0000

    net: sched: add helper function to take reference to Qdisc
    
    [ Upstream commit 9d7e82cec35c027756ec97e274f878251f271181 ]
    
    Implement function to take reference to Qdisc that relies on rcu read lock
    instead of rtnl mutex. Function only takes reference to Qdisc if reference
    counter isn't zero. Intended to be used by unlocked cls API.
    
    Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [Lee: Sent to Stable]
    Link: https://syzkaller.appspot.com/bug?id=d7e411c5472dd5da33d8cc921ccadc747743a568
    Reported-by: syzbot+5f229e48cccc804062c0@syzkaller.appspotmail.com
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f602ed9f8574512e7ea1ab65c3db7ba71053bf27
Author: Vlad Buslov <vladbu@mellanox.com>
Date:   Fri Dec 10 10:47:27 2021 +0000

    net: sched: extend Qdisc with rcu
    
    [ Upstream commit 3a7d0d07a386716b459b00783b11a8211cefcc0f ]
    
    Currently, Qdisc API functions assume that users have rtnl lock taken. To
    implement rtnl unlocked classifiers update interface, Qdisc API must be
    extended with functions that do not require rtnl lock.
    
    Extend Qdisc structure with rcu. Implement special version of put function
    qdisc_put_unlocked() that is called without rtnl lock taken. This function
    only takes rtnl lock if Qdisc reference counter reached zero and is
    intended to be used as optimization.
    
    Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [Lee: Sent to Stable]
    Link: https://syzkaller.appspot.com/bug?id=d7e411c5472dd5da33d8cc921ccadc747743a568
    Reported-by: syzbot+5f229e48cccc804062c0@syzkaller.appspotmail.com
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 92833e8b5db6c209e9311ac8c6a44d3bf1856659
Author: Vlad Buslov <vladbu@mellanox.com>
Date:   Fri Dec 10 10:47:26 2021 +0000

    net: sched: rename qdisc_destroy() to qdisc_put()
    
    [ Upstream commit 86bd446b5cebd783187ea3772ff258210de77d99 ]
    
    Current implementation of qdisc_destroy() decrements Qdisc reference
    counter and only actually destroy Qdisc if reference counter value reached
    zero. Rename qdisc_destroy() to qdisc_put() in order for it to better
    describe the way in which this function currently implemented and used.
    
    Extract code that deallocates Qdisc into new private qdisc_destroy()
    function. It is intended to be shared between regular qdisc_put() and its
    unlocked version that is introduced in next patch in this series.
    
    Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [Lee: Sent to Stable]
    Link: https://syzkaller.appspot.com/bug?id=d7e411c5472dd5da33d8cc921ccadc747743a568
    Reported-by: syzbot+5f229e48cccc804062c0@syzkaller.appspotmail.com
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cd25f1099284a0cbe916344fc1e6c1ffed6c5306
Author: Vlad Buslov <vladbu@mellanox.com>
Date:   Fri Dec 10 10:47:25 2021 +0000

    net: core: netlink: add helper refcount dec and lock function
    
    [ Upstream commit 6f99528e9797794b91b43321fbbc93fe772b0803 ]
    
    Rtnl lock is encapsulated in netlink and cannot be accessed by other
    modules directly. This means that reference counted objects that rely on
    rtnl lock cannot use it with refcounter helper function that atomically
    releases decrements reference and obtains mutex.
    
    This patch implements simple wrapper function around refcount_dec_and_lock
    that obtains rtnl lock if reference counter value reached 0.
    
    Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
    Acked-by: Jiri Pirko <jiri@mellanox.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    [Lee: Sent to Stable]
    Link: https://syzkaller.appspot.com/bug?id=d7e411c5472dd5da33d8cc921ccadc747743a568
    Reported-by: syzbot+5f229e48cccc804062c0@syzkaller.appspotmail.com
    Signed-off-by: Lee Jones <lee.jones@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ccf070183e4655824936c0f96c4a2bcca93419aa
Author: Dan Carpenter <dan.carpenter@oracle.com>
Date:   Wed Nov 24 17:50:41 2021 +0300

    can: sja1000: fix use after free in ems_pcmcia_add_card()
    
    commit 3ec6ca6b1a8e64389f0212b5a1b0f6fed1909e45 upstream.
    
    If the last channel is not available then "dev" is freed.  Fortunately,
    we can just use "pdev->irq" instead.
    
    Also we should check if at least one channel was set up.
    
    Fixes: fd734c6f25ae ("can/sja1000: add driver for EMS PCMCIA card")
    Link: https://lore.kernel.org/all/20211124145041.GB13656@kili
    Cc: stable@vger.kernel.org
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Tested-by: Oliver Hartkopp <socketcan@hartkopp.net>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7a09ebf00238fea57b21a963dfa75e9a2692f915
Author: Jimmy Assarsson <extja@kvaser.com>
Date:   Wed Dec 8 16:21:22 2021 +0100

    can: kvaser_usb: get CAN clock frequency from device
    
    commit fb12797ab1fef480ad8a32a30984844444eeb00d upstream.
    
    The CAN clock frequency is used when calculating the CAN bittiming
    parameters. When wrong clock frequency is used, the device may end up
    with wrong bittiming parameters, depending on user requested bittiming
    parameters.
    
    To avoid this, get the CAN clock frequency from the device. Various
    existing Kvaser Leaf products use different CAN clocks.
    
    Fixes: 080f40a6fa28 ("can: kvaser_usb: Add support for Kvaser CAN/USB devices")
    Link: https://lore.kernel.org/all/20211208152122.250852-2-extja@kvaser.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Jimmy Assarsson <extja@kvaser.com>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 128074f16e32c188fa2ed6edac625067c842606e
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 1 19:35:03 2021 +0100

    HID: check for valid USB device for many HID drivers
    
    commit 93020953d0fa7035fd036ad87a47ae2b7aa4ae33 upstream.
    
    Many HID drivers assume that the HID device assigned to them is a USB
    device as that was the only way HID devices used to be able to be
    created in Linux.  However, with the additional ways that HID devices
    can be created for many different bus types, that is no longer true, so
    properly check that we have a USB device associated with the HID device
    before allowing a driver that makes this assumption to claim it.
    
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: Michael Zaidman <michael.zaidman@gmail.com>
    Cc: Stefan Achatz <erazor_de@users.sourceforge.net>
    Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
    Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
    Cc: linux-input@vger.kernel.org
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    [bentiss: amended for thrustmater.c hunk to apply]
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211201183503.2373082-3-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 945e3464ba6671692d0692d4b4325ec003db18c5
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 1 19:35:02 2021 +0100

    HID: wacom: fix problems when device is not a valid USB device
    
    commit 720ac467204a70308bd687927ed475afb904e11b upstream.
    
    The wacom driver accepts devices of more than just USB types, but some
    code paths can cause problems if the device being controlled is not a
    USB device due to a lack of checking.  Add the needed checks to ensure
    that the USB device accesses are only happening on a "real" USB device,
    and not one on some other bus.
    
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: linux-input@vger.kernel.org
    Cc: stable@vger.kernel.org
    Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211201183503.2373082-2-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b0f286d9b1f8a2448373aa45ac8333645c48ea85
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Thu Dec 2 12:48:19 2021 +0100

    HID: add USB_HID dependancy on some USB HID drivers
    
    commit f237d9028f844a86955fc9da59d7ac4a5c55d7d5 upstream.
    
    Some HID drivers are only for USB drivers, yet did not depend on
    CONFIG_USB_HID.  This was hidden by the fact that the USB functions were
    stubbed out in the past, but now that drivers are checking for USB
    devices properly, build errors can occur with some random
    configurations.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211202114819.2511954-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit de8ac0cf03f1124ef39debb337811e54f3e2f55c
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 3 08:59:27 2021 +0100

    HID: add USB_HID dependancy to hid-chicony
    
    commit d080811f27936f712f619f847389f403ac873b8f upstream.
    
    The chicony HID driver only controls USB devices, yet did not have a
    dependancy on USB_HID.  This causes build errors on some configurations
    like sparc when building due to new changes to the chicony driver.
    
    Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
    Cc: stable@vger.kernel.org
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211203075927.2829218-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cb54ea86f247a28ce5d8ec147e58c13de669d04a
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Fri Dec 3 09:12:31 2021 +0100

    HID: add USB_HID dependancy to hid-prodikeys
    
    commit 30cb3c2ad24b66fb7639a6d1f4390c74d6e68f94 upstream.
    
    The prodikeys HID driver only controls USB devices, yet did not have a
    dependancy on USB_HID.  This causes build errors on some configurations
    like nios2 when building due to new changes to the prodikeys driver.
    
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: stable@vger.kernel.org
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211203081231.2856936-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b1efa723b986a84f84a95b6907cffe3a357338c9
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 1 19:35:01 2021 +0100

    HID: add hid_is_usb() function to make it simpler for USB detection
    
    commit f83baa0cb6cfc92ebaf7f9d3a99d7e34f2e77a8a upstream.
    
    A number of HID drivers already call hid_is_using_ll_driver() but only
    for the detection of if this is a USB device or not.  Make this more
    obvious by creating hid_is_usb() and calling the function that way.
    
    Also converts the existing hid_is_using_ll_driver() functions to use the
    new call.
    
    Cc: Jiri Kosina <jikos@kernel.org>
    Cc: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Cc: linux-input@vger.kernel.org
    Cc: stable@vger.kernel.org
    Tested-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211201183503.2373082-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit df617829824346831daeb8ecb95e3ef08c985a02
Author: xiazhengqiao <xiazhengqiao@huaqin.corp-partner.google.com>
Date:   Fri Dec 3 11:01:19 2021 +0800

    HID: google: add eel USB id
    
    commit caff009098e6cf59fd6ac21c3a3befcc854978b4 upstream.
    
    Add one additional hammer-like device.
    
    Signed-off-by: xiazhengqiao <xiazhengqiao@huaqin.corp-partner.google.com>
    Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
    Link: https://lore.kernel.org/r/20211203030119.28612-1-xiazhengqiao@huaqin.corp-partner.google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>