Skip to contentSkip to conversation

Linux 5.17.15

DISCUSSION Greg Kroah-Hartman 1 participant 2 messages Jun 14, 2022 Stable branch

lore
Share & tools
lore

Greg Kroah-Hartman

author maintainer
#0 lore raw

---------------------------------------
NOTE: This is the LAST 5.17.y kernel release. This kernel branch is now end-of-life. Please move to 5.18.y at this point in time, no more new updates will happen on this kernel branch at all.
---------------------------------------

I'm announcing the release of the 5.17.15 kernel.

All users of the 5.17 kernel series must upgrade.

The updated 5.17.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.17.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary

thanks,

greg k-h

------------

 Documentation/ABI/testing/sysfs-ata                               |   11 
 Documentation/devicetree/bindings/regulator/mt6315-regulator.yaml |    4 
 Documentation/devicetree/bindings/remoteproc/mtk,scp.yaml         |   44 +
 Documentation/tools/rtla/Makefile                                 |   14 
 Makefile                                                          |    2 
 arch/arm/boot/dts/aspeed-ast2600-evb.dts                          |    4 
 arch/arm/mach-ep93xx/clock.c                                      |   10 
 arch/arm64/net/bpf_jit_comp.c                                     |    1 
 arch/m68k/Kconfig.machine                                         |    1 
 arch/m68k/include/asm/pgtable_no.h                                |    3 
 arch/m68k/kernel/setup_mm.c                                       |    7 
 arch/m68k/kernel/setup_no.c                                       |    1 
 arch/m68k/kernel/time.c                                           |    9 
 arch/mips/kernel/mips-cpc.c                                       |    1 
 arch/powerpc/Kconfig                                              |    2 
 arch/powerpc/include/asm/thread_info.h                            |   10 
 arch/powerpc/kernel/ptrace/ptrace-fpu.c                           |   20 
 arch/powerpc/kernel/ptrace/ptrace.c                               |    3 
 arch/riscv/kernel/efi.c                                           |    2 
 arch/riscv/kernel/machine_kexec.c                                 |    4 
 arch/s390/crypto/aes_s390.c                                       |    4 
 arch/s390/kernel/entry.S                                          |    6 
 arch/s390/mm/gmap.c                                               |   14 
 arch/um/drivers/chan_kern.c                                       |   10 
 arch/um/drivers/line.c                                            |   22 
 arch/um/drivers/line.h                                            |    4 
 arch/um/drivers/ssl.c                                             |    2 
 arch/um/drivers/stdio_console.c                                   |    2 
 arch/um/include/asm/irq.h                                         |   22 
 arch/x86/include/asm/cpufeature.h                                 |    2 
 arch/x86/include/asm/uaccess.h                                    |    2 
 block/bio.c                                                       |    9 
 block/blk-core.c                                                  |    2 
 block/blk-mq.c                                                    |   10 
 block/genhd.c                                                     |    2 
 drivers/ata/libata-core.c                                         |   21 
 drivers/ata/libata-scsi.c                                         |    2 
 drivers/ata/libata-transport.c                                    |    2 
 drivers/ata/pata_octeon_cf.c                                      |    3 
 drivers/base/bus.c                                                |    4 
 drivers/base/dd.c                                                 |   10 
 drivers/block/loop.c                                              |    8 
 drivers/block/nbd.c                                               |   55 +-
 drivers/bus/ti-sysc.c                                             |    4 
 drivers/char/hw_random/virtio-rng.c                               |    2 
 drivers/char/random.c                                             |   15 
 drivers/char/xillybus/xillyusb.c                                  |    1 
 drivers/clocksource/timer-oxnas-rps.c                             |    2 
 drivers/clocksource/timer-riscv.c                                 |    2 
 drivers/clocksource/timer-sp804.c                                 |   10 
 drivers/dma/idxd/dma.c                                            |   23 
 drivers/dma/xilinx/zynqmp_dma.c                                   |    5 
 drivers/extcon/extcon-axp288.c                                    |    4 
 drivers/extcon/extcon-ptn5150.c                                   |   11 
 drivers/extcon/extcon.c                                           |   33 -
 drivers/firmware/dmi-sysfs.c                                      |    2 
 drivers/firmware/stratix10-svc.c                                  |   12 
 drivers/gpio/gpio-pca953x.c                                       |   19 
 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c                            |    6 
 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h                            |    1 
 drivers/gpu/drm/amd/amdgpu/nv.c                                   |    1 
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c                 |    2 
 drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c             |    9 
 drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c                    |    2 
 drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c                |    1 
 drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c                    |    2 
 drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c              |    3 
 drivers/gpu/drm/ast/ast_mode.c                                    |    5 
 drivers/gpu/drm/bridge/analogix/analogix_dp_core.c                |   42 +
 drivers/gpu/drm/bridge/ti-sn65dsi83.c                             |    2 
 drivers/gpu/drm/drm_atomic_helper.c                               |   16 
 drivers/gpu/drm/imx/ipuv3-crtc.c                                  |    2 
 drivers/gpu/drm/msm/dp/dp_ctrl.c                                  |    9 
 drivers/gpu/drm/panfrost/panfrost_drv.c                           |    5 
 drivers/gpu/drm/panfrost/panfrost_job.c                           |    6 
 drivers/gpu/drm/panfrost/panfrost_job.h                           |    2 
 drivers/gpu/drm/radeon/radeon_connectors.c                        |    4 
 drivers/hwtracing/coresight/coresight-cpu-debug.c                 |    7 
 drivers/i2c/busses/i2c-cadence.c                                  |   12 
 drivers/idle/intel_idle.c                                         |   32 -
 drivers/iio/adc/ad7124.c                                          |    1 
 drivers/iio/adc/sc27xx_adc.c                                      |   20 
 drivers/iio/adc/stmpe-adc.c                                       |    8 
 drivers/iio/common/st_sensors/st_sensors_core.c                   |   24 
 drivers/iio/dummy/iio_simple_dummy.c                              |   20 
 drivers/iio/proximity/vl53l0x-i2c.c                               |    7 
 drivers/input/mouse/bcm5974.c                                     |    7 
 drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c                       |    2 
 drivers/iommu/arm/arm-smmu/arm-smmu.c                             |    5 
 drivers/md/md.c                                                   |   15 
 drivers/md/raid0.c                                                |   31 -
 drivers/misc/cardreader/rtsx_usb.c                                |    1 
 drivers/misc/fastrpc.c                                            |    9 
 drivers/misc/lkdtm/bugs.c                                         |   10 
 drivers/misc/lkdtm/lkdtm.h                                        |    8 
 drivers/misc/lkdtm/usercopy.c                                     |   17 
 drivers/misc/pvpanic/pvpanic.c                                    |   10 
 drivers/mmc/core/block.c                                          |    3 
 drivers/mtd/ubi/fastmap-wl.c                                      |   69 +-
 drivers/mtd/ubi/fastmap.c                                         |   11 
 drivers/mtd/ubi/ubi.h                                             |    4 
 drivers/mtd/ubi/vmt.c                                             |    1 
 drivers/mtd/ubi/wl.c                                              |   19 
 drivers/net/amt.c                                                 |   59 +-
 drivers/net/dsa/lantiq_gswip.c                                    |    4 
 drivers/net/dsa/mv88e6xxx/chip.c                                  |    1 
 drivers/net/dsa/mv88e6xxx/serdes.c                                |   27 -
 drivers/net/ethernet/altera/altera_tse_main.c                     |    6 
 drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c                   |    1 
 drivers/net/ethernet/intel/i40e/i40e_txrx.c                       |   11 
 drivers/net/ethernet/intel/i40e/i40e_txrx.h                       |    1 
 drivers/net/ethernet/intel/i40e/i40e_xsk.c                        |    4 
 drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c                    |    8 
 drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c               |    2 
 drivers/net/ethernet/mediatek/mtk_eth_soc.c                       |    3 
 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c                   |    2 
 drivers/net/ethernet/mellanox/mlx5/core/dev.c                     |   54 +-
 drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c          |    7 
 drivers/net/ethernet/mellanox/mlx5/core/en.h                      |    4 
 drivers/net/ethernet/mellanox/mlx5/core/en/fs.h                   |    2 
 drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c                  |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c          |    6 
 drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c                |   19 
 drivers/net/ethernet/mellanox/mlx5/core/en/trap.c                 |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c             |    1 
 drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c            |    5 
 drivers/net/ethernet/mellanox/mlx5/core/en_main.c                 |   29 -
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c                   |   38 +
 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c        |   10 
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c                 |   37 +
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c                 |   12 
 drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h                 |   10 
 drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h               |    2 
 drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c          |    9 
 drivers/net/ethernet/microchip/lan966x/lan966x_main.c             |    9 
 drivers/net/ethernet/netronome/nfp/flower/conntrack.c             |   32 -
 drivers/net/ethernet/netronome/nfp/flower/match.c                 |   16 
 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c              |    4 
 drivers/net/ethernet/sfc/efx_channels.c                           |    6 
 drivers/net/ethernet/sfc/net_driver.h                             |    2 
 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c                 |    4 
 drivers/net/ethernet/ti/am65-cpsw-nuss.c                          |    3 
 drivers/net/macsec.c                                              |    7 
 drivers/net/phy/dp83867.c                                         |   29 +
 drivers/net/phy/mdio_bus.c                                        |    1 
 drivers/nfc/st21nfca/se.c                                         |   53 +-
 drivers/pci/controller/dwc/pcie-qcom.c                            |    6 
 drivers/pci/controller/pcie-brcmstb.c                             |  257 +---------
 drivers/pcmcia/Kconfig                                            |    2 
 drivers/phy/qualcomm/phy-qcom-qmp.c                               |    2 
 drivers/phy/rockchip/phy-rockchip-inno-usb2.c                     |   10 
 drivers/platform/x86/barco-p50-gpio.c                             |    5 
 drivers/platform/x86/hp-wmi.c                                     |   23 
 drivers/power/supply/ab8500_fg.c                                  |   19 
 drivers/power/supply/axp288_charger.c                             |   17 
 drivers/power/supply/axp288_fuel_gauge.c                          |    1 
 drivers/power/supply/charger-manager.c                            |    7 
 drivers/power/supply/max8997_charger.c                            |    8 
 drivers/pwm/pwm-lp3943.c                                          |    1 
 drivers/pwm/pwm-raspberrypi-poe.c                                 |    2 
 drivers/remoteproc/imx_rproc.c                                    |    3 
 drivers/rpmsg/qcom_smd.c                                          |    4 
 drivers/rpmsg/virtio_rpmsg_bus.c                                  |    9 
 drivers/rtc/rtc-ftrtc010.c                                        |   34 -
 drivers/rtc/rtc-mt6397.c                                          |    2 
 drivers/scsi/myrb.c                                               |   11 
 drivers/scsi/sd.c                                                 |    3 
 drivers/soc/rockchip/grf.c                                        |    2 
 drivers/soundwire/intel.c                                         |    3 
 drivers/soundwire/qcom.c                                          |    2 
 drivers/spi/spi-fsi.c                                             |   12 
 drivers/staging/fieldbus/anybuss/host.c                           |    2 
 drivers/staging/greybus/audio_codec.c                             |    4 
 drivers/staging/r8188eu/core/rtw_xmit.c                           |   13 
 drivers/staging/r8188eu/include/rtw_xmit.h                        |    2 
 drivers/staging/rtl8192e/rtllib_softmac.c                         |    2 
 drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c            |    2 
 drivers/staging/rtl8712/os_intfs.c                                |    1 
 drivers/staging/rtl8712/usb_intf.c                                |   12 
 drivers/staging/rtl8712/usb_ops.c                                 |   27 -
 drivers/staging/rtl8723bs/core/rtw_mlme.c                         |   12 
 drivers/thunderbolt/tb.c                                          |   19 
 drivers/thunderbolt/test.c                                        |   16 
 drivers/thunderbolt/tunnel.c                                      |   11 
 drivers/thunderbolt/tunnel.h                                      |    4 
 drivers/tty/goldfish.c                                            |    2 
 drivers/tty/n_tty.c                                               |   38 +
 drivers/tty/serial/8250/8250_aspeed_vuart.c                       |    2 
 drivers/tty/serial/8250/8250_fintek.c                             |    8 
 drivers/tty/serial/cpm_uart/cpm_uart_core.c                       |    2 
 drivers/tty/serial/digicolor-usart.c                              |    2 
 drivers/tty/serial/fsl_lpuart.c                                   |   24 
 drivers/tty/serial/icom.c                                         |    2 
 drivers/tty/serial/meson_uart.c                                   |   13 
 drivers/tty/serial/msm_serial.c                                   |    5 
 drivers/tty/serial/owl-uart.c                                     |    1 
 drivers/tty/serial/rda-uart.c                                     |    2 
 drivers/tty/serial/sa1100.c                                       |    4 
 drivers/tty/serial/serial_txx9.c                                  |    2 
 drivers/tty/serial/sh-sci.c                                       |    6 
 drivers/tty/serial/sifive.c                                       |    8 
 drivers/tty/serial/st-asc.c                                       |    4 
 drivers/tty/serial/stm32-usart.c                                  |   15 
 drivers/tty/serial/uartlite.c                                     |    3 
 drivers/tty/synclink_gt.c                                         |    2 
 drivers/tty/sysrq.c                                               |   13 
 drivers/usb/core/hcd-pci.c                                        |    4 
 drivers/usb/dwc2/gadget.c                                         |    1 
 drivers/usb/dwc3/drd.c                                            |    9 
 drivers/usb/dwc3/dwc3-pci.c                                       |    2 
 drivers/usb/dwc3/gadget.c                                         |   20 
 drivers/usb/dwc3/host.c                                           |    2 
 drivers/usb/host/isp116x-hcd.c                                    |    6 
 drivers/usb/host/oxu210hp-hcd.c                                   |    2 
 drivers/usb/musb/omap2430.c                                       |    1 
 drivers/usb/phy/phy-omap-otg.c                                    |    4 
 drivers/usb/storage/karma.c                                       |   15 
 drivers/usb/typec/mux.c                                           |   14 
 drivers/usb/typec/tcpm/fusb302.c                                  |    4 
 drivers/usb/usbip/stub_dev.c                                      |    2 
 drivers/usb/usbip/stub_rx.c                                       |    2 
 drivers/vdpa/ifcvf/ifcvf_main.c                                   |    3 
 drivers/vdpa/vdpa.c                                               |   13 
 drivers/vdpa/vdpa_user/vduse_dev.c                                |    7 
 drivers/vhost/vringh.c                                            |   10 
 drivers/video/fbdev/hyperv_fb.c                                   |   19 
 drivers/video/fbdev/pxa3xx-gcu.c                                  |   12 
 drivers/virtio/virtio_pci_modern_dev.c                            |    1 
 drivers/watchdog/rti_wdt.c                                        |    2 
 drivers/watchdog/rzg2l_wdt.c                                      |   46 -
 drivers/watchdog/ts4800_wdt.c                                     |    5 
 drivers/watchdog/wdat_wdt.c                                       |    1 
 drivers/xen/xlate_mmu.c                                           |    1 
 fs/afs/dir.c                                                      |    5 
 fs/ceph/mds_client.c                                              |   33 +
 fs/ceph/xattr.c                                                   |   10 
 fs/cifs/cifsfs.c                                                  |    2 
 fs/cifs/cifsfs.h                                                  |    2 
 fs/cifs/cifsglob.h                                                |    4 
 fs/cifs/connect.c                                                 |    4 
 fs/cifs/misc.c                                                    |   27 -
 fs/cifs/sess.c                                                    |    5 
 fs/cifs/smb2ops.c                                                 |    7 
 fs/cifs/smb2pdu.c                                                 |    3 
 fs/f2fs/checkpoint.c                                              |    4 
 fs/f2fs/file.c                                                    |    1 
 fs/fs-writeback.c                                                 |   37 +
 fs/inode.c                                                        |    2 
 fs/jffs2/fs.c                                                     |    1 
 fs/kernfs/dir.c                                                   |   31 -
 fs/ksmbd/smbacl.c                                                 |    1 
 fs/ksmbd/transport_rdma.c                                         |    1 
 fs/nfs/nfs4proc.c                                                 |    4 
 fs/zonefs/super.c                                                 |   11 
 include/linux/export.h                                            |    7 
 include/linux/extcon.h                                            |    2 
 include/linux/genhd.h                                             |    1 
 include/linux/iio/common/st_sensors.h                             |    3 
 include/linux/jump_label.h                                        |    4 
 include/linux/mlx5/mlx5_ifc.h                                     |    5 
 include/linux/nodemask.h                                          |   38 -
 include/linux/random.h                                            |    2 
 include/linux/xarray.h                                            |    1 
 include/net/ax25.h                                                |    1 
 include/net/bluetooth/hci_core.h                                  |   17 
 include/net/flow_offload.h                                        |    1 
 include/net/netfilter/nf_tables.h                                 |    1 
 include/net/netfilter/nf_tables_offload.h                         |    2 
 include/net/sch_generic.h                                         |   42 -
 include/net/tcp.h                                                 |   19 
 include/net/xdp_sock_drv.h                                        |    5 
 include/net/xsk_buff_pool.h                                       |    2 
 include/trace/events/tcp.h                                        |    2 
 kernel/bpf/core.c                                                 |   14 
 kernel/trace/trace.c                                              |   13 
 kernel/trace/trace_syscalls.c                                     |   35 -
 lib/Makefile                                                      |    2 
 lib/iov_iter.c                                                    |   20 
 lib/nodemask.c                                                    |    4 
 lib/xarray.c                                                      |    5 
 mm/huge_memory.c                                                  |    3 
 net/ax25/af_ax25.c                                                |   27 -
 net/ax25/ax25_dev.c                                               |    1 
 net/ax25/ax25_subr.c                                              |    2 
 net/bluetooth/hci_core.c                                          |    4 
 net/bluetooth/hci_request.c                                       |    2 
 net/bluetooth/hci_sync.c                                          |   62 +-
 net/bluetooth/mgmt.c                                              |   45 +
 net/core/filter.c                                                 |    2 
 net/core/flow_offload.c                                           |    6 
 net/core/neighbour.c                                              |    2 
 net/ipv4/inet_hashtables.c                                        |   10 
 net/ipv4/ip_gre.c                                                 |   11 
 net/ipv4/tcp.c                                                    |    8 
 net/ipv4/tcp_bbr.c                                                |   20 
 net/ipv4/tcp_bic.c                                                |   14 
 net/ipv4/tcp_cdg.c                                                |   30 -
 net/ipv4/tcp_cong.c                                               |   18 
 net/ipv4/tcp_cubic.c                                              |   22 
 net/ipv4/tcp_dctcp.c                                              |   11 
 net/ipv4/tcp_highspeed.c                                          |   18 
 net/ipv4/tcp_htcp.c                                               |   10 
 net/ipv4/tcp_hybla.c                                              |   18 
 net/ipv4/tcp_illinois.c                                           |   12 
 net/ipv4/tcp_input.c                                              |   41 -
 net/ipv4/tcp_ipv4.c                                               |    2 
 net/ipv4/tcp_lp.c                                                 |    6 
 net/ipv4/tcp_metrics.c                                            |   12 
 net/ipv4/tcp_nv.c                                                 |   24 
 net/ipv4/tcp_output.c                                             |   34 -
 net/ipv4/tcp_rate.c                                               |    2 
 net/ipv4/tcp_scalable.c                                           |    4 
 net/ipv4/tcp_vegas.c                                              |   21 
 net/ipv4/tcp_veno.c                                               |   24 
 net/ipv4/tcp_westwood.c                                           |    3 
 net/ipv4/tcp_yeah.c                                               |   30 -
 net/ipv4/xfrm4_protocol.c                                         |    1 
 net/ipv6/seg6_hmac.c                                              |    1 
 net/ipv6/tcp_ipv6.c                                               |    2 
 net/key/af_key.c                                                  |   10 
 net/netfilter/nf_tables_api.c                                     |   54 --
 net/netfilter/nf_tables_offload.c                                 |   23 
 net/netfilter/nft_nat.c                                           |    3 
 net/openvswitch/actions.c                                         |    6 
 net/openvswitch/conntrack.c                                       |    4 
 net/sched/act_police.c                                            |   16 
 net/smc/af_smc.c                                                  |    1 
 net/smc/smc_cdc.c                                                 |    2 
 net/sunrpc/xdr.c                                                  |    6 
 net/sunrpc/xprtrdma/rpc_rdma.c                                    |    5 
 net/sunrpc/xprtrdma/svc_rdma_rw.c                                 |    4 
 net/tipc/bearer.c                                                 |    3 
 net/unix/af_unix.c                                                |    2 
 net/xdp/xsk.c                                                     |   29 -
 net/xdp/xsk_buff_pool.c                                           |   15 
 net/xdp/xsk_queue.h                                               |   14 
 scripts/gdb/linux/config.py                                       |    6 
 scripts/get_abi.pl                                                |    4 
 scripts/mod/modpost.c                                             |    5 
 security/keys/trusted-keys/trusted_tpm2.c                         |    4 
 sound/pci/hda/patch_conexant.c                                    |    7 
 sound/pci/hda/patch_realtek.c                                     |    2 
 sound/soc/codecs/rt5640.c                                         |   11 
 sound/soc/codecs/rt5640.h                                         |    2 
 sound/soc/fsl/fsl_sai.h                                           |    4 
 sound/soc/intel/boards/bytcr_rt5640.c                             |    2 
 sound/usb/pcm.c                                                   |    5 
 sound/usb/quirks-table.h                                          |    7 
 tools/perf/arch/x86/util/evlist.c                                 |    5 
 tools/perf/arch/x86/util/evsel.c                                  |   24 
 tools/perf/arch/x86/util/evsel.h                                  |    7 
 tools/perf/arch/x86/util/topdown.c                                |   46 +
 tools/perf/arch/x86/util/topdown.h                                |    7 
 tools/perf/builtin-c2c.c                                          |    4 
 tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c      |   12 
 tools/testing/selftests/net/forwarding/tc_police.sh               |   52 ++
 tools/testing/selftests/netfilter/nft_nat.sh                      |   43 +
 tools/tracing/rtla/Makefile                                       |   35 +
 358 files changed, 2414 insertions(+), 1554 deletions(-)

Adrian Hunter (1):
mmc: block: Fix CQE recovery reset success

Alex Deucher (1):
drm/amdgpu: update VCN codec support for Yellow Carp

Alexander Gordeev (1):
s390/mcck: isolate SIE instruction when setting CIF_MCCK_GUEST flag

Alexander Lobakin (1):
modpost: fix removing numeric suffixes

Alexandru Tachici (1):
iio: adc: ad7124: Remove shift from scan_type

Andre Przywara (1):
clocksource/drivers/sp804: Avoid error on multiple instances

Andrii Nakryiko (1):
selftests/bpf: fix selftest after random: Urandom_read tracepoint removal

Arnaud Pouliquen (1):
rpmsg: virtio: Fix the unregistration of the device rpmsg_ctrl

Baokun Li (1):
jffs2: fix memory leak in jffs2_do_fill_super

Bedant Patnaik (1):
platform/x86: hp-wmi: Use zero insize parameter only when supported

Biju Das (4):
watchdog: rzg2l_wdt: Fix 32bit overflow issue
watchdog: rzg2l_wdt: Fix Runtime PM usage
watchdog: rzg2l_wdt: Fix 'BUG: Invalid wait context'
watchdog: rzg2l_wdt: Fix reset control imbalance

Bjorn Andersson (1):
usb: typec: mux: Check dev_set_name() return value

Bjorn Helgaas (4):
Revert "PCI: brcmstb: Do not turn off WOL regulators on suspend" Revert "PCI: brcmstb: Add control of subdevice voltage regulators" Revert "PCI: brcmstb: Add mechanism to turn on subdev regulators" Revert "PCI: brcmstb: Split brcm_pcie_setup() into two funcs"

Brian Norris (2):
drm/bridge: analogix_dp: Support PSR-exit to disable transition drm/atomic: Force bridge self-refresh-exit on CRTC switch

Cameron Berkenpas (1):
ALSA: hda/realtek: Fix for quirk to enable speaker output on the Lenovo Yoga DuetITL 2021

Changbin Du (1):
sysrq: do not omit current cpu when showing backtrace of all active CPUs

Changcheng Liu (1):
net/mlx5: correct ECE offset in query qp output

Chao Yu (1):
f2fs: fix to tag gcing flag on page during file defragment

Christian Borntraeger (1):
s390/gmap: voluntarily schedule during key setting

Christoph Hellwig (3):
block: take destination bvec offsets into account in bio_copy_data_iter
block: use bio_queue_enter instead of blk_queue_enter in bio_poll block, loop: support partitions without scanning

Christophe JAILLET (3):
staging: fieldbus: Fix the error handling path in anybuss_host_common_probe()
virtio: pci: Fix an error handling path in vp_modern_probe()
stmmac: intel: Fix an error handling path in intel_eth_pci_probe()

Christophe Leroy (1):
lkdtm/bugs: Don't expect thread termination without CONFIG_UBSAN_TRAP

Chuck Lever (2):
SUNRPC: Trap RDMA segment overflows
SUNRPC: Fix the calculation of xdr->end in xdr_get_next_encode_buffer()

Cixi Geng (2):
iio: adc: sc27xx: fix read big scale voltage not right
iio: adc: sc27xx: Fine tune the scale calibration values

