commit e3c95128def1c937754a5cdc3d297fa47968e9f6
Author: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date:   Wed Dec 8 09:01:15 2021 +0100

    Linux 5.4.164
    
    Link: https://lore.kernel.org/r/20211206145551.909846023@linuxfoundation.org
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5df7d6a012fc5cfebaaa708b27b64592271467eb
Author: Wei Yongjun <weiyongjun1@huawei.com>
Date:   Tue Nov 23 08:36:18 2021 +0000

    ipmi: msghandler: Make symbol 'remove_work_wq' static
    
    commit 5a3ba99b62d8486de0316334e72ac620d4b94fdd upstream.
    
    The sparse tool complains as follows:
    
    drivers/char/ipmi/ipmi_msghandler.c:194:25: warning:
     symbol 'remove_work_wq' was not declared. Should it be static?
    
    This symbol is not used outside of ipmi_msghandler.c, so
    marks it static.
    
    Fixes: 1d49eb91e86e ("ipmi: Move remove_work to dedicated workqueue")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
    Message-Id: <20211123083618.2366808-1-weiyongjun1@huawei.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 5d1e83fffbc9d81d982778b0dc68be80308706e3
Author: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
Date:   Mon Nov 29 17:32:12 2021 +0800

    net/tls: Fix authentication failure in CCM mode
    
    commit 5961060692f8b17cd2080620a3d27b95d2ae05ca upstream.
    
    When the TLS cipher suite uses CCM mode, including AES CCM and
    SM4 CCM, the first byte of the B0 block is flags, and the real
    IV starts from the second byte. The XOR operation of the IV and
    rec_seq should be skip this byte, that is, add the iv_offset.
    
    Fixes: f295b3ae9f59 ("net/tls: Add support of AES128-CCM based ciphers")
    Signed-off-by: Tianjia Zhang <tianjia.zhang@linux.alibaba.com>
    Cc: Vakul Garg <vakul.garg@nxp.com>
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit cffd7583c92ed96ca9a4eef8a51b6921a99f32e2
Author: Helge Deller <deller@gmx.de>
Date:   Sat Dec 4 21:21:46 2021 +0100

    parisc: Mark cr16 CPU clocksource unstable on all SMP machines
    
    commit afdb4a5b1d340e4afffc65daa21cc71890d7d589 upstream.
    
    In commit c8c3735997a3 ("parisc: Enhance detection of synchronous cr16
    clocksources") I assumed that CPUs on the same physical core are syncronous.
    While booting up the kernel on two different C8000 machines, one with a
    dual-core PA8800 and one with a dual-core PA8900 CPU, this turned out to be
    wrong. The symptom was that I saw a jump in the internal clocks printed to the
    syslog and strange overall behaviour.  On machines which have 4 cores (2
    dual-cores) the problem isn't visible, because the current logic already marked
    the cr16 clocksource unstable in this case.
    
    This patch now marks the cr16 interval timers unstable if we have more than one
    CPU in the system, and it fixes this issue.
    
    Fixes: c8c3735997a3 ("parisc: Enhance detection of synchronous cr16 clocksources")
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org> # v5.15+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 23b40edec832e4e6ed8aef2eb5e7f9a461b646c7
Author: Mordechay Goodstein <mordechay.goodstein@intel.com>
Date:   Wed Nov 10 15:01:59 2021 +0200

    iwlwifi: mvm: retry init flow if failed
    
    commit 5283dd677e52af9db6fe6ad11b2f12220d519d0c upstream.
    
    In some very rare cases the init flow may fail.  In many cases, this is
    recoverable, so we can retry.  Implement a loop to retry two more times
    after the first attempt failed.
    
    This can happen in two different situations, namely during probe and
    during mac80211 start.  For the first case, a simple loop is enough.
    For the second case, we need to add a flag to prevent mac80211 from
    trying to restart it as well, leaving full control with the driver.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com>
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/iwlwifi.20211110150132.57514296ecab.I52a0411774b700bdc7dedb124d8b59bf99456eb2@changeid
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 8d6e4b422d0c84ca8f4aedce80961c518689f97d
Author: Jay Dolan <jay.dolan@accesio.com>
Date:   Mon Nov 22 14:06:04 2021 +0200

    serial: 8250_pci: rewrite pericom_do_set_divisor()
    
    commit bb1201d4b38ec67bd9a871cf86b0cc10f28b15b5 upstream.
    
    Have pericom_do_set_divisor() use the uartclk instead of a hard coded
    value to work with different speed crystals. Tested with 14.7456 and 24
    MHz crystals.
    
    Have pericom_do_set_divisor() always calculate the divisor rather than
    call serial8250_do_set_divisor() for rates below baud_base.
    
    Do not write registers or call serial8250_do_set_divisor() if valid
    divisors could not be found.
    
    Fixes: 6bf4e42f1d19 ("serial: 8250: Add support for higher baud rates to Pericom chips")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Jay Dolan <jay.dolan@accesio.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20211122120604.3909-3-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 181cf7622ce22a86401b9e7153189546d5ccdbfc
Author: Jay Dolan <jay.dolan@accesio.com>
Date:   Mon Nov 22 14:06:03 2021 +0200

    serial: 8250_pci: Fix ACCES entries in pci_serial_quirks array
    
    commit c525c5d2437f93520388920baac6d9340c65d239 upstream.
    
    Fix error in table for PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S that caused it
    and PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4 to be missing their fourth port.
    
    Fixes: 78d3820b9bd3 ("serial: 8250_pci: Have ACCES cards that use the four port Pericom PI7C9X7954 chip use the pci_pericom_setup()")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Jay Dolan <jay.dolan@accesio.com>
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Link: https://lore.kernel.org/r/20211122120604.3909-2-andriy.shevchenko@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c5da8aa441053958594f94254592bb41264bdfbf
Author: Johan Hovold <johan@kernel.org>
Date:   Mon Nov 8 09:54:31 2021 +0100

    serial: core: fix transmit-buffer reset and memleak
    
    commit 00de977f9e0aa9760d9a79d1e41ff780f74e3424 upstream.
    
    Commit 761ed4a94582 ("tty: serial_core: convert uart_close to use
    tty_port_close") converted serial core to use tty_port_close() but
    failed to notice that the transmit buffer still needs to be freed on
    final close.
    
    Not freeing the transmit buffer means that the buffer is no longer
    cleared on next open so that any ioctl() waiting for the buffer to drain
    might wait indefinitely (e.g. on termios changes) or that stale data can
    end up being transmitted in case tx is restarted.
    
    Furthermore, the buffer of any port that has been opened would leak on
    driver unbind.
    
    Note that the port lock is held when clearing the buffer pointer due to
    the ldisc race worked around by commit a5ba1d95e46e ("uart: fix race
    between uart_put_char() and uart_shutdown()").
    
    Also note that the tty-port shutdown() callback is not called for
    console ports so it is not strictly necessary to free the buffer page
    after releasing the lock (cf. d72402145ace ("tty/serial: do not free
    trasnmit buffer page under port lock")).
    
    Link: https://lore.kernel.org/r/319321886d97c456203d5c6a576a5480d07c3478.1635781688.git.baruch@tkos.co.il
    Fixes: 761ed4a94582 ("tty: serial_core: convert uart_close to use tty_port_close")
    Cc: stable@vger.kernel.org      # 4.9
    Cc: Rob Herring <robh@kernel.org>
    Reported-by: Baruch Siach <baruch@tkos.co.il>
    Tested-by: Baruch Siach <baruch@tkos.co.il>
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Link: https://lore.kernel.org/r/20211108085431.12637-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7ed4a98a174c13e5f0303a0d4d62af7250f47e0a
Author: Pierre Gondois <Pierre.Gondois@arm.com>
Date:   Tue Nov 9 17:22:48 2021 +0000

    serial: pl011: Add ACPI SBSA UART match id
    
    commit ac442a077acf9a6bf1db4320ec0c3f303be092b3 upstream.
    
    The document 'ACPI for Arm Components 1.0' defines the following
    _HID mappings:
    -'Prime cell UART (PL011)': ARMH0011
    -'SBSA UART': ARMHB000
    
    Use the sbsa-uart driver when a device is described with
    the 'ARMHB000' _HID.
    
    Note:
    PL011 devices currently use the sbsa-uart driver instead of the
    uart-pl011 driver. Indeed, PL011 devices are not bound to a clock
    in ACPI. It is not possible to change their baudrate.
    
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
    Link: https://lore.kernel.org/r/20211109172248.19061-1-Pierre.Gondois@arm.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9e16682c94ec455603192f51641bf223e65146f2
Author: Sven Eckelmann <sven@narfation.org>
Date:   Sat Nov 13 13:10:50 2021 +0100

    tty: serial: msm_serial: Deactivate RX DMA for polling support
    
    commit 7492ffc90fa126afb67d4392d56cb4134780194a upstream.
    
    The CONSOLE_POLLING mode is used for tools like k(g)db. In this kind of
    setup, it is often sharing a serial device with the normal system console.
    This is usually no problem because the polling helpers can consume input
    values directly (when in kgdb context) and the normal Linux handlers can
    only consume new input values after kgdb switched back.
    
    This is not true anymore when RX DMA is enabled for UARTDM controllers.
    Single input values can no longer be received correctly. Instead following
    seems to happen:
    
    * on 1. input, some old input is read (continuously)
    * on 2. input, two old inputs are read (continuously)
    * on 3. input, three old input values are read (continuously)
    * on 4. input, 4 previous inputs are received
    
    This repeats then for each group of 4 input values.
    
    This behavior changes slightly depending on what state the controller was
    when the first input was received. But this makes working with kgdb
    basically impossible because control messages are always corrupted when
    kgdboc tries to parse them.
    
    RX DMA should therefore be off when CONSOLE_POLLING is enabled to avoid
    these kind of problems. No such problem was noticed for TX DMA.
    
    Fixes: 99693945013a ("tty: serial: msm: Add RX DMA support")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sven Eckelmann <sven@narfation.org>
    Link: https://lore.kernel.org/r/20211113121050.7266-1-sven@narfation.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit b5dd5a467ec6da3bc27be53418e39cb8aa0d9409
Author: Joerg Roedel <jroedel@suse.de>
Date:   Thu Dec 2 16:32:26 2021 +0100

    x86/64/mm: Map all kernel memory into trampoline_pgd
    
    commit 51523ed1c26758de1af7e58730a656875f72f783 upstream.
    
    The trampoline_pgd only maps the 0xfffffff000000000-0xffffffffffffffff
    range of kernel memory (with 4-level paging). This range contains the
    kernel's text+data+bss mappings and the module mapping space but not the
    direct mapping and the vmalloc area.
    
    This is enough to get the application processors out of real-mode, but
    for code that switches back to real-mode the trampoline_pgd is missing
    important parts of the address space. For example, consider this code
    from arch/x86/kernel/reboot.c, function machine_real_restart() for a
    64-bit kernel:
    
      #ifdef CONFIG_X86_32
            load_cr3(initial_page_table);
      #else
            write_cr3(real_mode_header->trampoline_pgd);
    
            /* Exiting long mode will fail if CR4.PCIDE is set. */
            if (boot_cpu_has(X86_FEATURE_PCID))
                    cr4_clear_bits(X86_CR4_PCIDE);
      #endif
    
            /* Jump to the identity-mapped low memory code */
      #ifdef CONFIG_X86_32
            asm volatile("jmpl *%0" : :
                         "rm" (real_mode_header->machine_real_restart_asm),
                         "a" (type));
      #else
            asm volatile("ljmpl *%0" : :
                         "m" (real_mode_header->machine_real_restart_asm),
                         "D" (type));
      #endif
    
    The code switches to the trampoline_pgd, which unmaps the direct mapping
    and also the kernel stack. The call to cr4_clear_bits() will find no
    stack and crash the machine. The real_mode_header pointer below points
    into the direct mapping, and dereferencing it also causes a crash.
    
    The reason this does not crash always is only that kernel mappings are
    global and the CR3 switch does not flush those mappings. But if theses
    mappings are not in the TLB already, the above code will crash before it
    can jump to the real-mode stub.
    
    Extend the trampoline_pgd to contain all kernel mappings to prevent
    these crashes and to make code which runs on this page-table more
    robust.
    
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Cc: stable@vger.kernel.org
    Link: https://lkml.kernel.org/r/20211202153226.22946-5-joro@8bytes.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 72736a3b90ef8cdbd83d5a513f5cccd638052b26
Author: Feng Tang <feng.tang@intel.com>
Date:   Wed Nov 17 10:37:51 2021 +0800

    x86/tsc: Disable clocksource watchdog for TSC on qualified platorms
    
    commit b50db7095fe002fa3e16605546cba66bf1b68a3e upstream.
    
    There are cases that the TSC clocksource is wrongly judged as unstable by
    the clocksource watchdog mechanism which tries to validate the TSC against
    HPET, PM_TIMER or jiffies. While there is hardly a general reliable way to
    check the validity of a watchdog, Thomas Gleixner proposed [1]:
    
    "I'm inclined to lift that requirement when the CPU has:
    
        1) X86_FEATURE_CONSTANT_TSC
        2) X86_FEATURE_NONSTOP_TSC
        3) X86_FEATURE_NONSTOP_TSC_S3
        4) X86_FEATURE_TSC_ADJUST
        5) At max. 4 sockets
    
     After two decades of horrors we're finally at a point where TSC seems
     to be halfway reliable and less abused by BIOS tinkerers. TSC_ADJUST
     was really key as we can now detect even small modifications reliably
     and the important point is that we can cure them as well (not pretty
     but better than all other options)."
    
    As feature #3 X86_FEATURE_NONSTOP_TSC_S3 only exists on several generations
    of Atom processorz, and is always coupled with X86_FEATURE_CONSTANT_TSC
    and X86_FEATURE_NONSTOP_TSC, skip checking it, and also be more defensive
    to use maximal 2 sockets.
    
    The check is done inside tsc_init() before registering 'tsc-early' and
    'tsc' clocksources, as there were cases that both of them had been
    wrongly judged as unreliable.
    
    For more background of tsc/watchdog, there is a good summary in [2]
    
    [tglx} Update vs. jiffies:
    
      On systems where the only remaining clocksource aside of TSC is jiffies
      there is no way to make this work because that creates a circular
      dependency. Jiffies accuracy depends on not missing a periodic timer
      interrupt, which is not guaranteed. That could be detected by TSC, but as
      TSC is not trusted this cannot be compensated. The consequence is a
      circulus vitiosus which results in shutting down TSC and falling back to
      the jiffies clocksource which is even more unreliable.
    
    [1]. https://lore.kernel.org/lkml/87eekfk8bd.fsf@nanos.tec.linutronix.de/
    [2]. https://lore.kernel.org/lkml/87a6pimt1f.ffs@nanos.tec.linutronix.de/
    
    [ tglx: Refine comment and amend changelog ]
    
    Fixes: 6e3cd95234dc ("x86/hpet: Use another crystalball to evaluate HPET usability")
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Feng Tang <feng.tang@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211117023751.24190-2-feng.tang@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fe3cd48420cdee8e3b969fdf01b829b78b513a6b
Author: Feng Tang <feng.tang@intel.com>
Date:   Wed Nov 17 10:37:50 2021 +0800

    x86/tsc: Add a timer to make sure TSC_adjust is always checked
    
    commit c7719e79347803b8e3b6b50da8c6db410a3012b5 upstream.
    
    The TSC_ADJUST register is checked every time a CPU enters idle state, but
    Thomas Gleixner mentioned there is still a caveat that a system won't enter
    idle [1], either because it's too busy or configured purposely to not enter
    idle.
    
    Setup a periodic timer (every 10 minutes) to make sure the check is
    happening on a regular base.
    
    [1] https://lore.kernel.org/lkml/875z286xtk.fsf@nanos.tec.linutronix.de/
    
    Fixes: 6e3cd95234dc ("x86/hpet: Use another crystalball to evaluate HPET usability")
    Requested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Feng Tang <feng.tang@intel.com>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Cc: "Paul E. McKenney" <paulmck@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211117023751.24190-1-feng.tang@intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 957a203fe1b75065ef60726ff1f4dd334080bf85