Damien Le Moal (2):
scsi: sd: Fix potential NULL pointer dereference
zonefs: fix handling of explicit_open option on mount

Dan Carpenter (4):
drm/amdgpu: Off by one in dm_dmub_outbox1_low_irq()
net: ethernet: mtk_eth_soc: out of bounds read in mtk_hwlro_get_fdir_entry()
octeontx2-af: fix error code in is_valid_offset()
extcon: Fix extcon_get_extcon_dev() error handling

Daniel Borkmann (1):
net, neigh: Set lower cap for neigh_managed_work rearming

Daniel Bristot de Oliveira (1):
rtla/Makefile: Properly handle dependencies

Daniel Gibson (1):
tty: n_tty: Restore EOF push handling behavior

Dave Jiang (2):
dmaengine: idxd: set DMA_INTERRUPT cap bit
dmaengine: idxd: add missing callback function to support DMA_INTERRUPT

David Galiffi (1):
drm/amd/display: Check if modulo is 0 before dividing.

David Howells (2):
afs: Fix infinite loop found by xfstest generic/676
iov_iter: Fix iter_xarray_get_pages{,_alloc}()

David Safford (1):
KEYS: trusted: tpm2: Fix migratable logic

Davide Caratti (1):
net/sched: act_police: more accurate MTU policing

Dongliang Mu (1):
f2fs: remove WARN_ON in f2fs_is_valid_blkaddr

Duoming Zhou (7):
ax25: Fix ax25 session cleanup problems
drivers: staging: rtl8723bs: Fix deadlock in rtw_surveydone_event_callback()
drivers: staging: rtl8192bs: Fix deadlock in rtw_joinbss_event_prehandle()
drivers: staging: rtl8192u: Fix deadlock in ieee80211_beacons_stop()
drivers: staging: rtl8192e: Fix deadlock in rtllib_beacons_stop()
drivers: tty: serial: Fix deadlock in sa1100_set_termios()
drivers: usb: host: Fix deadlock in oxu_bus_suspend()

Eddie James (1):
spi: fsi: Fix spurious timeout

Eli Cohen (1):
vdpa: Fix error logic in vdpa_nl_cmd_dev_get_doit

Eric Dumazet (4):
tcp: add accessors to read/set tp->snd_cwnd
tcp: tcp_rtx_synack() can be called from process context bpf, arm64: Clear prog->jited_len along prog->jited
tcp: fix tcp_mtup_probe_success vs wrong snd_cwnd

Etienne van der Linde (1):
nfp: flower: restructure flow-key for gre+vlan combination

Evan Green (1):
USB: hcd-pci: Fully suspend across freeze/thaw cycle

Fabien Parent (1):
regulator: mt6315-regulator: fix invalid allowed mode

Feras Daoud (1):
net/mlx5: Rearm the FW tracer after each tracer event

Florian Westphal (1):
netfilter: nat: really support inet nat without l3 address

Gal Pressman (1):
net/mlx4_en: Fix wrong return value on ioctl EEPROM query failure

Genjian Zhang (1):
ep93xx: clock: Do not return the address of the freed memory

Gong Yuanjun (3):
mips: cpc: Fix refcount leak in mips_cpc_default_phys_base drm/radeon: fix a possible null pointer dereference drm/amd/pm: fix a potential gpu_metrics_table memory leak

Greg Kroah-Hartman (2):
export: fix string handling of namespace in EXPORT_SYMBOL_NS Linux 5.17.15

Greg Ungerer (3):
m68knommu: set ZERO_PAGE() to the allocated zeroed page
m68knommu: fix undefined reference to `_init_sp'
m68knommu: fix undefined reference to `mach_get_rtc_pll'

Guangguan Wang (1):
net/smc: fixes for converting from "struct smc_cdc_tx_pend **" to "struct smc_wr_tx_pend_priv *"

Guilherme G. Piccoli (2):
misc/pvpanic: Convert regular spinlock into trylock on panic path
coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier

Guoju Fang (1):
net: sched: add barrier to fix packet stuck problem for lockless qdisc

Guoqing Jiang (1):
md: protect md_unregister_thread from reentrancy

Haibo Chen (1):
gpio: pca953x: use the correct register address to do regcache sync

Haisu Wang (1):
blk-mq: do not update io_ticks with passthrough requests

Hangyu Hua (4):
usb: usbip: fix a refcount leak in stub_probe()
rpmsg: virtio: Fix possible double free in rpmsg_probe()
rpmsg: virtio: Fix possible double free in rpmsg_virtio_add_ctrl_dev()
char: xillybus: fix a refcount leak in cleanup_dev()

Hannes Reinecke (1):
scsi: myrb: Fix up null pointer access on myrb_cleanup()

Hans de Goede (1):
power: supply: axp288_fuel_gauge: Drop BIOS version check from "T3 MRD" DMI quirk

Hao Luo (1):
kernfs: Separate kernfs_pr_cont_buf and rename_lock.

Heikki Krogerus (1):
usb: dwc3: host: Stop setting the ACPI companion

Heinrich Schuchardt (1):
riscv: read-only pages should not be writable

Hoang Le (1):
tipc: check attribute length for bearer name

Howard Chiu (1):
ARM: dts: aspeed: ast2600-evb: Enable RX delay for MAC0/MAC1

Huang Guobin (1):
tty: Fix a possible resource leak in icom_probe

Hyunchul Lee (1):
ksmbd: smbd: fix connection dropped issue

Ilpo Järvinen (9):
serial: 8250_fintek: Check SER_RS485_RTS_* only with RS485
serial: uartlite: Fix BRKINT clearing
serial: digicolor-usart: Don't allow CS5-6
serial: rda-uart: Don't allow CS5-6
serial: txx9: Don't allow CS5-6
serial: sh-sci: Don't allow CS5-6
serial: sifive: Sanitize CSIZE and c_iflag
serial: st-asc: Sanitize CSIZE and correct PARENB for CS7
serial: stm32-usart: Correct CSIZE, bits, and parity

Ilya Maximets (1):
net: openvswitch: fix misuse of the cached connection on tuple changes

Jakob Koschel (1):
staging: greybus: codecs: fix type confusion of list iterator variable

Jan Beulich (1):
x86: drop bogus "cc" clobber from __try_cmpxchg_user_asm()

Jann Horn (1):
s390/crypto: fix scatterwalk_unmap() callers in AES-GCM

Jason A. Donenfeld (3):
random: avoid checking crng_ready() twice in random_init()
random: mark bootloader randomness code as __init
random: account for arch randomness in bits

Jason Wang (2):
vdpa: ifcvf: set pci driver data in probe
virtio-rng: make device ready before making request

Jchao Sun (1):

      writeback: Fix inode->i_io_list not be protected by inode->i_lock error

Jeff Xie (1):
tracing: Make tp_printk work on syscall tracepoints

Jens Axboe (1):
block: make bioset_exit() fully resilient against being called twice

Jeremy Soller (1):
ALSA: hda/realtek: Add quirk for HP Dev One

Jiasheng Jiang (3):
lkdtm/bugs: Check for the NULL pointer after calling kmalloc
staging: r8188eu: add check for kzalloc
platform/x86: barco-p50-gpio: Add check for platform_driver_register

Johan Hovold (2):
phy: qcom-qmp: fix pipe-clock imbalance on power-on failure
PCI: qcom: Fix pipe clock imbalance

Johannes Berg (1):
um: line: Use separate IRQs per line

John Ogness (2):
serial: meson: acquire port->lock in startup()
serial: msm_serial: disable interrupts in __msm_console_write()

Jorge Lopez (1):

      platform/x86: hp-wmi: Fix hp_wmi_read_int() reporting error (0x05)

Jun Miao (1):
tracing: Fix sleeping function called from invalid context on RT kernel

Kan Liang (2):
perf evsel: Fixes topdown events in a weak group for the hybrid platform perf parse-events: Move slots event for the hybrid platform too

Kees Cook (2):
lkdtm/usercopy: Expand size of "out of frame" object
nodemask: Fix return values to be unsigned

Kinglong Mee (1):
xprtrdma: treat all calls not a bcall when bc_serv is NULL

Krzysztof Kozlowski (3):
rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value
rpmsg: qcom_smd: Fix returning 0 if irq_of_parse_and_map() fails clocksource/drivers/oxnas-rps: Fix irq_of_parse_and_map() return value

Kuan-Ying Lee (1):
scripts/gdb: change kernel config dumping method

Kuniyuki Iwashima (1):
af_unix: Fix a data-race in unix_dgram_peer_wake_me().

KuoHsiang Chou (1):
drm/ast: Create threshold values for AST2600

Kuogee Hsieh (1):
drm/msm/dp: Always clear mask bits to disable interrupts at dp_ctrl_reset_irq_ctrl()

Leo Yan (1):
perf c2c: Fix sorting in percent_rmt_hitm_cmp()

Leon Romanovsky (1):
net/mlx5: Don't use already freed action pointer

Li Jun (1):
extcon: ptn5150: Add queue work sync before driver release

Liao Chang (1):
RISC-V: use memcpy for kexec_file mode

Lijo Lazar (1):
drm/amd/pm: Fix missing thermal throttler status

Lin Ma (1):
USB: storage: karma: fix rio_karma_init return

Linus Torvalds (3):
bluetooth: don't use bitmaps for random flag accesses
drm: imx: fix compiler warning with gcc-12
iov_iter: fix build issue due to possible type mis-match

Linus Walleij (1):
power: supply: ab8500_fg: Allocate wq in probe

Liu Xinpeng (1):
watchdog: wdat_wdt: Stop watchdog when rebooting the system

Lucas Tanure (1):
i2c: cadence: Increase timeout per message if necessary

Luiz Augusto von Dentz (2):
Bluetooth: MGMT: Add conditions for setting HCI_CONN_FLAG_REMOTE_WAKEUP
Bluetooth: hci_sync: Fix attempting to suspend with unfiltered passive scan

Maciej Fijalkowski (2):
xsk: Fix handling of invalid descriptors in XSK TX batching API
xsk: Fix possible crash when multiple sockets are created

Maciej W. Rozycki (1):
serial: sifive: Report actual baud base rather than fixed 115200

Magnus Karlsson (1):
i40e: xsk: Move tmp desc array from driver to pool

Maor Dickman (1):
net/mlx5e: TC NIC mode, fix tc chains miss table

Marek Behún (1):
net: dsa: mv88e6xxx: use BMSR_ANEGCOMPLETE bit for filling an_complete

Marek Szyprowski (1):

      usb: dwc2: gadget: don't reset gadget's driver->bus

Marek Vasut (1):

      drm/bridge: ti-sn65dsi83: Handle dsi_lanes == 0 as invalid

Mark Bloch (3):
net/mlx5: Lag, filter non compatible devices net/mlx5: fs, fail conflicting actions net/mlx5: E-Switch, pair only capable devices

Mark-PK Tsai (1):
tracing: Avoid adding tracer option before update_tracer_options

Martin Faltesek (3):
nfc: st21nfca: fix incorrect validating logic in EVT_TRANSACTION
nfc: st21nfca: fix memory leaks in EVT_TRANSACTION handling
nfc: st21nfca: fix incorrect sizing calculations in EVT_TRANSACTION

Martin Habets (1):
sfc: fix considering that all channels have TX queues

Masahiro Yamada (5):
xen: unexport __init-annotated xen_xlate_map_ballooned_pages()
net: mdio: unexport __init-annotated mdio_bus_init()
net: xfrm: unexport __init-annotated xfrm4_protocol_init()
net: ipv6: unexport __init-annotated seg6_hmac_init()
modpost: fix undefined behavior of is_arm_mapping_symbol()

Masami Hiramatsu (1):
bootconfig: Make the bootconfig.o as a normal object file

Mathias Nyman (1):
Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag

Matthew Wilcox (Oracle) (1):
mm/huge_memory: Fix xarray node memory leak

Maxim Mikityanskiy (2):
net/mlx5e: Disable softirq in mlx5e_activate_rq to avoid race condition net/mlx5e: Update netdev features after changing XDP state

Menglong Dong (1):
bpf: Fix probe read error in ___bpf_prog_run()

Miaoqian Lin (16):
tty: serial: owl: Fix missing clk_disable_unprepare() in owl_uart_probe
serial: 8250_aspeed_vuart: Fix potential NULL dereference in aspeed_vuart_probe
usb: musb: Fix missing of_node_put() in omap2430_probe
iio: adc: stmpe-adc: Fix wait_for_completion_timeout return value check
iio: proximity: vl53l0x: Fix return value check of wait_for_completion_timeout
soc: rockchip: Fix refcount leak in rockchip_grf_init
rtc: ftrtc010: Fix error handling in ftrtc010_rtc_probe
firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle
watchdog: rti-wdt: Fix pm_runtime_get_sync() error checking
watchdog: ts4800_wdt: Fix refcount leak in ts4800_wdt_probe
net: ethernet: ti: am65-cpsw-nuss: Fix some refcount leaks
net: dsa: mv88e6xxx: Fix refcount leak in mv88e6xxx_mdios_register
ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe
net: ethernet: bgmac: Fix refcount leak in bcma_mdio_mii_register
net: dsa: lantiq_gswip: Fix refcount leak in gswip_gphy_fw_list
net: altera: Fix refcount leak in altera_tse_mdio_create

Michael Ellerman (3):
powerpc/kasan: Force thread size increase with KASAN
powerpc: Don't select HAVE_IRQ_EXIT_ON_IRQ_STACK powerpc/32: Fix overread/overwrite of thread_struct via ptrace

Michael Walle (1):
net: lan966x: check devm_of_phy_get() for -EDEFER_PROBE

Michal Kubecek (1):
Revert "net: af_key: add check for pfkey_broadcast in function pfkey_process"

Mika Westerberg (1):
thunderbolt: Use different lane for second DisplayPort tunnel

Ming Lei (1):

      blk-mq: don't touch ->tagset in blk_mq_get_sq_hctx

Miquel Raynal (1):
iio: st_sensors: Add a local lock for protecting odr

Mohammad Zafar Ziya (1):
drm/amdgpu/jpeg2: Add jpeg vmid update under IB submit

Muchun Song (1):
tcp: use alloc_large_system_hash() to allocate table_perturb

Niels Dossche (1):
usb: usbip: add missing device lock on tweak configuration cmd

Nícolas F. R. A. Prado (1):
dt-bindings: remoteproc: mediatek: Make l1tcm reg exclusive to mt819x

Oder Chiou (1):
ASoC: rt5640: Do not manipulate pin "Platform Clock" if the "Platform Clock" is not in the DAPM

Olivier Matz (2):
ixgbe: fix bcast packets Rx on VF after promisc removal
ixgbe: fix unexpected VLAN Rx in promisc mode on VF

Pablo Neira Ayuso (6):
netfilter: nf_tables: use kfree_rcu(ptr, rcu) to release hooks in clean_net path
netfilter: nf_tables: delete flowtable hooks via transaction list
netfilter: nf_tables: always initialize flowtable hook list in transaction
netfilter: nf_tables: release new hooks on unsupported flowtable flags
netfilter: nf_tables: memleak flow rule from commit path
netfilter: nf_tables: bail out early if hardware offload is not supported

Pascal Hambourg (1):
md/raid0: Ignore RAID0 layout if the second zone has only one device

Paul Blakey (1):
net/mlx5: CT: Fix header-rewrite re-use for tupels

Paulo Alcantara (1):
cifs: fix reconnect on smb3 mount types

Peng Fan (1):
remoteproc: imx_rproc: Ignore create mem entry for resource table

Peter Zijlstra (3):
x86/cpu: Elide KCSAN for cpu_has() and friends jump_label,noinstr: Avoid instrumentation for JUMP_LABEL=n builds cpuidle,intel_idle: Fix CPUIDLE_FLAG_IRQ_ENABLE

Pierre-Louis Bossart (1):
soundwire: intel: prevent pm_runtime resume prior to system suspend

Radhey Shyam Pandey (1):
dmaengine: zynqmp_dma: In struct zynqmp_dma_chan fix desc_size data type

Randy Dunlap (1):
pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards

Saeed Mahameed (1):
net/mlx5: Fix mlx5_get_next_dev() peer device matching

Samuel Holland (2):
phy: rockchip-inno-usb2: Fix muxed interrupt support clocksource/drivers/riscv: Events are stopped during CPU suspend

Saravana Kannan (1):
driver core: Fix wait_for_device_probe() & deferred_probe_timeout interaction

Saurabh Sengar (1):
video: fbdev: hyperv_fb: Allow resolutions with size > 64 MB for Gen1

Schspa Shi (1):
driver: base: fix UAF when driver_attach failed

SeongJae Park (1):
scripts/get_abi: Fix wrong script file name in the help message

Sergey Shtylyov (1):
ata: libata-transport: fix {dma|pio|xfer}_mode sysfs files

Shengjiu Wang (1):
ASoC: fsl_sai: Fix FSL_SAI_xDR/xFR definition

Sherry Sun (1):
tty: serial: fsl_lpuart: fix potential bug when using both of_alias_get_id and ida_simple_get

Shuah Khan (1):
misc: rtsx: set NULL intfdata when probe fails

Shyam Prasad N (2):
cifs: return errors during session setup during reconnects
cifs: populate empty hostnames for extra channels

Song Liu (1):
selftests/bpf: fix stacktrace_build_id with missing kprobe/urandom_read

Srinivas Kandagatla (1):
soundwire: qcom: adjust autoenumeration timeout

Steve French (1):
cifs: version operations for smb20 unneeded when legacy support disabled

Steven Price (1):
drm/panfrost: Job should reference MMU not file_priv

Taehee Yoo (5):
amt: fix return value of amt_update_handler()
amt: fix possible memory leak in amt_rcv()
amt: fix wrong usage of pskb_may_pull()
amt: fix possible null-ptr-deref in amt_rcv()
amt: fix wrong type string definition

Takashi Iwai (2):
ALSA: usb-audio: Skip generic sync EP parse for secondary EP
ALSA: usb-audio: Set up (implicit) sync for Saffire 6

Tan Tee Min (1):
net: phy: dp83867: retrigger SGMII AN when link change

Tony Lindgren (1):
bus: ti-sysc: Fix warnings for unbind for serial

Trond Myklebust (1):
NFSv4: Don't hold the layoutget locks across multiple RPC calls

Tyler Erickson (3):
scsi: sd: Fix interpretation of VPD B9h length
libata: fix reading concurrent positioning ranges log
libata: fix translation of concurrent positioning ranges

Uwe Kleine-König (2):
pwm: lp3943: Fix duty calculation in case period was clamped
pwm: raspberrypi-poe: Fix endianness in firmware struct

Venky Shankar (1):
ceph: allow ceph.dir.rctime xattr to be updatable

Vincent Ray (1):
net: sched: fixed barrier to prevent skbuff sticking in qdisc backlog

Wang Cheng (2):
staging: rtl8712: fix uninit-value in usb_read8() and friends
staging: rtl8712: fix uninit-value in r871xu_drv_init()

Wang Weiyang (1):
tty: goldfish: Use tty_port_destroy() to destroy port

Wesley Cheng (1):
usb: dwc3: gadget: Replace list_for_each_entry_safe() if using giveback

Willem de Bruijn (1):
ip_gre: test csum_start instead of transport header

Xiaoke Wang (2):
iio: dummy: iio_simple_dummy: check the return value of kstrdup()
staging: rtl8712: fix a potential memory leak in r871xu_drv_init()

Xiaomeng Tong (2):
misc: fastrpc: fix an incorrect NULL check on list iterator
firmware: stratix10-svc: fix a missing check on list iterator

Xie Yongji (2):
vringh: Fix loop descriptors check in the indirect cases
vduse: Fix NULL pointer dereference on sysfs access

Xin Xiong (1):
ksmbd: fix reference count leak in smb_check_perm_dacl()

Xiubo Li (1):
ceph: flush the mdlog for filesystem sync

Yang Yingliang (4):
rtc: mt6397: check return value after calling platform_get_resource() iommu/arm-smmu: fix possible null-ptr-deref in arm_smmu_device_probe() iommu/arm-smmu-v3: check return value after calling platform_get_resource()
video: fbdev: pxa3xx-gcu: release the resources correctly in pxa3xx_gcu_probe/remove()

Yu Kuai (4):
nbd: don't clear 'NBD_CMD_INFLIGHT' flag if request is not completed
nbd: call genl_unregister_family() first in nbd_cleanup()
nbd: fix race between nbd_alloc_config() and module removal
nbd: fix io hung while disconnecting device

Yu Xiao (1):
nfp: only report pause frame configuration for physical device

YueHaibing (1):
serial: cpm_uart: Fix build error without CONFIG_SERIAL_CPM_CONSOLE

Yury Norov (1):
drm/amd/pm: use bitmap_{from,to}_arr32 where appropriate

Zhang Wensheng (1):
driver core: fix deadlock in __device_attach

Zhen Ni (1):
USB: host: isp116x: check return value after calling platform_get_resource()

Zheng Yongjun (1):
usb: dwc3: pci: Fix pm_runtime_get_sync() error checking

Zhengjun Xing (1):
perf record: Support sample-read topdown metric group for hybrid platforms

Zheyu Ma (1):
tty: synclink_gt: Fix null-pointer-dereference in slgt_clean()

Zhihao Cheng (2):
ubi: fastmap: Fix high cpu usage of ubi_bgt by making sure wl_pool not empty
ubi: ubi_create_volume: Fix use-after-free when volume creation failed

Ziyang Xuan (1):
macsec: fix UAF bug for real_dev

bumwoo lee (1):
extcon: Modify extcon device to be created after driver data is set

huangwenhui (1):
ALSA: hda/conexant - Fix loopback issue with CX20632

liuyacan (1):

      net/smc: set ini->smcrv2.ib_dev_v2 to NULL if SMC-Rv2 is unavailable

Íñigo Huguet (1):
sfc: fix wrong tx channel offset with efx_separate_tx_channels

author maintainer
#1 lore raw
Documentation/ABI/testing/sysfs-ata +6 -5
index 2f726c914752..3daecac48964 100644
@@ -107,13 +107,14 @@ Description:
 				described in ATA8 7.16 and 7.17. Only valid if
 				the device is not a PM.
 
-		pio_mode:	(RO) Transfer modes supported by the device when
-				in PIO mode. Mostly used by PATA device.
+		pio_mode:	(RO) PIO transfer mode used by the device.
+				Mostly used by PATA devices.
 
-		xfer_mode:	(RO) Current transfer mode
+		xfer_mode:	(RO) Current transfer mode. Mostly used by
+				PATA devices.
 
-		dma_mode:	(RO) Transfer modes supported by the device when
-				in DMA mode. Mostly used by PATA device.
+		dma_mode:	(RO) DMA transfer mode used by the device.
+				Mostly used by PATA devices.
 
 		class:		(RO) Device class. Can be "ata" for disk,
 				"atapi" for packet device, "pmp" for PM, or
Documentation/devicetree/bindings/regulator/mt6315-regulator.yaml +2 -2
index 5d2d989de893..37402c370fbb 100644
@@ -55,7 +55,7 @@ examples:
           regulator-min-microvolt = <300000>;
           regulator-max-microvolt = <1193750>;
           regulator-enable-ramp-delay = <256>;
-          regulator-allowed-modes = <0 1 2 4>;
+          regulator-allowed-modes = <0 1 2>;
         };
 
         vbuck3 {
@@ -63,7 +63,7 @@ examples:
           regulator-min-microvolt = <300000>;
           regulator-max-microvolt = <1193750>;
           regulator-enable-ramp-delay = <256>;
-          regulator-allowed-modes = <0 1 2 4>;
+          regulator-allowed-modes = <0 1 2>;
         };
       };
     };
Documentation/devicetree/bindings/remoteproc/mtk,scp.yaml +30 -14

67 lines not on this page · raw message

Documentation/tools/rtla/Makefile +13 -1
index 9f2b84af1a6c..093af6d7a0e9 100644
@@ -17,9 +17,21 @@ DOC_MAN1	= $(addprefix $(OUTPUT),$(_DOC_MAN1))
 RST2MAN_DEP	:= $(shell command -v rst2man 2>/dev/null)
 RST2MAN_OPTS	+= --verbose
 
+TEST_RST2MAN = $(shell sh -c "rst2man --version > /dev/null 2>&1 || echo n")
+
 $(OUTPUT)%.1: %.rst
 ifndef RST2MAN_DEP
-	$(error "rst2man not found, but required to generate man pages")
+	$(info ********************************************)
+	$(info ** NOTICE: rst2man not found)
+	$(info **)
+	$(info ** Consider installing the latest rst2man from your)
+	$(info ** distribution, e.g., 'dnf install python3-docutils' on Fedora,)
+	$(info ** or from source:)
+	$(info **)
+	$(info **  https://docutils.sourceforge.io/docs/dev/repository.html )
+	$(info **)
+	$(info ********************************************)
+	$(error NOTICE: rst2man required to generate man pages)
 endif
 	rst2man $(RST2MAN_OPTS) $< > $@
 
Makefile +1 -1
index 5450a2c9efa6..c3676b04ca38 100644
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
 VERSION = 5
 PATCHLEVEL = 17
-SUBLEVEL = 14
+SUBLEVEL = 15
 EXTRAVERSION =
 NAME = Superb Owl
 
arch/arm/boot/dts/aspeed-ast2600-evb.dts +2 -2
index b7eb552640cb..788448cdd6b3 100644
@@ -103,7 +103,7 @@ ethphy3: ethernet-phy@0 {
 &mac0 {
 	status = "okay";
 
-	phy-mode = "rgmii";
+	phy-mode = "rgmii-rxid";
 	phy-handle = <&ethphy0>;
 
 	pinctrl-names = "default";
@@ -114,7 +114,7 @@ &mac0 {
 &mac1 {
 	status = "okay";
 
-	phy-mode = "rgmii";
+	phy-mode = "rgmii-rxid";
 	phy-handle = <&ethphy1>;
 
 	pinctrl-names = "default";
arch/arm/mach-ep93xx/clock.c +6 -4
index 28e0ae6e890e..00c2db101ce5 100644
@@ -345,9 +345,10 @@ static struct clk_hw *clk_hw_register_ddiv(const char *name,
 	psc->hw.init = &init;
 
 	clk = clk_register(NULL, &psc->hw);
-	if (IS_ERR(clk))
+	if (IS_ERR(clk)) {
 		kfree(psc);
-
+		return ERR_CAST(clk);
+	}
 	return &psc->hw;
 }
 
@@ -452,9 +453,10 @@ static struct clk_hw *clk_hw_register_div(const char *name,
 	psc->hw.init = &init;
 
 	clk = clk_register(NULL, &psc->hw);
-	if (IS_ERR(clk))
+	if (IS_ERR(clk)) {
 		kfree(psc);
-
+		return ERR_CAST(clk);
+	}
 	return &psc->hw;
 }
 
arch/arm64/net/bpf_jit_comp.c +1 -0
index cbc41e261f1e..c679c57ec76e 100644
@@ -1120,6 +1120,7 @@ struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
 			bpf_jit_binary_free(header);
 			prog->bpf_func = NULL;
 			prog->jited = 0;
+			prog->jited_len = 0;
 			goto out_off;
 		}
 		bpf_jit_binary_lock_ro(header);
arch/m68k/Kconfig.machine +1 -0
index eeab4f3e6c19..946853a08502 100644
@@ -335,6 +335,7 @@ comment "Machine Options"
 
 config UBOOT
 	bool "Support for U-Boot command line parameters"
+	depends on COLDFIRE
 	help
 	  If you say Y here kernel will try to collect command
 	  line parameters from the initial u-boot stack.
arch/m68k/include/asm/pgtable_no.h +2 -1
index 87151d67d91e..bce5ca56c388 100644
@@ -42,7 +42,8 @@ extern void paging_init(void);
  * ZERO_PAGE is a global shared page that is always zero: used
  * for zero-mapped memory areas etc..
  */
-#define ZERO_PAGE(vaddr)	(virt_to_page(0))
+extern void *empty_zero_page;
+#define ZERO_PAGE(vaddr)	(virt_to_page(empty_zero_page))
 
 /*
  * All 32bit addresses are effectively valid for vmalloc...
arch/m68k/kernel/setup_mm.c +0 -7
index 49e573b94326..811c7b85db87 100644
@@ -87,15 +87,8 @@ void (*mach_sched_init) (void) __initdata = NULL;
 void (*mach_init_IRQ) (void) __initdata = NULL;
 void (*mach_get_model) (char *model);
 void (*mach_get_hardware_list) (struct seq_file *m);
-/* machine dependent timer functions */
-int (*mach_hwclk) (int, struct rtc_time*);
-EXPORT_SYMBOL(mach_hwclk);
 unsigned int (*mach_get_ss)(void);
-int (*mach_get_rtc_pll)(struct rtc_pll_info *);
-int (*mach_set_rtc_pll)(struct rtc_pll_info *);
 EXPORT_SYMBOL(mach_get_ss);
-EXPORT_SYMBOL(mach_get_rtc_pll);
-EXPORT_SYMBOL(mach_set_rtc_pll);
 void (*mach_reset)( void );
 void (*mach_halt)( void );
 void (*mach_power_off)( void );
arch/m68k/kernel/setup_no.c +0 -1
index 5e4104f07a44..19eea73d3c17 100644
@@ -50,7 +50,6 @@ char __initdata command_line[COMMAND_LINE_SIZE];
 
 /* machine dependent timer functions */
 void (*mach_sched_init)(void) __initdata = NULL;
-int (*mach_hwclk) (int, struct rtc_time*);
 
 /* machine dependent reboot functions */
 void (*mach_reset)(void);
arch/m68k/kernel/time.c +9 -0
index 340ffeea0a9d..a97600b2af50 100644
@@ -63,6 +63,15 @@ void timer_heartbeat(void)
 #endif /* CONFIG_HEARTBEAT */
 
 #ifdef CONFIG_M68KCLASSIC
+/* machine dependent timer functions */
+int (*mach_hwclk) (int, struct rtc_time*);
+EXPORT_SYMBOL(mach_hwclk);
+
+int (*mach_get_rtc_pll)(struct rtc_pll_info *);
+int (*mach_set_rtc_pll)(struct rtc_pll_info *);
+EXPORT_SYMBOL(mach_get_rtc_pll);
+EXPORT_SYMBOL(mach_set_rtc_pll);
+
 #if !IS_BUILTIN(CONFIG_RTC_DRV_GENERIC)
 void read_persistent_clock64(struct timespec64 *ts)
 {
arch/mips/kernel/mips-cpc.c +1 -0
index 17aff13cd7ce..3e386f7e1545 100644
@@ -28,6 +28,7 @@ phys_addr_t __weak mips_cpc_default_phys_base(void)
 	cpc_node = of_find_compatible_node(of_root, NULL, "mti,mips-cpc");
 	if (cpc_node) {
 		err = of_address_to_resource(cpc_node, 0, &res);
+		of_node_put(cpc_node);
 		if (!err)
 			return res.start;
 	}
arch/powerpc/Kconfig +0 -2
index b779603978e1..e49ef5b1857e 100644
@@ -211,7 +211,6 @@ config PPC
 	select HAVE_HARDLOCKUP_DETECTOR_PERF	if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH
 	select HAVE_HW_BREAKPOINT		if PERF_EVENTS && (PPC_BOOK3S || PPC_8xx)
 	select HAVE_IOREMAP_PROT
-	select HAVE_IRQ_EXIT_ON_IRQ_STACK
 	select HAVE_IRQ_TIME_ACCOUNTING
 	select HAVE_KERNEL_GZIP
 	select HAVE_KERNEL_LZMA			if DEFAULT_UIMAGE
@@ -764,7 +763,6 @@ config THREAD_SHIFT
 	range 13 15
 	default "15" if PPC_256K_PAGES
 	default "14" if PPC64
-	default "14" if KASAN
 	default "13"
 	help
 	  Used to define the stack size. The default is almost always what you
arch/powerpc/include/asm/thread_info.h +8 -2
index d6e649b3c70b..bc3e1de9d08b 100644
@@ -14,10 +14,16 @@
 
 #ifdef __KERNEL__
 
-#if defined(CONFIG_VMAP_STACK) && CONFIG_THREAD_SHIFT < PAGE_SHIFT
+#ifdef CONFIG_KASAN
+#define MIN_THREAD_SHIFT	(CONFIG_THREAD_SHIFT + 1)
+#else
+#define MIN_THREAD_SHIFT	CONFIG_THREAD_SHIFT
+#endif
+
+#if defined(CONFIG_VMAP_STACK) && MIN_THREAD_SHIFT < PAGE_SHIFT
 #define THREAD_SHIFT		PAGE_SHIFT
 #else
-#define THREAD_SHIFT		CONFIG_THREAD_SHIFT
+#define THREAD_SHIFT		MIN_THREAD_SHIFT
 #endif
 
 #define THREAD_SIZE		(1 << THREAD_SHIFT)
arch/powerpc/kernel/ptrace/ptrace-fpu.c +14 -6
index 5dca19361316..09c49632bfe5 100644
@@ -17,9 +17,13 @@ int ptrace_get_fpr(struct task_struct *child, int index, unsigned long *data)
 
 #ifdef CONFIG_PPC_FPU_REGS
 	flush_fp_to_thread(child);
-	if (fpidx < (PT_FPSCR - PT_FPR0))
-		memcpy(data, &child->thread.TS_FPR(fpidx), sizeof(long));
-	else
+	if (fpidx < (PT_FPSCR - PT_FPR0)) {
+		if (IS_ENABLED(CONFIG_PPC32))
+			// On 32-bit the index we are passed refers to 32-bit words
+			*data = ((u32 *)child->thread.fp_state.fpr)[fpidx];
+		else
+			memcpy(data, &child->thread.TS_FPR(fpidx), sizeof(long));
+	} else
 		*data = child->thread.fp_state.fpscr;
 #else
 	*data = 0;
@@ -39,9 +43,13 @@ int ptrace_put_fpr(struct task_struct *child, int index, unsigned long data)
 
 #ifdef CONFIG_PPC_FPU_REGS
 	flush_fp_to_thread(child);
-	if (fpidx < (PT_FPSCR - PT_FPR0))
-		memcpy(&child->thread.TS_FPR(fpidx), &data, sizeof(long));
-	else
+	if (fpidx < (PT_FPSCR - PT_FPR0)) {
+		if (IS_ENABLED(CONFIG_PPC32))
+			// On 32-bit the index we are passed refers to 32-bit words
+			((u32 *)child->thread.fp_state.fpr)[fpidx] = data;
+		else
+			memcpy(&child->thread.TS_FPR(fpidx), &data, sizeof(long));
+	} else
 		child->thread.fp_state.fpscr = data;
 #endif
 
arch/powerpc/kernel/ptrace/ptrace.c +3 -0
index c43f77e2ac31..6d45fa288015 100644
@@ -445,4 +445,7 @@ void __init pt_regs_check(void)
 	 * real registers.
 	 */
 	BUILD_BUG_ON(PT_DSCR < sizeof(struct user_pt_regs) / sizeof(unsigned long));
+
+	// ptrace_get/put_fpr() rely on PPC32 and VSX being incompatible
+	BUILD_BUG_ON(IS_ENABLED(CONFIG_PPC32) && IS_ENABLED(CONFIG_VSX));
 }
arch/riscv/kernel/efi.c +1 -1
index 024159298231..1aa540350abd 100644
@@ -65,7 +65,7 @@ static int __init set_permissions(pte_t *ptep, unsigned long addr, void *data)
 
 	if (md->attribute & EFI_MEMORY_RO) {
 		val = pte_val(pte) & ~_PAGE_WRITE;
-		val = pte_val(pte) | _PAGE_READ;
+		val |= _PAGE_READ;
 		pte = __pte(val);
 	}
 	if (md->attribute & EFI_MEMORY_XP) {
arch/riscv/kernel/machine_kexec.c +3 -1
index cbef0fc73afa..df8e24559035 100644
@@ -65,7 +65,9 @@ machine_kexec_prepare(struct kimage *image)
 		if (image->segment[i].memsz <= sizeof(fdt))
 			continue;
 
-		if (copy_from_user(&fdt, image->segment[i].buf, sizeof(fdt)))
+		if (image->file_mode)
+			memcpy(&fdt, image->segment[i].buf, sizeof(fdt));
+		else if (copy_from_user(&fdt, image->segment[i].buf, sizeof(fdt)))
 			continue;
 
 		if (fdt_check_header(&fdt))
arch/s390/crypto/aes_s390.c +2 -2
index 54c7536f2482..1023e9d43d44 100644
@@ -701,7 +701,7 @@ static inline void _gcm_sg_unmap_and_advance(struct gcm_sg_walk *gw,
 					     unsigned int nbytes)
 {
 	gw->walk_bytes_remain -= nbytes;
-	scatterwalk_unmap(&gw->walk);
+	scatterwalk_unmap(gw->walk_ptr);
 	scatterwalk_advance(&gw->walk, nbytes);
 	scatterwalk_done(&gw->walk, 0, gw->walk_bytes_remain);
 	gw->walk_ptr = NULL;
@@ -776,7 +776,7 @@ static int gcm_out_walk_go(struct gcm_sg_walk *gw, unsigned int minbytesneeded)
 		goto out;
 	}
 
-	scatterwalk_unmap(&gw->walk);
+	scatterwalk_unmap(gw->walk_ptr);
 	gw->walk_ptr = NULL;
 
 	gw->ptr = gw->buf;
arch/s390/kernel/entry.S +5 -1
index 01bae1d51113..3bf8aeeec96f 100644
@@ -264,6 +264,10 @@ ENTRY(sie64a)
 	BPEXIT	__SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
 .Lsie_entry:
 	sie	0(%r14)
+# Let the next instruction be NOP to avoid triggering a machine check
+# and handling it in a guest as result of the instruction execution.
+	nopr	7
+.Lsie_leave:
 	BPOFF
 	BPENTER	__SF_SIE_FLAGS(%r15),(_TIF_ISOLATE_BP|_TIF_ISOLATE_BP_GUEST)
 .Lsie_skip:
@@ -563,7 +567,7 @@ ENTRY(mcck_int_handler)
 	jno	.Lmcck_panic
 #if IS_ENABLED(CONFIG_KVM)
 	OUTSIDE	%r9,.Lsie_gmap,.Lsie_done,6f
-	OUTSIDE	%r9,.Lsie_entry,.Lsie_skip,4f
+	OUTSIDE	%r9,.Lsie_entry,.Lsie_leave,4f
 	oi	__LC_CPU_FLAGS+7, _CIF_MCCK_GUEST
 	j	5f
 4:	CHKSTG	.Lmcck_panic
arch/s390/mm/gmap.c +14 -0
index dfee0ebb2fac..88f6d923ee45 100644
@@ -2601,6 +2601,18 @@ static int __s390_enable_skey_pte(pte_t *pte, unsigned long addr,
 	return 0;
 }
 
+/*
+ * Give a chance to schedule after setting a key to 256 pages.
+ * We only hold the mm lock, which is a rwsem and the kvm srcu.
+ * Both can sleep.
+ */
+static int __s390_enable_skey_pmd(pmd_t *pmd, unsigned long addr,
+				  unsigned long next, struct mm_walk *walk)
+{
+	cond_resched();
+	return 0;
+}
+
 static int __s390_enable_skey_hugetlb(pte_t *pte, unsigned long addr,
 				      unsigned long hmask, unsigned long next,
 				      struct mm_walk *walk)
@@ -2623,12 +2635,14 @@ static int __s390_enable_skey_hugetlb(pte_t *pte, unsigned long addr,
 	end = start + HPAGE_SIZE - 1;
 	__storage_key_init_range(start, end);
 	set_bit(PG_arch_1, &page->flags);
+	cond_resched();
 	return 0;
 }
 
 static const struct mm_walk_ops enable_skey_walk_ops = {
 	.hugetlb_entry		= __s390_enable_skey_hugetlb,
 	.pte_entry		= __s390_enable_skey_pte,
+	.pmd_entry		= __s390_enable_skey_pmd,
 };
 
 int s390_enable_skey(void)
arch/um/drivers/chan_kern.c +5 -5
index 62997055c454..26a702a06515 100644
@@ -133,7 +133,7 @@ static void line_timer_cb(struct work_struct *work)
 	struct line *line = container_of(work, struct line, task.work);
 
 	if (!line->throttled)
-		chan_interrupt(line, line->driver->read_irq);
+		chan_interrupt(line, line->read_irq);
 }
 
 int enable_chan(struct line *line)
@@ -195,9 +195,9 @@ void free_irqs(void)
 		chan = list_entry(ele, struct chan, free_list);
 
 		if (chan->input && chan->enabled)
-			um_free_irq(chan->line->driver->read_irq, chan);
+			um_free_irq(chan->line->read_irq, chan);
 		if (chan->output && chan->enabled)
-			um_free_irq(chan->line->driver->write_irq, chan);
+			um_free_irq(chan->line->write_irq, chan);
 		chan->enabled = 0;
 	}
 }
@@ -215,9 +215,9 @@ static void close_one_chan(struct chan *chan, int delay_free_irq)
 		spin_unlock_irqrestore(&irqs_to_free_lock, flags);
 	} else {
 		if (chan->input && chan->enabled)
-			um_free_irq(chan->line->driver->read_irq, chan);
+			um_free_irq(chan->line->read_irq, chan);
 		if (chan->output && chan->enabled)
-			um_free_irq(chan->line->driver->write_irq, chan);
+			um_free_irq(chan->line->write_irq, chan);
 		chan->enabled = 0;
 	}
 	if (chan->ops->close != NULL)
arch/um/drivers/line.c +13 -9
index 8febf95da96e..02b0befd6763 100644
@@ -139,7 +139,7 @@ static int flush_buffer(struct line *line)
 		count = line->buffer + LINE_BUFSIZE - line->head;
 
 		n = write_chan(line->chan_out, line->head, count,
-			       line->driver->write_irq);
+			       line->write_irq);
 		if (n < 0)
 			return n;
 		if (n == count) {
@@ -156,7 +156,7 @@ static int flush_buffer(struct line *line)
 
 	count = line->tail - line->head;
 	n = write_chan(line->chan_out, line->head, count,
-		       line->driver->write_irq);
+		       line->write_irq);
 
 	if (n < 0)
 		return n;
@@ -195,7 +195,7 @@ int line_write(struct tty_struct *tty, const unsigned char *buf, int len)
 		ret = buffer_data(line, buf, len);
 	else {
 		n = write_chan(line->chan_out, buf, len,
-			       line->driver->write_irq);
+			       line->write_irq);
 		if (n < 0) {
 			ret = n;
 			goto out_up;
@@ -215,7 +215,7 @@ void line_throttle(struct tty_struct *tty)
 {
 	struct line *line = tty->driver_data;
 
-	deactivate_chan(line->chan_in, line->driver->read_irq);
+	deactivate_chan(line->chan_in, line->read_irq);
 	line->throttled = 1;
 }
 
@@ -224,7 +224,7 @@ void line_unthrottle(struct tty_struct *tty)
 	struct line *line = tty->driver_data;
 
 	line->throttled = 0;
-	chan_interrupt(line, line->driver->read_irq);
+	chan_interrupt(line, line->read_irq);
 }
 
 static irqreturn_t line_write_interrupt(int irq, void *data)