Author: Badhri Jagan Sridharan <badhri@google.com>
Date:   Mon Nov 29 16:18:25 2021 -0800

    usb: typec: tcpm: Wait in SNK_DEBOUNCED until disconnect
    
    commit fbcd13df1e78eb2ba83a3c160eefe2d6f574beaf upstream.
    
    Stub from the spec:
    "4.5.2.2.4.2 Exiting from AttachWait.SNK State
    A Sink shall transition to Unattached.SNK when the state of both
    the CC1 and CC2 pins is SNK.Open for at least tPDDebounce.
    A DRP shall transition to Unattached.SRC when the state of both
    the CC1 and CC2 pins is SNK.Open for at least tPDDebounce."
    
    This change makes TCPM to wait in SNK_DEBOUNCED state until
    CC1 and CC2 pins is SNK.Open for at least tPDDebounce. Previously,
    TCPM resets the port if vbus is not present in PD_T_PS_SOURCE_ON.
    This causes TCPM to loop continuously when connected to a
    faulty power source that does not present vbus. Waiting in
    SNK_DEBOUNCED also ensures that TCPM is adherant to
    "4.5.2.2.4.2 Exiting from AttachWait.SNK State" requirements.
    
    [ 6169.280751] CC1: 0 -> 0, CC2: 0 -> 5 [state TOGGLING, polarity 0, connected]
    [ 6169.280759] state change TOGGLING -> SNK_ATTACH_WAIT [rev2 NONE_AMS]
    [ 6169.280771] pending state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED @ 170 ms [rev2 NONE_AMS]
    [ 6169.282427] CC1: 0 -> 0, CC2: 5 -> 5 [state SNK_ATTACH_WAIT, polarity 0, connected]
    [ 6169.450825] state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED [delayed 170 ms]
    [ 6169.450834] pending state change SNK_DEBOUNCED -> PORT_RESET @ 480 ms [rev2 NONE_AMS]
    [ 6169.930892] state change SNK_DEBOUNCED -> PORT_RESET [delayed 480 ms]
    [ 6169.931296] disable vbus discharge ret:0
    [ 6169.931301] Setting usb_comm capable false
    [ 6169.932783] Setting voltage/current limit 0 mV 0 mA
    [ 6169.932802] polarity 0
    [ 6169.933706] Requesting mux state 0, usb-role 0, orientation 0
    [ 6169.936689] cc:=0
    [ 6169.936812] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms [rev2 NONE_AMS]
    [ 6169.937157] CC1: 0 -> 0, CC2: 5 -> 0 [state PORT_RESET, polarity 0, disconnected]
    [ 6170.036880] state change PORT_RESET -> PORT_RESET_WAIT_OFF [delayed 100 ms]
    [ 6170.036890] state change PORT_RESET_WAIT_OFF -> SNK_UNATTACHED [rev2 NONE_AMS]
    [ 6170.036896] Start toggling
    [ 6170.041412] CC1: 0 -> 0, CC2: 0 -> 0 [state TOGGLING, polarity 0, disconnected]
    [ 6170.042973] CC1: 0 -> 0, CC2: 0 -> 5 [state TOGGLING, polarity 0, connected]
    [ 6170.042976] state change TOGGLING -> SNK_ATTACH_WAIT [rev2 NONE_AMS]
    [ 6170.042981] pending state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED @ 170 ms [rev2 NONE_AMS]
    [ 6170.213014] state change SNK_ATTACH_WAIT -> SNK_DEBOUNCED [delayed 170 ms]
    [ 6170.213019] pending state change SNK_DEBOUNCED -> PORT_RESET @ 480 ms [rev2 NONE_AMS]
    [ 6170.693068] state change SNK_DEBOUNCED -> PORT_RESET [delayed 480 ms]
    [ 6170.693304] disable vbus discharge ret:0
    [ 6170.693308] Setting usb_comm capable false
    [ 6170.695193] Setting voltage/current limit 0 mV 0 mA
    [ 6170.695210] polarity 0
    [ 6170.695990] Requesting mux state 0, usb-role 0, orientation 0
    [ 6170.701896] cc:=0
    [ 6170.702181] pending state change PORT_RESET -> PORT_RESET_WAIT_OFF @ 100 ms [rev2 NONE_AMS]
    [ 6170.703343] CC1: 0 -> 0, CC2: 5 -> 0 [state PORT_RESET, polarity 0, disconnected]
    
    Fixes: f0690a25a140b8 ("staging: typec: USB Type-C Port Manager (tcpm)")
    Cc: stable@vger.kernel.org
    Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Badhri Jagan Sridharan <badhri@google.com>
    Link: https://lore.kernel.org/r/20211130001825.3142830-1-badhri@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 7fbde744374eed1154264ee5af1713888a8cce44
Author: Ole Ernst <olebowle@gmx.com>
Date:   Sat Nov 27 10:05:45 2021 +0100

    USB: NO_LPM quirk Lenovo Powered USB-C Travel Hub
    
    commit d2a004037c3c6afd36d40c384d2905f47cd51c57 upstream.
    
    This is another branded 8153 device that doesn't work well with LPM:
    r8152 2-2.1:1.0 enp0s13f0u2u1: Stop submitting intr, status -71
    
    Disable LPM to resolve the issue.
    
    Signed-off-by: Ole Ernst <olebowle@gmx.com>
    Cc: stable <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211127090546.52072-1-olebowle@gmx.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 095a39a2cc273d7a7a96a4ead75e3216314060c2
Author: Mathias Nyman <mathias.nyman@linux.intel.com>
Date:   Fri Nov 26 14:23:40 2021 +0200

    xhci: Fix commad ring abort, write all 64 bits to CRCR register.
    
    commit 09f736aa95476631227d2dc0e6b9aeee1ad7ed58 upstream.
    
    Turns out some xHC controllers require all 64 bits in the CRCR register
    to be written to execute a command abort.
    
    The lower 32 bits containing the command abort bit is written first.
    In case the command ring stops before we write the upper 32 bits then
    hardware may use these upper bits to set the commnd ring dequeue pointer.
    
    Solve this by making sure the upper 32 bits contain a valid command
    ring dequeue pointer.
    
    The original patch that only wrote the first 32 to stop the ring went
    to stable, so this fix should go there as well.
    
    Fixes: ff0e50d3564f ("xhci: Fix command ring pointer corruption while aborting a command")
    Cc: stable@vger.kernel.org
    Tested-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211126122340.1193239-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit caedb12c77378c68b050be24ff170493ef29d9f8