@@ -260,19 +260,23 @@ int line_setup_irq(int fd, int input, int output, struct line *line, void *data)
 	int err;
 
 	if (input) {
-		err = um_request_irq(driver->read_irq, fd, IRQ_READ,
-				     line_interrupt, IRQF_SHARED,
+		err = um_request_irq(UM_IRQ_ALLOC, fd, IRQ_READ,
+				     line_interrupt, 0,
 				     driver->read_irq_name, data);
 		if (err < 0)
 			return err;
+
+		line->read_irq = err;
 	}
 
 	if (output) {
-		err = um_request_irq(driver->write_irq, fd, IRQ_WRITE,
-				     line_write_interrupt, IRQF_SHARED,
+		err = um_request_irq(UM_IRQ_ALLOC, fd, IRQ_WRITE,
+				     line_write_interrupt, 0,
 				     driver->write_irq_name, data);
 		if (err < 0)
 			return err;
+
+		line->write_irq = err;
 	}
 
 	return 0;
arch/um/drivers/line.h +2 -2
index bdb16b96e76f..f15be75a3bf3 100644
@@ -23,9 +23,7 @@ struct line_driver {
 	const short minor_start;
 	const short type;
 	const short subtype;
-	const int read_irq;
 	const char *read_irq_name;
-	const int write_irq;
 	const char *write_irq_name;
 	struct mc_device mc;
 	struct tty_driver *driver;
@@ -35,6 +33,8 @@ struct line {
 	struct tty_port port;
 	int valid;
 
+	int read_irq, write_irq;
+
 	char *init_str;
 	struct list_head chan_list;
 	struct chan *chan_in, *chan_out;
arch/um/drivers/ssl.c +0 -2
index 41eae2e8fb65..8514966778d5 100644
@@ -47,9 +47,7 @@ static struct line_driver driver = {
 	.minor_start 		= 64,
 	.type 		 	= TTY_DRIVER_TYPE_SERIAL,
 	.subtype 	 	= 0,
-	.read_irq 		= SSL_IRQ,
 	.read_irq_name 		= "ssl",
-	.write_irq 		= SSL_WRITE_IRQ,
 	.write_irq_name 	= "ssl-write",
 	.mc  = {
 		.list		= LIST_HEAD_INIT(driver.mc.list),
arch/um/drivers/stdio_console.c +0 -2
index e8b762f4d8c2..489d5a746ed3 100644
@@ -53,9 +53,7 @@ static struct line_driver driver = {
 	.minor_start 		= 0,
 	.type 		 	= TTY_DRIVER_TYPE_CONSOLE,
 	.subtype 	 	= SYSTEM_TYPE_CONSOLE,
-	.read_irq 		= CONSOLE_IRQ,
 	.read_irq_name 		= "console",
-	.write_irq 		= CONSOLE_WRITE_IRQ,
 	.write_irq_name 	= "console-write",
 	.mc  = {
 		.list		= LIST_HEAD_INIT(driver.mc.list),
arch/um/include/asm/irq.h +9 -13
index e187c789369d..749dfe8512e8 100644
@@ -4,19 +4,15 @@
 
 #define TIMER_IRQ		0
 #define UMN_IRQ			1
-#define CONSOLE_IRQ		2
-#define CONSOLE_WRITE_IRQ	3
-#define UBD_IRQ			4
-#define UM_ETH_IRQ		5
-#define SSL_IRQ			6
-#define SSL_WRITE_IRQ		7
-#define ACCEPT_IRQ		8
-#define MCONSOLE_IRQ		9
-#define WINCH_IRQ		10
-#define SIGIO_WRITE_IRQ 	11
-#define TELNETD_IRQ 		12
-#define XTERM_IRQ 		13
-#define RANDOM_IRQ 		14
+#define UBD_IRQ			2
+#define UM_ETH_IRQ		3
+#define ACCEPT_IRQ		4
+#define MCONSOLE_IRQ		5
+#define WINCH_IRQ		6
+#define SIGIO_WRITE_IRQ 	7
+#define TELNETD_IRQ 		8
+#define XTERM_IRQ 		9
+#define RANDOM_IRQ 		10
 
 #ifdef CONFIG_UML_NET_VECTOR
 
arch/x86/include/asm/cpufeature.h +1 -1
index 1261842d006c..49a3b122279e 100644
@@ -51,7 +51,7 @@ extern const char * const x86_power_flags[32];
 extern const char * const x86_bug_flags[NBUGINTS*32];
 
 #define test_cpu_cap(c, bit)						\
-	 test_bit(bit, (unsigned long *)((c)->x86_capability))
+	 arch_test_bit(bit, (unsigned long *)((c)->x86_capability))
 
 /*
  * There are 32 bits/features in each mask word.  The high bits
arch/x86/include/asm/uaccess.h +1 -1
index 1c14bcce88f2..729ecf1e546c 100644
@@ -466,7 +466,7 @@ do {									\
 		       [ptr] "+m" (*_ptr),				\
 		       [old] "+a" (__old)				\
 		     : [new] ltype (__new)				\
-		     : "memory", "cc");					\
+		     : "memory");					\
 	if (unlikely(__err))						\
 		goto label;						\
 	if (unlikely(!success))						\
block/bio.c +6 -3
index 342b1cf5d713..dc6940621d7d 100644
@@ -668,6 +668,7 @@ static void bio_alloc_cache_destroy(struct bio_set *bs)
 		bio_alloc_cache_prune(cache, -1U);
 	}
 	free_percpu(bs->cache);
+	bs->cache = NULL;
 }
 
 /**
@@ -1308,10 +1309,12 @@ void bio_copy_data_iter(struct bio *dst, struct bvec_iter *dst_iter,
 		struct bio_vec src_bv = bio_iter_iovec(src, *src_iter);
 		struct bio_vec dst_bv = bio_iter_iovec(dst, *dst_iter);
 		unsigned int bytes = min(src_bv.bv_len, dst_bv.bv_len);
-		void *src_buf;
+		void *src_buf = bvec_kmap_local(&src_bv);
+		void *dst_buf = bvec_kmap_local(&dst_bv);
 
-		src_buf = bvec_kmap_local(&src_bv);
-		memcpy_to_bvec(&dst_bv, src_buf);
+		memcpy(dst_buf, src_buf, bytes);
+
+		kunmap_local(dst_buf);
 		kunmap_local(src_buf);
 
 		bio_advance_iter_single(src, src_iter, bytes);
block/blk-core.c +1 -1
index 779b4a1f66ac..45d750eb2628 100644
@@ -992,7 +992,7 @@ int bio_poll(struct bio *bio, struct io_comp_batch *iob, unsigned int flags)
 	if (current->plug)
 		blk_flush_plug(current->plug, false);
 
-	if (blk_queue_enter(q, BLK_MQ_REQ_NOWAIT))
+	if (bio_queue_enter(bio))
 		return 0;
 	if (WARN_ON_ONCE(!queue_is_mq(q)))
 		ret = 0;	/* not yet implemented, should not happen */
block/blk-mq.c +5 -5
index 0aa20df31e36..f18e1c9c3f4a 100644
@@ -132,7 +132,8 @@ static bool blk_mq_check_inflight(struct request *rq, void *priv,
 {
 	struct mq_inflight *mi = priv;
 
-	if ((!mi->part->bd_partno || rq->part == mi->part) &&
+	if (rq->part && blk_do_io_stat(rq) &&
+	    (!mi->part->bd_partno || rq->part == mi->part) &&
 	    blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT)
 		mi->inflight[rq_data_dir(rq)]++;
 
@@ -2114,8 +2115,7 @@ static bool blk_mq_has_sqsched(struct request_queue *q)
  */
 static struct blk_mq_hw_ctx *blk_mq_get_sq_hctx(struct request_queue *q)
 {
-	struct blk_mq_hw_ctx *hctx;
-
+	struct blk_mq_ctx *ctx = blk_mq_get_ctx(q);
 	/*
 	 * If the IO scheduler does not respect hardware queues when
 	 * dispatching, we just don't bother with multiple HW queues and
@@ -2123,8 +2123,8 @@ static struct blk_mq_hw_ctx *blk_mq_get_sq_hctx(struct request_queue *q)
 	 * just causes lock contention inside the scheduler and pointless cache
 	 * bouncing.
 	 */
-	hctx = blk_mq_map_queue_type(q, HCTX_TYPE_DEFAULT,
-				     raw_smp_processor_id());
+	struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, 0, ctx);
+
 	if (!blk_mq_hctx_stopped(hctx))
 		return hctx;
 	return NULL;
block/genhd.c +2 -0
index 9d9d702d0778..c284c1cf3396 100644
@@ -380,6 +380,8 @@ int disk_scan_partitions(struct gendisk *disk, fmode_t mode)
 
 	if (disk->flags & (GENHD_FL_NO_PART | GENHD_FL_HIDDEN))
 		return -EINVAL;
+	if (test_bit(GD_SUPPRESS_PART_SCAN, &disk->state))
+		return -EINVAL;
 	if (disk->open_partitions)
 		return -EBUSY;
 
drivers/ata/libata-core.c +13 -8
index 760c0d81d148..a3a547ed0eb0 100644
@@ -2003,16 +2003,16 @@ unsigned int ata_read_log_page(struct ata_device *dev, u8 log,
 	return err_mask;
 }
 
-static bool ata_log_supported(struct ata_device *dev, u8 log)
+static int ata_log_supported(struct ata_device *dev, u8 log)
 {
 	struct ata_port *ap = dev->link->ap;
 
 	if (dev->horkage & ATA_HORKAGE_NO_LOG_DIR)
-		return false;
+		return 0;
 
 	if (ata_read_log_page(dev, ATA_LOG_DIRECTORY, 0, ap->sector_buf, 1))
-		return false;
-	return get_unaligned_le16(&ap->sector_buf[log * 2]) ? true : false;
+		return 0;
+	return get_unaligned_le16(&ap->sector_buf[log * 2]);
 }
 
 static bool ata_identify_page_supported(struct ata_device *dev, u8 page)
@@ -2448,15 +2448,20 @@ static void ata_dev_config_cpr(struct ata_device *dev)
 	struct ata_cpr_log *cpr_log = NULL;
 	u8 *desc, *buf = NULL;
 
-	if (ata_id_major_version(dev->id) < 11 ||
-	    !ata_log_supported(dev, ATA_LOG_CONCURRENT_POSITIONING_RANGES))
+	if (ata_id_major_version(dev->id) < 11)
+		goto out;
+
+	buf_len = ata_log_supported(dev, ATA_LOG_CONCURRENT_POSITIONING_RANGES);
+	if (buf_len == 0)
 		goto out;
 
 	/*
 	 * Read the concurrent positioning ranges log (0x47). We can have at
-	 * most 255 32B range descriptors plus a 64B header.
+	 * most 255 32B range descriptors plus a 64B header. This log varies in
+	 * size, so use the size reported in the GPL directory. Reading beyond
+	 * the supported length will result in an error.
 	 */
-	buf_len = (64 + 255 * 32 + 511) & ~511;
+	buf_len <<= 9;
 	buf = kzalloc(buf_len, GFP_KERNEL);
 	if (!buf)
 		goto out;
drivers/ata/libata-scsi.c +1 -1
index ed8be585a98f..673f95a21eb2 100644
@@ -2119,7 +2119,7 @@ static unsigned int ata_scsiop_inq_b9(struct ata_scsi_args *args, u8 *rbuf)
 
 	/* SCSI Concurrent Positioning Ranges VPD page: SBC-5 rev 1 or later */
 	rbuf[1] = 0xb9;
-	put_unaligned_be16(64 + (int)cpr_log->nr_cpr * 32 - 4, &rbuf[3]);
+	put_unaligned_be16(64 + (int)cpr_log->nr_cpr * 32 - 4, &rbuf[2]);
 
 	for (i = 0; i < cpr_log->nr_cpr; i++, desc += 32) {
 		desc[0] = cpr_log->cpr[i].num;
drivers/ata/libata-transport.c +1 -1
index ca129854a88c..c38027887499 100644
@@ -196,7 +196,7 @@ static struct {
 	{ XFER_PIO_0,			"XFER_PIO_0" },
 	{ XFER_PIO_SLOW,		"XFER_PIO_SLOW" }
 };
-ata_bitfield_name_match(xfer,ata_xfer_names)
+ata_bitfield_name_search(xfer, ata_xfer_names)
 
 /*
  * ATA Port attributes
drivers/ata/pata_octeon_cf.c +3 -0
index 05c2ab375756..a2abf6c9a085 100644
@@ -856,12 +856,14 @@ static int octeon_cf_probe(struct platform_device *pdev)
 				int i;
 				res_dma = platform_get_resource(dma_dev, IORESOURCE_MEM, 0);
 				if (!res_dma) {
+					put_device(&dma_dev->dev);
 					of_node_put(dma_node);
 					return -EINVAL;
 				}
 				cf_port->dma_base = (u64)devm_ioremap(&pdev->dev, res_dma->start,
 									 resource_size(res_dma));
 				if (!cf_port->dma_base) {
+					put_device(&dma_dev->dev);
 					of_node_put(dma_node);
 					return -EINVAL;
 				}
@@ -871,6 +873,7 @@ static int octeon_cf_probe(struct platform_device *pdev)
 					irq = i;
 					irq_handler = octeon_cf_interrupt;
 				}
+				put_device(&dma_dev->dev);
 			}
 			of_node_put(dma_node);
 		}
drivers/base/bus.c +3 -1
index 97936ec49bde..7ca47e5b3c1f 100644
@@ -617,7 +617,7 @@ int bus_add_driver(struct device_driver *drv)
 	if (drv->bus->p->drivers_autoprobe) {
 		error = driver_attach(drv);
 		if (error)
-			goto out_unregister;
+			goto out_del_list;
 	}
 	module_add_driver(drv->owner, drv);
 
@@ -644,6 +644,8 @@ int bus_add_driver(struct device_driver *drv)
 
 	return 0;
 
+out_del_list:
+	klist_del(&priv->knode_bus);
 out_unregister:
 	kobject_put(&priv->kobj);
 	/* drv->p is freed in driver_release()  */
drivers/base/dd.c +4 -6
index 7e079fa3795b..86fd2ea35656 100644
@@ -257,7 +257,6 @@ DEFINE_SHOW_ATTRIBUTE(deferred_devs);
 
 int driver_deferred_probe_timeout;
 EXPORT_SYMBOL_GPL(driver_deferred_probe_timeout);
-static DECLARE_WAIT_QUEUE_HEAD(probe_timeout_waitqueue);
 
 static int __init deferred_probe_timeout_setup(char *str)
 {
@@ -312,7 +311,6 @@ static void deferred_probe_timeout_work_func(struct work_struct *work)
 	list_for_each_entry(p, &deferred_probe_pending_list, deferred_probe)
 		dev_info(p->device, "deferred probe pending\n");
 	mutex_unlock(&deferred_probe_mutex);
-	wake_up_all(&probe_timeout_waitqueue);
 }
 static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_timeout_work_func);
 
@@ -720,9 +718,6 @@ int driver_probe_done(void)
  */
 void wait_for_device_probe(void)
 {
-	/* wait for probe timeout */
-	wait_event(probe_timeout_waitqueue, !driver_deferred_probe_timeout);
-
 	/* wait for the deferred probe workqueue to finish */
 	flush_work(&deferred_probe_work);
 
@@ -945,6 +940,7 @@ static void __device_attach_async_helper(void *_dev, async_cookie_t cookie)
 static int __device_attach(struct device *dev, bool allow_async)
 {
 	int ret = 0;
+	bool async = false;
 
 	device_lock(dev);
 	if (dev->p->dead) {
@@ -983,7 +979,7 @@ static int __device_attach(struct device *dev, bool allow_async)
 			 */
 			dev_dbg(dev, "scheduling asynchronous probe\n");
 			get_device(dev);
-			async_schedule_dev(__device_attach_async_helper, dev);
+			async = true;
 		} else {
 			pm_request_idle(dev);
 		}
@@ -993,6 +989,8 @@ static int __device_attach(struct device *dev, bool allow_async)
 	}
 out_unlock:
 	device_unlock(dev);
+	if (async)
+		async_schedule_dev(__device_attach_async_helper, dev);
 	return ret;
 }
 
drivers/block/loop.c +4 -4
index d46a3d5d0c2e..3411d3c0a5b0 100644
@@ -1067,7 +1067,7 @@ static int loop_configure(struct loop_device *lo, fmode_t mode,
 		lo->lo_flags |= LO_FLAGS_PARTSCAN;
 	partscan = lo->lo_flags & LO_FLAGS_PARTSCAN;
 	if (partscan)
-		lo->lo_disk->flags &= ~GENHD_FL_NO_PART;
+		clear_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
 
 	loop_global_unlock(lo, is_loop);
 	if (partscan)
@@ -1186,7 +1186,7 @@ static void __loop_clr_fd(struct loop_device *lo, bool release)
 	 */
 	lo->lo_flags = 0;
 	if (!part_shift)
-		lo->lo_disk->flags |= GENHD_FL_NO_PART;
+		set_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
 	mutex_lock(&lo->lo_mutex);
 	lo->lo_state = Lo_unbound;
 	mutex_unlock(&lo->lo_mutex);
@@ -1296,7 +1296,7 @@ loop_set_status(struct loop_device *lo, const struct loop_info64 *info)
 
 	if (!err && (lo->lo_flags & LO_FLAGS_PARTSCAN) &&
 	     !(prev_lo_flags & LO_FLAGS_PARTSCAN)) {
-		lo->lo_disk->flags &= ~GENHD_FL_NO_PART;
+		clear_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
 		partscan = true;
 	}
 out_unlock:
@@ -2028,7 +2028,7 @@ static int loop_add(int i)
 	 * userspace tools. Parameters like this in general should be avoided.
 	 */
 	if (!part_shift)
-		disk->flags |= GENHD_FL_NO_PART;
+		set_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
 	atomic_set(&lo->lo_refcnt, 0);
 	mutex_init(&lo->lo_mutex);
 	lo->lo_number		= i;
drivers/block/nbd.c +40 -15

140 lines not on this page · raw message

drivers/bus/ti-sysc.c +3 -1
index 7a1b1f9e4933..70d00cea9d22 100644
@@ -3395,7 +3395,9 @@ static int sysc_remove(struct platform_device *pdev)
 	struct sysc *ddata = platform_get_drvdata(pdev);
 	int error;
 
-	cancel_delayed_work_sync(&ddata->idle_work);
+	/* Device can still be enabled, see deferred idle quirk in probe */
+	if (cancel_delayed_work_sync(&ddata->idle_work))
+		ti_sysc_idle(&ddata->idle_work.work);
 
 	error = pm_runtime_resume_and_get(ddata->dev);
 	if (error < 0) {
drivers/char/hw_random/virtio-rng.c +2 -0
index e856df7e285c..a6f3a8a2aca6 100644
@@ -159,6 +159,8 @@ static int probe_common(struct virtio_device *vdev)
 		goto err_find;
 	}
 
+	virtio_device_ready(vdev);
+
 	/* we always have a pending entropy request */
 	request_entropy(vi);
 
drivers/char/random.c +7 -8
index d6aa4b57d985..634b980c47b7 100644
@@ -789,8 +789,8 @@ static void __cold _credit_init_bits(size_t bits)
  *
  **********************************************************************/
 
-static bool trust_cpu __ro_after_init = IS_ENABLED(CONFIG_RANDOM_TRUST_CPU);
-static bool trust_bootloader __ro_after_init = IS_ENABLED(CONFIG_RANDOM_TRUST_BOOTLOADER);
+static bool trust_cpu __initdata = IS_ENABLED(CONFIG_RANDOM_TRUST_CPU);
+static bool trust_bootloader __initdata = IS_ENABLED(CONFIG_RANDOM_TRUST_BOOTLOADER);
 static int __init parse_trust_cpu(char *arg)
 {
 	return kstrtobool(arg, &trust_cpu);
@@ -813,7 +813,7 @@ early_param("random.trust_bootloader", parse_trust_bootloader);
 int __init random_init(const char *command_line)
 {
 	ktime_t now = ktime_get_real();
-	unsigned int i, arch_bytes;
+	unsigned int i, arch_bits;
 	unsigned long entropy;
 
 #if defined(LATENT_ENTROPY_PLUGIN)
@@ -821,12 +821,12 @@ int __init random_init(const char *command_line)
 	_mix_pool_bytes(compiletime_seed, sizeof(compiletime_seed));
 #endif
 
-	for (i = 0, arch_bytes = BLAKE2S_BLOCK_SIZE;
+	for (i = 0, arch_bits = BLAKE2S_BLOCK_SIZE * 8;
 	     i < BLAKE2S_BLOCK_SIZE; i += sizeof(entropy)) {
 		if (!arch_get_random_seed_long_early(&entropy) &&
 		    !arch_get_random_long_early(&entropy)) {
 			entropy = random_get_entropy();
-			arch_bytes -= sizeof(entropy);
+			arch_bits -= sizeof(entropy) * 8;
 		}
 		_mix_pool_bytes(&entropy, sizeof(entropy));
 	}
@@ -838,7 +838,7 @@ int __init random_init(const char *command_line)
 	if (crng_ready())
 		crng_reseed();
 	else if (trust_cpu)
-		credit_init_bits(arch_bytes * 8);
+		_credit_init_bits(arch_bits);
 
 	return 0;
 }
@@ -886,13 +886,12 @@ EXPORT_SYMBOL_GPL(add_hwgenerator_randomness);
  * Handle random seed passed by bootloader, and credit it if
  * CONFIG_RANDOM_TRUST_BOOTLOADER is set.
  */
-void __cold add_bootloader_randomness(const void *buf, size_t len)
+void __init add_bootloader_randomness(const void *buf, size_t len)
 {
 	mix_pool_bytes(buf, len);
 	if (trust_bootloader)
 		credit_init_bits(len * 8);
 }
-EXPORT_SYMBOL_GPL(add_bootloader_randomness);
 
 struct fast_pool {
 	struct work_struct mix;
drivers/char/xillybus/xillyusb.c +1 -0
index dc3551796e5e..39bcbfd908b4 100644
@@ -549,6 +549,7 @@ static void cleanup_dev(struct kref *kref)
 	if (xdev->workq)
 		destroy_workqueue(xdev->workq);
 
+	usb_put_dev(xdev->udev);
 	kfree(xdev->channels); /* Argument may be NULL, and that's fine */
 	kfree(xdev);
 }
drivers/clocksource/timer-oxnas-rps.c +1 -1
index 56c0cc32d0ac..d514b44e67dd 100644
@@ -236,7 +236,7 @@ static int __init oxnas_rps_timer_init(struct device_node *np)
 	}
 
 	rps->irq = irq_of_parse_and_map(np, 0);
-	if (rps->irq < 0) {
+	if (!rps->irq) {
 		ret = -EINVAL;
 		goto err_iomap;
 	}
drivers/clocksource/timer-riscv.c +1 -1
index 1767f8bf2013..593d5a957b69 100644
@@ -34,7 +34,7 @@ static int riscv_clock_next_event(unsigned long delta,
 static unsigned int riscv_clock_event_irq;
 static DEFINE_PER_CPU(struct clock_event_device, riscv_clock_event) = {
 	.name			= "riscv_timer_clockevent",
-	.features		= CLOCK_EVT_FEAT_ONESHOT,
+	.features		= CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_C3STOP,
 	.rating			= 100,
 	.set_next_event		= riscv_clock_next_event,
 };
drivers/clocksource/timer-sp804.c +5 -5
index 401d592e85f5..e6a87f4af2b5 100644
@@ -259,6 +259,11 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *time
 	struct clk *clk1, *clk2;
 	const char *name = of_get_property(np, "compatible", NULL);
 
+	if (initialized) {
+		pr_debug("%pOF: skipping further SP804 timer device\n", np);
+		return 0;
+	}
+
 	base = of_iomap(np, 0);
 	if (!base)
 		return -ENXIO;
@@ -270,11 +275,6 @@ static int __init sp804_of_init(struct device_node *np, struct sp804_timer *time
 	writel(0, timer1_base + timer->ctrl);
 	writel(0, timer2_base + timer->ctrl);
 
-	if (initialized || !of_device_is_available(np)) {
-		ret = -EINVAL;
-		goto err;
-	}
-
 	clk1 = of_clk_get(np, 0);
 	if (IS_ERR(clk1))
 		clk1 = NULL;
drivers/dma/idxd/dma.c +23 -0
index bfff59617d04..f9ed55011775 100644
@@ -87,6 +87,27 @@ static inline void idxd_prep_desc_common(struct idxd_wq *wq,
 	hw->completion_addr = compl;
 }
 
+static struct dma_async_tx_descriptor *
+idxd_dma_prep_interrupt(struct dma_chan *c, unsigned long flags)
+{
+	struct idxd_wq *wq = to_idxd_wq(c);
+	u32 desc_flags;
+	struct idxd_desc *desc;
+
+	if (wq->state != IDXD_WQ_ENABLED)
+		return NULL;
+
+	op_flag_setup(flags, &desc_flags);
+	desc = idxd_alloc_desc(wq, IDXD_OP_BLOCK);
+	if (IS_ERR(desc))
+		return NULL;
+
+	idxd_prep_desc_common(wq, desc->hw, DSA_OPCODE_NOOP,
+			      0, 0, 0, desc->compl_dma, desc_flags);
+	desc->txd.flags = flags;
+	return &desc->txd;
+}
+
 static struct dma_async_tx_descriptor *
 idxd_dma_submit_memcpy(struct dma_chan *c, dma_addr_t dma_dest,
 		       dma_addr_t dma_src, size_t len, unsigned long flags)
@@ -193,10 +214,12 @@ int idxd_register_dma_device(struct idxd_device *idxd)
 	INIT_LIST_HEAD(&dma->channels);
 	dma->dev = dev;
 
+	dma_cap_set(DMA_INTERRUPT, dma->cap_mask);
 	dma_cap_set(DMA_PRIVATE, dma->cap_mask);
 	dma_cap_set(DMA_COMPLETION_NO_ORDER, dma->cap_mask);
 	dma->device_release = idxd_dma_release;
 
+	dma->device_prep_dma_interrupt = idxd_dma_prep_interrupt;
 	if (idxd->hw.opcap.bits[0] & IDXD_OPCAP_MEMMOVE) {
 		dma_cap_set(DMA_MEMCPY, dma->cap_mask);
 		dma->device_prep_dma_memcpy = idxd_dma_submit_memcpy;
drivers/dma/xilinx/zynqmp_dma.c +3 -2
index 7aa63b652027..3ffa7f37c701 100644
@@ -229,7 +229,7 @@ struct zynqmp_dma_chan {
 	bool is_dmacoherent;
 	struct tasklet_struct tasklet;
 	bool idle;
-	u32 desc_size;
+	size_t desc_size;
 	bool err;
 	u32 bus_width;
 	u32 src_burst_len;
@@ -486,7 +486,8 @@ static int zynqmp_dma_alloc_chan_resources(struct dma_chan *dchan)
 	}
 
 	chan->desc_pool_v = dma_alloc_coherent(chan->dev,
-					       (2 * chan->desc_size * ZYNQMP_DMA_NUM_DESCS),
+					       (2 * ZYNQMP_DMA_DESC_SIZE(chan) *
+					       ZYNQMP_DMA_NUM_DESCS),
 					       &chan->desc_pool_p, GFP_KERNEL);
 	if (!chan->desc_pool_v)
 		return -ENOMEM;
drivers/extcon/extcon-axp288.c +2 -2
index 7c6d5857ff25..180be768c215 100644
@@ -394,8 +394,8 @@ static int axp288_extcon_probe(struct platform_device *pdev)
 		if (adev) {
 			info->id_extcon = extcon_get_extcon_dev(acpi_dev_name(adev));
 			put_device(&adev->dev);
-			if (!info->id_extcon)
-				return -EPROBE_DEFER;
+			if (IS_ERR(info->id_extcon))
+				return PTR_ERR(info->id_extcon);
 
 			dev_info(dev, "controlling USB role\n");
 		} else {
drivers/extcon/extcon-ptn5150.c +11 -0
index 5b9a3cf8df26..2a7874108df8 100644
@@ -194,6 +194,13 @@ static int ptn5150_init_dev_type(struct ptn5150_info *info)
 	return 0;
 }
 
+static void ptn5150_work_sync_and_put(void *data)
+{
+	struct ptn5150_info *info = data;
+
+	cancel_work_sync(&info->irq_work);
+}
+
 static int ptn5150_i2c_probe(struct i2c_client *i2c)
 {
 	struct device *dev = &i2c->dev;
@@ -284,6 +291,10 @@ static int ptn5150_i2c_probe(struct i2c_client *i2c)
 	if (ret)
 		return -EINVAL;
 
+	ret = devm_add_action_or_reset(dev, ptn5150_work_sync_and_put, info);
+	if (ret)
+		return ret;
+
 	/*
 	 * Update current extcon state if for example OTG connection was there
 	 * before the probe
drivers/extcon/extcon.c +20 -13
index a09e704fd0fa..97e35c32bfa5 100644
@@ -851,6 +851,8 @@ EXPORT_SYMBOL_GPL(extcon_set_property_capability);
  * @extcon_name:	the extcon name provided with extcon_dev_register()
  *
  * Return the pointer of extcon device if success or ERR_PTR(err) if fail.
+ * NOTE: This function returns -EPROBE_DEFER so it may only be called from
+ * probe() functions.
  */
 struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name)
 {
@@ -864,7 +866,7 @@ struct extcon_dev *extcon_get_extcon_dev(const char *extcon_name)
 		if (!strcmp(sd->name, extcon_name))
 			goto out;
 	}
-	sd = NULL;
+	sd = ERR_PTR(-EPROBE_DEFER);
 out:
 	mutex_unlock(&extcon_dev_list_lock);
 	return sd;
@@ -1218,19 +1220,14 @@ int extcon_dev_register(struct extcon_dev *edev)
 		edev->dev.type = &edev->extcon_dev_type;
 	}
 
-	ret = device_register(&edev->dev);
-	if (ret) {
-		put_device(&edev->dev);
-		goto err_dev;
-	}
-
 	spin_lock_init(&edev->lock);
-	edev->nh = devm_kcalloc(&edev->dev, edev->max_supported,
-				sizeof(*edev->nh), GFP_KERNEL);
-	if (!edev->nh) {
-		ret = -ENOMEM;
-		device_unregister(&edev->dev);
-		goto err_dev;
+	if (edev->max_supported) {
+		edev->nh = kcalloc(edev->max_supported, sizeof(*edev->nh),
+				GFP_KERNEL);
+		if (!edev->nh) {
+			ret = -ENOMEM;
+			goto err_alloc_nh;
+		}
 	}
 
 	for (index = 0; index < edev->max_supported; index++)
@@ -1241,6 +1238,12 @@ int extcon_dev_register(struct extcon_dev *edev)
 	dev_set_drvdata(&edev->dev, edev);
 	edev->state = 0;
 
+	ret = device_register(&edev->dev);
+	if (ret) {
+		put_device(&edev->dev);
+		goto err_dev;
+	}
+
 	mutex_lock(&extcon_dev_list_lock);
 	list_add(&edev->entry, &extcon_dev_list);
 	mutex_unlock(&extcon_dev_list_lock);
@@ -1248,6 +1251,9 @@ int extcon_dev_register(struct extcon_dev *edev)
 	return 0;
 
 err_dev:
+	if (edev->max_supported)
+		kfree(edev->nh);
+err_alloc_nh:
 	if (edev->max_supported)
 		kfree(edev->extcon_dev_type.groups);
 err_alloc_groups:
@@ -1308,6 +1314,7 @@ void extcon_dev_unregister(struct extcon_dev *edev)
 	if (edev->max_supported) {
 		kfree(edev->extcon_dev_type.groups);
 		kfree(edev->cables);
+		kfree(edev->nh);
 	}
 
 	put_device(&edev->dev);
drivers/firmware/dmi-sysfs.c +1 -1
index 3a353776bd34..66727ad3361b 100644
@@ -604,7 +604,7 @@ static void __init dmi_sysfs_register_handle(const struct dmi_header *dh,
 				    "%d-%d", dh->type, entry->instance);
 
 	if (*ret) {
-		kfree(entry);
+		kobject_put(&entry->kobj);
 		return;
 	}
 
drivers/firmware/stratix10-svc.c +6 -6
index c4bf934e3553..33ab24cfd600 100644
@@ -941,17 +941,17 @@ EXPORT_SYMBOL_GPL(stratix10_svc_allocate_memory);
 void stratix10_svc_free_memory(struct stratix10_svc_chan *chan, void *kaddr)
 {
 	struct stratix10_svc_data_mem *pmem;
-	size_t size = 0;
 
 	list_for_each_entry(pmem, &svc_data_mem, node)
 		if (pmem->vaddr == kaddr) {
-			size = pmem->size;
-			break;
+			gen_pool_free(chan->ctrl->genpool,
+				       (unsigned long)kaddr, pmem->size);
+			pmem->vaddr = NULL;
+			list_del(&pmem->node);
+			return;
 		}
 
-	gen_pool_free(chan->ctrl->genpool, (unsigned long)kaddr, size);
-	pmem->vaddr = NULL;
-	list_del(&pmem->node);
+	list_del(&svc_data_mem);
 }
 EXPORT_SYMBOL_GPL(stratix10_svc_free_memory);
 
drivers/gpio/gpio-pca953x.c +11 -8
index 8726921a1129..33683295a0bf 100644
@@ -1108,20 +1108,21 @@ static int pca953x_regcache_sync(struct device *dev)
 {
 	struct pca953x_chip *chip = dev_get_drvdata(dev);
 	int ret;
+	u8 regaddr;
 
 	/*
 	 * The ordering between direction and output is important,
 	 * sync these registers first and only then sync the rest.
 	 */
-	ret = regcache_sync_region(chip->regmap, chip->regs->direction,
-				   chip->regs->direction + NBANK(chip));
+	regaddr = pca953x_recalc_addr(chip, chip->regs->direction, 0);
+	ret = regcache_sync_region(chip->regmap, regaddr, regaddr + NBANK(chip));
 	if (ret) {
 		dev_err(dev, "Failed to sync GPIO dir registers: %d\n", ret);
 		return ret;
 	}
 
-	ret = regcache_sync_region(chip->regmap, chip->regs->output,
-				   chip->regs->output + NBANK(chip));
+	regaddr = pca953x_recalc_addr(chip, chip->regs->output, 0);
+	ret = regcache_sync_region(chip->regmap, regaddr, regaddr + NBANK(chip));
 	if (ret) {
 		dev_err(dev, "Failed to sync GPIO out registers: %d\n", ret);
 		return ret;
@@ -1129,16 +1130,18 @@ static int pca953x_regcache_sync(struct device *dev)
 
 #ifdef CONFIG_GPIO_PCA953X_IRQ
 	if (chip->driver_data & PCA_PCAL) {
-		ret = regcache_sync_region(chip->regmap, PCAL953X_IN_LATCH,
-					   PCAL953X_IN_LATCH + NBANK(chip));
+		regaddr = pca953x_recalc_addr(chip, PCAL953X_IN_LATCH, 0);
+		ret = regcache_sync_region(chip->regmap, regaddr,
+					   regaddr + NBANK(chip));
 		if (ret) {
 			dev_err(dev, "Failed to sync INT latch registers: %d\n",
 				ret);
 			return ret;
 		}
 
-		ret = regcache_sync_region(chip->regmap, PCAL953X_INT_MASK,
-					   PCAL953X_INT_MASK + NBANK(chip));
+		regaddr = pca953x_recalc_addr(chip, PCAL953X_INT_MASK, 0);
+		ret = regcache_sync_region(chip->regmap, regaddr,
+					   regaddr + NBANK(chip));
 		if (ret) {
 			dev_err(dev, "Failed to sync INT mask registers: %d\n",
 				ret);
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +5 -1
index 299de1d131d8..5ac1a43a16b4 100644
@@ -535,6 +535,10 @@ void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring,
 {
 	unsigned vmid = AMDGPU_JOB_GET_VMID(job);
 
+	amdgpu_ring_write(ring,	PACKETJ(mmUVD_JPEG_IH_CTRL_INTERNAL_OFFSET,
+		0, 0, PACKETJ_TYPE0));
+	amdgpu_ring_write(ring, (vmid << JPEG_IH_CTRL__IH_VMID__SHIFT));
+
 	amdgpu_ring_write(ring, PACKETJ(mmUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,
 		0, 0, PACKETJ_TYPE0));
 	amdgpu_ring_write(ring, (vmid | (vmid << 4)));
@@ -768,7 +772,7 @@ static const struct amdgpu_ring_funcs jpeg_v2_0_dec_ring_vm_funcs = {
 		8 + /* jpeg_v2_0_dec_ring_emit_vm_flush */
 		18 + 18 + /* jpeg_v2_0_dec_ring_emit_fence x2 vm fence */
 		8 + 16,
-	.emit_ib_size = 22, /* jpeg_v2_0_dec_ring_emit_ib */
+	.emit_ib_size = 24, /* jpeg_v2_0_dec_ring_emit_ib */
 	.emit_ib = jpeg_v2_0_dec_ring_emit_ib,
 	.emit_fence = jpeg_v2_0_dec_ring_emit_fence,
 	.emit_vm_flush = jpeg_v2_0_dec_ring_emit_vm_flush,
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.h +1 -0
index 1a03baa59755..654e43e83e2c 100644
@@ -41,6 +41,7 @@
 #define mmUVD_JRBC_RB_REF_DATA_INTERNAL_OFFSET				0x4084
 #define mmUVD_JRBC_STATUS_INTERNAL_OFFSET				0x4089
 #define mmUVD_JPEG_PITCH_INTERNAL_OFFSET				0x401f
+#define mmUVD_JPEG_IH_CTRL_INTERNAL_OFFSET				0x4149
 
 #define JRBC_DEC_EXTERNAL_REG_WRITE_ADDR				0x18000
 
drivers/gpu/drm/amd/amdgpu/nv.c +1 -0
index 2ec1ffb36b1f..07fc591a6565 100644
@@ -170,6 +170,7 @@ static const struct amdgpu_video_codec_info yc_video_codecs_decode_array[] = {
 	{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 8192, 4352, 186)},
 	{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 8192, 4352, 0)},
 	{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)},
+	{codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_AV1, 8192, 4352, 0)},
 };
 
 static const struct amdgpu_video_codecs yc_video_codecs_decode = {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +1 -1
index 24db2297857b..edb5e72aeb66 100644
@@ -767,7 +767,7 @@ static void dm_dmub_outbox1_low_irq(void *interrupt_params)
 
 		do {
 			dc_stat_get_dmub_notification(adev->dm.dc, &notify);
-			if (notify.type > ARRAY_SIZE(dm->dmub_thread_offload)) {
+			if (notify.type >= ARRAY_SIZE(dm->dmub_thread_offload)) {
 				DRM_ERROR("DM: notify type %d invalid!", notify.type);
 				continue;
 			}
drivers/gpu/drm/amd/display/dc/dce/dce_clock_source.c +6 -3
index 2c7eb982eabc..054823d12403 100644
@@ -1013,9 +1013,12 @@ static bool get_pixel_clk_frequency_100hz(
 			 * not be programmed equal to DPREFCLK
 			 */
 			modulo_hz = REG_READ(MODULO[inst]);
-			*pixel_clk_khz = div_u64((uint64_t)clock_hz*
-				clock_source->ctx->dc->clk_mgr->dprefclk_khz*10,
-				modulo_hz);
+			if (modulo_hz)
+				*pixel_clk_khz = div_u64((uint64_t)clock_hz*
+					clock_source->ctx->dc->clk_mgr->dprefclk_khz*10,
+					modulo_hz);
+			else
+				*pixel_clk_khz = 0;
 		} else {
 			/* NOTE: There is agreement with VBIOS here that MODULO is
 			 * programmed equal to DPREFCLK, in which case PHASE will be
drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c +1 -1
index 4e9e2cf39859..5fcbec9dd45d 100644
@@ -777,7 +777,7 @@ int smu_v11_0_set_allowed_mask(struct smu_context *smu)
 		goto failed;
 	}
 
-	bitmap_copy((unsigned long *)feature_mask, feature->allowed, 64);
+	bitmap_to_arr32(feature_mask, feature->allowed, 64);
 
 	ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetAllowedFeaturesMaskHigh,
 					  feature_mask[1], NULL);
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c +1 -0
index 4885c4ae78b7..27a54145d352 100644
@@ -1643,6 +1643,7 @@ static const struct throttling_logging_label {
 	uint32_t feature_mask;
 	const char *label;
 } logging_label[] = {
+	{(1U << THROTTLER_TEMP_GPU_BIT), "GPU"},
 	{(1U << THROTTLER_TEMP_MEM_BIT), "HBM"},
 	{(1U << THROTTLER_TEMP_VR_GFX_BIT), "VR of GFX rail"},
 	{(1U << THROTTLER_TEMP_VR_MEM_BIT), "VR of HBM rail"},
drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c +1 -1
index b54790d3483e..4a5e91b59f0c 100644
@@ -726,7 +726,7 @@ int smu_v13_0_set_allowed_mask(struct smu_context *smu)
 	if (bitmap_empty(feature->allowed, SMU_FEATURE_MAX) || feature->feature_num < 64)
 		goto failed;
 
-	bitmap_copy((unsigned long *)feature_mask, feature->allowed, 64);
+	bitmap_to_arr32(feature_mask, feature->allowed, 64);
 
 	ret = smu_cmn_send_smc_msg_with_param(smu, SMU_MSG_SetAllowedFeaturesMaskHigh,
 					      feature_mask[1], NULL);
drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c +3 -0
index d0715927b07f..13461e28aeed 100644
@@ -190,6 +190,9 @@ static int yellow_carp_fini_smc_tables(struct smu_context *smu)
 	kfree(smu_table->watermarks_table);
 	smu_table->watermarks_table = NULL;
 
+	kfree(smu_table->gpu_metrics_table);
+	smu_table->gpu_metrics_table = NULL;
+
 	return 0;
 }
 
drivers/gpu/drm/ast/ast_mode.c +4 -1
index 956c8982192b..ab52efb15670 100644
@@ -471,7 +471,10 @@ static void ast_set_color_reg(struct ast_private *ast,
 static void ast_set_crtthd_reg(struct ast_private *ast)
 {
 	/* Set Threshold */
-	if (ast->chip == AST2300 || ast->chip == AST2400 ||
+	if (ast->chip == AST2600) {
+		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa7, 0xe0);
+		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa6, 0xa0);
+	} else if (ast->chip == AST2300 || ast->chip == AST2400 ||
 	    ast->chip == AST2500) {
 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa7, 0x78);
 		ast_set_index_reg(ast, AST_IO_CRTC_PORT, 0xa6, 0x60);
drivers/gpu/drm/bridge/analogix/analogix_dp_core.c +38 -4

64 lines not on this page · raw message

drivers/gpu/drm/bridge/ti-sn65dsi83.c +1 -1
index 314a84ffcea3..1b7eeefe6784 100644
@@ -560,7 +560,7 @@ static int sn65dsi83_parse_dt(struct sn65dsi83 *ctx, enum sn65dsi83_model model)
 	ctx->host_node = of_graph_get_remote_port_parent(endpoint);
 	of_node_put(endpoint);
 
-	if (ctx->dsi_lanes < 0 || ctx->dsi_lanes > 4) {
+	if (ctx->dsi_lanes <= 0 || ctx->dsi_lanes > 4) {
 		ret = -EINVAL;
 		goto err_put_node;
 	}
drivers/gpu/drm/drm_atomic_helper.c +13 -3
index 9603193d2fa1..987e4b212e9f 100644
@@ -1011,9 +1011,19 @@ crtc_needs_disable(struct drm_crtc_state *old_state,
 		return drm_atomic_crtc_effectively_active(old_state);
 
 	/*
-	 * We need to run through the crtc_funcs->disable() function if the CRTC
-	 * is currently on, if it's transitioning to self refresh mode, or if
-	 * it's in self refresh mode and needs to be fully disabled.
+	 * We need to disable bridge(s) and CRTC if we're transitioning out of
+	 * self-refresh and changing CRTCs at the same time, because the
+	 * bridge tracks self-refresh status via CRTC state.
+	 */
+	if (old_state->self_refresh_active &&
+	    old_state->crtc != new_state->crtc)
+		return true;
+
+	/*
+	 * We also need to run through the crtc_funcs->disable() function if
+	 * the CRTC is currently on, if it's transitioning to self refresh
+	 * mode, or if it's in self refresh mode and needs to be fully
+	 * disabled.
 	 */
 	return old_state->active ||
 	       (old_state->self_refresh_active && !new_state->active) ||
drivers/gpu/drm/imx/ipuv3-crtc.c +1 -1
index 9c8829f945b2..f7863d6dea80 100644
@@ -69,7 +69,7 @@ static void ipu_crtc_disable_planes(struct ipu_crtc *ipu_crtc,
 	drm_atomic_crtc_state_for_each_plane(plane, old_crtc_state) {
 		if (plane == &ipu_crtc->plane[0]->base)
 			disable_full = true;
-		if (&ipu_crtc->plane[1] && plane == &ipu_crtc->plane[1]->base)
+		if (ipu_crtc->plane[1] && plane == &ipu_crtc->plane[1]->base)
 			disable_partial = true;
 	}
 
drivers/gpu/drm/msm/dp/dp_ctrl.c +7 -2
index 6eb176872a17..7ae74bd05924 100644
@@ -1373,8 +1373,13 @@ void dp_ctrl_reset_irq_ctrl(struct dp_ctrl *dp_ctrl, bool enable)
 
 	dp_catalog_ctrl_reset(ctrl->catalog);
 
-	if (enable)
-		dp_catalog_ctrl_enable_irq(ctrl->catalog, enable);
+	/*
+	 * all dp controller programmable registers will not
+	 * be reset to default value after DP_SW_RESET
+	 * therefore interrupt mask bits have to be updated
+	 * to enable/disable interrupts
+	 */
+	dp_catalog_ctrl_enable_irq(ctrl->catalog, enable);
 }
 
 void dp_ctrl_phy_init(struct dp_ctrl *dp_ctrl)
drivers/gpu/drm/panfrost/panfrost_drv.c +3 -2
index 96bb5a465627..012af6eaaf62 100644
@@ -233,6 +233,7 @@ static int panfrost_ioctl_submit(struct drm_device *dev, void *data,
 		struct drm_file *file)
 {
 	struct panfrost_device *pfdev = dev->dev_private;
+	struct panfrost_file_priv *file_priv = file->driver_priv;
 	struct drm_panfrost_submit *args = data;
 	struct drm_syncobj *sync_out = NULL;
 	struct panfrost_job *job;
@@ -262,12 +263,12 @@ static int panfrost_ioctl_submit(struct drm_device *dev, void *data,
 	job->jc = args->jc;
 	job->requirements = args->requirements;
 	job->flush_id = panfrost_gpu_get_latest_flush_id(pfdev);
-	job->file_priv = file->driver_priv;
+	job->mmu = file_priv->mmu;
 
 	slot = panfrost_job_get_slot(job);
 
 	ret = drm_sched_job_init(&job->base,
-				 &job->file_priv->sched_entity[slot],
+				 &file_priv->sched_entity[slot],
 				 NULL);
 	if (ret)
 		goto out_put_job;
drivers/gpu/drm/panfrost/panfrost_job.c +3 -3
index 908d79520853..016bec72b7ce 100644
@@ -201,7 +201,7 @@ static void panfrost_job_hw_submit(struct panfrost_job *job, int js)
 		return;
 	}
 
-	cfg = panfrost_mmu_as_get(pfdev, job->file_priv->mmu);
+	cfg = panfrost_mmu_as_get(pfdev, job->mmu);
 
 	job_write(pfdev, JS_HEAD_NEXT_LO(js), lower_32_bits(jc_head));
 	job_write(pfdev, JS_HEAD_NEXT_HI(js), upper_32_bits(jc_head));
@@ -431,7 +431,7 @@ static void panfrost_job_handle_err(struct panfrost_device *pfdev,
 		job->jc = 0;
 	}
 
-	panfrost_mmu_as_put(pfdev, job->file_priv->mmu);
+	panfrost_mmu_as_put(pfdev, job->mmu);
 	panfrost_devfreq_record_idle(&pfdev->pfdevfreq);
 
 	if (signal_fence)
@@ -452,7 +452,7 @@ static void panfrost_job_handle_done(struct panfrost_device *pfdev,
 	 * happen when we receive the DONE interrupt while doing a GPU reset).
 	 */
 	job->jc = 0;
-	panfrost_mmu_as_put(pfdev, job->file_priv->mmu);
+	panfrost_mmu_as_put(pfdev, job->mmu);
 	panfrost_devfreq_record_idle(&pfdev->pfdevfreq);
 
 	dma_fence_signal_locked(job->done_fence);
drivers/gpu/drm/panfrost/panfrost_job.h +1 -1
index 77e6d0e6f612..8becc1ba0eb9 100644
@@ -17,7 +17,7 @@ struct panfrost_job {
 	struct kref refcount;
 
 	struct panfrost_device *pfdev;
-	struct panfrost_file_priv *file_priv;
+	struct panfrost_mmu *mmu;
 
 	/* Fence to be signaled by IRQ handler when the job is complete. */
 	struct dma_fence *done_fence;
drivers/gpu/drm/radeon/radeon_connectors.c +4 -0
index 1546abcadacf..d157bb9072e8 100644
@@ -473,6 +473,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode
 	    native_mode->vdisplay != 0 &&
 	    native_mode->clock != 0) {
 		mode = drm_mode_duplicate(dev, native_mode);
+		if (!mode)
+			return NULL;
 		mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER;
 		drm_mode_set_name(mode);
 
@@ -487,6 +489,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode
 		 * simpler.
 		 */
 		mode = drm_cvt_mode(dev, native_mode->hdisplay, native_mode->vdisplay, 60, true, false, false);
+		if (!mode)
+			return NULL;
 		mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER;
 		DRM_DEBUG_KMS("Adding cvt approximation of native panel mode %s\n", mode->name);
 	}
drivers/hwtracing/coresight/coresight-cpu-debug.c +4 -3
index 8845ec4b4402..1874df7c6a73 100644
@@ -380,9 +380,10 @@ static int debug_notifier_call(struct notifier_block *self,
 	int cpu;
 	struct debug_drvdata *drvdata;
 
-	mutex_lock(&debug_lock);
+	/* Bail out if we can't acquire the mutex or the functionality is off */
+	if (!mutex_trylock(&debug_lock))
+		return NOTIFY_DONE;
 
-	/* Bail out if the functionality is disabled */
 	if (!debug_enable)
 		goto skip_dump;
 
@@ -401,7 +402,7 @@ static int debug_notifier_call(struct notifier_block *self,
 
 skip_dump:
 	mutex_unlock(&debug_lock);
-	return 0;
+	return NOTIFY_DONE;
 }
 
 static struct notifier_block debug_notifier = {
drivers/i2c/busses/i2c-cadence.c +10 -2
index 805c77143a0f..b4c1ad19cdae 100644
@@ -760,7 +760,7 @@ static void cdns_i2c_master_reset(struct i2c_adapter *adap)
 static int cdns_i2c_process_msg(struct cdns_i2c *id, struct i2c_msg *msg,
 		struct i2c_adapter *adap)
 {
-	unsigned long time_left;
+	unsigned long time_left, msg_timeout;
 	u32 reg;
 
 	id->p_msg = msg;
@@ -785,8 +785,16 @@ static int cdns_i2c_process_msg(struct cdns_i2c *id, struct i2c_msg *msg,
 	else
 		cdns_i2c_msend(id);
 
+	/* Minimal time to execute this message */
+	msg_timeout = msecs_to_jiffies((1000 * msg->len * BITS_PER_BYTE) / id->i2c_clk);
+	/* Plus some wiggle room */
+	msg_timeout += msecs_to_jiffies(500);
+
+	if (msg_timeout < adap->timeout)
+		msg_timeout = adap->timeout;
+
 	/* Wait for the signal of completion */
-	time_left = wait_for_completion_timeout(&id->xfer_done, adap->timeout);
+	time_left = wait_for_completion_timeout(&id->xfer_done, msg_timeout);
 	if (time_left == 0) {
 		cdns_i2c_master_reset(adap);
 		dev_err(id->adap.dev.parent,
drivers/idle/intel_idle.c +25 -7
index 0b66e25c0e2d..b2565bb05c79 100644
@@ -109,6 +109,18 @@ static unsigned int mwait_substates __initdata;
 #define flg2MWAIT(flags) (((flags) >> 24) & 0xFF)
 #define MWAIT2flg(eax) ((eax & 0xFF) << 24)
 
+static __always_inline int __intel_idle(struct cpuidle_device *dev,
+					struct cpuidle_driver *drv, int index)
+{
+	struct cpuidle_state *state = &drv->states[index];
+	unsigned long eax = flg2MWAIT(state->flags);
+	unsigned long ecx = 1; /* break on interrupt flag */
+
+	mwait_idle_with_hints(eax, ecx);
+
+	return index;
+}
+
 /**
  * intel_idle - Ask the processor to enter the given idle state.
  * @dev: cpuidle device of the target CPU.
@@ -129,16 +141,19 @@ static unsigned int mwait_substates __initdata;
 static __cpuidle int intel_idle(struct cpuidle_device *dev,
 				struct cpuidle_driver *drv, int index)
 {
-	struct cpuidle_state *state = &drv->states[index];
-	unsigned long eax = flg2MWAIT(state->flags);
-	unsigned long ecx = 1; /* break on interrupt flag */
+	return __intel_idle(dev, drv, index);
+}
 
-	if (state->flags & CPUIDLE_FLAG_IRQ_ENABLE)
-		local_irq_enable();
+static __cpuidle int intel_idle_irq(struct cpuidle_device *dev,
+				    struct cpuidle_driver *drv, int index)
+{
+	int ret;
 
-	mwait_idle_with_hints(eax, ecx);
+	raw_local_irq_enable();
+	ret = __intel_idle(dev, drv, index);
+	raw_local_irq_disable();
 
-	return index;
+	return ret;
 }
 
 /**
@@ -1583,6 +1598,9 @@ static void __init intel_idle_init_cstates_icpu(struct cpuidle_driver *drv)
 		/* Structure copy. */
 		drv->states[drv->state_count] = cpuidle_state_table[cstate];
 
+		if (cpuidle_state_table[cstate].flags & CPUIDLE_FLAG_IRQ_ENABLE)
+			drv->states[drv->state_count].enter = intel_idle_irq;
+
 		if ((disabled_states_mask & BIT(drv->state_count)) ||
 		    ((icpu->use_acpi || force_use_acpi) &&
 		     intel_idle_off_by_default(mwait_hint) &&
drivers/iio/adc/ad7124.c +0 -1
index b400bbe291aa..c22d8dcaa100 100644
@@ -188,7 +188,6 @@ static const struct iio_chan_spec ad7124_channel_template = {
 		.sign = 'u',
 		.realbits = 24,
 		.storagebits = 32,
-		.shift = 8,
 		.endianness = IIO_BE,
 	},
 };
drivers/iio/adc/sc27xx_adc.c +10 -10
index 00098caf6d9e..cfe003cc4f0b 100644
@@ -36,8 +36,8 @@
 
 /* Bits and mask definition for SC27XX_ADC_CH_CFG register */
 #define SC27XX_ADC_CHN_ID_MASK		GENMASK(4, 0)
-#define SC27XX_ADC_SCALE_MASK		GENMASK(10, 8)
-#define SC27XX_ADC_SCALE_SHIFT		8
+#define SC27XX_ADC_SCALE_MASK		GENMASK(10, 9)
+#define SC27XX_ADC_SCALE_SHIFT		9
 
 /* Bits definitions for SC27XX_ADC_INT_EN registers */
 #define SC27XX_ADC_IRQ_EN		BIT(0)
@@ -103,14 +103,14 @@ static struct sc27xx_adc_linear_graph small_scale_graph = {
 	100, 341,
 };
 
-static const struct sc27xx_adc_linear_graph big_scale_graph_calib = {
-	4200, 856,
-	3600, 733,
+static const struct sc27xx_adc_linear_graph sc2731_big_scale_graph_calib = {
+	4200, 850,
+	3600, 728,
 };
 
-static const struct sc27xx_adc_linear_graph small_scale_graph_calib = {
-	1000, 833,
-	100, 80,
+static const struct sc27xx_adc_linear_graph sc2731_small_scale_graph_calib = {
+	1000, 838,
+	100, 84,
 };
 
 static int sc27xx_adc_get_calib_data(u32 calib_data, int calib_adc)
@@ -130,11 +130,11 @@ static int sc27xx_adc_scale_calibration(struct sc27xx_adc_data *data,
 	size_t len;
 
 	if (big_scale) {
-		calib_graph = &big_scale_graph_calib;
+		calib_graph = &sc2731_big_scale_graph_calib;
 		graph = &big_scale_graph;
 		cell_name = "big_scale_calib";
 	} else {
-		calib_graph = &small_scale_graph_calib;
+		calib_graph = &sc2731_small_scale_graph_calib;
 		graph = &small_scale_graph;
 		cell_name = "small_scale_calib";
 	}
drivers/iio/adc/stmpe-adc.c +4 -4
index d2d405388499..83e0ac4467ca 100644
@@ -61,7 +61,7 @@ struct stmpe_adc {
 static int stmpe_read_voltage(struct stmpe_adc *info,
 		struct iio_chan_spec const *chan, int *val)
 {
-	long ret;
+	unsigned long ret;
 
 	mutex_lock(&info->lock);
 
@@ -79,7 +79,7 @@ static int stmpe_read_voltage(struct stmpe_adc *info,
 
 	ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);
 
-	if (ret <= 0) {
+	if (ret == 0) {
 		stmpe_reg_write(info->stmpe, STMPE_REG_ADC_INT_STA,
 				STMPE_ADC_CH(info->channel));
 		mutex_unlock(&info->lock);
@@ -96,7 +96,7 @@ static int stmpe_read_voltage(struct stmpe_adc *info,
 static int stmpe_read_temp(struct stmpe_adc *info,
 		struct iio_chan_spec const *chan, int *val)
 {
-	long ret;
+	unsigned long ret;
 
 	mutex_lock(&info->lock);
 
@@ -114,7 +114,7 @@ static int stmpe_read_temp(struct stmpe_adc *info,
 
 	ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);
 
-	if (ret <= 0) {
+	if (ret == 0) {
 		mutex_unlock(&info->lock);
 		return -ETIMEDOUT;
 	}
drivers/iio/common/st_sensors/st_sensors_core.c +18 -6
index eb452d0c423c..5c7e4e725819 100644
@@ -71,16 +71,18 @@ static int st_sensors_match_odr(struct st_sensor_settings *sensor_settings,
 
 int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr)
 {
-	int err;
+	int err = 0;
 	struct st_sensor_odr_avl odr_out = {0, 0};
 	struct st_sensor_data *sdata = iio_priv(indio_dev);
 
+	mutex_lock(&sdata->odr_lock);
+
 	if (!sdata->sensor_settings->odr.mask)
-		return 0;
+		goto unlock_mutex;
 
 	err = st_sensors_match_odr(sdata->sensor_settings, odr, &odr_out);
 	if (err < 0)
-		goto st_sensors_match_odr_error;
+		goto unlock_mutex;
 
 	if ((sdata->sensor_settings->odr.addr ==
 					sdata->sensor_settings->pw.addr) &&
@@ -103,7 +105,9 @@ int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr)
 	if (err >= 0)
 		sdata->odr = odr_out.hz;
 
-st_sensors_match_odr_error:
+unlock_mutex:
+	mutex_unlock(&sdata->odr_lock);
+
 	return err;
 }
 EXPORT_SYMBOL(st_sensors_set_odr);
@@ -361,6 +365,8 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,
 	struct st_sensors_platform_data *of_pdata;
 	int err = 0;
 
+	mutex_init(&sdata->odr_lock);
+
 	/* If OF/DT pdata exists, it will take precedence of anything else */
 	of_pdata = st_sensors_dev_probe(indio_dev->dev.parent, pdata);
 	if (IS_ERR(of_pdata))
@@ -554,18 +560,24 @@ int st_sensors_read_info_raw(struct iio_dev *indio_dev,
 		err = -EBUSY;
 		goto out;
 	} else {
+		mutex_lock(&sdata->odr_lock);
 		err = st_sensors_set_enable(indio_dev, true);
-		if (err < 0)
+		if (err < 0) {
+			mutex_unlock(&sdata->odr_lock);
 			goto out;
+		}
 
 		msleep((sdata->sensor_settings->bootime * 1000) / sdata->odr);
 		err = st_sensors_read_axis_data(indio_dev, ch, val);
-		if (err < 0)
+		if (err < 0) {
+			mutex_unlock(&sdata->odr_lock);
 			goto out;
+		}
 
 		*val = *val >> ch->scan_type.shift;
 
 		err = st_sensors_set_enable(indio_dev, false);
+		mutex_unlock(&sdata->odr_lock);
 	}
 out:
 	mutex_unlock(&indio_dev->mlock);
drivers/iio/dummy/iio_simple_dummy.c +12 -8
index c0b7ef900735..c24f609c2ade 100644
@@ -575,10 +575,9 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
 	 */
 
 	swd = kzalloc(sizeof(*swd), GFP_KERNEL);
-	if (!swd) {
-		ret = -ENOMEM;
-		goto error_kzalloc;
-	}
+	if (!swd)
+		return ERR_PTR(-ENOMEM);
+
 	/*
 	 * Allocate an IIO device.
 	 *
@@ -590,7 +589,7 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
 	indio_dev = iio_device_alloc(parent, sizeof(*st));
 	if (!indio_dev) {
 		ret = -ENOMEM;
-		goto error_ret;
+		goto error_free_swd;
 	}
 
 	st = iio_priv(indio_dev);
@@ -616,6 +615,10 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
 	 *    indio_dev->name = spi_get_device_id(spi)->name;
 	 */
 	indio_dev->name = kstrdup(name, GFP_KERNEL);
+	if (!indio_dev->name) {
+		ret = -ENOMEM;
+		goto error_free_device;
+	}
 
 	/* Provide description of available channels */
 	indio_dev->channels = iio_dummy_channels;
@@ -632,7 +635,7 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
 
 	ret = iio_simple_dummy_events_register(indio_dev);
 	if (ret < 0)
-		goto error_free_device;
+		goto error_free_name;
 
 	ret = iio_simple_dummy_configure_buffer(indio_dev);
 	if (ret < 0)
@@ -649,11 +652,12 @@ static struct iio_sw_device *iio_dummy_probe(const char *name)
 	iio_simple_dummy_unconfigure_buffer(indio_dev);
 error_unregister_events:
 	iio_simple_dummy_events_unregister(indio_dev);
+error_free_name:
+	kfree(indio_dev->name);
 error_free_device:
 	iio_device_free(indio_dev);
-error_ret:
+error_free_swd:
 	kfree(swd);
-error_kzalloc:
 	return ERR_PTR(ret);
 }
 
drivers/iio/proximity/vl53l0x-i2c.c +3 -4
index cf38144b6f95..13a87d3e3544 100644
@@ -104,6 +104,7 @@ static int vl53l0x_read_proximity(struct vl53l0x_data *data,
 	u16 tries = 20;
 	u8 buffer[12];
 	int ret;
+	unsigned long time_left;
 
 	ret = i2c_smbus_write_byte_data(client, VL_REG_SYSRANGE_START, 1);
 	if (ret < 0)
@@ -112,10 +113,8 @@ static int vl53l0x_read_proximity(struct vl53l0x_data *data,
 	if (data->client->irq) {
 		reinit_completion(&data->completion);
 
-		ret = wait_for_completion_timeout(&data->completion, HZ/10);
-		if (ret < 0)
-			return ret;
-		else if (ret == 0)
+		time_left = wait_for_completion_timeout(&data->completion, HZ/10);
+		if (time_left == 0)
 			return -ETIMEDOUT;
 
 		vl53l0x_clear_irq(data);
drivers/input/mouse/bcm5974.c +6 -1
index 59a14505b9cd..ca150618d32f 100644
@@ -942,17 +942,22 @@ static int bcm5974_probe(struct usb_interface *iface,
 	if (!dev->tp_data)
 		goto err_free_bt_buffer;
 
-	if (dev->bt_urb)
+	if (dev->bt_urb) {
 		usb_fill_int_urb(dev->bt_urb, udev,
 				 usb_rcvintpipe(udev, cfg->bt_ep),
 				 dev->bt_data, dev->cfg.bt_datalen,
 				 bcm5974_irq_button, dev, 1);
 
+		dev->bt_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+	}
+
 	usb_fill_int_urb(dev->tp_urb, udev,
 			 usb_rcvintpipe(udev, cfg->tp_ep),
 			 dev->tp_data, dev->cfg.tp_datalen,
 			 bcm5974_irq_trackpad, dev, 1);
 
+	dev->tp_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
+
 	/* create bcm5974 device */
 	usb_make_path(udev, dev->phys, sizeof(dev->phys));
 	strlcat(dev->phys, "/input0", sizeof(dev->phys));
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +2 -0
index f60381cdf1c4..a009a3dd762b 100644
@@ -3780,6 +3780,8 @@ static int arm_smmu_device_probe(struct platform_device *pdev)
 
 	/* Base address */
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (!res)
+		return -EINVAL;
 	if (resource_size(res) < arm_smmu_resource_size(smmu)) {
 		dev_err(dev, "MMIO region too small (%pr)\n", res);
 		return -EINVAL;
drivers/iommu/arm/arm-smmu/arm-smmu.c +2 -3
index 4bc75c4ce402..324e8f32962a 100644
@@ -2090,11 +2090,10 @@ static int arm_smmu_device_probe(struct platform_device *pdev)
 	if (err)
 		return err;
 
-	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-	ioaddr = res->start;
-	smmu->base = devm_ioremap_resource(dev, res);
+	smmu->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
 	if (IS_ERR(smmu->base))
 		return PTR_ERR(smmu->base);
+	ioaddr = res->start;
 	/*
 	 * The resource size should effectively match the value of SMMU_TOP;
 	 * stash that temporarily until we know PAGESIZE to validate it with.
drivers/md/md.c +10 -5
index 43c5890dc9f3..79d64640240b 100644
@@ -7962,17 +7962,22 @@ EXPORT_SYMBOL(md_register_thread);
 
 void md_unregister_thread(struct md_thread **threadp)
 {
-	struct md_thread *thread = *threadp;
-	if (!thread)
-		return;
-	pr_debug("interrupting MD-thread pid %d\n", task_pid_nr(thread->tsk));
-	/* Locking ensures that mddev_unlock does not wake_up a
+	struct md_thread *thread;
+
+	/*
+	 * Locking ensures that mddev_unlock does not wake_up a
 	 * non-existent thread
 	 */
 	spin_lock(&pers_lock);
+	thread = *threadp;
+	if (!thread) {
+		spin_unlock(&pers_lock);
+		return;
+	}
 	*threadp = NULL;
 	spin_unlock(&pers_lock);
 
+	pr_debug("interrupting MD-thread pid %d\n", task_pid_nr(thread->tsk));
 	kthread_stop(thread->tsk);
 	kfree(thread);
 }
drivers/md/raid0.c +16 -15
index bccc741b9382..8495045eb989 100644
@@ -128,21 +128,6 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)
 	pr_debug("md/raid0:%s: FINAL %d zones\n",
 		 mdname(mddev), conf->nr_strip_zones);
 
-	if (conf->nr_strip_zones == 1) {
-		conf->layout = RAID0_ORIG_LAYOUT;
-	} else if (mddev->layout == RAID0_ORIG_LAYOUT ||
-		   mddev->layout == RAID0_ALT_MULTIZONE_LAYOUT) {
-		conf->layout = mddev->layout;
-	} else if (default_layout == RAID0_ORIG_LAYOUT ||
-		   default_layout == RAID0_ALT_MULTIZONE_LAYOUT) {
-		conf->layout = default_layout;
-	} else {
-		pr_err("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n",
-		       mdname(mddev));
-		pr_err("md/raid0: please set raid0.default_layout to 1 or 2\n");
-		err = -ENOTSUPP;
-		goto abort;
-	}
 	/*
 	 * now since we have the hard sector sizes, we can make sure
 	 * chunk size is a multiple of that sector size
@@ -273,6 +258,22 @@ static int create_strip_zones(struct mddev *mddev, struct r0conf **private_conf)
 			 (unsigned long long)smallest->sectors);
 	}
 
+	if (conf->nr_strip_zones == 1 || conf->strip_zone[1].nb_dev == 1) {
+		conf->layout = RAID0_ORIG_LAYOUT;
+	} else if (mddev->layout == RAID0_ORIG_LAYOUT ||
+		   mddev->layout == RAID0_ALT_MULTIZONE_LAYOUT) {
+		conf->layout = mddev->layout;
+	} else if (default_layout == RAID0_ORIG_LAYOUT ||
+		   default_layout == RAID0_ALT_MULTIZONE_LAYOUT) {
+		conf->layout = default_layout;
+	} else {
+		pr_err("md/raid0:%s: cannot assemble multi-zone RAID0 with default_layout setting\n",
+		       mdname(mddev));
+		pr_err("md/raid0: please set raid0.default_layout to 1 or 2\n");
+		err = -EOPNOTSUPP;
+		goto abort;
+	}
+
 	pr_debug("md/raid0:%s: done.\n", mdname(mddev));
 	*private_conf = conf;
 
drivers/misc/cardreader/rtsx_usb.c +1 -0
index 59eda55d92a3..1ef9b61077c4 100644
@@ -667,6 +667,7 @@ static int rtsx_usb_probe(struct usb_interface *intf,
 	return 0;
 
 out_init_fail:
+	usb_set_intfdata(ucr->pusb_intf, NULL);
 	usb_free_coherent(ucr->pusb_dev, IOBUF_SIZE, ucr->iobuf,
 			ucr->iobuf_dma);
 	return ret;
drivers/misc/fastrpc.c +5 -4
index aa1682b94a23..45aaf54a7560 100644
@@ -1353,17 +1353,18 @@ static int fastrpc_req_munmap_impl(struct fastrpc_user *fl,
 				   struct fastrpc_req_munmap *req)
 {
 	struct fastrpc_invoke_args args[1] = { [0] = { 0 } };
-	struct fastrpc_buf *buf, *b;
+	struct fastrpc_buf *buf = NULL, *iter, *b;
 	struct fastrpc_munmap_req_msg req_msg;
 	struct device *dev = fl->sctx->dev;
 	int err;
 	u32 sc;
 
 	spin_lock(&fl->lock);
-	list_for_each_entry_safe(buf, b, &fl->mmaps, node) {
-		if ((buf->raddr == req->vaddrout) && (buf->size == req->size))
+	list_for_each_entry_safe(iter, b, &fl->mmaps, node) {
+		if ((iter->raddr == req->vaddrout) && (iter->size == req->size)) {
+			buf = iter;
 			break;
-		buf = NULL;
+		}
 	}
 	spin_unlock(&fl->lock);
 
drivers/misc/lkdtm/bugs.c +9 -1
index f21854ac5cc2..8cb342c562af 100644
@@ -327,6 +327,11 @@ void lkdtm_ARRAY_BOUNDS(void)
 
 	not_checked = kmalloc(sizeof(*not_checked) * 2, GFP_KERNEL);
 	checked = kmalloc(sizeof(*checked) * 2, GFP_KERNEL);
+	if (!not_checked || !checked) {
+		kfree(not_checked);
+		kfree(checked);
+		return;
+	}
 
 	pr_info("Array access within bounds ...\n");
 	/* For both, touch all bytes in the actual member size. */
@@ -346,7 +351,10 @@ void lkdtm_ARRAY_BOUNDS(void)
 	kfree(not_checked);
 	kfree(checked);
 	pr_err("FAIL: survived array bounds overflow!\n");
-	pr_expected_config(CONFIG_UBSAN_BOUNDS);
+	if (IS_ENABLED(CONFIG_UBSAN_BOUNDS))
+		pr_expected_config(CONFIG_UBSAN_TRAP);
+	else
+		pr_expected_config(CONFIG_UBSAN_BOUNDS);
 }
 
 void lkdtm_CORRUPT_LIST_ADD(void)
drivers/misc/lkdtm/lkdtm.h +4 -4
index d6137c70ebbe..cc76ebcca4c7 100644
@@ -9,19 +9,19 @@
 extern char *lkdtm_kernel_info;
 
 #define pr_expected_config(kconfig)				\
-{								\
+do {								\
 	if (IS_ENABLED(kconfig)) 				\
 		pr_err("Unexpected! This %s was built with " #kconfig "=y\n", \
 			lkdtm_kernel_info);			\
 	else							\
 		pr_warn("This is probably expected, since this %s was built *without* " #kconfig "=y\n", \
 			lkdtm_kernel_info);			\
-}
+} while (0)
 
 #ifndef MODULE
 int lkdtm_check_bool_cmdline(const char *param);
 #define pr_expected_config_param(kconfig, param)		\
-{								\
+do {								\
 	if (IS_ENABLED(kconfig)) {				\
 		switch (lkdtm_check_bool_cmdline(param)) {	\
 		case 0:						\
@@ -52,7 +52,7 @@ int lkdtm_check_bool_cmdline(const char *param);
 			break;					\
 		}						\
 	}							\
-}
+} while (0)
 #else
 #define pr_expected_config_param(kconfig, param) pr_expected_config(kconfig)
 #endif
drivers/misc/lkdtm/usercopy.c +14 -3
index 9161ce7ed47a..3fead5efe523 100644
@@ -30,12 +30,12 @@ static const unsigned char test_text[] = "This is a test.\n";
  */
 static noinline unsigned char *trick_compiler(unsigned char *stack)
 {
-	return stack + 0;
+	return stack + unconst;
 }
 
 static noinline unsigned char *do_usercopy_stack_callee(int value)
 {
-	unsigned char buf[32];
+	unsigned char buf[128];
 	int i;
 
 	/* Exercise stack to avoid everything living in registers. */
@@ -43,7 +43,12 @@ static noinline unsigned char *do_usercopy_stack_callee(int value)
 		buf[i] = value & 0xff;
 	}
 
-	return trick_compiler(buf);
+	/*
+	 * Put the target buffer in the middle of stack allocation
+	 * so that we don't step on future stack users regardless
+	 * of stack growth direction.
+	 */
+	return trick_compiler(&buf[(128/2)-32]);
 }
 
 static noinline void do_usercopy_stack(bool to_user, bool bad_frame)
@@ -66,6 +71,12 @@ static noinline void do_usercopy_stack(bool to_user, bool bad_frame)
 		bad_stack -= sizeof(unsigned long);
 	}
 
+#ifdef ARCH_HAS_CURRENT_STACK_POINTER
+	pr_info("stack     : %px\n", (void *)current_stack_pointer);
+#endif
+	pr_info("good_stack: %px-%px\n", good_stack, good_stack + sizeof(good_stack));
+	pr_info("bad_stack : %px-%px\n", bad_stack, bad_stack + sizeof(good_stack));
+
 	user_addr = vm_mmap(NULL, 0, PAGE_SIZE,
 			    PROT_READ | PROT_WRITE | PROT_EXEC,
 			    MAP_ANONYMOUS | MAP_PRIVATE, 0);
drivers/misc/pvpanic/pvpanic.c +8 -2
index 4b8f1c7d726d..049a12006348 100644
@@ -34,7 +34,9 @@ pvpanic_send_event(unsigned int event)
 {
 	struct pvpanic_instance *pi_cur;
 
-	spin_lock(&pvpanic_lock);
+	if (!spin_trylock(&pvpanic_lock))
+		return;
+
 	list_for_each_entry(pi_cur, &pvpanic_list, list) {
 		if (event & pi_cur->capability & pi_cur->events)
 			iowrite8(event, pi_cur->base);
@@ -55,9 +57,13 @@ pvpanic_panic_notify(struct notifier_block *nb, unsigned long code, void *unused
 	return NOTIFY_DONE;
 }
 
+/*
+ * Call our notifier very early on panic, deferring the
+ * action taken to the hypervisor.
+ */
 static struct notifier_block pvpanic_panic_nb = {
 	.notifier_call = pvpanic_panic_notify,
-	.priority = 1, /* let this called before broken drm_fb_helper() */
+	.priority = INT_MAX,
 };
 
 static void pvpanic_remove(void *param)
drivers/mmc/core/block.c +1 -2
index 52e4106bcb6e..57f5e0a4d7d7 100644
@@ -1482,8 +1482,7 @@ void mmc_blk_cqe_recovery(struct mmc_queue *mq)
 	err = mmc_cqe_recovery(host);
 	if (err)
 		mmc_blk_reset(mq->blkdata, host, MMC_BLK_CQE_RECOVERY);
-	else
-		mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
+	mmc_blk_reset_success(mq->blkdata, MMC_BLK_CQE_RECOVERY);
 
 	pr_debug("%s: CQE recovery done\n", mmc_hostname(host));
 }
drivers/mtd/ubi/fastmap-wl.c +46 -23

112 lines not on this page · raw message

drivers/mtd/ubi/fastmap.c +0 -11
index 6b5f1ffd961b..6e95c4b1473e 100644
@@ -1230,17 +1230,6 @@ static int ubi_write_fastmap(struct ubi_device *ubi,
 		fm_pos += sizeof(*fec);
 		ubi_assert(fm_pos <= ubi->fm_size);
 	}
-	if (ubi->fm_next_anchor) {
-		fec = (struct ubi_fm_ec *)(fm_raw + fm_pos);
-
-		fec->pnum = cpu_to_be32(ubi->fm_next_anchor->pnum);
-		set_seen(ubi, ubi->fm_next_anchor->pnum, seen_pebs);
-		fec->ec = cpu_to_be32(ubi->fm_next_anchor->ec);
-
-		free_peb_count++;
-		fm_pos += sizeof(*fec);
-		ubi_assert(fm_pos <= ubi->fm_size);
-	}
 	fmh->free_peb_count = cpu_to_be32(free_peb_count);
 
 	ubi_for_each_used_peb(ubi, wl_e, tmp_rb) {
drivers/mtd/ubi/ubi.h +1 -3
index 7c083ad58274..078112e23dfd 100644
@@ -489,8 +489,7 @@ struct ubi_debug_info {
  * @fm_work: fastmap work queue
  * @fm_work_scheduled: non-zero if fastmap work was scheduled
  * @fast_attach: non-zero if UBI was attached by fastmap
- * @fm_anchor: The new anchor PEB used during fastmap update
- * @fm_next_anchor: An anchor PEB candidate for the next time fastmap is updated
+ * @fm_anchor: The next anchor PEB to use for fastmap
  * @fm_do_produce_anchor: If true produce an anchor PEB in wl
  *
  * @used: RB-tree of used physical eraseblocks
@@ -601,7 +600,6 @@ struct ubi_device {
 	int fm_work_scheduled;
 	int fast_attach;
 	struct ubi_wl_entry *fm_anchor;
-	struct ubi_wl_entry *fm_next_anchor;
 	int fm_do_produce_anchor;
 
 	/* Wear-leveling sub-system's stuff */
drivers/mtd/ubi/vmt.c +0 -1
index 1bc7b3a05604..6ea95ade4ca6 100644
@@ -309,7 +309,6 @@ int ubi_create_volume(struct ubi_device *ubi, struct ubi_mkvol_req *req)
 	ubi->volumes[vol_id] = NULL;
 	ubi->vol_count -= 1;
 	spin_unlock(&ubi->volumes_lock);
-	ubi_eba_destroy_table(eba_tbl);
 out_acc:
 	spin_lock(&ubi->volumes_lock);
 	ubi->rsvd_pebs -= vol->reserved_pebs;
drivers/mtd/ubi/wl.c +10 -9
index 8455f1d47f3c..afcdacb9d0e9 100644
@@ -689,16 +689,16 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,
 
 #ifdef CONFIG_MTD_UBI_FASTMAP
 	e1 = find_anchor_wl_entry(&ubi->used);
-	if (e1 && ubi->fm_next_anchor &&
-	    (ubi->fm_next_anchor->ec - e1->ec >= UBI_WL_THRESHOLD)) {
+	if (e1 && ubi->fm_anchor &&
+	    (ubi->fm_anchor->ec - e1->ec >= UBI_WL_THRESHOLD)) {
 		ubi->fm_do_produce_anchor = 1;
-		/* fm_next_anchor is no longer considered a good anchor
-		 * candidate.
+		/*
+		 * fm_anchor is no longer considered a good anchor.
 		 * NULL assignment also prevents multiple wear level checks
 		 * of this PEB.
 		 */
-		wl_tree_add(ubi->fm_next_anchor, &ubi->free);
-		ubi->fm_next_anchor = NULL;
+		wl_tree_add(ubi->fm_anchor, &ubi->free);
+		ubi->fm_anchor = NULL;
 		ubi->free_count++;
 	}
 
@@ -1085,12 +1085,13 @@ static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk)
 	if (!err) {
 		spin_lock(&ubi->wl_lock);
 
-		if (!ubi->fm_disabled && !ubi->fm_next_anchor &&
+		if (!ubi->fm_disabled && !ubi->fm_anchor &&
 		    e->pnum < UBI_FM_MAX_START) {
-			/* Abort anchor production, if needed it will be
+			/*
+			 * Abort anchor production, if needed it will be
 			 * enabled again in the wear leveling started below.
 			 */
-			ubi->fm_next_anchor = e;
+			ubi->fm_anchor = e;
 			ubi->fm_do_produce_anchor = 0;
 		} else {
 			wl_tree_add(e, &ubi->free);
drivers/net/amt.c +40 -19

162 lines not on this page · raw message

drivers/net/dsa/lantiq_gswip.c +3 -1
index 8acec33a4702..9d8db457599c 100644
@@ -2021,8 +2021,10 @@ static int gswip_gphy_fw_list(struct gswip_priv *priv,
 	for_each_available_child_of_node(gphy_fw_list_np, gphy_fw_np) {
 		err = gswip_gphy_fw_probe(priv, &priv->gphy_fw[i],
 					  gphy_fw_np, i);
-		if (err)
+		if (err) {
+			of_node_put(gphy_fw_np);
 			goto remove_gphy;
+		}
 		i++;
 	}
 
drivers/net/dsa/mv88e6xxx/chip.c +1 -0
index cf7754dddad7..283ae376f469 100644
@@ -3482,6 +3482,7 @@ static int mv88e6xxx_mdios_register(struct mv88e6xxx_chip *chip,
 	 */
 	child = of_get_child_by_name(np, "mdio");
 	err = mv88e6xxx_mdio_register(chip, child, false);
+	of_node_put(child);
 	if (err)
 		return err;
 
drivers/net/dsa/mv88e6xxx/serdes.c +11 -16
index 2b05ead515cd..6ae7a0ed9e0b 100644
@@ -50,22 +50,17 @@ static int mv88e6390_serdes_write(struct mv88e6xxx_chip *chip,
 }
 
 static int mv88e6xxx_serdes_pcs_get_state(struct mv88e6xxx_chip *chip,
-					  u16 ctrl, u16 status, u16 lpa,
+					  u16 bmsr, u16 lpa, u16 status,
 					  struct phylink_link_state *state)
 {
 	state->link = !!(status & MV88E6390_SGMII_PHY_STATUS_LINK);
+	state->an_complete = !!(bmsr & BMSR_ANEGCOMPLETE);
 
 	if (status & MV88E6390_SGMII_PHY_STATUS_SPD_DPL_VALID) {
 		/* The Spped and Duplex Resolved register is 1 if AN is enabled
 		 * and complete, or if AN is disabled. So with disabled AN we
-		 * still get here on link up. But we want to set an_complete
-		 * only if AN was enabled, thus we look at BMCR_ANENABLE.
-		 * (According to 802.3-2008 section 22.2.4.2.10, we should be
-		 *  able to get this same value from BMSR_ANEGCAPABLE, but tests
-		 *  show that these Marvell PHYs don't conform to this part of
-		 *  the specificaion - BMSR_ANEGCAPABLE is simply always 1.)
+		 * still get here on link up.
 		 */
-		state->an_complete = !!(ctrl & BMCR_ANENABLE);
 		state->duplex = status &
 				MV88E6390_SGMII_PHY_STATUS_DUPLEX_FULL ?
 			                         DUPLEX_FULL : DUPLEX_HALF;
@@ -191,12 +186,12 @@ int mv88e6352_serdes_pcs_config(struct mv88e6xxx_chip *chip, int port,
 int mv88e6352_serdes_pcs_get_state(struct mv88e6xxx_chip *chip, int port,
 				   int lane, struct phylink_link_state *state)
 {
-	u16 lpa, status, ctrl;
+	u16 bmsr, lpa, status;
 	int err;
 
-	err = mv88e6352_serdes_read(chip, MII_BMCR, &ctrl);
+	err = mv88e6352_serdes_read(chip, MII_BMSR, &bmsr);
 	if (err) {
-		dev_err(chip->dev, "can't read Serdes PHY control: %d\n", err);
+		dev_err(chip->dev, "can't read Serdes BMSR: %d\n", err);
 		return err;
 	}
 
@@ -212,7 +207,7 @@ int mv88e6352_serdes_pcs_get_state(struct mv88e6xxx_chip *chip, int port,
 		return err;
 	}
 
-	return mv88e6xxx_serdes_pcs_get_state(chip, ctrl, status, lpa, state);
+	return mv88e6xxx_serdes_pcs_get_state(chip, bmsr, lpa, status, state);
 }
 
 int mv88e6352_serdes_pcs_an_restart(struct mv88e6xxx_chip *chip, int port,
@@ -915,13 +910,13 @@ int mv88e6390_serdes_pcs_config(struct mv88e6xxx_chip *chip, int port,
 static int mv88e6390_serdes_pcs_get_state_sgmii(struct mv88e6xxx_chip *chip,
 	int port, int lane, struct phylink_link_state *state)
 {
-	u16 lpa, status, ctrl;
+	u16 bmsr, lpa, status;
 	int err;
 
 	err = mv88e6390_serdes_read(chip, lane, MDIO_MMD_PHYXS,
-				    MV88E6390_SGMII_BMCR, &ctrl);
+				    MV88E6390_SGMII_BMSR, &bmsr);
 	if (err) {
-		dev_err(chip->dev, "can't read Serdes PHY control: %d\n", err);
+		dev_err(chip->dev, "can't read Serdes PHY BMSR: %d\n", err);
 		return err;
 	}
 
@@ -939,7 +934,7 @@ static int mv88e6390_serdes_pcs_get_state_sgmii(struct mv88e6xxx_chip *chip,
 		return err;
 	}
 
-	return mv88e6xxx_serdes_pcs_get_state(chip, ctrl, status, lpa, state);
+	return mv88e6xxx_serdes_pcs_get_state(chip, bmsr, lpa, status, state);
 }
 
 static int mv88e6390_serdes_pcs_get_state_10g(struct mv88e6xxx_chip *chip,
drivers/net/ethernet/altera/altera_tse_main.c +5 -1
index 993b2fb42961..36bf3ce545c9 100644
@@ -163,7 +163,8 @@ static int altera_tse_mdio_create(struct net_device *dev, unsigned int id)
 	mdio = mdiobus_alloc();
 	if (mdio == NULL) {
 		netdev_err(dev, "Error allocating MDIO bus\n");
-		return -ENOMEM;
+		ret = -ENOMEM;
+		goto put_node;
 	}
 
 	mdio->name = ALTERA_TSE_RESOURCE_NAME;
@@ -180,6 +181,7 @@ static int altera_tse_mdio_create(struct net_device *dev, unsigned int id)
 			   mdio->id);
 		goto out_free_mdio;
 	}
+	of_node_put(mdio_node);
 
 	if (netif_msg_drv(priv))
 		netdev_info(dev, "MDIO bus %s: created\n", mdio->id);
@@ -189,6 +191,8 @@ static int altera_tse_mdio_create(struct net_device *dev, unsigned int id)
 out_free_mdio:
 	mdiobus_free(mdio);
 	mdio = NULL;
+put_node:
+	of_node_put(mdio_node);
 	return ret;
 }
 
drivers/net/ethernet/broadcom/bgmac-bcma-mdio.c +1 -0
index 086739e4f40a..9b83d5361699 100644
@@ -234,6 +234,7 @@ struct mii_bus *bcma_mdio_mii_register(struct bgmac *bgmac)
 	np = of_get_child_by_name(core->dev.of_node, "mdio");
 
 	err = of_mdiobus_register(mii_bus, np);
+	of_node_put(np);
 	if (err) {
 		dev_err(&core->dev, "Registration of mii bus failed\n");
 		goto err_free_bus;
drivers/net/ethernet/intel/i40e/i40e_txrx.c +0 -11
index 66cc79500c10..af9c88e71452 100644
@@ -830,8 +830,6 @@ void i40e_free_tx_resources(struct i40e_ring *tx_ring)
 	i40e_clean_tx_ring(tx_ring);
 	kfree(tx_ring->tx_bi);
 	tx_ring->tx_bi = NULL;
-	kfree(tx_ring->xsk_descs);
-	tx_ring->xsk_descs = NULL;
 
 	if (tx_ring->desc) {
 		dma_free_coherent(tx_ring->dev, tx_ring->size,
@@ -1433,13 +1431,6 @@ int i40e_setup_tx_descriptors(struct i40e_ring *tx_ring)
 	if (!tx_ring->tx_bi)
 		goto err;
 
-	if (ring_is_xdp(tx_ring)) {
-		tx_ring->xsk_descs = kcalloc(I40E_MAX_NUM_DESCRIPTORS, sizeof(*tx_ring->xsk_descs),
-					     GFP_KERNEL);
-		if (!tx_ring->xsk_descs)
-			goto err;
-	}
-
 	u64_stats_init(&tx_ring->syncp);
 
 	/* round up to nearest 4K */
@@ -1463,8 +1454,6 @@ int i40e_setup_tx_descriptors(struct i40e_ring *tx_ring)
 	return 0;
 
 err:
-	kfree(tx_ring->xsk_descs);
-	tx_ring->xsk_descs = NULL;
 	kfree(tx_ring->tx_bi);
 	tx_ring->tx_bi = NULL;
 	return -ENOMEM;
drivers/net/ethernet/intel/i40e/i40e_txrx.h +0 -1
index bfc2845c99d1..f6d91fa1562e 100644
@@ -390,7 +390,6 @@ struct i40e_ring {
 	u16 rx_offset;
 	struct xdp_rxq_info xdp_rxq;
 	struct xsk_buff_pool *xsk_pool;
-	struct xdp_desc *xsk_descs;      /* For storing descriptors in the AF_XDP ZC path */
 } ____cacheline_internodealigned_in_smp;
 
 static inline bool ring_uses_build_skb(struct i40e_ring *ring)
drivers/net/ethernet/intel/i40e/i40e_xsk.c +2 -2
index e5e72b5bb619..c1d25b0b0ca2 100644
@@ -470,11 +470,11 @@ static void i40e_set_rs_bit(struct i40e_ring *xdp_ring)
  **/
 static bool i40e_xmit_zc(struct i40e_ring *xdp_ring, unsigned int budget)
 {
-	struct xdp_desc *descs = xdp_ring->xsk_descs;
+	struct xdp_desc *descs = xdp_ring->xsk_pool->tx_descs;
 	u32 nb_pkts, nb_processed = 0;
 	unsigned int total_bytes = 0;
 
-	nb_pkts = xsk_tx_peek_release_desc_batch(xdp_ring->xsk_pool, descs, budget);
+	nb_pkts = xsk_tx_peek_release_desc_batch(xdp_ring->xsk_pool, budget);
 	if (!nb_pkts)
 		return true;
 
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +4 -4
index 214a38de3f41..aaebdae8b5ff 100644
@@ -1157,9 +1157,9 @@ static int ixgbe_update_vf_xcast_mode(struct ixgbe_adapter *adapter,
 
 	switch (xcast_mode) {
 	case IXGBEVF_XCAST_MODE_NONE:
-		disable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE |
+		disable = IXGBE_VMOLR_ROMPE |
 			  IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;
-		enable = 0;
+		enable = IXGBE_VMOLR_BAM;
 		break;
 	case IXGBEVF_XCAST_MODE_MULTI:
 		disable = IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;
@@ -1181,9 +1181,9 @@ static int ixgbe_update_vf_xcast_mode(struct ixgbe_adapter *adapter,
 			return -EPERM;
 		}
 
-		disable = 0;
+		disable = IXGBE_VMOLR_VPE;
 		enable = IXGBE_VMOLR_BAM | IXGBE_VMOLR_ROMPE |
-			 IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE | IXGBE_VMOLR_VPE;
+			 IXGBE_VMOLR_MPE | IXGBE_VMOLR_UPE;
 		break;
 	default:
 		return -EOPNOTSUPP;
drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c +1 -1
index a73a8017e0ee..e3a317442c8c 100644
@@ -579,7 +579,7 @@ static bool is_valid_offset(struct rvu *rvu, struct cpt_rd_wr_reg_msg *req)
 
 	blkaddr = validate_and_get_cpt_blkaddr(req->blkaddr);
 	if (blkaddr < 0)
-		return blkaddr;
+		return false;
 
 	/* Registers that can be accessed from PF/VF */
 	if ((offset & 0xFF000) ==  CPT_AF_LFX_CTL(0) ||
drivers/net/ethernet/mediatek/mtk_eth_soc.c +3 -0
index f02d07ec5ccb..a50090e62c8f 100644
@@ -1949,6 +1949,9 @@ static int mtk_hwlro_get_fdir_entry(struct net_device *dev,
 	struct ethtool_rx_flow_spec *fsp =
 		(struct ethtool_rx_flow_spec *)&cmd->fs;
 
+	if (fsp->location >= ARRAY_SIZE(mac->hwlro_ip))
+		return -EINVAL;
+
 	/* only tcp dst ipv4 is meaningful, others are meaningless */
 	fsp->flow_type = TCP_V4_FLOW;
 	fsp->h_u.tcp_ip4_spec.ip4dst = ntohl(mac->hwlro_ip[fsp->location]);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +1 -1
index ed5038d98ef6..6400a827173c 100644
@@ -2110,7 +2110,7 @@ static int mlx4_en_get_module_eeprom(struct net_device *dev,
 			en_err(priv,
 			       "mlx4_get_module_info i(%d) offset(%d) bytes_to_read(%d) - FAILED (0x%x)\n",
 			       i, offset, ee->len - i, ret);
-			return 0;
+			return ret;
 		}
 
 		i += ret;
drivers/net/ethernet/mellanox/mlx5/core/dev.c +40 -14

74 lines not on this page · raw message

drivers/net/ethernet/mellanox/mlx5/core/diag/fw_tracer.c +5 -2
index eae9aa9c0811..978a2bb8e122 100644
@@ -675,6 +675,9 @@ static void mlx5_fw_tracer_handle_traces(struct work_struct *work)
 	if (!tracer->owner)
 		return;
 
+	if (unlikely(!tracer->str_db.loaded))
+		goto arm;
+
 	block_count = tracer->buff.size / TRACER_BLOCK_SIZE_BYTE;
 	start_offset = tracer->buff.consumer_index * TRACER_BLOCK_SIZE_BYTE;
 
@@ -732,6 +735,7 @@ static void mlx5_fw_tracer_handle_traces(struct work_struct *work)
 						      &tmp_trace_block[TRACES_PER_BLOCK - 1]);
 	}
 
+arm:
 	mlx5_fw_tracer_arm(dev);
 }
 
@@ -1136,8 +1140,7 @@ static int fw_tracer_event(struct notifier_block *nb, unsigned long action, void
 		queue_work(tracer->work_queue, &tracer->ownership_change_work);
 		break;
 	case MLX5_TRACER_SUBTYPE_TRACES_AVAILABLE:
-		if (likely(tracer->str_db.loaded))
-			queue_work(tracer->work_queue, &tracer->handle_traces_work);
+		queue_work(tracer->work_queue, &tracer->handle_traces_work);
 		break;
 	default:
 		mlx5_core_dbg(dev, "FWTracer: Event with unrecognized subtype: sub_type %d\n",
drivers/net/ethernet/mellanox/mlx5/core/en.h +4 -0
index 5ccd6c634274..4c8c8e4c1ef3 100644
@@ -730,6 +730,7 @@ struct mlx5e_rq {
 	u8                     wq_type;
 	u32                    rqn;
 	struct mlx5_core_dev  *mdev;
+	struct mlx5e_channel  *channel;
 	u32  umr_mkey;
 	struct mlx5e_dma_info  wqe_overflow;
 
@@ -1044,6 +1045,9 @@ void mlx5e_close_cq(struct mlx5e_cq *cq);
 int mlx5e_open_locked(struct net_device *netdev);
 int mlx5e_close_locked(struct net_device *netdev);
 
+void mlx5e_trigger_napi_icosq(struct mlx5e_channel *c);
+void mlx5e_trigger_napi_sched(struct napi_struct *napi);
+
 int mlx5e_open_channels(struct mlx5e_priv *priv,
 			struct mlx5e_channels *chs);
 void mlx5e_close_channels(struct mlx5e_channels *chs);
drivers/net/ethernet/mellanox/mlx5/core/en/fs.h +2 -0
index 678ffbb48a25..e3e8c1c3ff24 100644
@@ -12,6 +12,7 @@ struct mlx5e_post_act;
 enum {
 	MLX5E_TC_FT_LEVEL = 0,
 	MLX5E_TC_TTC_FT_LEVEL,
+	MLX5E_TC_MISS_LEVEL,
 };
 
 struct mlx5e_tc_table {
@@ -20,6 +21,7 @@ struct mlx5e_tc_table {
 	 */
 	struct mutex			t_lock;
 	struct mlx5_flow_table		*t;
+	struct mlx5_flow_table		*miss_t;
 	struct mlx5_fs_chains           *chains;
 	struct mlx5e_post_act		*post_act;
 
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c +1 -0
index 82baafd3c00c..fdb82f2b0130 100644
@@ -737,6 +737,7 @@ void mlx5e_ptp_activate_channel(struct mlx5e_ptp *c)
 	if (test_bit(MLX5E_PTP_STATE_RX, c->state)) {
 		mlx5e_ptp_rx_set_fs(c->priv);
 		mlx5e_activate_rq(&c->rq);
+		mlx5e_trigger_napi_sched(&c->napi);
 	}
 }
 
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_rx.c +6 -0
index 2684e9da9f41..fc366e66d0b0 100644
@@ -123,6 +123,8 @@ static int mlx5e_rx_reporter_err_icosq_cqe_recover(void *ctx)
 		xskrq->stats->recover++;
 	}
 
+	mlx5e_trigger_napi_icosq(icosq->channel);
+
 	mutex_unlock(&icosq->channel->icosq_recovery_lock);
 
 	return 0;
@@ -166,6 +168,10 @@ static int mlx5e_rx_reporter_err_rq_cqe_recover(void *ctx)
 	clear_bit(MLX5E_RQ_STATE_RECOVERING, &rq->state);
 	mlx5e_activate_rq(rq);
 	rq->stats->recover++;
+	if (rq->channel)
+		mlx5e_trigger_napi_icosq(rq->channel);
+	else
+		mlx5e_trigger_napi_sched(rq->cq.napi);
 	return 0;
 out:
 	clear_bit(MLX5E_RQ_STATE_RECOVERING, &rq->state);
drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +11 -8
index 9028e9958c72..cf9d48d934ef 100644
@@ -692,7 +692,7 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv,
 				struct mlx5_flow_attr *attr,
 				struct flow_rule *flow_rule,
 				struct mlx5e_mod_hdr_handle **mh,
-				u8 zone_restore_id, bool nat)
+				u8 zone_restore_id, bool nat_table, bool has_nat)
 {
 	DECLARE_MOD_HDR_ACTS_ACTIONS(actions_arr, MLX5_CT_MIN_MOD_ACTS);
 	DECLARE_MOD_HDR_ACTS(mod_acts, actions_arr);
@@ -708,11 +708,12 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv,
 				     &attr->ct_attr.ct_labels_id);
 	if (err)
 		return -EOPNOTSUPP;
-	if (nat) {
-		err = mlx5_tc_ct_entry_create_nat(ct_priv, flow_rule,
-						  &mod_acts);
-		if (err)
-			goto err_mapping;
+	if (nat_table) {
+		if (has_nat) {
+			err = mlx5_tc_ct_entry_create_nat(ct_priv, flow_rule, &mod_acts);
+			if (err)
+				goto err_mapping;
+		}
 
 		ct_state |= MLX5_CT_STATE_NAT_BIT;
 	}
@@ -727,7 +728,7 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv,
 	if (err)
 		goto err_mapping;
 
-	if (nat) {
+	if (nat_table && has_nat) {
 		attr->modify_hdr = mlx5_modify_header_alloc(ct_priv->dev, ct_priv->ns_type,
 							    mod_acts.num_actions,
 							    mod_acts.actions);
@@ -795,7 +796,9 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv,
 
 	err = mlx5_tc_ct_entry_create_mod_hdr(ct_priv, attr, flow_rule,
 					      &zone_rule->mh,
-					      zone_restore_id, nat);
+					      zone_restore_id,
+					      nat,
+					      mlx5_tc_ct_entry_has_nat(entry));
 	if (err) {
 		ct_dbg("Failed to create ct entry mod hdr");
 		goto err_mod_hdr;
drivers/net/ethernet/mellanox/mlx5/core/en/trap.c +1 -0
index a55b066746cb..6dd36e3cf425 100644
@@ -172,6 +172,7 @@ static void mlx5e_activate_trap(struct mlx5e_trap *trap)
 {
 	napi_enable(&trap->napi);
 	mlx5e_activate_rq(&trap->rq);
+	mlx5e_trigger_napi_sched(&trap->napi);
 }
 
 void mlx5e_deactivate_trap(struct mlx5e_priv *priv)
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/pool.c +1 -0
index 279cd8f4e79f..2c520394aa1d 100644
@@ -117,6 +117,7 @@ static int mlx5e_xsk_enable_locked(struct mlx5e_priv *priv,
 		goto err_remove_pool;
 
 	mlx5e_activate_xsk(c);
+	mlx5e_trigger_napi_icosq(c);
 
 	/* Don't wait for WQEs, because the newer xdpsock sample doesn't provide
 	 * any Fill Ring entries at the setup stage.
drivers/net/ethernet/mellanox/mlx5/core/en/xsk/setup.c +1 -4
index 25eac9e20342..5a2cd15e245d 100644
@@ -64,6 +64,7 @@ static int mlx5e_init_xsk_rq(struct mlx5e_channel *c,
 	rq->clock        = &mdev->clock;
 	rq->icosq        = &c->icosq;
 	rq->ix           = c->ix;
+	rq->channel      = c;
 	rq->mdev         = mdev;
 	rq->hw_mtu       = MLX5E_SW2HW_MTU(params, params->sw_mtu);
 	rq->xdpsq        = &c->rq_xdpsq;
@@ -179,10 +180,6 @@ void mlx5e_activate_xsk(struct mlx5e_channel *c)
 	mlx5e_reporter_icosq_resume_recovery(c);
 
 	/* TX queue is created active. */
-
-	spin_lock_bh(&c->async_icosq_lock);
-	mlx5e_trigger_irq(&c->async_icosq);
-	spin_unlock_bh(&c->async_icosq_lock);
 }
 
 void mlx5e_deactivate_xsk(struct mlx5e_channel *c)
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +22 -7
index 531fffe1abe3..352b5c8ae24e 100644
@@ -477,6 +477,7 @@ static int mlx5e_init_rxq_rq(struct mlx5e_channel *c, struct mlx5e_params *param
 	rq->clock        = &mdev->clock;
 	rq->icosq        = &c->icosq;
 	rq->ix           = c->ix;
+	rq->channel      = c;
 	rq->mdev         = mdev;
 	rq->hw_mtu       = MLX5E_SW2HW_MTU(params, params->sw_mtu);
 	rq->xdpsq        = &c->rq_xdpsq;
@@ -1070,13 +1071,6 @@ int mlx5e_open_rq(struct mlx5e_params *params, struct mlx5e_rq_param *param,
 void mlx5e_activate_rq(struct mlx5e_rq *rq)
 {
 	set_bit(MLX5E_RQ_STATE_ENABLED, &rq->state);
-	if (rq->icosq) {
-		mlx5e_trigger_irq(rq->icosq);
-	} else {
-		local_bh_disable();
-		napi_schedule(rq->cq.napi);
-		local_bh_enable();
-	}
 }
 
 void mlx5e_deactivate_rq(struct mlx5e_rq *rq)
@@ -2218,6 +2212,20 @@ static int mlx5e_channel_stats_alloc(struct mlx5e_priv *priv, int ix, int cpu)
 	return 0;
 }
 
+void mlx5e_trigger_napi_icosq(struct mlx5e_channel *c)
+{
+	spin_lock_bh(&c->async_icosq_lock);
+	mlx5e_trigger_irq(&c->async_icosq);
+	spin_unlock_bh(&c->async_icosq_lock);
+}
+
[… more lines in the raw message]

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +36 -2
index e0f45cef97c3..deff6698f395 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +7 -3
index cebfa8565c9d..c70cefbcd9ea 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +33 -4
index 298c614c631b..add55195335c 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/lag/lag.c +6 -6
index 4ddf6b330a44..d4629f9bdab1 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/lag/lag.h +10 -0
index e5d231c31b54..b5edf0c8b0ed 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h +1 -1
index 2d2150fc7a0f..83b52bc5cefd 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c +4 -5
index 05393fe11132..caeaa3c29353 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/microchip/lan966x/lan966x_main.c +7 -2
index fee148bbf13e..b0cb3b65cd5b 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/netronome/nfp/flower/conntrack.c +16 -16
index bfd7d1c35076..7e9fcc16286e 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/netronome/nfp/flower/match.c +8 -8
index 9d86eea4dc16..fb8bd2135c63 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +2 -2
index e0c27471bcdb..5e2631aafdb6 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/sfc/efx_channels.c +2 -4
index eec0db76d888..8ab9358a1c3d 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/sfc/net_driver.h +1 -1
index cc15ee8812d9..8a9eedec177a 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +1 -3
index 6f87e296a410..502fbbc082fb 100644

Lines of this file are not shown. View the raw message.

drivers/net/ethernet/ti/am65-cpsw-nuss.c +2 -1
index 8251d7eb001b..eda91336c9f6 100644

Lines of this file are not shown. View the raw message.

drivers/net/macsec.c +7 -0
index 3d0874331763..b901acca098b 100644

Lines of this file are not shown. View the raw message.

drivers/net/phy/dp83867.c +29 -0
index 8561f2d4443b..13dafe7a29bd 100644

Lines of this file are not shown. View the raw message.

drivers/net/phy/mdio_bus.c +0 -1
index 58d602985877..8a2dbe849866 100644

Lines of this file are not shown. View the raw message.

drivers/nfc/st21nfca/se.c +30 -23

53 lines not on this page · raw message

drivers/pci/controller/dwc/pcie-qcom.c +0 -6
index 1bbce48e301e..a84216f4cd58 100644

Lines of this file are not shown. View the raw message.

drivers/pci/controller/pcie-brcmstb.c +30 -227

257 lines not on this page · raw message

drivers/pcmcia/Kconfig +1 -1
index ab53eab635f6..1740a63b814d 100644

Lines of this file are not shown. View the raw message.

drivers/phy/qualcomm/phy-qcom-qmp.c +1 -1
index c2b878128e2c..7493fd634c1d 100644

Lines of this file are not shown. View the raw message.

drivers/phy/rockchip/phy-rockchip-inno-usb2.c +8 -2
index eca77e44a4c1..cba5c32cbaee 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/barco-p50-gpio.c +4 -1
index f5c72e33f9ae..f8b796820ef4 100644

Lines of this file are not shown. View the raw message.

drivers/platform/x86/hp-wmi.c +15 -8
index 88f0bfd6ecf1..c573bfd9ab0e 100644

Lines of this file are not shown. View the raw message.

drivers/power/supply/ab8500_fg.c +10 -9
index 09a4cbd69676..23adcb597ff9 100644

Lines of this file are not shown. View the raw message.

drivers/power/supply/axp288_charger.c +10 -7
index 19746e658a6a..15219ed43ce9 100644

Lines of this file are not shown. View the raw message.

drivers/power/supply/axp288_fuel_gauge.c +0 -1
index ce8ffd0a41b5..68595897e72d 100644

Lines of this file are not shown. View the raw message.

drivers/power/supply/charger-manager.c +2 -5
index d67edb760c94..92db79400a6a 100644

Lines of this file are not shown. View the raw message.

drivers/power/supply/max8997_charger.c +4 -4
index 25207fe2aa68..bfa7a576523d 100644

Lines of this file are not shown. View the raw message.

drivers/pwm/pwm-lp3943.c +1 -0
index ea17d446a627..2bd04ecb508c 100644

Lines of this file are not shown. View the raw message.

drivers/pwm/pwm-raspberrypi-poe.c +1 -1
index 579a15240e0a..c877de37734d 100644

Lines of this file are not shown. View the raw message.

drivers/remoteproc/imx_rproc.c +3 -0
index 7a096f1891e6..91eb037089ef 100644

Lines of this file are not shown. View the raw message.

drivers/rpmsg/qcom_smd.c +2 -2
index 540e027f08c4..4ad90945518f 100644

Lines of this file are not shown. View the raw message.

drivers/rpmsg/virtio_rpmsg_bus.c +4 -5
index ac764e04c898..ed26e9226834 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/rtc-ftrtc010.c +24 -10
index 53bb08fe1cd4..25c6e7d9570f 100644

Lines of this file are not shown. View the raw message.

drivers/rtc/rtc-mt6397.c +2 -0
index 80dc479a6ff0..1d297af80f87 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/myrb.c +8 -3
index 71585528e8db..e885c1dbf61f 100644

Lines of this file are not shown. View the raw message.

drivers/scsi/sd.c +1 -2
index 8b5d2a4076c2..b0922c521d61 100644

Lines of this file are not shown. View the raw message.

drivers/soc/rockchip/grf.c +2 -0
index 494cf2b5bf7b..343ff61ccccb 100644

Lines of this file are not shown. View the raw message.

drivers/soundwire/intel.c +3 -0
index 63101f1ba271..32e5fdb823c4 100644

Lines of this file are not shown. View the raw message.

drivers/soundwire/qcom.c +1 -1
index 54813417ef8e..249f1b69ec94 100644

Lines of this file are not shown. View the raw message.

drivers/spi/spi-fsi.c +6 -6
index d403a7a3021d..72ab066ce552 100644

Lines of this file are not shown. View the raw message.

drivers/staging/fieldbus/anybuss/host.c +1 -1
index a344410e48fe..cd86b9c9e345 100644

Lines of this file are not shown. View the raw message.

drivers/staging/greybus/audio_codec.c +2 -2
index b589cf6b1d03..e19b91e7a72e 100644

Lines of this file are not shown. View the raw message.

drivers/staging/r8188eu/core/rtw_xmit.c +11 -2
index 8503059edc46..f4e9f6102539 100644

Lines of this file are not shown. View the raw message.

drivers/staging/r8188eu/include/rtw_xmit.h +1 -1
index b2df1480d66b..e73632972900 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8192e/rtllib_softmac.c +1 -1
index 4b6c2295a3cf..b5a38f0a8d79 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c +1 -1
index 1a43979939a8..79f3fbe25556 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8712/os_intfs.c +0 -1
index d15d52c0d1a7..003e97205124 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8712/usb_intf.c +6 -6
index ee4c61f85a07..1ff3e2658e77 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8712/usb_ops.c +18 -9
index e64845e6adf3..af9966d03979 100644

Lines of this file are not shown. View the raw message.

drivers/staging/rtl8723bs/core/rtw_mlme.c +8 -4
index 9202223ebc0c..c29e3c68e61e 100644

Lines of this file are not shown. View the raw message.

drivers/thunderbolt/tb.c +17 -2
index cbd0ad85ffb1..a1f5d1842811 100644

Lines of this file are not shown. View the raw message.

drivers/thunderbolt/test.c +8 -8
index 1f69bab236ee..66b6e665e96f 100644

Lines of this file are not shown. View the raw message.

drivers/thunderbolt/tunnel.c +6 -5
index a473cc7d9a8d..500a0afe3073 100644

Lines of this file are not shown. View the raw message.

drivers/thunderbolt/tunnel.h +2 -2
index 03e56076b5bc..bb4d1f1d6d0b 100644

Lines of this file are not shown. View the raw message.

drivers/tty/goldfish.c +2 -0
index 10c13b93ed52..9355d97ff591 100644

Lines of this file are not shown. View the raw message.

drivers/tty/n_tty.c +37 -1
index efc72104c840..bdc314aeab88 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/8250/8250_aspeed_vuart.c +2 -0
index c2cecc6f47db..179bb1375636 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/8250/8250_fintek.c +4 -4
index 251f0018ae8c..dba5950b8d0e 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/cpm_uart/cpm_uart_core.c +1 -1
index d6d3db9c3b1f..db07d6a5d764 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/digicolor-usart.c +2 -0
index c7f81aa1ce91..5fea9bf86e85 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/fsl_lpuart.c +4 -20
index d32c25bc973b..b1307ef34468 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/icom.c +1 -1
index 03a2fe9f4c9a..02b375ba2f07 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/meson_uart.c +13 -0
index 45e00d928253..54a6b488bc8c 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/msm_serial.c +5 -0
index 23c94b927776..e676ec761f18 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/owl-uart.c +1 -0
index 91f1eb0058d7..9a6611cfc18e 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/rda-uart.c +2 -0
index d550d8fa2fab..a8fe1c3ebcd9 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/sa1100.c +2 -2
index 697b6a002a16..4ddcc985621a 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/serial_txx9.c +2 -0
index aaca4fe38486..1f8362d5e3b9 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/sh-sci.c +5 -1
index 968967d722d4..e55895f0a4ff 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/sifive.c +6 -2
index b79900d0e91a..cba44483cb03 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/st-asc.c +4 -0
index 87e480cc8206..5a45633aaea8 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/stm32-usart.c +12 -3
index 9570002d07e7..9bc970be59ba 100644

Lines of this file are not shown. View the raw message.

drivers/tty/serial/uartlite.c +2 -1
index e1fa52d31474..7c788c697f3e 100644

Lines of this file are not shown. View the raw message.

drivers/tty/synclink_gt.c +2 -0
index 25c558e65ece..9bc2a9265277 100644

Lines of this file are not shown. View the raw message.

drivers/tty/sysrq.c +9 -4
index bbfd004449b5..34cfdda4aff5 100644

Lines of this file are not shown. View the raw message.

drivers/usb/core/hcd-pci.c +2 -2
index d630cccd2e6e..5af810cd8a58 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc2/gadget.c +0 -1
index eee3504397e6..fe2a58c75861 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/drd.c +2 -7
index f148b0370f82..81ff21bd405a 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/dwc3-pci.c +1 -1
index f08b2178fd32..9c8887615701 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/gadget.c +16 -4
index 78ec6af79c7f..5c1ae0d0ed47 100644

Lines of this file are not shown. View the raw message.

drivers/usb/dwc3/host.c +0 -2
index eda871973d6c..f56c30cf151e 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/isp116x-hcd.c +4 -2
index 8835f6bd528e..8c7f0991c21b 100644

Lines of this file are not shown. View the raw message.

drivers/usb/host/oxu210hp-hcd.c +2 -0
index e82ff2a49672..4f5498521e1b 100644

Lines of this file are not shown. View the raw message.

drivers/usb/musb/omap2430.c +1 -0
index d2b7e613eb34..f571a65ae6ee 100644

Lines of this file are not shown. View the raw message.

drivers/usb/phy/phy-omap-otg.c +2 -2
index ee0863c6553e..6e6ef8c0bc7e 100644

Lines of this file are not shown. View the raw message.

drivers/usb/storage/karma.c +8 -7
index 05cec81dcd3f..38ddfedef629 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/mux.c +10 -4
index c8340de0ed49..d2aaf294b649 100644

Lines of this file are not shown. View the raw message.

drivers/usb/typec/tcpm/fusb302.c +2 -2
index 72f9001b0792..96c55eaf3f80 100644

Lines of this file are not shown. View the raw message.

drivers/usb/usbip/stub_dev.c +1 -1
index d8d3892e5a69..3c6d452e3bf4 100644

Lines of this file are not shown. View the raw message.

drivers/usb/usbip/stub_rx.c +2 -0
index 325c22008e53..5dd41e8215e0 100644

Lines of this file are not shown. View the raw message.

drivers/vdpa/ifcvf/ifcvf_main.c +2 -1
index d1a6b5ab543c..474c6120c955 100644

Lines of this file are not shown. View the raw message.

drivers/vdpa/vdpa.c +9 -4
index 1ea525433a5c..4e7351110e43 100644

Lines of this file are not shown. View the raw message.

drivers/vdpa/vdpa_user/vduse_dev.c +3 -4
index f85d1a08ed87..160e40d03084 100644

Lines of this file are not shown. View the raw message.

drivers/vhost/vringh.c +8 -2
index 14e2043d7685..eab55accf381 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/hyperv_fb.c +1 -18
index c8e0ea27caf1..58c304a3b7c4 100644

Lines of this file are not shown. View the raw message.

drivers/video/fbdev/pxa3xx-gcu.c +7 -5
index 4279e13a3b58..9421d14d0eb0 100644

Lines of this file are not shown. View the raw message.

drivers/virtio/virtio_pci_modern_dev.c +1 -0
index e8b3ff2b9fbc..6f6187fe8893 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/rti_wdt.c +1 -1
index db843f825860..00ebeffc674f 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/rzg2l_wdt.c +17 -29

46 lines not on this page · raw message

drivers/watchdog/ts4800_wdt.c +4 -1
index c137ad2bd5c3..0ea554c7cda5 100644

Lines of this file are not shown. View the raw message.

drivers/watchdog/wdat_wdt.c +1 -0
index 195c8c004b69..4fac8148a8e6 100644

Lines of this file are not shown. View the raw message.

drivers/xen/xlate_mmu.c +0 -1
index 34742c6e189e..f17c4c03db30 100644

Lines of this file are not shown. View the raw message.

fs/afs/dir.c +4 -1
index da9b4f8577a1..7f1cb3b73874 100644

Lines of this file are not shown. View the raw message.

fs/ceph/mds_client.c +27 -6
index b34d6286ee90..7744db8f5bb0 100644

Lines of this file are not shown. View the raw message.

fs/ceph/xattr.c +9 -1
index fcf7dfdecf96..e41b22bd66ce 100644

Lines of this file are not shown. View the raw message.

fs/cifs/cifsfs.c +1 -1
index a6363d362c48..12829b62fcc9 100644

Lines of this file are not shown. View the raw message.

fs/cifs/cifsfs.h +1 -1
index 15a5c5db038b..6e1791afcd87 100644

Lines of this file are not shown. View the raw message.

fs/cifs/cifsglob.h +3 -1
index 7f28fe8f6ba7..bf6cc128436a 100644

Lines of this file are not shown. View the raw message.

fs/cifs/connect.c +4 -0
index faf4587804d9..9dc0c7ccd5e8 100644

Lines of this file are not shown. View the raw message.

fs/cifs/misc.c +16 -11
index 5a803d686146..4abf36b3b345 100644

Lines of this file are not shown. View the raw message.

fs/cifs/sess.c +4 -1
index 1a0995bb5d90..822da5689166 100644

Lines of this file are not shown. View the raw message.

fs/cifs/smb2ops.c +6 -1
index ab74a678fb93..e0a1cb4b9f19 100644

Lines of this file are not shown. View the raw message.

fs/cifs/smb2pdu.c +3 -0
index 55e6879ef18b..4cdc54ffa366 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/checkpoint.c +2 -2
index bf3ba85cf325..1438ae53c73c 100644

Lines of this file are not shown. View the raw message.

fs/f2fs/file.c +1 -0
index 29cd65f7c9eb..a2b7dead68e0 100644

Lines of this file are not shown. View the raw message.

fs/fs-writeback.c +28 -9
index d6cb4b52758b..69d1d8ad0903 100644

Lines of this file are not shown. View the raw message.

fs/inode.c +1 -1
index 63324df6fa27..a5b45dac0083 100644

Lines of this file are not shown. View the raw message.

fs/jffs2/fs.c +1 -0
index 71f03a5d36ed..f83a468b6488 100644

Lines of this file are not shown. View the raw message.

fs/kernfs/dir.c +19 -12
index 4096953390b4..52f3afeed612 100644

Lines of this file are not shown. View the raw message.

fs/ksmbd/smbacl.c +1 -0
index 6ecf55ea1fed..38f23bf981ac 100644

Lines of this file are not shown. View the raw message.

fs/ksmbd/transport_rdma.c +1 -0
index ba5a22bc2e6d..d3b60b833a81 100644

Lines of this file are not shown. View the raw message.

fs/nfs/nfs4proc.c +4 -0
index 1db686509a3e..e9761f55ac9c 100644

Lines of this file are not shown. View the raw message.

fs/zonefs/super.c +6 -5
index 63e09caf19b8..61c1d0bc22e7 100644

Lines of this file are not shown. View the raw message.

include/linux/export.h +4 -3
index 27d848712b90..5910ccb66ca2 100644

Lines of this file are not shown. View the raw message.

include/linux/extcon.h +1 -1
index 0c19010da77f..685401d94d39 100644

Lines of this file are not shown. View the raw message.

include/linux/genhd.h +1 -0
index 6906a45bc761..2cb105f12028 100644

Lines of this file are not shown. View the raw message.

include/linux/iio/common/st_sensors.h +3 -0
index 22f67845cdd3..db4a1b260348 100644

Lines of this file are not shown. View the raw message.

include/linux/jump_label.h +2 -2
index 48b9b2a82767..019e55c13248 100644

Lines of this file are not shown. View the raw message.

include/linux/mlx5/mlx5_ifc.h +2 -3
index 49a48d7709ac..4cd54277d5d9 100644

Lines of this file are not shown. View the raw message.

include/linux/nodemask.h +19 -19
index c6199dbe2591..0f233b76c9ce 100644

Lines of this file are not shown. View the raw message.

include/linux/random.h +1 -1
index 917470c4490a..3feafab498ad 100644

Lines of this file are not shown. View the raw message.

include/linux/xarray.h +1 -0
index 66e28bc1a023..9409a3d26dfd 100644

Lines of this file are not shown. View the raw message.

include/net/ax25.h +1 -0
index 8221af1811df..5253692db9eb 100644

Lines of this file are not shown. View the raw message.

include/net/bluetooth/hci_core.h +7 -10
index 4524920e4895..f397b0a3d631 100644

Lines of this file are not shown. View the raw message.

include/net/flow_offload.h +1 -0
index 5b8c54eb7a6b..7a10e4ed5540 100644

Lines of this file are not shown. View the raw message.

include/net/netfilter/nf_tables.h +0 -1
index c4c0861deac1..c3fdd9f71c05 100644

Lines of this file are not shown. View the raw message.

include/net/netfilter/nf_tables_offload.h +1 -1
index 797147843958..3568b6a2f5f0 100644

Lines of this file are not shown. View the raw message.

include/net/sch_generic.h +14 -28

42 lines not on this page · raw message

include/net/tcp.h +15 -4
index a3fe2f9bc01c..818ac8077381 100644

Lines of this file are not shown. View the raw message.

include/net/xdp_sock_drv.h +2 -3
index 443d45951564..4aa031849668 100644

Lines of this file are not shown. View the raw message.

include/net/xsk_buff_pool.h +2 -0
index ddeefc4a1040..647722e847b4 100644

Lines of this file are not shown. View the raw message.

include/trace/events/tcp.h +1 -1
index 521059d8dc0a..edcd6369de10 100644

Lines of this file are not shown. View the raw message.

kernel/bpf/core.c +5 -9
index 64c44eed8c07..10c4a2028e07 100644

Lines of this file are not shown. View the raw message.

kernel/trace/trace.c +10 -3
index 8bc7beea10c7..7ebf42607505 100644

Lines of this file are not shown. View the raw message.

kernel/trace/trace_syscalls.c +11 -24
index f755bde42fd0..b69e207012c9 100644

Lines of this file are not shown. View the raw message.

lib/Makefile +1 -1
index 300f569c626b..4c0220cb4329 100644

Lines of this file are not shown. View the raw message.

lib/iov_iter.c +4 -16
index 6dd5330f7a99..0b64695ab632 100644

Lines of this file are not shown. View the raw message.

lib/nodemask.c +2 -2
index 3aa454c54c0d..e22647f5181b 100644

Lines of this file are not shown. View the raw message.

lib/xarray.c +3 -2
index 32e1669d5b64..276d56bd19a2 100644

Lines of this file are not shown. View the raw message.

mm/huge_memory.c +1 -2
index fb9163691705..33be0864aeba 100644

Lines of this file are not shown. View the raw message.

net/ax25/af_ax25.c +17 -10
index 363d47f94532..289f355e1853 100644

Lines of this file are not shown. View the raw message.

net/ax25/ax25_dev.c +1 -0
index d2a244e1c260..5451be15e072 100644

Lines of this file are not shown. View the raw message.

net/ax25/ax25_subr.c +1 -1
index 3a476e4f6cd0..9ff98f46dc6b 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_core.c +2 -2
index 9e9713f7ddb8..f1feb9204063 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_request.c +1 -1
index f4afe482e300..95689982eedb 100644

Lines of this file are not shown. View the raw message.

net/bluetooth/hci_sync.c +45 -17

62 lines not on this page · raw message

net/bluetooth/mgmt.c +27 -18

45 lines not on this page · raw message

net/core/filter.c +1 -1
index f8fbb5fa74f3..4210b127c5f5 100644

Lines of this file are not shown. View the raw message.

net/core/flow_offload.c +6 -0
index 73f68d4625f3..929f6379a279 100644

Lines of this file are not shown. View the raw message.

net/core/neighbour.c +1 -1
index ec0bf737b076..a252f4090d75 100644

Lines of this file are not shown. View the raw message.

net/ipv4/inet_hashtables.c +6 -4
index a5d57fa679ca..55654e335d43 100644

Lines of this file are not shown. View the raw message.

net/ipv4/ip_gre.c +5 -6
index 8cf86e42c1d1..65b6d4c1698e 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp.c +4 -4
index 28ff2a820f7c..c9ad372f8edb 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_bbr.c +10 -10
index ec5550089b4d..aefe12b7dbf7 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_bic.c +7 -7
index f5f588b1f6e9..58358bf92e1b 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_cdg.c +15 -15
index 709d23801823..ddc7ba0554bd 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_cong.c +9 -9
index db5831e6c136..f43db30a7195 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_cubic.c +11 -11
index e07837e23b3f..f0a240792ff9 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_dctcp.c +6 -5
index 0d7ab3cc7b61..d0bf7bb4b140 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_highspeed.c +9 -9
index 349069d6cd0a..c6de5ce79ad3 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_htcp.c +5 -5
index 55adcfcf96fe..52b1f2665dfa 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_hybla.c +9 -9
index be39327e04e6..abd7d91807e5 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_illinois.c +7 -5
index 00e54873213e..c0c81a2c77fa 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_input.c +22 -19

41 lines not on this page · raw message

net/ipv4/tcp_ipv4.c +1 -1
index fec656f5a39e..79f9a6187a01 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_lp.c +3 -3
index 82b36ec3f2f8..ae36780977d2 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_metrics.c +6 -6
index 0588b004ddac..7029b0e98edb 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_nv.c +12 -12
index ab552356bdba..a60662f4bdf9 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_output.c +17 -17
index 0b5eab685154..2adff4877cd6 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_rate.c +1 -1
index 9a8e014d9b5b..a8f6d9d06f2e 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_scalable.c +2 -2
index 5842081bc8a2..862b96248a92 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_vegas.c +11 -10
index c8003c8aad2c..786848ad37ea 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_veno.c +12 -12
index cd50a61c9976..366ff6f214b2 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_westwood.c +2 -1
index b2e05c4cea00..c6e97141eef2 100644

Lines of this file are not shown. View the raw message.

net/ipv4/tcp_yeah.c +15 -15
index 07c4c93b9fdb..18b07ff5d20e 100644

Lines of this file are not shown. View the raw message.

net/ipv4/xfrm4_protocol.c +0 -1
index 2fe5860c21d6..b146ce88c5d0 100644

Lines of this file are not shown. View the raw message.

net/ipv6/seg6_hmac.c +0 -1
index 29bc4e7c3046..6de01185cc68 100644

Lines of this file are not shown. View the raw message.

net/ipv6/tcp_ipv6.c +1 -1
index 075ee8a2df3b..29a4fc92580e 100644

Lines of this file are not shown. View the raw message.

net/key/af_key.c +6 -4
index 339d95df19d3..d93bde657359 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nf_tables_api.c +23 -31

54 lines not on this page · raw message

net/netfilter/nf_tables_offload.c +22 -1
index 2d36952b1392..910ef881c3b8 100644

Lines of this file are not shown. View the raw message.

net/netfilter/nft_nat.c +2 -1
index be1595d6979d..db8f9116eeb4 100644

Lines of this file are not shown. View the raw message.

net/openvswitch/actions.c +6 -0
index 8955f31fa47e..aca6e2b599c8 100644

Lines of this file are not shown. View the raw message.

net/openvswitch/conntrack.c +3 -1
index 4a947c13c813..4e70df91d0f2 100644

Lines of this file are not shown. View the raw message.

net/sched/act_police.c +15 -1
index 0923aa2b8f8a..899fe025df77 100644

Lines of this file are not shown. View the raw message.

net/smc/af_smc.c +1 -0
index b9fe31834354..4bc6b16669f3 100644

Lines of this file are not shown. View the raw message.

net/smc/smc_cdc.c +1 -1
index 9d5a97168969..93042ef6869b 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/xdr.c +5 -1
index df194cc07035..b57cf9df4de8 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/xprtrdma/rpc_rdma.c +5 -0
index 281ddb87ac8d..190a4de239c8 100644

Lines of this file are not shown. View the raw message.

net/sunrpc/xprtrdma/svc_rdma_rw.c +2 -2
index 5f0155fdefc7..11cf7c646644 100644

Lines of this file are not shown. View the raw message.

net/tipc/bearer.c +1 -2
index a2f9c9640716..91d9c815a406 100644

Lines of this file are not shown. View the raw message.

net/unix/af_unix.c +1 -1
index 1e7ed5829ed5..99c56922abf5 100644

Lines of this file are not shown. View the raw message.

net/xdp/xsk.c +21 -8
index 39a82bfb5caa..d6bcdbfd0fc5 100644

Lines of this file are not shown. View the raw message.

net/xdp/xsk_buff_pool.c +15 -0
index 0202a90b65e3..87bdd71c7bb6 100644

Lines of this file are not shown. View the raw message.

net/xdp/xsk_queue.h +3 -11
index e9aa2c236356..4d092e7a33d1 100644

Lines of this file are not shown. View the raw message.

scripts/gdb/linux/config.py +3 -3
index 90e1565b1967..8843ab3cbadd 100644

Lines of this file are not shown. View the raw message.

scripts/get_abi.pl +2 -2
index 6212f58b69c6..0cf501285204 100755

Lines of this file are not shown. View the raw message.

scripts/mod/modpost.c +3 -2
index e04ae56931e2..eae6ae9d3c3b 100644

Lines of this file are not shown. View the raw message.

security/keys/trusted-keys/trusted_tpm2.c +2 -2
index 0165da386289..2b2c8eb258d5 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_conexant.c +7 -0
index 0515137a75b0..bce2cef80000 100644

Lines of this file are not shown. View the raw message.

sound/pci/hda/patch_realtek.c +2 -0
index 112ecc256b14..4a9cddc04045 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/rt5640.c +9 -2
index e7a82565b905..f078463346e8 100644

Lines of this file are not shown. View the raw message.

sound/soc/codecs/rt5640.h +2 -0
index 9e49b9a0ccaa..505c93514051 100644

Lines of this file are not shown. View the raw message.

sound/soc/fsl/fsl_sai.h +2 -2
index 9aaf231bc024..93da86009c75 100644

Lines of this file are not shown. View the raw message.

sound/soc/intel/boards/bytcr_rt5640.c +2 -0
index b5ac226c59e1..754cc4fc706d 100644

Lines of this file are not shown. View the raw message.

sound/usb/pcm.c +4 -1
index b470404a5376..e692ae04436a 100644

Lines of this file are not shown. View the raw message.

sound/usb/quirks-table.h +6 -1
index 78eb41b621d6..4f56e1784932 100644

Lines of this file are not shown. View the raw message.

tools/perf/arch/x86/util/evlist.c +3 -2
index 75564a7df15b..68f681ad54c1 100644

Lines of this file are not shown. View the raw message.

tools/perf/arch/x86/util/evsel.c +22 -2
index 0c9e56ab07b5..3501399cef35 100644

Lines of this file are not shown. View the raw message.

tools/perf/arch/x86/util/evsel.h new file +7 -0
new file mode 100644
index 000000000000..19ad1691374d

Lines of this file are not shown. View the raw message.

tools/perf/arch/x86/util/topdown.c +29 -17

46 lines not on this page · raw message

tools/perf/arch/x86/util/topdown.h new file +7 -0
new file mode 100644
index 000000000000..46bf9273e572

Lines of this file are not shown. View the raw message.

tools/perf/builtin-c2c.c +2 -2
index d8ec683b06a5..4e0c385427a4 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/bpf/progs/test_stacktrace_build_id.c +2 -10
index 36a707e7c7a7..0c4426592a26 100644

Lines of this file are not shown. View the raw message.

tools/testing/selftests/net/forwarding/tc_police.sh +52 -0

52 lines not on this page · raw message

tools/testing/selftests/netfilter/nft_nat.sh +43 -0

43 lines not on this page · raw message

tools/tracing/rtla/Makefile +35 -0
index 4b635d4de018..32ed2e7535c5 100644

Lines of this file are not shown. View the raw message.

The rest of this diff is not shown. View the raw message.

Part of the diff is not shown here. View the raw message.