Author: Maciej W. Rozycki <macro@orcam.me.uk>
Date:   Tue Oct 26 00:26:22 2021 +0200

    vgacon: Propagate console boot parameters before calling `vc_resize'
    
    commit 3dfac26e2ef29ff2abc2a75aa4cd48fce25a2c4b upstream.
    
    Fix a division by zero in `vgacon_resize' with a backtrace like:
    
    vgacon_resize
    vc_do_resize
    vgacon_init
    do_bind_con_driver
    do_unbind_con_driver
    fbcon_fb_unbind
    do_unregister_framebuffer
    do_register_framebuffer
    register_framebuffer
    __drm_fb_helper_initial_config_and_unlock
    drm_helper_hpd_irq_event
    dw_hdmi_irq
    irq_thread
    kthread
    
    caused by `c->vc_cell_height' not having been initialized.  This has
    only started to trigger with commit 860dafa90259 ("vt: Fix character
    height handling with VT_RESIZEX"), however the ultimate offender is
    commit 50ec42edd978 ("[PATCH] Detaching fbcon: fix vgacon to allow
    retaking of the console").
    
    Said commit has added a call to `vc_resize' whenever `vgacon_init' is
    called with the `init' argument set to 0, which did not happen before.
    And the call is made before a key vgacon boot parameter retrieved in
    `vgacon_startup' has been propagated in `vgacon_init' for `vc_resize' to
    use to the console structure being worked on.  Previously the parameter
    was `c->vc_font.height' and now it is `c->vc_cell_height'.
    
    In this particular scenario the registration of fbcon has failed and vt
    resorts to vgacon.  Now fbcon does have initialized `c->vc_font.height'
    somehow, unlike `c->vc_cell_height', which is why this code did not
    crash before, but either way the boot parameters should have been copied
    to the console structure ahead of the call to `vc_resize' rather than
    afterwards, so that first the call has a chance to use them and second
    they do not change the console structure to something possibly different
    from what was used by `vc_resize'.
    
    Move the propagation of the vgacon boot parameters ahead of the call to
    `vc_resize' then.  Adjust the comment accordingly.
    
    Fixes: 50ec42edd978 ("[PATCH] Detaching fbcon: fix vgacon to allow retaking of the console")
    Cc: stable@vger.kernel.org # v2.6.18+
    Reported-by: Wim Osterholt <wim@djo.tudelft.nl>
    Reported-by: Pavel V. Panteleev <panteleev_p@mcst.ru>
    Signed-off-by: Maciej W. Rozycki <macro@orcam.me.uk>
    Link: https://lore.kernel.org/r/alpine.DEB.2.21.2110252317110.58149@angie.orcam.me.uk
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a42944686249283d4c3f0b4391ca2e076da8838f
Author: Helge Deller <deller@gmx.de>
Date:   Sat Dec 4 21:14:40 2021 +0100

    parisc: Fix "make install" on newer debian releases
    
    commit 0f9fee4cdebfbe695c297e5b603a275e2557c1cc upstream.
    
    On newer debian releases the debian-provided "installkernel" script is
    installed in /usr/sbin. Fix the kernel install.sh script to look for the
    script in this directory as well.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org> # v3.13+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fbe7eacab7eb73e7894c59c414ea1ec83a629f3f
Author: Helge Deller <deller@gmx.de>
Date:   Fri Nov 26 22:35:45 2021 +0100

    parisc: Fix KBUILD_IMAGE for self-extracting kernel
    
    commit 1d7c29b77725d05faff6754d2f5e7c147aedcf93 upstream.
    
    Default KBUILD_IMAGE to $(boot)/bzImage if a self-extracting
    (CONFIG_PARISC_SELF_EXTRACT=y) kernel is to be built.
    This fixes the bindeb-pkg make target.
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: <stable@vger.kernel.org> # v4.14+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c6a9060be53f4301fbc30739b77a8f038227fb03
Author: Qais Yousef <qais.yousef@arm.com>
Date:   Thu Dec 2 11:20:33 2021 +0000

    sched/uclamp: Fix rq->uclamp_max not set on first enqueue
    
    [ Upstream commit 315c4f884800c45cb6bd8c90422fad554a8b9588 ]
    
    Commit d81ae8aac85c ("sched/uclamp: Fix initialization of struct
    uclamp_rq") introduced a bug where uclamp_max of the rq is not reset to
    match the woken up task's uclamp_max when the rq is idle.
    
    The code was relying on rq->uclamp_max initialized to zero, so on first
    enqueue
    
            static inline void uclamp_rq_inc_id(struct rq *rq, struct task_struct *p,
                                                enum uclamp_id clamp_id)
            {
                    ...
    
                    if (uc_se->value > READ_ONCE(uc_rq->value))
                            WRITE_ONCE(uc_rq->value, uc_se->value);
            }
    
    was actually resetting it. But since commit d81ae8aac85c changed the
    default to 1024, this no longer works. And since rq->uclamp_flags is
    also initialized to 0, neither above code path nor uclamp_idle_reset()
    update the rq->uclamp_max on first wake up from idle.
    
    This is only visible from first wake up(s) until the first dequeue to
    idle after enabling the static key. And it only matters if the
    uclamp_max of this task is < 1024 since only then its uclamp_max will be
    effectively ignored.
    
    Fix it by properly initializing rq->uclamp_flags = UCLAMP_FLAG_IDLE to
    ensure uclamp_idle_reset() is called which then will update the rq
    uclamp_max value as expected.
    
    Fixes: d81ae8aac85c ("sched/uclamp: Fix initialization of struct uclamp_rq")
    Signed-off-by: Qais Yousef <qais.yousef@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Valentin Schneider <Valentin.Schneider@arm.com>
    Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
    Link: https://lkml.kernel.org/r/20211202112033.1705279-1-qais.yousef@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 8ae8ccd2402fb2d035e24f19ac0ef697f307f706
Author: Like Xu <likexu@tencent.com>
Date:   Thu Nov 18 21:03:20 2021 +0800

    KVM: x86/pmu: Fix reserved bits for AMD PerfEvtSeln register
    
    [ Upstream commit cb1d220da0faa5ca0deb93449aff953f0c2cce6d ]
    
    If we run the following perf command in an AMD Milan guest:
    
      perf stat \
      -e cpu/event=0x1d0/ \
      -e cpu/event=0x1c7/ \
      -e cpu/umask=0x1f,event=0x18e/ \
      -e cpu/umask=0x7,event=0x18e/ \
      -e cpu/umask=0x18,event=0x18e/ \
      ./workload
    
    dmesg will report a #GP warning from an unchecked MSR access
    error on MSR_F15H_PERF_CTLx.
    
    This is because according to APM (Revision: 4.03) Figure 13-7,
    the bits [35:32] of AMD PerfEvtSeln register is a part of the
    event select encoding, which extends the EVENT_SELECT field
    from 8 bits to 12 bits.
    
    Opportunistically update pmu->reserved_bits for reserved bit 19.
    
    Reported-by: Jim Mattson <jmattson@google.com>
    Fixes: ca724305a2b0 ("KVM: x86/vPMU: Implement AMD vPMU code for KVM")
    Signed-off-by: Like Xu <likexu@tencent.com>
    Message-Id: <20211118130320.95997-1-likexu@tencent.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ee38eb8cf9a7323884c2b8e0adbbeb2192d31e29
Author: msizanoen1 <msizanoen@qtmlabs.xyz>
Date:   Tue Nov 23 13:48:32 2021 +0100

    ipv6: fix memory leak in fib6_rule_suppress
    
    commit cdef485217d30382f3bf6448c54b4401648fe3f1 upstream.
    
    The kernel leaks memory when a `fib` rule is present in IPv6 nftables
    firewall rules and a suppress_prefix rule is present in the IPv6 routing
    rules (used by certain tools such as wg-quick). In such scenarios, every
    incoming packet will leak an allocation in `ip6_dst_cache` slab cache.
    
    After some hours of `bpftrace`-ing and source code reading, I tracked
    down the issue to ca7a03c41753 ("ipv6: do not free rt if
    FIB_LOOKUP_NOREF is set on suppress rule").
    
    The problem with that change is that the generic `args->flags` always have
    `FIB_LOOKUP_NOREF` set[1][2] but the IPv6-specific flag
    `RT6_LOOKUP_F_DST_NOREF` might not be, leading to `fib6_rule_suppress` not
    decreasing the refcount when needed.
    
    How to reproduce:
     - Add the following nftables rule to a prerouting chain:
         meta nfproto ipv6 fib saddr . mark . iif oif missing drop
       This can be done with:
         sudo nft create table inet test
         sudo nft create chain inet test test_chain '{ type filter hook prerouting priority filter + 10; policy accept; }'
         sudo nft add rule inet test test_chain meta nfproto ipv6 fib saddr . mark . iif oif missing drop
     - Run:
         sudo ip -6 rule add table main suppress_prefixlength 0
     - Watch `sudo slabtop -o | grep ip6_dst_cache` to see memory usage increase
       with every incoming ipv6 packet.
    
    This patch exposes the protocol-specific flags to the protocol
    specific `suppress` function, and check the protocol-specific `flags`
    argument for RT6_LOOKUP_F_DST_NOREF instead of the generic
    FIB_LOOKUP_NOREF when decreasing the refcount, like this.
    
    [1]: https://github.com/torvalds/linux/blob/ca7a03c4175366a92cee0ccc4fec0038c3266e26/net/ipv6/fib6_rules.c#L71
    [2]: https://github.com/torvalds/linux/blob/ca7a03c4175366a92cee0ccc4fec0038c3266e26/net/ipv6/fib6_rules.c#L99
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=215105
    Fixes: ca7a03c41753 ("ipv6: do not free rt if FIB_LOOKUP_NOREF is set on suppress rule")
    Cc: stable@vger.kernel.org
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9d1596282644ac0b87def72d055d49b3def7ee69
Author: Rob Clark <robdclark@chromium.org>
Date:   Mon Nov 8 10:01:22 2021 -0800

    drm/msm: Do hw_init() before capturing GPU state
    
    commit e4840d537c2c6b1189d4de16ee0f4820e069dcea upstream.
    
    In particular, we need to ensure all the necessary blocks are switched
    to 64b mode (a5xx+) otherwise the high bits of the address of the BO to
    snapshot state into will be ignored, resulting in:
    
      *** gpu fault: ttbr0=0000000000000000 iova=0000000000012000 dir=READ type=TRANSLATION source=CP (0,0,0,0)
      platform 506a000.gmu: [drm:a6xx_gmu_set_oob] *ERROR* Timeout waiting for GMU OOB set BOOT_SLUMBER: 0x0
    
    Fixes: 4f776f4511c7 ("drm/msm/gpu: Convert the GPU show function to use the GPU state")
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Link: https://lore.kernel.org/r/20211108180122.487859-1-robdclark@gmail.com
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 10bad5a1977fb7fec17acc1d571885277c665e9f
Author: Tony Lu <tonylu@linux.alibaba.com>
Date:   Wed Dec 1 14:42:16 2021 +0800

    net/smc: Keep smc_close_final rc during active close
    
    commit 00e158fb91dfaff3f94746f260d11f1a4853506e upstream.
    
    When smc_close_final() returns error, the return code overwrites by
    kernel_sock_shutdown() in smc_close_active(). The return code of
    smc_close_final() is more important than kernel_sock_shutdown(), and it
    will pass to userspace directly.
    
    Fix it by keeping both return codes, if smc_close_final() raises an
    error, return it or kernel_sock_shutdown()'s.
    
    Link: https://lore.kernel.org/linux-s390/1f67548e-cbf6-0dce-82b5-10288a4583bd@linux.ibm.com/
    Fixes: 606a63c9783a ("net/smc: Ensure the active closing peer first closes clcsock")
    Suggested-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
    Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
    Acked-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f2a23fd13ffc311f62451d3511a4fcc7eeb2490
Author: William Kucharski <william.kucharski@oracle.com>
Date:   Wed Dec 1 07:45:22 2021 -0700

    net/rds: correct socket tunable error in rds_tcp_tune()
    
    commit 19f36edf14bcdb783aef3af8217df96f76a8ce34 upstream.
    
    Correct an error where setting /proc/sys/net/rds/tcp/rds_tcp_rcvbuf would
    instead modify the socket's sk_sndbuf and would leave sk_rcvbuf untouched.
    
    Fixes: c6a58ffed536 ("RDS: TCP: Add sysctl tunables for sndbuf/rcvbuf on rds-tcp socket")
    Signed-off-by: William Kucharski <william.kucharski@oracle.com>
    Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 01c60b3f477bf85d882d73de4e33cc8637c695a9
Author: Eric Dumazet <edumazet@google.com>
Date:   Wed Dec 1 18:26:35 2021 -0800

    ipv4: convert fib_num_tclassid_users to atomic_t
    
    commit 213f5f8f31f10aa1e83187ae20fb7fa4e626b724 upstream.
    
    Before commit faa041a40b9f ("ipv4: Create cleanup helper for fib_nh")
    changes to net->ipv4.fib_num_tclassid_users were protected by RTNL.
    
    After the change, this is no longer the case, as free_fib_info_rcu()
    runs after rcu grace period, without rtnl being held.
    
    Fixes: faa041a40b9f ("ipv4: Create cleanup helper for fib_nh")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: David Ahern <dsahern@kernel.org>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit efb07398175647f17f7b69376c8a9bc5706bf9b0
Author: Eric Dumazet <edumazet@google.com>
Date:   Tue Nov 30 09:01:55 2021 -0800

    net: annotate data-races on txq->xmit_lock_owner
    
    commit 7a10d8c810cfad3e79372d7d1c77899d86cd6662 upstream.
    
    syzbot found that __dev_queue_xmit() is reading txq->xmit_lock_owner
    without annotations.
    
    No serious issue there, let's document what is happening there.
    
    BUG: KCSAN: data-race in __dev_queue_xmit / __dev_queue_xmit
    
    write to 0xffff888139d09484 of 4 bytes by interrupt on cpu 0:
     __netif_tx_unlock include/linux/netdevice.h:4437 [inline]
     __dev_queue_xmit+0x948/0xf70 net/core/dev.c:4229
     dev_queue_xmit_accel+0x19/0x20 net/core/dev.c:4265
     macvlan_queue_xmit drivers/net/macvlan.c:543 [inline]
     macvlan_start_xmit+0x2b3/0x3d0 drivers/net/macvlan.c:567
     __netdev_start_xmit include/linux/netdevice.h:4987 [inline]
     netdev_start_xmit include/linux/netdevice.h:5001 [inline]
     xmit_one+0x105/0x2f0 net/core/dev.c:3590
     dev_hard_start_xmit+0x72/0x120 net/core/dev.c:3606
     sch_direct_xmit+0x1b2/0x7c0 net/sched/sch_generic.c:342
     __dev_xmit_skb+0x83d/0x1370 net/core/dev.c:3817
     __dev_queue_xmit+0x590/0xf70 net/core/dev.c:4194
     dev_queue_xmit+0x13/0x20 net/core/dev.c:4259
     neigh_hh_output include/net/neighbour.h:511 [inline]
     neigh_output include/net/neighbour.h:525 [inline]
     ip6_finish_output2+0x995/0xbb0 net/ipv6/ip6_output.c:126
     __ip6_finish_output net/ipv6/ip6_output.c:191 [inline]
     ip6_finish_output+0x444/0x4c0 net/ipv6/ip6_output.c:201
     NF_HOOK_COND include/linux/netfilter.h:296 [inline]
     ip6_output+0x10e/0x210 net/ipv6/ip6_output.c:224
     dst_output include/net/dst.h:450 [inline]
     NF_HOOK include/linux/netfilter.h:307 [inline]
     ndisc_send_skb+0x486/0x610 net/ipv6/ndisc.c:508
     ndisc_send_rs+0x3b0/0x3e0 net/ipv6/ndisc.c:702
     addrconf_rs_timer+0x370/0x540 net/ipv6/addrconf.c:3898
     call_timer_fn+0x2e/0x240 kernel/time/timer.c:1421
     expire_timers+0x116/0x240 kernel/time/timer.c:1466
     __run_timers+0x368/0x410 kernel/time/timer.c:1734
     run_timer_softirq+0x2e/0x60 kernel/time/timer.c:1747
     __do_softirq+0x158/0x2de kernel/softirq.c:558
     __irq_exit_rcu kernel/softirq.c:636 [inline]
     irq_exit_rcu+0x37/0x70 kernel/softirq.c:648
     sysvec_apic_timer_interrupt+0x3e/0xb0 arch/x86/kernel/apic/apic.c:1097
     asm_sysvec_apic_timer_interrupt+0x12/0x20
    
    read to 0xffff888139d09484 of 4 bytes by interrupt on cpu 1:
     __dev_queue_xmit+0x5e3/0xf70 net/core/dev.c:4213
     dev_queue_xmit_accel+0x19/0x20 net/core/dev.c:4265
     macvlan_queue_xmit drivers/net/macvlan.c:543 [inline]
     macvlan_start_xmit+0x2b3/0x3d0 drivers/net/macvlan.c:567
     __netdev_start_xmit include/linux/netdevice.h:4987 [inline]
     netdev_start_xmit include/linux/netdevice.h:5001 [inline]
     xmit_one+0x105/0x2f0 net/core/dev.c:3590
     dev_hard_start_xmit+0x72/0x120 net/core/dev.c:3606
     sch_direct_xmit+0x1b2/0x7c0 net/sched/sch_generic.c:342
     __dev_xmit_skb+0x83d/0x1370 net/core/dev.c:3817
     __dev_queue_xmit+0x590/0xf70 net/core/dev.c:4194
     dev_queue_xmit+0x13/0x20 net/core/dev.c:4259
     neigh_resolve_output+0x3db/0x410 net/core/neighbour.c:1523
     neigh_output include/net/neighbour.h:527 [inline]
     ip6_finish_output2+0x9be/0xbb0 net/ipv6/ip6_output.c:126
     __ip6_finish_output net/ipv6/ip6_output.c:191 [inline]
     ip6_finish_output+0x444/0x4c0 net/ipv6/ip6_output.c:201
     NF_HOOK_COND include/linux/netfilter.h:296 [inline]
     ip6_output+0x10e/0x210 net/ipv6/ip6_output.c:224
     dst_output include/net/dst.h:450 [inline]
     NF_HOOK include/linux/netfilter.h:307 [inline]
     ndisc_send_skb+0x486/0x610 net/ipv6/ndisc.c:508
     ndisc_send_rs+0x3b0/0x3e0 net/ipv6/ndisc.c:702
     addrconf_rs_timer+0x370/0x540 net/ipv6/addrconf.c:3898
     call_timer_fn+0x2e/0x240 kernel/time/timer.c:1421
     expire_timers+0x116/0x240 kernel/time/timer.c:1466
     __run_timers+0x368/0x410 kernel/time/timer.c:1734
     run_timer_softirq+0x2e/0x60 kernel/time/timer.c:1747
     __do_softirq+0x158/0x2de kernel/softirq.c:558
     __irq_exit_rcu kernel/softirq.c:636 [inline]
     irq_exit_rcu+0x37/0x70 kernel/softirq.c:648
     sysvec_apic_timer_interrupt+0x8d/0xb0 arch/x86/kernel/apic/apic.c:1097
     asm_sysvec_apic_timer_interrupt+0x12/0x20
     kcsan_setup_watchpoint+0x94/0x420 kernel/kcsan/core.c:443
     folio_test_anon include/linux/page-flags.h:581 [inline]
     PageAnon include/linux/page-flags.h:586 [inline]
     zap_pte_range+0x5ac/0x10e0 mm/memory.c:1347
     zap_pmd_range mm/memory.c:1467 [inline]
     zap_pud_range mm/memory.c:1496 [inline]
     zap_p4d_range mm/memory.c:1517 [inline]
     unmap_page_range+0x2dc/0x3d0 mm/memory.c:1538
     unmap_single_vma+0x157/0x210 mm/memory.c:1583
     unmap_vmas+0xd0/0x180 mm/memory.c:1615
     exit_mmap+0x23d/0x470 mm/mmap.c:3170
     __mmput+0x27/0x1b0 kernel/fork.c:1113
     mmput+0x3d/0x50 kernel/fork.c:1134
     exit_mm+0xdb/0x170 kernel/exit.c:507
     do_exit+0x608/0x17a0 kernel/exit.c:819
     do_group_exit+0xce/0x180 kernel/exit.c:929
     get_signal+0xfc3/0x1550 kernel/signal.c:2852
     arch_do_signal_or_restart+0x8c/0x2e0 arch/x86/kernel/signal.c:868
     handle_signal_work kernel/entry/common.c:148 [inline]
     exit_to_user_mode_loop kernel/entry/common.c:172 [inline]
     exit_to_user_mode_prepare+0x113/0x190 kernel/entry/common.c:207
     __syscall_exit_to_user_mode_work kernel/entry/common.c:289 [inline]
     syscall_exit_to_user_mode+0x20/0x40 kernel/entry/common.c:300
     do_syscall_64+0x50/0xd0 arch/x86/entry/common.c:86
     entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    value changed: 0x00000000 -> 0xffffffff
    
    Reported by Kernel Concurrency Sanitizer on:
    CPU: 1 PID: 28712 Comm: syz-executor.0 Tainted: G        W         5.16.0-rc1-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    
    Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Reported-by: syzbot <syzkaller@googlegroups.com>
    Link: https://lore.kernel.org/r/20211130170155.2331929-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bfec04c689af4c23ea1b4ec7eaf2e3953c7f2793
Author: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Date:   Mon Nov 29 22:53:27 2021 +0100

    net: marvell: mvpp2: Fix the computation of shared CPUs
    
    commit b83f5ac7d922e69a109261f5f940eebbd4e514c4 upstream.
    
    'bitmap_fill()' fills a bitmap one 'long' at a time.
    It is likely that an exact number of bits is expected.
    
    Use 'bitmap_set()' instead in order not to set unexpected bits.
    
    Fixes: e531f76757eb ("net: mvpp2: handle cases where more CPUs are available than s/w threads")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit d4034bb9b532bf57e21bd0b9196bc21c0d35893a
Author: Sven Schuchmann <schuchmann@schleissheimer.de>
Date:   Sat Nov 27 11:47:07 2021 +0100

    net: usb: lan78xx: lan78xx_phy_init(): use PHY_POLL instead of "0" if no IRQ is available
    
    commit 817b653160db9852d5a0498a31f047e18ce27e5b upstream.
    
    On most systems request for IRQ 0 will fail, phylib will print an error message
    and fall back to polling. To fix this set the phydev->irq to PHY_POLL if no IRQ
    is available.
    
    Fixes: cc89c323a30e ("lan78xx: Use irq_domain for phy interrupt from USB Int. EP")
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Sven Schuchmann <schuchmann@schleissheimer.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3e70e3a72d80b16094faccbe438cd53761c3503a
Author: Eiichi Tsukata <eiichi.tsukata@nutanix.com>
Date:   Sun Nov 21 04:16:08 2021 +0000

    rxrpc: Fix rxrpc_local leak in rxrpc_lookup_peer()
    
    commit beacff50edbd6c9659a6f15fc7f6126909fade29 upstream.
    
    Need to call rxrpc_put_local() for peer candidate before kfree() as it
    holds a ref to rxrpc_local.
    
    [DH: v2: Changed to abstract the peer freeing code out into a function]
    
    Fixes: 9ebeddef58c4 ("rxrpc: rxrpc_peer needs to hold a ref on the rxrpc_local record")
    Signed-off-by: Eiichi Tsukata <eiichi.tsukata@nutanix.com>
    Signed-off-by: David Howells <dhowells@redhat.com>
    Reviewed-by: Marc Dionne <marc.dionne@auristor.com>
    cc: linux-afs@lists.infradead.org
    Link: https://lore.kernel.org/all/20211121041608.133740-2-eiichi.tsukata@nutanix.com/ # v1
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit ae8a253f3fe6d1fc47120d4703d0fbf71a6046b6
Author: Li Zhijian <lizhijian@cn.fujitsu.com>
Date:   Thu Dec 2 10:28:41 2021 +0800

    selftests: net: Correct case name
    
    commit a05431b22be819d75db72ca3d44381d18a37b092 upstream.
    
    ipv6_addr_bind/ipv4_addr_bind are function names. Previously, bind test
    would not be run by default due to the wrong case names
    
    Fixes: 34d0302ab861 ("selftests: Add ipv6 address bind tests to fcnal-test")
    Fixes: 75b2b2b3db4c ("selftests: Add ipv4 address bind tests to fcnal-test")
    Signed-off-by: Li Zhijian <lizhijian@cn.fujitsu.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit e461a9816a1ac5b4aeb61621b817225b61e46a68
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Wed Dec 1 00:44:38 2021 +0800

    net/mlx4_en: Fix an use-after-free bug in mlx4_en_try_alloc_resources()
    
    commit addad7643142f500080417dd7272f49b7a185570 upstream.
    
    In mlx4_en_try_alloc_resources(), mlx4_en_copy_priv() is called and
    tmp->tx_cq will be freed on the error path of mlx4_en_copy_priv().
    After that mlx4_en_alloc_resources() is called and there is a dereference
    of &tmp->tx_cq[t][i] in mlx4_en_alloc_resources(), which could lead to
    a use after free problem on failure of mlx4_en_copy_priv().
    
    Fix this bug by adding a check of mlx4_en_copy_priv()
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_MLX4_EN=m show no new warnings,
    and our static analyzer no longer warns about this code.
    
    Fixes: ec25bc04ed8e ("net/mlx4_en: Add resilience in low memory systems")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Link: https://lore.kernel.org/r/20211130164438.190591-1-zhou1615@umn.edu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit af120fcffd64775055d08117ee6365da51da960a
Author: Arnd Bergmann <arnd@arndb.de>
Date:   Mon Nov 29 10:39:29 2021 -0500

    siphash: use _unaligned version by default
    
    commit f7e5b9bfa6c8820407b64eabc1f29c9a87e8993d upstream.
    
    On ARM v6 and later, we define CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
    because the ordinary load/store instructions (ldr, ldrh, ldrb) can
    tolerate any misalignment of the memory address. However, load/store
    double and load/store multiple instructions (ldrd, ldm) may still only
    be used on memory addresses that are 32-bit aligned, and so we have to
    use the CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS macro with care, or we
    may end up with a severe performance hit due to alignment traps that
    require fixups by the kernel. Testing shows that this currently happens
    with clang-13 but not gcc-11. In theory, any compiler version can
    produce this bug or other problems, as we are dealing with undefined
    behavior in C99 even on architectures that support this in hardware,
    see also https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100363.
    
    Fortunately, the get_unaligned() accessors do the right thing: when
    building for ARMv6 or later, the compiler will emit unaligned accesses
    using the ordinary load/store instructions (but avoid the ones that
    require 32-bit alignment). When building for older ARM, those accessors
    will emit the appropriate sequence of ldrb/mov/orr instructions. And on
    architectures that can truly tolerate any kind of misalignment, the
    get_unaligned() accessors resolve to the leXX_to_cpup accessors that
    operate on aligned addresses.
    
    Since the compiler will in fact emit ldrd or ldm instructions when
    building this code for ARM v6 or later, the solution is to use the
    unaligned accessors unconditionally on architectures where this is
    known to be fast. The _aligned version of the hash function is
    however still needed to get the best performance on architectures
    that cannot do any unaligned access in hardware.
    
    This new version avoids the undefined behavior and should produce
    the fastest hash on all architectures we support.
    
    Link: https://lore.kernel.org/linux-arm-kernel/20181008211554.5355-4-ard.biesheuvel@linaro.org/
    Link: https://lore.kernel.org/linux-crypto/CAK8P3a2KfmmGDbVHULWevB0hv71P2oi2ZCHEAqT=8dQfa0=cqQ@mail.gmail.com/
    Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Fixes: 2c956a60778c ("siphash: add cryptographically secure PRF")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Acked-by: Ard Biesheuvel <ardb@kernel.org>
    Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f70c6281eafb3e64c967e96a37f72edb46f14da9
Author: Benjamin Poirier <bpoirier@nvidia.com>
Date:   Mon Nov 29 15:15:05 2021 +0900

    net: mpls: Fix notifications when deleting a device
    
    commit 7d4741eacdefa5f0475431645b56baf00784df1f upstream.
    
    There are various problems related to netlink notifications for mpls route
    changes in response to interfaces being deleted:
    * delete interface of only nexthop
            DELROUTE notification is missing RTA_OIF attribute
    * delete interface of non-last nexthop
            NEWROUTE notification is missing entirely
    * delete interface of last nexthop
            DELROUTE notification is missing nexthop
    
    All of these problems stem from the fact that existing routes are modified
    in-place before sending a notification. Restructure mpls_ifdown() to avoid
    changing the route in the DELROUTE cases and to create a copy in the
    NEWROUTE case.
    
    Fixes: f8efb73c97e2 ("mpls: multipath route support")
    Signed-off-by: Benjamin Poirier <bpoirier@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bbeb0325a7460ebf1e03f5e0bfc5c652fba9519f
Author: Zhou Qingyang <zhou1615@umn.edu>
Date:   Tue Nov 30 19:08:48 2021 +0800

    net: qlogic: qlcnic: Fix a NULL pointer dereference in qlcnic_83xx_add_rings()
    
    commit e2dabc4f7e7b60299c20a36d6a7b24ed9bf8e572 upstream.
    
    In qlcnic_83xx_add_rings(), the indirect function of
    ahw->hw_ops->alloc_mbx_args will be called to allocate memory for
    cmd.req.arg, and there is a dereference of it in qlcnic_83xx_add_rings(),
    which could lead to a NULL pointer dereference on failure of the
    indirect function like qlcnic_83xx_alloc_mbx_args().
    
    Fix this bug by adding a check of alloc_mbx_args(), this patch
    imitates the logic of mbx_cmd()'s failure handling.
    
    This bug was found by a static analyzer. The analysis employs
    differential checking to identify inconsistent security operations
    (e.g., checks or kfrees) between two code paths and confirms that the
    inconsistent operations are not recovered in the current function or
    the callers, so they constitute bugs.
    
    Note that, as a bug found by static analysis, it can be a false
    positive or hard to trigger. Multiple researchers have cross-reviewed
    the bug.
    
    Builds with CONFIG_QLCNIC=m show no new warnings, and our
    static analyzer no longer warns about this code.
    
    Fixes: 7f9664525f9c ("qlcnic: 83xx memory map and HW access routine")
    Signed-off-by: Zhou Qingyang <zhou1615@umn.edu>
    Link: https://lore.kernel.org/r/20211130110848.109026-1-zhou1615@umn.edu
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 49ab336231077da7bcb70ddf8e9beb7aa89680b7
Author: Randy Dunlap <rdunlap@infradead.org>
Date:   Mon Nov 29 22:39:47 2021 -0800

    natsemi: xtensa: fix section mismatch warnings
    
    commit b0f38e15979fa8851e88e8aa371367f264e7b6e9 upstream.
    
    Fix section mismatch warnings in xtsonic. The first one appears to be
    bogus and after fixing the second one, the first one is gone.
    
    WARNING: modpost: vmlinux.o(.text+0x529adc): Section mismatch in reference from the function sonic_get_stats() to the function .init.text:set_reset_devices()
    The function sonic_get_stats() references
    the function __init set_reset_devices().
    This is often because sonic_get_stats lacks a __init
    annotation or the annotation of set_reset_devices is wrong.
    
    WARNING: modpost: vmlinux.o(.text+0x529b3b): Section mismatch in reference from the function xtsonic_probe() to the function .init.text:sonic_probe1()
    The function xtsonic_probe() references
    the function __init sonic_probe1().
    This is often because xtsonic_probe lacks a __init
    annotation or the annotation of sonic_probe1 is wrong.
    
    Fixes: 74f2a5f0ef64 ("xtensa: Add support for the Sonic Ethernet device for the XT2000 board.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Cc: Finn Thain <fthain@telegraphics.com.au>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: linux-xtensa@linux-xtensa.org
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Acked-by: Max Filippov <jcmvbkbc@gmail.com>
    Link: https://lore.kernel.org/r/20211130063947.7529-1-rdunlap@infradead.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 063d2233623a921fddc9a170b2238b69dfc58f83
Author: Aaro Koskinen <aaro.koskinen@iki.fi>
Date:   Sat Nov 27 21:42:14 2021 +0200

    i2c: cbus-gpio: set atomic transfer callback
    
    commit b12764695c3fcade145890b67f82f8b139174cc7 upstream.
    
    CBUS transfers have always been atomic, but after commit 63b96983a5dd
    ("i2c: core: introduce callbacks for atomic transfers") we started to see
    warnings during e.g. poweroff as the atomic callback is not explicitly set.
    Fix that.
    
    Fixes the following WARNING seen during Nokia N810 power down:
    
    [  786.570617] reboot: Power down
    [  786.573913] ------------[ cut here ]------------
    [  786.578826] WARNING: CPU: 0 PID: 672 at drivers/i2c/i2c-core.h:40 i2c_smbus_xfer+0x100/0x110
    [  786.587799] No atomic I2C transfer handler for 'i2c-2'
    
    Fixes: 63b96983a5dd ("i2c: core: introduce callbacks for atomic transfers")
    Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f5d7bd03f888ecd4b3420add22bc51c4bb854b45
Author: Alain Volmat <alain.volmat@foss.st.com>
Date:   Mon Sep 20 17:21:31 2021 +0200

    i2c: stm32f7: stop dma transfer in case of NACK
    
    commit 31b90a95ccbbb4b628578ac17e3b3cc8eeacfe31 upstream.
    
    In case of receiving a NACK, the dma transfer should be stopped
    to avoid feeding data into the FIFO.
    Also ensure to properly return the proper error code and avoid
    waiting for the end of the dma completion in case of
    error happening during the transmission.
    
    Fixes: 7ecc8cfde553 ("i2c: i2c-stm32f7: Add DMA support")
    Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
    Reviewed-by: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 9fce2ead76f4b79154e75b2b08739ade8fb55439
Author: Alain Volmat <alain.volmat@foss.st.com>
Date:   Mon Sep 20 17:21:30 2021 +0200

    i2c: stm32f7: recover the bus on access timeout
    
    commit b933d1faf8fa30d16171bcff404e39c41b2a7c84 upstream.
    
    When getting an access timeout, ensure that the bus is in a proper
    state prior to returning the error.
    
    Fixes: aeb068c57214 ("i2c: i2c-stm32f7: add driver")
    Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
    Reviewed-by: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit bc0215cbd16282b6459eabeca91ea2e3a5eb97ca
Author: Alain Volmat <alain.volmat@foss.st.com>
Date:   Mon Sep 20 17:21:29 2021 +0200

    i2c: stm32f7: flush TX FIFO upon transfer errors
    
    commit 0c21d02ca469574d2082379db52d1a27b99eed0c upstream.
    
    While handling an error during transfer (ex: NACK), it could
    happen that the driver has already written data into TXDR
    before the transfer get stopped.
    This commit add TXDR Flush after end of transfer in case of error to
    avoid sending a wrong data on any other slave upon next transfer.
    
    Fixes: aeb068c57214 ("i2c: i2c-stm32f7: add driver")
    Signed-off-by: Alain Volmat <alain.volmat@foss.st.com>
    Reviewed-by: Pierre-Yves MORDRET <pierre-yves.mordret@foss.st.com>
    Signed-off-by: Wolfram Sang <wsa@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 742a5ae18c5fb7c4de991c902647dcda32bad175
Author: Baokun Li <libaokun1@huawei.com>
Date:   Fri Nov 26 10:03:07 2021 +0800

    sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl
    
    commit 6f48394cf1f3e8486591ad98c11cdadb8f1ef2ad upstream.
    
    Trying to remove the fsl-sata module in the PPC64 GNU/Linux
    leads to the following warning:
     ------------[ cut here ]------------
     remove_proc_entry: removing non-empty directory 'irq/69',
       leaking at least 'fsl-sata[ff0221000.sata]'
     WARNING: CPU: 3 PID: 1048 at fs/proc/generic.c:722
       .remove_proc_entry+0x20c/0x220
     IRQMASK: 0
     NIP [c00000000033826c] .remove_proc_entry+0x20c/0x220
     LR [c000000000338268] .remove_proc_entry+0x208/0x220
     Call Trace:
      .remove_proc_entry+0x208/0x220 (unreliable)
      .unregister_irq_proc+0x104/0x140
      .free_desc+0x44/0xb0
      .irq_free_descs+0x9c/0xf0
      .irq_dispose_mapping+0x64/0xa0
      .sata_fsl_remove+0x58/0xa0 [sata_fsl]
      .platform_drv_remove+0x40/0x90
      .device_release_driver_internal+0x160/0x2c0
      .driver_detach+0x64/0xd0
      .bus_remove_driver+0x70/0xf0
      .driver_unregister+0x38/0x80
      .platform_driver_unregister+0x14/0x30
      .fsl_sata_driver_exit+0x18/0xa20 [sata_fsl]
     ---[ end trace 0ea876d4076908f5 ]---
    
    The driver creates the mapping by calling irq_of_parse_and_map(),
    so it also has to dispose the mapping. But the easy way out is to
    simply use platform_get_irq() instead of irq_of_parse_map(). Also
    we should adapt return value checking and propagate error values.
    
    In this case the mapping is not managed by the device but by
    the of core, so the device has not to dispose the mapping.
    
    Fixes: faf0b2e5afe7 ("drivers/ata: add support to Freescale 3.0Gbps SATA Controller")
    Cc: stable@vger.kernel.org
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 77393806c76b6b44f1c44bd957788c8bd9152c45
Author: Baokun Li <libaokun1@huawei.com>
Date:   Fri Nov 26 10:03:06 2021 +0800

    sata_fsl: fix UAF in sata_fsl_port_stop when rmmod sata_fsl
    
    commit 6c8ad7e8cf29eb55836e7a0215f967746ab2b504 upstream.
    
    When the `rmmod sata_fsl.ko` command is executed in the PPC64 GNU/Linux,
    a bug is reported:
     ==================================================================
     BUG: Unable to handle kernel data access on read at 0x80000800805b502c
     Oops: Kernel access of bad area, sig: 11 [#1]
     NIP [c0000000000388a4] .ioread32+0x4/0x20
     LR [80000000000c6034] .sata_fsl_port_stop+0x44/0xe0 [sata_fsl]
     Call Trace:
      .free_irq+0x1c/0x4e0 (unreliable)
      .ata_host_stop+0x74/0xd0 [libata]
      .release_nodes+0x330/0x3f0
      .device_release_driver_internal+0x178/0x2c0
      .driver_detach+0x64/0xd0
      .bus_remove_driver+0x70/0xf0
      .driver_unregister+0x38/0x80
      .platform_driver_unregister+0x14/0x30
      .fsl_sata_driver_exit+0x18/0xa20 [sata_fsl]
      .__se_sys_delete_module+0x1ec/0x2d0
      .system_call_exception+0xfc/0x1f0
      system_call_common+0xf8/0x200
     ==================================================================
    
    The triggering of the BUG is shown in the following stack:
    
    driver_detach
      device_release_driver_internal
        __device_release_driver
          drv->remove(dev) --> platform_drv_remove/platform_remove
            drv->remove(dev) --> sata_fsl_remove
              iounmap(host_priv->hcr_base);                 <---- unmap
              kfree(host_priv);                             <---- free
          devres_release_all
            release_nodes
              dr->node.release(dev, dr->data) --> ata_host_stop
                ap->ops->port_stop(ap) --> sata_fsl_port_stop
                    ioread32(hcr_base + HCONTROL)           <---- UAF
                host->ops->host_stop(host)
    
    The iounmap(host_priv->hcr_base) and kfree(host_priv) functions should
    not be executed in drv->remove. These functions should be executed in
    host_stop after port_stop. Therefore, we move these functions to the
    new function sata_fsl_host_stop and bind the new function to host_stop.
    
    Fixes: faf0b2e5afe7 ("drivers/ata: add support to Freescale 3.0Gbps SATA Controller")
    Cc: stable@vger.kernel.org
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Baokun Li <libaokun1@huawei.com>
    Reviewed-by: Sergei Shtylyov <sergei.shtylyov@gmail.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03d4462ba3bc8f830d9807e3c3fde54fad06e2e2
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Dec 1 10:06:14 2021 -0800

    fget: check that the fd still exists after getting a ref to it
    
    commit 054aa8d439b9185d4f5eb9a90282d1ce74772969 upstream.
    
    Jann Horn points out that there is another possible race wrt Unix domain
    socket garbage collection, somewhat reminiscent of the one fixed in
    commit cbcf01128d0a ("af_unix: fix garbage collect vs MSG_PEEK").
    
    See the extended comment about the garbage collection requirements added
    to unix_peek_fds() by that commit for details.
    
    The race comes from how we can locklessly look up a file descriptor just
    as it is in the process of being closed, and with the right artificial
    timing (Jann added a few strategic 'mdelay(500)' calls to do that), the
    Unix domain socket garbage collector could see the reference count
    decrement of the close() happen before fget() took its reference to the
    file and the file was attached onto a new file descriptor.
    
    This is all (intentionally) correct on the 'struct file *' side, with
    RCU lookups and lockless reference counting very much part of the
    design.  Getting that reference count out of order isn't a problem per
    se.
    
    But the garbage collector can get confused by seeing this situation of
    having seen a file not having any remaining external references and then
    seeing it being attached to an fd.
    
    In commit cbcf01128d0a ("af_unix: fix garbage collect vs MSG_PEEK") the
    fix was to serialize the file descriptor install with the garbage
    collector by taking and releasing the unix_gc_lock.
    
    That's not really an option here, but since this all happens when we are
    in the process of looking up a file descriptor, we can instead simply
    just re-check that the file hasn't been closed in the meantime, and just
    re-do the lookup if we raced with a concurrent close() of the same file
    descriptor.
    
    Reported-and-tested-by: Jann Horn <jannh@google.com>
    Acked-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit a78b607e1b433927ae7ac2d727d3f9dd28197e92
Author: Niklas Schnelle <schnelle@linux.ibm.com>
Date:   Thu Nov 4 15:04:10 2021 +0100

    s390/pci: move pseudo-MMIO to prevent MIO overlap
    
    commit 52d04d408185b7aa47628d2339c28ec70074e0ae upstream.
    
    When running without MIO support, with pci=nomio or for devices which
    are not MIO-capable the zPCI subsystem generates pseudo-MMIO addresses
    to allow access to PCI BARs via MMIO based Linux APIs even though the
    platform uses function handles and BAR numbers.
    
    This is done by stashing an index into our global IOMAP array which
    contains the function handle in the 16 most significant bits of the
    addresses returned by ioremap() always setting the most significant bit.
    
    On the other hand the MIO addresses assigned by the platform for use,
    while requiring special instructions, allow PCI access with virtually
    mapped physical addresses. Now the problem is that these MIO addresses
    and our own pseudo-MMIO addresses may overlap, while functionally this
    would not be a problem by itself this overlap is detected by common code
    as both address types are added as resources in the iomem_resource tree.
    This leads to the overlapping resource claim of either the MIO capable
    or non-MIO capable devices with being rejected.
    
    Since PCI is tightly coupled to the use of the iomem_resource tree, see
    for example the code for request_mem_region(), we can't reasonably get
    rid of the overlap being detected by keeping our pseudo-MMIO addresses
    out of the iomem_resource tree.
    
    Instead let's move the range used by our own pseudo-MMIO addresses by
    starting at (1UL << 62) and only using addresses below (1UL << 63) thus
    avoiding the range currently used for MIO addresses.
    
    Fixes: c7ff0e918a7c ("s390/pci: deal with devices that have no support for MIO instructions")
    Cc: stable@vger.kernel.org # 5.3+
    Reviewed-by: Pierre Morel <pmorel@linux.ibm.com>
    Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 006edd736dc85f9aba48c6e79f3805e4bcfdb3a1
Author: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Date:   Mon Nov 29 16:02:48 2021 +0800

    cpufreq: Fix get_cpu_device() failure in add_cpu_dev_symlink()
    
    commit 2c1b5a84669d2477d8fffe9136e86a2cff591729 upstream.
    
    When I hot added a CPU, I found 'cpufreq' directory was not created
    below /sys/devices/system/cpu/cpuX/.
    
    It is because get_cpu_device() failed in add_cpu_dev_symlink().
    
    cpufreq_add_dev() is the .add_dev callback of a CPU subsys interface.
    It will be called when the CPU device registered into the system.
    The call chain is as follows:
    
      register_cpu()
      ->device_register()
       ->device_add()
        ->bus_probe_device()
         ->cpufreq_add_dev()
    
    But only after the CPU device has been registered, we can get the
    CPU device by get_cpu_device(), otherwise it will return NULL.
    
    Since we already have the CPU device in cpufreq_add_dev(), pass
    it to add_cpu_dev_symlink().
    
    I noticed that the 'kobj' of the CPU device has been added into
    the system before cpufreq_add_dev().
    
    Fixes: 2f0ba790df51 ("cpufreq: Fix creation of symbolic links to policy directories")
    Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
    Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
    Cc: All applicable <stable@vger.kernel.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 648813c26d64e005fba943cf3ed19dff19db1cc4
Author: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
Date:   Mon Nov 15 15:16:45 2021 +0200

    ipmi: Move remove_work to dedicated workqueue
    
    commit 1d49eb91e86e8c1c1614c72e3e958b6b7e2472a9 upstream.
    
    Currently when removing an ipmi_user the removal is deferred as a work on
    the system's workqueue. Although this guarantees the free operation will
    occur in non atomic context, it can race with the ipmi_msghandler module
    removal (see [1]) . In case a remove_user work is scheduled for removal
    and shortly after ipmi_msghandler module is removed we can end up in a
    situation where the module is removed fist and when the work is executed
    the system crashes with :
    BUG: unable to handle page fault for address: ffffffffc05c3450
    PF: supervisor instruction fetch in kernel mode
    PF: error_code(0x0010) - not-present page
    because the pages of the module are gone. In cleanup_ipmi() there is no
    easy way to detect if there are any pending works to flush them before
    removing the module. This patch creates a separate workqueue and schedules
    the remove_work works on it. When removing the module the workqueue is
    drained when destroyed to avoid the race.
    
    [1] https://bugs.launchpad.net/bugs/1950666
    
    Cc: stable@vger.kernel.org # 5.1
    Fixes: 3b9a907223d7 (ipmi: fix sleep-in-atomic in free_user at cleanup SRCU user->release_barrier)
    Signed-off-by: Ioanna Alifieraki <ioanna-maria.alifieraki@canonical.com>
    Message-Id: <20211115131645.25116-1-ioanna-maria.alifieraki@canonical.com>
    Signed-off-by: Corey Minyard <cminyard@mvista.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 3f8f7eef8c3256b3271ed2534e3794f388d8a24e
Author: Stanislaw Gruszka <stf_xl@wp.pl>
Date:   Thu Nov 11 15:10:03 2021 +0100

    rt2x00: do not mark device gone on EPROTO errors during start
    
    commit ed53ae75693096f1c10b4561edd31a07b631bd72 upstream.
    
    As reported by Exuvo is possible that we have lot's of EPROTO errors
    during device start i.e. firmware load. But after that device works
    correctly. Hence marking device gone by few EPROTO errors done by
    commit e383c70474db ("rt2x00: check number of EPROTO errors") caused
    regression - Exuvo device stop working after kernel update. To fix
    disable the check during device start.
    
    Link: https://lore.kernel.org/linux-wireless/bff7d309-a816-6a75-51b6-5928ef4f7a8c@exuvo.se/
    Reported-and-tested-by: Exuvo <exuvo@exuvo.se>
    Fixes: e383c70474db ("rt2x00: check number of EPROTO errors")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20211111141003.GA134627@wp.pl
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit c2e2ccaac3d9f31e711ac141f95fecf352cff4c2
Author: Masami Hiramatsu <mhiramat@kernel.org>
Date:   Wed Dec 1 23:45:50 2021 +0900

    kprobes: Limit max data_size of the kretprobe instances
    
    commit 6bbfa44116689469267f1a6e3d233b52114139d2 upstream.
    
    The 'kprobe::data_size' is unsigned, thus it can not be negative.  But if
    user sets it enough big number (e.g. (size_t)-8), the result of 'data_size
    + sizeof(struct kretprobe_instance)' becomes smaller than sizeof(struct
    kretprobe_instance) or zero. In result, the kretprobe_instance are
    allocated without enough memory, and kretprobe accesses outside of
    allocated memory.
    
    To avoid this issue, introduce a max limitation of the
    kretprobe::data_size. 4KB per instance should be OK.
    
    Link: https://lkml.kernel.org/r/163836995040.432120.10322772773821182925.stgit@devnote2
    
    Cc: stable@vger.kernel.org
    Fixes: f47cd9b553aa ("kprobes: kretprobe user entry-handler")
    Reported-by: zhangyue <zhangyue1@kylinos.cn>
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 03ee5e8c63c3d0d5150699b570b6dcf74e2759b3
Author: Stephen Suryaputra <ssuryaextr@gmail.com>
Date:   Tue Nov 30 11:26:37 2021 -0500

    vrf: Reset IPCB/IP6CB when processing outbound pkts in vrf dev xmit
    
    commit ee201011c1e1563c114a55c86eb164b236f18e84 upstream.
    
    IPCB/IP6CB need to be initialized when processing outbound v4 or v6 pkts
    in the codepath of vrf device xmit function so that leftover garbage
    doesn't cause futher code that uses the CB to incorrectly process the
    pkt.
    
    One occasion of the issue might occur when MPLS route uses the vrf
    device as the outgoing device such as when the route is added using "ip
    -f mpls route add <label> dev <vrf>" command.
    
    The problems seems to exist since day one. Hence I put the day one
    commits on the Fixes tags.
    
    Fixes: 193125dbd8eb ("net: Introduce VRF device driver")
    Fixes: 35402e313663 ("net: Add IPv6 support to VRF device")
    Cc: stable@vger.kernel.org
    Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Link: https://lore.kernel.org/r/20211130162637.3249-1-ssuryaextr@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit f82013d1d68f45f2563e6747b04971e33e709505
Author: Wen Gu <guwen@linux.alibaba.com>
Date:   Mon Nov 22 20:32:53 2021 +0800

    net/smc: Avoid warning of possible recursive locking
    
    [ Upstream commit 7a61432dc81375be06b02f0061247d3efbdfce3a ]
    
    Possible recursive locking is detected by lockdep when SMC
    falls back to TCP. The corresponding warnings are as follows:
    
     ============================================
     WARNING: possible recursive locking detected
     5.16.0-rc1+ #18 Tainted: G            E
     --------------------------------------------
     wrk/1391 is trying to acquire lock:
     ffff975246c8e7d8 (&ei->socket.wq.wait){..-.}-{3:3}, at: smc_switch_to_fallback+0x109/0x250 [smc]
    
     but task is already holding lock:
     ffff975246c8f918 (&ei->socket.wq.wait){..-.}-{3:3}, at: smc_switch_to_fallback+0xfe/0x250 [smc]
    
     other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(&ei->socket.wq.wait);
       lock(&ei->socket.wq.wait);
    
      *** DEADLOCK ***
    
      May be due to missing lock nesting notation
    
     2 locks held by wrk/1391:
      #0: ffff975246040130 (sk_lock-AF_SMC){+.+.}-{0:0}, at: smc_connect+0x43/0x150 [smc]
      #1: ffff975246c8f918 (&ei->socket.wq.wait){..-.}-{3:3}, at: smc_switch_to_fallback+0xfe/0x250 [smc]
    
     stack backtrace:
     Call Trace:
      <TASK>
      dump_stack_lvl+0x56/0x7b
      __lock_acquire+0x951/0x11f0
      lock_acquire+0x27a/0x320
      ? smc_switch_to_fallback+0x109/0x250 [smc]
      ? smc_switch_to_fallback+0xfe/0x250 [smc]
      _raw_spin_lock_irq+0x3b/0x80
      ? smc_switch_to_fallback+0x109/0x250 [smc]
      smc_switch_to_fallback+0x109/0x250 [smc]
      smc_connect_fallback+0xe/0x30 [smc]
      __smc_connect+0xcf/0x1090 [smc]
      ? mark_held_locks+0x61/0x80
      ? __local_bh_enable_ip+0x77/0xe0
      ? lockdep_hardirqs_on+0xbf/0x130
      ? smc_connect+0x12a/0x150 [smc]
      smc_connect+0x12a/0x150 [smc]
      __sys_connect+0x8a/0xc0
      ? syscall_enter_from_user_mode+0x20/0x70
      __x64_sys_connect+0x16/0x20
      do_syscall_64+0x34/0x90
      entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    The nested locking in smc_switch_to_fallback() is considered to
    possibly cause a deadlock because smc_wait->lock and clc_wait->lock
    are the same type of lock. But actually it is safe so far since
    there is no other place trying to obtain smc_wait->lock when
    clc_wait->lock is held. So the patch replaces spin_lock() with
    spin_lock_nested() to avoid false report by lockdep.
    
    Link: https://lkml.org/lkml/2021/11/19/962
    Fixes: 2153bd1e3d3d ("Transfer remaining wait queue entries during fallback")
    Reported-by: syzbot+e979d3597f48262cb4ee@syzkaller.appspotmail.com
    Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
    Acked-by: Tony Lu <tonylu@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit df5990db088d4c7fea9a2f9b8195a7859e1768c4
Author: Ian Rogers <irogers@google.com>
Date:   Wed Nov 17 23:38:04 2021 -0800

    perf report: Fix memory leaks around perf_tip()
    
    [ Upstream commit d9fc706108c15f8bc2d4ccccf8e50f74830fabd9 ]
    
    perf_tip() may allocate memory or use a literal, this means memory
    wasn't freed if allocated. Change the API so that literals aren't used.
    
    At the same time add missing frees for system_path. These issues were
    spotted using leak sanitizer.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lore.kernel.org/lkml/20211118073804.2149974-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit b380d09e44e8479e71e3ae8446b515a5b3166244
Author: Ian Rogers <irogers@google.com>
Date:   Wed Nov 17 23:12:47 2021 -0800

    perf hist: Fix memory leak of a perf_hpp_fmt
    
    [ Upstream commit 0ca1f534a776cc7d42f2c33da4732b74ec2790cd ]
    
    perf_hpp__column_unregister() removes an entry from a list but doesn't
    free the memory causing a memory leak spotted by leak sanitizer.
    
    Add the free while at the same time reducing the scope of the function
    to static.
    
    Signed-off-by: Ian Rogers <irogers@google.com>
    Reviewed-by: Kajol Jain <kjain@linux.ibm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lore.kernel.org/lkml/20211118071247.2140392-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 57247f7035393c12a5819c589d52b6ee3edde8aa
Author: Teng Qi <starmiku1207184332@gmail.com>
Date:   Thu Nov 18 15:01:18 2021 +0800

    net: ethernet: dec: tulip: de4x5: fix possible array overflows in type3_infoblock()
    
    [ Upstream commit 0fa68da72c3be09e06dd833258ee89c33374195f ]
    
    The definition of macro MOTO_SROM_BUG is:
      #define MOTO_SROM_BUG    (lp->active == 8 && (get_unaligned_le32(
      dev->dev_addr) & 0x00ffffff) == 0x3e0008)
    
    and the if statement
      if (MOTO_SROM_BUG) lp->active = 0;
    
    using this macro indicates lp->active could be 8. If lp->active is 8 and
    the second comparison of this macro is false. lp->active will remain 8 in:
      lp->phy[lp->active].gep = (*p ? p : NULL); p += (2 * (*p) + 1);
      lp->phy[lp->active].rst = (*p ? p : NULL); p += (2 * (*p) + 1);
      lp->phy[lp->active].mc  = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].ana = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].fdx = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].ttm = get_unaligned_le16(p); p += 2;
      lp->phy[lp->active].mci = *p;
    
    However, the length of array lp->phy is 8, so array overflows can occur.
    To fix these possible array overflows, we first check lp->active and then
    return -EINVAL if it is greater or equal to ARRAY_SIZE(lp->phy) (i.e. 8).
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Teng Qi <starmiku1207184332@gmail.com>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 77ff166909458646e66450e42909e0adacc99049
Author: zhangyue <zhangyue1@kylinos.cn>
Date:   Thu Nov 18 13:46:32 2021 +0800

    net: tulip: de4x5: fix the problem that the array 'lp->phy[8]' may be out of bound
    
    [ Upstream commit 61217be886b5f7402843677e4be7e7e83de9cb41 ]
    
    In line 5001, if all id in the array 'lp->phy[8]' is not 0, when the
    'for' end, the 'k' is 8.
    
    At this time, the array 'lp->phy[8]' may be out of bound.
    
    Signed-off-by: zhangyue <zhangyue1@kylinos.cn>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 99bb25cb6753beaf2c2bc37927c2ecc0ceff3f6d
Author: Teng Qi <starmiku1207184332@gmail.com>
Date:   Wed Nov 17 11:44:53 2021 +0800

    ethernet: hisilicon: hns: hns_dsaf_misc: fix a possible array overflow in hns_dsaf_ge_srst_by_port()
    
    [ Upstream commit a66998e0fbf213d47d02813b9679426129d0d114 ]
    
    The if statement:
      if (port >= DSAF_GE_NUM)
            return;
    
    limits the value of port less than DSAF_GE_NUM (i.e., 8).
    However, if the value of port is 6 or 7, an array overflow could occur:
      port_rst_off = dsaf_dev->mac_cb[port]->port_rst_off;
    
    because the length of dsaf_dev->mac_cb is DSAF_MAX_PORT_NUM (i.e., 6).
    
    To fix this possible array overflow, we first check port and if it is
    greater than or equal to DSAF_MAX_PORT_NUM, the function returns.
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Teng Qi <starmiku1207184332@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 0f89c59e75ac34381baa01e3356d18c844955a72
Author: Mario Limonciello <mario.limonciello@amd.com>
Date:   Fri Nov 12 14:15:38 2021 -0600

    ata: ahci: Add Green Sardine vendor ID as board_ahci_mobile
    
    [ Upstream commit 1527f69204fe35f341cb599f1cb01bd02daf4374 ]
    
    AMD requires that the SATA controller be configured for devsleep in order
    for S0i3 entry to work properly.
    
    commit b1a9585cc396 ("ata: ahci: Enable DEVSLP by default on x86 with
    SLP_S0") sets up a kernel policy to enable devsleep on Intel mobile
    platforms that are using s0ix.  Add the PCI ID for the SATA controller in
    Green Sardine platforms to extend this policy by default for AMD based
    systems using s0i3 as well.
    
    Cc: Nehal-bakulchandra Shah <Nehal-bakulchandra.Shah@amd.com>
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214091
    Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
    Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 36c8f686956dbc75f526bcbd8ea56b272a9b40fd
Author: Mike Christie <michael.christie@oracle.com>
Date:   Fri Nov 5 17:10:47 2021 -0500

    scsi: iscsi: Unblock session then wake up error handler
    
    [ Upstream commit a0c2f8b6709a9a4af175497ca65f93804f57b248 ]
    
    We can race where iscsi_session_recovery_timedout() has woken up the error
    handler thread and it's now setting the devices to offline, and
    session_recovery_timedout()'s call to scsi_target_unblock() is also trying
    to set the device's state to transport-offline. We can then get a mix of
    states.
    
    For the case where we can't relogin we want the devices to be in
    transport-offline so when we have repaired the connection
    __iscsi_unblock_session() can set the state back to running.
    
    Set the device state then call into libiscsi to wake up the error handler.
    
    Link: https://lore.kernel.org/r/20211105221048.6541-2-michael.christie@oracle.com
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit dbbc8aeaf7a148af1ca2711295dc155c95f63c45
Author: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
Date:   Wed Nov 3 01:30:40 2021 +0530

    thermal: core: Reset previous low and high trip during thermal zone init
    
    [ Upstream commit 99b63316c39988039965693f5f43d8b4ccb1c86c ]
    
    During the suspend is in process, thermal_zone_device_update bails out
    thermal zone re-evaluation for any sensor trip violation without
    setting next valid trip to that sensor. It assumes during resume
    it will re-evaluate same thermal zone and update trip. But when it is
    in suspend temperature goes down and on resume path while updating
    thermal zone if temperature is less than previously violated trip,
    thermal zone set trip function evaluates the same previous high and
    previous low trip as new high and low trip. Since there is no change
    in high/low trip, it bails out from thermal zone set trip API without
    setting any trip. It leads to a case where sensor high trip or low
    trip is disabled forever even though thermal zone has a valid high
    or low trip.
    
    During thermal zone device init, reset thermal zone previous high
    and low trip. It resolves above mentioned scenario.
    
    Signed-off-by: Manaf Meethalavalappu Pallikunhi <manafm@codeaurora.org>
    Reviewed-by: Thara Gopinath <thara.gopinath@linaro.org>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit ebc8aed3b9eb4332863b4c0a3861eb02db9ed199
Author: Wang Yugui <wangyugui@e16-tech.com>
Date:   Thu Oct 28 06:32:54 2021 +0800

    btrfs: check-integrity: fix a warning on write caching disabled disk
    
    [ Upstream commit a91cf0ffbc244792e0b3ecf7d0fddb2f344b461f ]
    
    When a disk has write caching disabled, we skip submission of a bio with
    flush and sync requests before writing the superblock, since it's not
    needed. However when the integrity checker is enabled, this results in
    reports that there are metadata blocks referred by a superblock that
    were not properly flushed. So don't skip the bio submission only when
    the integrity checker is enabled for the sake of simplicity, since this
    is a debug tool and not meant for use in non-debug builds.
    
    fstests/btrfs/220 trigger a check-integrity warning like the following
    when CONFIG_BTRFS_FS_CHECK_INTEGRITY=y and the disk with WCE=0.
    
      btrfs: attempt to write superblock which references block M @5242880 (sdb2/5242880/0) which is not flushed out of disk's write cache (block flush_gen=1, dev->flush_gen=0)!
      ------------[ cut here ]------------
      WARNING: CPU: 28 PID: 843680 at fs/btrfs/check-integrity.c:2196 btrfsic_process_written_superblock+0x22a/0x2a0 [btrfs]
      CPU: 28 PID: 843680 Comm: umount Not tainted 5.15.0-0.rc5.39.el8.x86_64 #1
      Hardware name: Dell Inc. Precision T7610/0NK70N, BIOS A18 09/11/2019
      RIP: 0010:btrfsic_process_written_superblock+0x22a/0x2a0 [btrfs]
      RSP: 0018:ffffb642afb47940 EFLAGS: 00010246
      RAX: 0000000000000000 RBX: 0000000000000002 RCX: 0000000000000000
      RDX: 00000000ffffffff RSI: ffff8b722fc97d00 RDI: ffff8b722fc97d00
      RBP: ffff8b5601c00000 R08: 0000000000000000 R09: c0000000ffff7fff
      R10: 0000000000000001 R11: ffffb642afb476f8 R12: ffffffffffffffff
      R13: ffffb642afb47974 R14: ffff8b5499254c00 R15: 0000000000000003
      FS:  00007f00a06d4080(0000) GS:ffff8b722fc80000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007fff5cff5ff0 CR3: 00000001c0c2a006 CR4: 00000000001706e0
      Call Trace:
       btrfsic_process_written_block+0x2f7/0x850 [btrfs]
       __btrfsic_submit_bio.part.19+0x310/0x330 [btrfs]
       ? bio_associate_blkg_from_css+0xa4/0x2c0
       btrfsic_submit_bio+0x18/0x30 [btrfs]
       write_dev_supers+0x81/0x2a0 [btrfs]
       ? find_get_pages_range_tag+0x219/0x280
       ? pagevec_lookup_range_tag+0x24/0x30
       ? __filemap_fdatawait_range+0x6d/0xf0
       ? __raw_callee_save___native_queued_spin_unlock+0x11/0x1e
       ? find_first_extent_bit+0x9b/0x160 [btrfs]
       ? __raw_callee_save___native_queued_spin_unlock+0x11/0x1e
       write_all_supers+0x1b3/0xa70 [btrfs]
       ? __raw_callee_save___native_queued_spin_unlock+0x11/0x1e
       btrfs_commit_transaction+0x59d/0xac0 [btrfs]
       close_ctree+0x11d/0x339 [btrfs]
       generic_shutdown_super+0x71/0x110
       kill_anon_super+0x14/0x30
       btrfs_kill_super+0x12/0x20 [btrfs]
       deactivate_locked_super+0x31/0x70
       cleanup_mnt+0xb8/0x140
       task_work_run+0x6d/0xb0
       exit_to_user_mode_prepare+0x1f0/0x200
       syscall_exit_to_user_mode+0x12/0x30
       do_syscall_64+0x46/0x80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
      RIP: 0033:0x7f009f711dfb
      RSP: 002b:00007fff5cff7928 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
      RAX: 0000000000000000 RBX: 000055b68c6c9970 RCX: 00007f009f711dfb
      RDX: 0000000000000001 RSI: 0000000000000000 RDI: 000055b68c6c9b50
      RBP: 0000000000000000 R08: 000055b68c6ca900 R09: 00007f009f795580
      R10: 0000000000000000 R11: 0000000000000246 R12: 000055b68c6c9b50
      R13: 00007f00a04bf184 R14: 0000000000000000 R15: 00000000ffffffff
      ---[ end trace 2c4b82abcef9eec4 ]---
      S-65536(sdb2/65536/1)
       -->
      M-1064960(sdb2/1064960/1)
    
    Reviewed-by: Filipe Manana <fdmanana@gmail.com>
    Signed-off-by: Wang Yugui <wangyugui@e16-tech.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5db28ea9f1a4a8dff614e93dddfa8f2bbc26e00d
Author: Vasily Gorbik <gor@linux.ibm.com>
Date:   Thu Oct 14 13:38:17 2021 +0200

    s390/setup: avoid using memblock_enforce_memory_limit
    
    [ Upstream commit 5dbc4cb4667457b0c53bcd7bff11500b3c362975 ]
    
    There is a difference in how architectures treat "mem=" option. For some
    that is an amount of online memory, for s390 and x86 this is the limiting
    max address. Some memblock api like memblock_enforce_memory_limit()
    take limit argument and explicitly treat it as the size of online memory,
    and use __find_max_addr to convert it to an actual max address. Current
    s390 usage:
    
    memblock_enforce_memory_limit(memblock_end_of_DRAM());
    
    yields different results depending on presence of memory holes (offline
    memory blocks in between online memory). If there are no memory holes
    limit == max_addr in memblock_enforce_memory_limit() and it does trim
    online memory and reserved memory regions. With memory holes present it
    actually does nothing.
    
    Since we already use memblock_remove() explicitly to trim online memory
    regions to potential limit (think mem=, kdump, addressing limits, etc.)
    drop the usage of memblock_enforce_memory_limit() altogether. Trimming
    reserved regions should not be required, since we now use
    memblock_set_current_limit() to limit allocations and any explicit memory
    reservations above the limit is an actual problem we should not hide.
    
    Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 5d93fc221c5df7b141b6402f78038bbc482c9cd6
Author: Slark Xiao <slark_xiao@163.com>
Date:   Mon Nov 8 14:06:48 2021 +0800

    platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep
    
    [ Upstream commit 39f53292181081d35174a581a98441de5da22bc9 ]
    
    When WWAN device wake from S3 deep, under thinkpad platform,
    WWAN would be disabled. This disable status could be checked
    by command 'nmcli r wwan' or 'rfkill list'.
    
    Issue analysis as below:
      When host resume from S3 deep, thinkpad_acpi driver would
    call hotkey_resume() function. Finnaly, it will use
    wan_get_status to check the current status of WWAN device.
    During this resume progress, wan_get_status would always
    return off even WWAN boot up completely.
      In patch V2, Hans said 'sw_state should be unchanged
    after a suspend/resume. It's better to drop the
    tpacpi_rfk_update_swstate call all together from the
    resume path'.
      And it's confimed by Lenovo that GWAN is no longer
     available from WHL generation because the design does not
     match with current pin control.
    
    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    Link: https://lore.kernel.org/r/20211108060648.8212-1-slark_xiao@163.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 96274948989ceb889f96017060fb1161d8cf40c8
Author: liuguoqiang <liuguoqiang@uniontech.com>
Date:   Mon Nov 15 16:14:48 2021 +0800

    net: return correct error code
    
    [ Upstream commit 6def480181f15f6d9ec812bca8cbc62451ba314c ]
    
    When kmemdup called failed and register_net_sysctl return NULL, should
    return ENOMEM instead of ENOBUFS
    
    Signed-off-by: liuguoqiang <liuguoqiang@uniontech.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 89d15a2e40d7edaaa16da2763b349dd7b056cc09
Author: Zekun Shen <bruceshenzk@gmail.com>
Date:   Sat Nov 13 22:24:40 2021 -0500

    atlantic: Fix OOB read and write in hw_atl_utils_fw_rpc_wait
    
    [ Upstream commit b922f622592af76b57cbc566eaeccda0b31a3496 ]
    
    This bug report shows up when running our research tools. The
    reports is SOOB read, but it seems SOOB write is also possible
    a few lines below.
    
    In details, fw.len and sw.len are inputs coming from io. A len
    over the size of self->rpc triggers SOOB. The patch fixes the
    bugs by adding sanity checks.
    
    The bugs are triggerable with compromised/malfunctioning devices.
    They are potentially exploitable given they first leak up to
    0xffff bytes and able to overwrite the region later.
    
    The patch is tested with QEMU emulater.
    This is NOT tested with a real device.
    
    Attached is the log we found by fuzzing.
    
    BUG: KASAN: slab-out-of-bounds in
            hw_atl_utils_fw_upload_dwords+0x393/0x3c0 [atlantic]
    Read of size 4 at addr ffff888016260b08 by task modprobe/213
    CPU: 0 PID: 213 Comm: modprobe Not tainted 5.6.0 #1
    Call Trace:
     dump_stack+0x76/0xa0
     print_address_description.constprop.0+0x16/0x200
     ? hw_atl_utils_fw_upload_dwords+0x393/0x3c0 [atlantic]
     ? hw_atl_utils_fw_upload_dwords+0x393/0x3c0 [atlantic]
     __kasan_report.cold+0x37/0x7c
     ? aq_hw_read_reg_bit+0x60/0x70 [atlantic]
     ? hw_atl_utils_fw_upload_dwords+0x393/0x3c0 [atlantic]
     kasan_report+0xe/0x20
     hw_atl_utils_fw_upload_dwords+0x393/0x3c0 [atlantic]
     hw_atl_utils_fw_rpc_call+0x95/0x130 [atlantic]
     hw_atl_utils_fw_rpc_wait+0x176/0x210 [atlantic]
     hw_atl_utils_mpi_create+0x229/0x2e0 [atlantic]
     ? hw_atl_utils_fw_rpc_wait+0x210/0x210 [atlantic]
     ? hw_atl_utils_initfw+0x9f/0x1c8 [atlantic]
     hw_atl_utils_initfw+0x12a/0x1c8 [atlantic]
     aq_nic_ndev_register+0x88/0x650 [atlantic]
     ? aq_nic_ndev_init+0x235/0x3c0 [atlantic]
     aq_pci_probe+0x731/0x9b0 [atlantic]
     ? aq_pci_func_init+0xc0/0xc0 [atlantic]
     local_pci_probe+0xd3/0x160
     pci_device_probe+0x23f/0x3e0
    
    Reported-by: Brendan Dolan-Gavitt <brendandg@nyu.edu>
    Signed-off-by: Zekun Shen <bruceshenzk@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit d6e981ec9491be5ec46d838b1151e7edefe607f5
Author: Wen Gu <guwen@linux.alibaba.com>
Date:   Sat Nov 13 15:33:35 2021 +0800

    net/smc: Transfer remaining wait queue entries during fallback
    
    [ Upstream commit 2153bd1e3d3dbf6a3403572084ef6ed31c53c5f0 ]
    
    The SMC fallback is incomplete currently. There may be some
    wait queue entries remaining in smc socket->wq, which should
    be removed to clcsocket->wq during the fallback.
    
    For example, in nginx/wrk benchmark, this issue causes an
    all-zeros test result:
    
    server: nginx -g 'daemon off;'
    client: smc_run wrk -c 1 -t 1 -d 5 http://11.200.15.93/index.html
    
      Running 5s test @ http://11.200.15.93/index.html
         1 threads and 1 connections
         Thread Stats   Avg      Stdev     Max   ± Stdev
            Latency     0.00us    0.00us   0.00us    -nan%
            Req/Sec     0.00      0.00     0.00      -nan%
            0 requests in 5.00s, 0.00B read
         Requests/sec:      0.00
         Transfer/sec:       0.00B
    
    The reason for this all-zeros result is that when wrk used SMC
    to replace TCP, it added an eppoll_entry into smc socket->wq
    and expected to be notified if epoll events like EPOLL_IN/
    EPOLL_OUT occurred on the smc socket.
    
    However, once a fallback occurred, wrk switches to use clcsocket.
    Now it is clcsocket->wq instead of smc socket->wq which will
    be woken up. The eppoll_entry remaining in smc socket->wq does
    not work anymore and wrk stops the test.
    
    This patch fixes this issue by removing remaining wait queue
    entries from smc socket->wq to clcsocket->wq during the fallback.
    
    Link: https://www.spinics.net/lists/netdev/msg779769.html
    Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
    Reviewed-by: Tony Lu <tonylu@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit a1671b224bc0baed139a39f4ff5f176270912215
Author: Xing Song <xing.song@mediatek.com>
Date:   Mon Nov 1 10:46:57 2021 +0800

    mac80211: do not access the IV when it was stripped
    
    [ Upstream commit 77dfc2bc0bb4b8376ecd7a430f27a4a8fff6a5a0 ]
    
    ieee80211_get_keyid() will return false value if IV has been stripped,
    such as return 0 for IP/ARP frames due to LLC header, and return -EINVAL
    for disassociation frames due to its length... etc. Don't try to access
    it if it's not present.
    
    Signed-off-by: Xing Song <xing.song@mediatek.com>
    Link: https://lore.kernel.org/r/20211101024657.143026-1-xing.song@mediatek.com
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 3200cf7b9b7e3aa76b8bee90596f9450c58950ff
Author: Julian Braha <julianbraha@gmail.com>
Date:   Mon Nov 8 22:23:51 2021 -0500

    drm/sun4i: fix unmet dependency on RESET_CONTROLLER for PHY_SUN6I_MIPI_DPHY
    
    [ Upstream commit bb162bb2b4394108c8f055d1b115735331205e28 ]
    
    When PHY_SUN6I_MIPI_DPHY is selected, and RESET_CONTROLLER
    is not selected, Kbuild gives the following warning:
    
    WARNING: unmet direct dependencies detected for PHY_SUN6I_MIPI_DPHY
      Depends on [n]: (ARCH_SUNXI [=n] || COMPILE_TEST [=y]) && HAS_IOMEM [=y] && COMMON_CLK [=y] && RESET_CONTROLLER [=n]
      Selected by [y]:
      - DRM_SUN6I_DSI [=y] && HAS_IOMEM [=y] && DRM_SUN4I [=y]
    
    This is because DRM_SUN6I_DSI selects PHY_SUN6I_MIPI_DPHY
    without selecting or depending on RESET_CONTROLLER, despite
    PHY_SUN6I_MIPI_DPHY depending on RESET_CONTROLLER.
    
    These unmet dependency bugs were detected by Kismet,
    a static analysis tool for Kconfig. Please advise if this
    is not the appropriate solution.
    
    v2:
    Fixed indentation to match the rest of the file.
    
    Signed-off-by: Julian Braha <julianbraha@gmail.com>
    Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211109032351.43322-1-julianbraha@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit 7ef990365059ff4abda97b63c130164eef4b1e86
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Sat Nov 6 00:18:56 2021 +0100

    gfs2: Fix length of holes reported at end-of-file
    
    [ Upstream commit f3506eee81d1f700d9ee2d2f4a88fddb669ec032 ]
    
    Fix the length of holes reported at the end of a file: the length is
    relative to the beginning of the extent, not the seek position which is
    rounded down to the filesystem block size.
    
    This bug went unnoticed for some time, but is now caught by the
    following assertion in iomap_iter_done():
    
      WARN_ON_ONCE(iter->iomap.offset + iter->iomap.length <= iter->pos)
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>

commit fe915dbd0f83364c8f58115d8a360324a266c73e
Author: Zhang Changzhong <zhangchangzhong@huawei.com>
Date:   Thu Oct 28 22:38:27 2021 +0800

    can: j1939: j1939_tp_cmd_recv(): check the dst address of TP.CM_BAM
    
    commit 164051a6ab5445bd97f719f50b16db8b32174269 upstream.
    
    The TP.CM_BAM message must be sent to the global address [1], so add a
    check to drop TP.CM_BAM sent to a non-global address.
    
    Without this patch, the receiver will treat the following packets as
    normal RTS/CTS transport:
    18EC0102#20090002FF002301
    18EB0102#0100000000000000
    18EB0102#020000FFFFFFFFFF
    
    [1] SAE-J1939-82 2015 A.3.3 Row 1.
    
    Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol")
    Link: https://lore.kernel.org/all/1635431907-15617-4-git-send-email-zhangchangzhong@huawei.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Zhang Changzhong <zhangchangzhong@huawei.com>
    Acked-by: Oleksij Rempel <o.rempel@pengutronix.de>
    Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit fb158a26544c2118b877e57cf58eea5ba588fc23
Author: Russell King <rmk+kernel@armlinux.org.uk>
Date:   Thu Feb 27 12:08:58 2020 +0000

    arm64: dts: mcbin: support 2W SFP modules
    
    commit 05abc6a5dec2a8c123a50235ecd1ad8d75ffa7b4 upstream.
    
    Allow the SFP cages to be used with 2W SFP modules.
    
    Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
    Cc: Christian Lamparter <chunkeey@gmail.com>
    Cc: 照山周一郎 <teruyama@springboard-inc.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit 39b3b131d10dc1a5a633c0c7ee6664e45921a192
Author: Geert Uytterhoeven <geert+renesas@glider.be>
Date:   Wed Feb 5 20:46:49 2020 +0100

    of: clk: Make <linux/of_clk.h> self-contained
    
    commit 5df867145f8adad9e5cdf9d67db1fbc0f71351e9 upstream.
    
    Depending on include order:
    
        include/linux/of_clk.h:11:45: warning: ‘struct device_node’ declared inside parameter list will not be visible outside of this definition or declaration
         unsigned int of_clk_get_parent_count(struct device_node *np);
                                                     ^~~~~~~~~~~
        include/linux/of_clk.h:12:43: warning: ‘struct device_node’ declared inside parameter list will not be visible outside of this definition or declaration
         const char *of_clk_get_parent_name(struct device_node *np, int index);
                                                   ^~~~~~~~~~~
        include/linux/of_clk.h:13:31: warning: ‘struct of_device_id’ declared inside parameter list will not be visible outside of this definition or declaration
         void of_clk_init(const struct of_device_id *matches);
                                       ^~~~~~~~~~~~
    
    Fix this by adding forward declarations for struct device_node and
    struct of_device_id.
    
    Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Link: https://lkml.kernel.org/r/20200205194649.31309-1-geert+renesas@glider.be
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

commit aad716bd144a7896b73c563edd730c7c3dd905d3
Author: Benjamin Coddington <bcodding@redhat.com>
Date:   Tue Nov 16 10:48:13 2021 -0500

    NFSv42: Fix pagecache invalidation after COPY/CLONE
    
    commit 3f015d89a47cd8855cd92f71fff770095bd885a1 upstream.
    
    The mechanism in use to allow the client to see the results of COPY/CLONE
    is to drop those pages from the pagecache.  This forces the client to read
    those pages once more from the server.  However, truncate_pagecache_range()
    zeros out partial pages instead of dropping them.  Let us instead use
    invalidate_inode_pages2_range() with full-page offsets to ensure the client
    properly sees the results of COPY/CLONE operations.
    
    Cc: <stable@vger.kernel.org> # v4.7+
    Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation")
    Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>