Linux 6.6.95
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.6.95 kernel.
All users of the 6.6 kernel series must upgrade.
The updated 6.6.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.6.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/admin-guide/kernel-parameters.txt | 2 Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml | 24 - Makefile | 2 arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi | 2 arch/arm/mach-omap2/clockdomain.h | 1 arch/arm/mach-omap2/clockdomains33xx_data.c | 2 arch/arm/mach-omap2/cm33xx.c | 14 arch/arm/mach-omap2/pmic-cpcap.c | 6 arch/arm/mm/ioremap.c | 4 arch/arm64/include/asm/tlbflush.h | 9 arch/arm64/kernel/ptrace.c | 2 arch/arm64/mm/mmu.c | 3 arch/loongarch/include/asm/irqflags.h | 16 arch/loongarch/mm/hugetlbpage.c | 3 arch/mips/vdso/Makefile | 1 arch/parisc/boot/compressed/Makefile | 1 arch/parisc/kernel/unaligned.c | 2 arch/powerpc/include/asm/ppc_asm.h | 2 arch/powerpc/kernel/eeh.c | 2 arch/powerpc/kernel/vdso/Makefile | 2 arch/powerpc/platforms/pseries/msi.c | 7 arch/riscv/kvm/vcpu_sbi_replace.c | 8 arch/s390/kvm/gaccess.c | 8 arch/s390/pci/pci_mmio.c | 2 arch/x86/kernel/cpu/bugs.c | 10 arch/x86/kernel/cpu/sgx/main.c | 2 arch/x86/kvm/svm/svm.c | 2 arch/x86/kvm/vmx/vmx.c | 5 drivers/acpi/acpica/dsutils.c | 9 drivers/acpi/acpica/psobject.c | 52 -- drivers/acpi/acpica/utprint.c | 7 drivers/acpi/battery.c | 19 drivers/acpi/bus.c | 6 drivers/ata/pata_via.c | 3 drivers/atm/atmtcp.c | 4 drivers/base/power/runtime.c | 2 drivers/base/swnode.c | 2 drivers/block/aoe/aoedev.c | 8 drivers/block/ublk_drv.c | 3 drivers/bus/fsl-mc/fsl-mc-uapi.c | 4 drivers/bus/fsl-mc/mc-io.c | 19 drivers/bus/fsl-mc/mc-sys.c | 2 drivers/bus/mhi/ep/ring.c | 16 drivers/bus/mhi/host/pm.c | 18 drivers/bus/ti-sysc.c | 49 -- drivers/clk/meson/g12a.c | 1 drivers/clk/rockchip/clk-rk3036.c | 1 drivers/cpufreq/scmi-cpufreq.c | 36 + drivers/cpufreq/tegra186-cpufreq.c | 7 drivers/crypto/marvell/cesa/cesa.c | 2 drivers/crypto/marvell/cesa/cesa.h | 9 drivers/crypto/marvell/cesa/tdma.c | 53 +- drivers/dma-buf/udmabuf.c | 5 drivers/edac/altera_edac.c | 6 drivers/edac/amd64_edac.c | 1 drivers/gpio/gpio-mlxbf3.c | 54 +- drivers/gpio/gpiolib-of.c | 9 drivers/gpu/drm/i915/i915_pmu.c | 4 drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c | 14 drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c | 7 drivers/gpu/drm/nouveau/nouveau_backlight.c | 2 drivers/hv/connection.c | 23 drivers/hwmon/ftsteutates.c | 9 drivers/hwmon/occ/common.c | 240 ++++------ drivers/i2c/busses/i2c-designware-slave.c | 2 drivers/i2c/busses/i2c-npcm7xx.c | 12 drivers/i2c/busses/i2c-tegra.c | 5 drivers/iio/accel/fxls8962af-core.c | 15 drivers/iio/adc/ad7606_spi.c | 2 drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c | 8 drivers/infiniband/core/iwcm.c | 29 - drivers/input/keyboard/gpio_keys.c | 2 drivers/input/misc/ims-pcu.c | 6 drivers/input/misc/sparcspkr.c | 22 drivers/iommu/amd/iommu.c | 8 drivers/md/dm-raid1.c | 5 drivers/md/dm-verity-fec.c | 4 drivers/md/dm-verity-target.c | 8 drivers/md/dm-verity-verify-sig.c | 17 drivers/media/common/videobuf2/videobuf2-dma-sg.c | 4 drivers/media/i2c/ccs-pll.c | 11 drivers/media/i2c/ds90ub913.c | 4 drivers/media/i2c/ov5675.c | 5 drivers/media/i2c/ov8856.c | 9 drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_hevc_req_multi_if.c | 2 drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 59 +- drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c | 14 drivers/media/platform/qcom/venus/core.c | 16 drivers/media/platform/ti/davinci/vpif.c | 4 drivers/media/platform/ti/omap3isp/ispccdc.c | 8 drivers/media/platform/ti/omap3isp/ispstat.c | 6 drivers/media/test-drivers/vidtv/vidtv_channel.c | 2 drivers/media/test-drivers/vivid/vivid-vid-cap.c | 2 drivers/media/usb/dvb-usb/cxusb.c | 3 drivers/media/usb/gspca/stv06xx/stv06xx_hdcs.c | 7 drivers/media/usb/uvc/uvc_ctrl.c | 23 drivers/media/usb/uvc/uvc_driver.c | 27 - drivers/media/v4l2-core/v4l2-dev.c | 14 drivers/mmc/core/card.h | 6 drivers/mmc/core/quirks.h | 10 drivers/mmc/core/sd.c | 32 + drivers/mtd/nand/raw/qcom_nandc.c | 2 drivers/mtd/nand/raw/sunxi_nand.c | 2 drivers/net/can/m_can/tcan4x5x-core.c | 9 drivers/net/ethernet/aquantia/atlantic/aq_main.c | 1 drivers/net/ethernet/aquantia/atlantic/aq_nic.c | 2 drivers/net/ethernet/cadence/macb_main.c | 6 drivers/net/ethernet/cortina/gemini.c | 37 + drivers/net/ethernet/dlink/dl2k.c | 14 drivers/net/ethernet/dlink/dl2k.h | 2 drivers/net/ethernet/emulex/benet/be_cmds.c | 2 drivers/net/ethernet/faraday/Kconfig | 1 drivers/net/ethernet/intel/e1000e/netdev.c | 14 drivers/net/ethernet/intel/e1000e/ptp.c | 8 drivers/net/ethernet/intel/i40e/i40e_common.c | 7 drivers/net/ethernet/intel/ice/ice_arfs.c | 48 ++ drivers/net/ethernet/intel/ice/ice_switch.c | 4 drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c | 9 drivers/net/ethernet/mellanox/mlx4/en_ethtool.c | 1 drivers/net/ethernet/mellanox/mlx5/core/vport.c | 18 drivers/net/ethernet/microchip/lan743x_ethtool.c | 18 drivers/net/ethernet/microchip/lan743x_ptp.c | 2 drivers/net/ethernet/microchip/lan743x_ptp.h | 5 drivers/net/ethernet/pensando/ionic/ionic_main.c | 3 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 24 - drivers/net/ethernet/vertexcom/mse102x.c | 15 drivers/net/usb/asix.h | 1 drivers/net/usb/asix_common.c | 22 drivers/net/usb/asix_devices.c | 17 drivers/net/usb/ch9200.c | 7 drivers/net/vxlan/vxlan_core.c | 8 drivers/net/wireless/ath/ath11k/ce.c | 11 drivers/net/wireless/ath/ath11k/core.c | 55 ++ drivers/net/wireless/ath/ath11k/core.h | 7 drivers/net/wireless/ath/ath11k/dp_rx.c | 25 - drivers/net/wireless/ath/ath11k/hal.c | 4 drivers/net/wireless/ath/ath11k/qmi.c | 9 drivers/net/wireless/ath/ath12k/ce.c | 11 drivers/net/wireless/ath/ath12k/ce.h | 6 drivers/net/wireless/ath/ath12k/dp_mon.c | 2 drivers/net/wireless/ath/ath12k/hal.c | 4 drivers/net/wireless/ath/ath12k/hal_desc.h | 2 drivers/net/wireless/ath/ath12k/pci.c | 3 drivers/net/wireless/ath/ath12k/wmi.c | 20 drivers/net/wireless/ath/carl9170/usb.c | 19 drivers/net/wireless/intel/iwlwifi/cfg/22000.c | 3 drivers/net/wireless/intel/iwlwifi/pcie/trans.c | 6 drivers/net/wireless/intersil/p54/fwio.c | 2 drivers/net/wireless/intersil/p54/p54.h | 1 drivers/net/wireless/intersil/p54/txrx.c | 13 drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 2 drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c | 13 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 5 drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 8 drivers/net/wireless/purelifi/plfxlc/usb.c | 4 drivers/net/wireless/realtek/rtlwifi/pci.c | 10 drivers/net/wireless/realtek/rtw88/usb.c | 2 drivers/net/wireless/realtek/rtw89/cam.c | 3 drivers/net/wireless/realtek/rtw89/pci.c | 69 ++ drivers/net/wireless/realtek/rtw89/pci.h | 1 drivers/net/wireless/virtual/mac80211_hwsim.c | 5 drivers/pci/controller/cadence/pcie-cadence-ep.c | 5 drivers/pci/controller/dwc/pcie-dw-rockchip.c | 2 drivers/pci/pci.c | 3 drivers/pci/quirks.c | 23 drivers/phy/freescale/phy-fsl-imx8mq-usb.c | 10 drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 21 drivers/pinctrl/pinctrl-mcp23s08.c | 8 drivers/platform/loongarch/loongson-laptop.c | 87 +-- drivers/platform/x86/amd/pmc/pmc.c | 2 drivers/platform/x86/dell/dell_rbu.c | 6 drivers/platform/x86/ideapad-laptop.c | 3 drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c | 9 drivers/power/supply/bq27xxx_battery.c | 2 drivers/power/supply/bq27xxx_battery_i2c.c | 13 drivers/power/supply/collie_battery.c | 1 drivers/ptp/ptp_clock.c | 3 drivers/ptp/ptp_private.h | 22 drivers/rapidio/rio_cm.c | 3 drivers/regulator/max14577-regulator.c | 5 drivers/regulator/max20086-regulator.c | 4 drivers/remoteproc/remoteproc_core.c | 6 drivers/s390/scsi/zfcp_sysfs.c | 2 drivers/scsi/elx/efct/efct_hw.c | 5 drivers/scsi/lpfc/lpfc_hbadisc.c | 2 drivers/scsi/lpfc/lpfc_sli.c | 4 drivers/scsi/storvsc_drv.c | 10 drivers/staging/iio/impedance-analyzer/ad5933.c | 2 drivers/tee/tee_core.c | 11 drivers/tty/serial/sh-sci.c | 16 drivers/uio/uio_hv_generic.c | 4 drivers/video/console/vgacon.c | 2 drivers/video/fbdev/core/fbcon.c | 7 drivers/video/fbdev/core/fbmem.c | 22 drivers/video/screen_info_pci.c | 79 ++- drivers/watchdog/da9052_wdt.c | 1 fs/ceph/super.c | 1 fs/configfs/dir.c | 2 fs/ext4/ext4.h | 7 fs/ext4/extents.c | 18 fs/ext4/file.c | 7 fs/ext4/inline.c | 2 fs/ext4/inode.c | 10 fs/f2fs/compress.c | 23 fs/f2fs/f2fs.h | 5 fs/f2fs/inode.c | 10 fs/f2fs/namei.c | 9 fs/f2fs/segment.c | 6 fs/f2fs/super.c | 12 fs/gfs2/lock_dlm.c | 3 fs/jbd2/transaction.c | 5 fs/jffs2/erase.c | 4 fs/jffs2/scan.c | 4 fs/jffs2/summary.c | 7 fs/nfs/read.c | 3 fs/nfsd/nfs4proc.c | 3 fs/nfsd/nfssvc.c | 6 fs/smb/client/cached_dir.c | 14 fs/smb/client/cached_dir.h | 8 fs/smb/client/cifsglob.h | 1 fs/smb/client/connect.c | 17 fs/smb/client/namespace.c | 3 fs/smb/client/readdir.c | 28 - fs/smb/client/reparse.c | 1 fs/smb/client/sess.c | 7 fs/smb/client/smb2pdu.c | 33 - fs/smb/client/transport.c | 14 fs/smb/server/smb2pdu.c | 11 fs/xattr.c | 1 include/acpi/actypes.h | 2 include/linux/acpi.h | 9 include/linux/atmdev.h | 6 include/linux/hugetlb.h | 3 include/linux/mmc/card.h | 1 include/linux/netdevice.h | 3 include/net/checksum.h | 2 include/trace/events/erofs.h | 18 include/uapi/linux/bpf.h | 2 io_uring/io-wq.c | 4 io_uring/io_uring.c | 2 io_uring/kbuf.c | 2 ipc/shm.c | 5 kernel/bpf/helpers.c | 3 kernel/cgroup/legacy_freezer.c | 3 kernel/events/core.c | 80 ++- kernel/exit.c | 17 kernel/time/clocksource.c | 2 kernel/trace/ftrace.c | 10 kernel/watchdog.c | 41 + lib/Kconfig | 1 mm/huge_memory.c | 11 mm/hugetlb.c | 67 ++ mm/mmap.c | 6 mm/page-writeback.c | 2 net/atm/common.c | 1 net/atm/lec.c | 12 net/atm/raw.c | 2 net/bridge/br_mst.c | 4 net/bridge/br_multicast.c | 103 +++- net/bridge/br_private.h | 11 net/core/filter.c | 24 - net/core/skmsg.c | 3 net/core/sock.c | 4 net/core/utils.c | 4 net/ipv4/route.c | 4 net/ipv4/tcp_fastopen.c | 3 net/ipv4/tcp_input.c | 63 +- net/ipv6/calipso.c | 8 net/ipv6/ila/ila_common.c | 6 net/mac80211/mesh_hwmp.c | 6 net/mac80211/tx.c | 6 net/mpls/af_mpls.c | 4 net/nfc/nci/uart.c | 8 net/sched/sch_sfq.c | 10 net/sched/sch_taprio.c | 6 net/sctp/socket.c | 3 net/sunrpc/svc.c | 11 net/sunrpc/xprtsock.c | 5 net/tipc/crypto.c | 2 net/tipc/udp_media.c | 4 net/wireless/core.c | 6 security/selinux/xfrm.c | 2 sound/pci/hda/hda_intel.c | 2 sound/pci/hda/patch_realtek.c | 1 sound/soc/amd/yc/acp6x-mach.c | 9 sound/soc/codecs/tas2770.c | 30 + sound/soc/meson/meson-card-utils.c | 2 sound/soc/qcom/sdm845.c | 4 sound/soc/tegra/tegra210_ahub.c | 2 sound/usb/mixer_maps.c | 12 tools/include/uapi/linux/bpf.h | 2 tools/lib/bpf/btf.c | 16 tools/perf/util/print-events.c | 1 tools/testing/selftests/x86/Makefile | 2 tools/testing/selftests/x86/sigtrap_loop.c | 101 ++++ 295 files changed, 2321 insertions(+), 1077 deletions(-)
Aditya Kumar Singh (1):
wifi: ath12k: fix failed to set mhi state error during reboot with hardware grouping
Ahmed Salem (1):
ACPICA: Avoid sequence overread in call to strncmp()
Akhil R (2):
i2c: tegra: check msg length in SMBUS block read
dt-bindings: i2c: nvidia,tegra20-i2c: Specify the required properties
Alan Maguire (1):
libbpf: Add identical pointer detection to btf_dedup_is_equiv()
Alexander Aring (1):
gfs2: move msleep to sleepable context
Alexander Sverdlin (1):
Revert "bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect devices first"
Alexey Kodanev (1):
net: lan743x: fix potential out-of-bounds write in lan743x_ptp_io_event_clock_get()
Alok Tiwari (1):
emulex/benet: correct command version selection in be_cmd_get_stats()
Andreas Kemnade (1):
ARM: omap: pmic-cpcap: do not mess around without CPCAP or OMAP4
Andrew Morton (1):
drivers/rapidio/rio_cm.c: prevent possible heap overwrite
Andrew Zaborowski (1):
x86/sgx: Prevent attempts to reclaim poisoned pages
Anup Patel (2):
RISC-V: KVM: Fix the size parameter check in SBI SFENCE calls
RISC-V: KVM: Don't treat SBI HFENCE calls as NOPs
Armin Wolf (1):
ACPI: bus: Bail out if acpi_kobj registration fails
Arnd Bergmann (3):
parisc: fix building with gcc-15
hwmon: (occ) Rework attribute registration for stack usage
hwmon: (occ) fix unaligned accesses
Artem Sadovnikov (1):
jffs2: check that raw node were preallocated before writing summary
Avadhut Naik (1):
EDAC/amd64: Correct number of UMCs for family 19h models 70h-7fh
Balamurugan S (1):
wifi: ath12k: fix incorrect CE addresses
Baochen Qiang (2):
wifi: ath12k: fix a possible dead lock caused by ab->base_lock
wifi: ath11k: determine PM policy based on machine model
Benjamin Berg (1):
wifi: mac80211: do not offer a mesh path if forwarding is disabled
Benjamin Lin (1):
wifi: mt76: mt7996: drop fragments with multicast or broadcast RA
Bharath SM (2):
smb: improve directory cache reuse for readdir operations
smb: fix secondary channel creation issue with kerberos by populating hostname when adding channels
Bitterblue Smith (1):
wifi: rtw88: usb: Reduce control message timeout to 500 ms
Breno Leitao (1):
Revert "x86/bugs: Make spectre user default depend on MITIGATION_SPECTRE_V2" on v6.6 and older
Brett Creeley (1):
ionic: Prevent driver/fw getting out of sync on devcmd(s)
Brett Werling (1):
can: tcan4x5x: fix power regulator retrieval during probe
Brian Foster (1):
ext4: only dirty folios when data journaling regular files
Chao Gao (1):
KVM: VMX: Flush shadow VMCS on emergency reboot
Chao Yu (4):
f2fs: fix to do sanity check on ino and xnid
f2fs: fix to do sanity check on sit_bitmap_size
f2fs: use vmalloc instead of kvmalloc in .init_{,de}compress_ctx
f2fs: fix to set atomic write status more clear
Charan Teja Kalla (1):
PM: runtime: fix denying of auto suspend in pm_suspend_timer_fn()
Chen Ridong (1):
cgroup,freezer: fix incomplete freezing when attaching tasks
Chin-Yen Lee (1):
wifi: rtw89: pci: use DBI function for 8852AE/8852BE/8851BE
Christian Lamparter (1):
wifi: p54: prevent buffer-overflow in p54_rx_eeprom_readback()
Christophe Leroy (1):
powerpc/vdso: Fix build of VDSO32 with pcrel
Chuck Lever (1):
SUNRPC: Prevent hang on NFS mount with xprtsec=[m]tls
Claudiu Beznea (1):
serial: sh-sci: Increment the runtime usage counter for the earlycon device
Colin Foster (1):
ARM: dts: am335x-bone-common: Increase MDIO reset deassert time
Da Xue (1):
clk: meson-g12a: add missing fclk_div2 to spicc
Dan Carpenter (1):
Input: ims-pcu - check record size in ims_pcu_flash_firmware()
Daniel Wagner (1):
scsi: lpfc: Use memcpy() for BIOS version
David Lechner (1):
iio: adc: ad7606_spi: fix reg write value mask
David Thompson (1):
gpio: mlxbf3: only get IRQ for device instance 0
David Wei (1):
tcp: fix passive TFO socket having invalid NAPI ID
Denis Arefev (1):
media: vivid: Change the siize of the composing
Dennis Marttinen (1):
ceph: set superblock s_magic for IMA fsmagic matching
Dev Jain (1):
arm64: Restrict pagetable teardown to avoid false warning
Dexuan Cui (1):
scsi: storvsc: Increase the timeouts to storvsc_timeout
Dian-Syuan Yang (1):
wifi: rtw89: leave idle mode when setting WEP encryption for AP mode
Diederik de Haas (1):
PCI: dw-rockchip: Fix PHY function call sequence in rockchip_pcie_phy_deinit()
Dmitry Antipov (1):
wifi: carl9170: do not ping device which has failed to load firmware
Dmitry Nikiforov (1):
media: davinci: vpif: Fix memory leak in probe error path
Edward Adam Davis (4):
media: cxusb: no longer judge rbuf when the write fails
media: vidtv: Terminating the subsequent process of initialization failure
wifi: mac80211_hwsim: Prevent tsf from setting if beacon is disabled
wifi: cfg80211: init wiphy_work before allocating rfkill fails
Eric Dumazet (5):
tcp: always seek for minimal rtt in tcp_rcv_rtt_update()
tcp: fix initial tp->rcvq_space.space value for passive TS enabled flows
net_sched: sch_sfq: reject invalid perturb period
net: atm: add lec_mutex
net: atm: fix /proc/net/atm/lec handling
Erick Shepherd (1):
mmc: Add quirk to disable DDR50 tuning
Fedor Pchelkin (1):
jffs2: check jffs2_prealloc_raw_node_refs() result in few other places
Fei Shao (1):
media: mediatek: vcodec: Correct vsi_core framebuffer size
GONG Ruiqi (1):
vgacon: Add check for vc_origin address range in vgacon_scroll()
Gabor Juhos (4):
pinctrl: armada-37xx: propagate error from armada_37xx_pmx_set_by_name()
pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get_direction()
pinctrl: armada-37xx: propagate error from armada_37xx_pmx_gpio_set_direction()
pinctrl: armada-37xx: propagate error from armada_37xx_gpio_get()
Gabriel Shahrouzi (1):
staging: iio: ad5933: Correct settling cycles encoding per datasheet
Gao Xiang (1):
erofs: remove unused trace event erofs_destroy_inode
Gatien Chevallier (1):
Input: gpio-keys - fix possible concurrent access in gpio_keys_irq_timer()
Gautam Menghani (1):
powerpc/pseries/msi: Avoid reading PCI device registers in reduced power states
Gavin Guo (1):
mm/huge_memory: fix dereferencing invalid pmd migration entry
Geert Uytterhoeven (1):
ARM: dts: am335x-bone-common: Increase MDIO reset deassert delay to 50ms
Greg Kroah-Hartman (1):
Linux 6.6.95
Gui-Dong Han (1):
hwmon: (ftsteutates) Fix TOCTOU race in fts_read()
Guilherme G. Piccoli (1):
clocksource: Fix the CPUs' choice in the watchdog per CPU verification
Haixia Qu (1):
tipc: fix null-ptr-deref when acquiring remote ip of ethernet bearer
Hari Chandrakanthan (1):
wifi: ath12k: fix link valid field initialization in the monitor Rx
Hector Martin (1):
ASoC: tas2770: Power cycle amp on ISENSE/VSENSE change
Heiko Carstens (1):
s390/pci: Fix __pcilg_mio_inuser() inline assembly
Heiko Stuebner (1):
clk: rockchip: rk3036: mark ddrphy as critical
Heiner Kallweit (1):
net: ftgmac100: select FIXED_PHY
Helge Deller (1):
parisc/unaligned: Fix hex output to show 8 hex chars
Henk Vergonet (1):
wifi: mt76: mt76x2: Add support for LiteOn WN4516R,WN4519R
Herbert Xu (1):
crypto: marvell/cesa - Do not chain submitted requests
Hou Tao (1):
bpf: Check rcu_read_lock_trace_held() in bpf_map_lookup_percpu_elem()
Huacai Chen (2):
PCI: Add ACS quirk for Loongson PCIe
LoongArch: Avoid using $r0/$r1 as "mask" for csrxchg
Hyunwoo Kim (1):
net/sched: fix use-after-free in taprio_dev_notifier
Ian Rogers (1):
perf evsel: Missed close() when probing hybrid core PMUs
Ido Schimmel (1):
vxlan: Do not treat dst cache initialization errors as fatal
Ilpo Järvinen (1):
PCI: Fix lock symmetry in pci_slot_unlock()
Ioana Ciornei (1):
bus: fsl-mc: do not add a device-link for the UAPI used DPMCP device
Jacob Keller (1):
drm/nouveau/bl: increase buffer size to avoid truncate warning
Jaegeuk Kim (1):
f2fs: prevent kernel warning due to negative i_nlink from corrupted image
Jakub Kicinski (2):
net: clear the dst when changing skb protocol
net: make for_each_netdev_dump() a little more bug-proof
James A. MacInnes (1):
drm/msm/disp: Correct porch timing for SDM845
Jan Kara (1):
ext4: fix calculation of credits for extent tree modification
Jann Horn (3):
mm/hugetlb: fix huge_pmd_unshare() vs GUP-fast race
tee: Prevent size calculation wraparound on 32-bit kernels mm/hugetlb: unshare page tables during VMA split, not before
Jason Xing (2):
net: atlantic: generate software timestamp just before the doorbell
net: mlx4: add SOF_TIMESTAMPING_TX_SOFTWARE flag when getting ts info
Jeff Hugo (1):
bus: mhi: host: Fix conflict between power_up and SYSERR
Jeff Layton (1):
sunrpc: handle SVC_GARBAGE during svc auth processing as auth error
Jeongjun Park (2):
jbd2: fix data-race and null-ptr-deref in jbd2_journal_dirty_metadata()
ipc: fix to protect IPCS lookups using RCU
Jerry Lv (1):
power: supply: bq27xxx: Retrieve again when busy
Jiayuan Chen (1):
bpf, sockmap: Fix data lost during EAGAIN retries
Jinliang Zheng (1):
mm: fix ratelimit_pages update error in dirty_ratio_handler()
Johan Hovold (5):
wifi: ath11k: fix rx completion meta data corruption
wifi: ath11k: fix ring-buffer corruption
wifi: ath12k: fix ring-buffer corruption
media: ov8856: suppress probe deferral errors
media: ov5675: suppress probe deferral errors
Jon Hunter (1):
Revert "cpufreq: tegra186: Share policy per cluster"
Jonathan Lane (1):
ALSA: hda/realtek: enable headset mic on Latitude 5420 Rugged
João Paulo Gonçalves (2):
regulator: max20086: Fix MAX200086 chip id
regulator: max20086: Change enable gpio to optional
Justin Sanders (1):
aoe: clean device rq_list in aoedev_downdev()
Justin Tee (1):
scsi: lpfc: Fix lpfc_check_sli_ndlp() handling for GEN_REQUEST64 commands
Kang Yang (1):
wifi: ath12k: fix macro definition HAL_RX_MSDU_PKT_LENGTH_GET
Kees Cook (1):
fbcon: Make sure modelist not set on unregistered console
Khem Raj (1):
mips: Add -std= flag specified in KBUILD_CFLAGS to vdso CFLAGS
Krishna Kumar (1):
net: ice: Perform accurate aRFS flow match
Krzysztof Hałasa (1):
usbnet: asix AX88772: leave the carrier control to phylink
Krzysztof Kozlowski (3):
NFC: nci: uart: Set tty->disc_data only in success path
power: supply: collie: Fix wakeup source leaks on device unbind drm/msm/dsi/dsi_phy_10nm: Fix missing initial VCO rate
Kuniyuki Iwashima (4):
atm: Revert atm_account_tx() if copy_from_iter_full() fails.
mpls: Use rcu_dereference_rtnl() in mpls_route_input_rcu().
atm: atmtcp: Free invalid length skb in atmtcp_c_send().
calipso: Fix null-ptr-deref in calipso_req_{set,del}attr().
Kyungwook Boo (1):
i40e: fix MMIO write access to an invalid page in i40e_clear_hw
Laurentiu Palcu (1):
media: nxp: imx8-isi: better handle the m2m usage_count
Laurentiu Tudor (1):
bus: fsl-mc: increase MC_CMD_COMPLETION_TIMEOUT_MS value
Li Lingfeng (1):
nfsd: Initialize ssc before laundromat_work to prevent NULL dereference
Linus Walleij (1):
net: ethernet: cortina: Use TOE/TSO on all TCP
Loic Poulain (1):
media: venus: Fix probe error handling
Long Li (2):
Drivers: hv: Allocate interrupt and monitor pages aligned to system page boundary
uio_hv_generic: Use correct size for interrupt and monitor pages
Lorenzo Stoakes (1):
KVM: s390: rename PROT_NONE to PROT_TYPE_DUMMY
Luo Gengkun (2):
watchdog: fix watchdog may detect false positive of softlockup perf/core: Fix WARN in perf_cgroup_switch()
Ma Ke (1):
media: v4l2-dev: fix error handling in __video_register_device()
Marcus Folkesson (1):
watchdog: da9052_wdt: respect TWDMIN
Marek Szyprowski (3):
media: omap3isp: use sgtable-based scatterlist wrappers
media: videobuf2: use sgtable-based scatterlist wrappers
udmabuf: use sgtable-based scatterlist wrappers
Mario Limonciello (2):
ACPI: Add missing prototype for non CONFIG_SUSPEND/CONFIG_X86 case platform/x86/amd: pmc: Clear metrics table at start of cycle
Martin Blumenstingl (1):
ASoC: meson: meson-card-utils: use of_property_present() for DT parsing
Mateusz Pacuszka (1):
ice: fix check for existing switch rule
Max Kellermann (1):
fs/nfs/read: fix double-unlock bug in nfs_return_empty_folio()
Md Sadre Alam (1):
mtd: rawnand: qcom: Fix read len for onfi param page
Michael Walle (1):
net: ethernet: ti: am65-cpsw: handle -EPROBE_DEFER
Mike Looijmans (1):
pinctrl: mcp23s08: Reset all pins to input at probe
Mike Tipton (1):
cpufreq: scmi: Skip SCMI devices that aren't used by the CPUs
Mikulas Patocka (2):
dm-mirror: fix a tiny race condition
dm-verity: fix a memory leak if some arguments are specified multiple times
Ming Qian (4):
media: imx-jpeg: Drop the first error frames
media: imx-jpeg: Move mxc_jpeg_free_slot_data() ahead
media: imx-jpeg: Reset slot data pointers when freed
media: imx-jpeg: Cleanup after an allocation error
Mingcong Bai (1):
wifi: rtlwifi: disable ASPM for RTL8723BE with subsystem ID 11ad:1723
Miri Korenblit (1):
wifi: iwlwifi: pcie: make sure to lock rxq->read
Moon Yeounsu (1):
net: dlink: add synchronization for stats update
Muhammad Usama Anjum (1):
wifi: ath11k: Fix QMI memory reuse logic
Muna Sinada (1):
wifi: mac80211: VLAN traffic in multicast path
Murad Masimov (2):
fbdev: Fix do_register_framebuffer to prevent null-ptr-deref in fb_videomode_to_var
fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var
Namjae Jeon (1):
ksmbd: fix null pointer dereference in destroy_previous_session
Narayana Murty N (1):
powerpc/eeh: Fix missing PE bridge reconfiguration during VFIO EEH recovery
Neal Cardwell (1):
tcp: fix tcp_packet_delayed() for tcp_is_non_sack_preventing_reopen() behavior
NeilBrown (1):
nfsd: nfsd4_spo_must_allow() must check this is a v4 compound request
Niklas Cassel (1):
PCI: cadence-ep: Correct PBA offset in .set_msix() callback
Niravkumar L Rabara (1):
EDAC/altera: Use correct write width with the INTTEST register
Pali Rohár (1):
cifs: Remove duplicate fattr->cf_dtype assignment from wsl_to_fattr() function
Paul Aurich (1):
smb: Log an error when close_all_cached_dirs fails
Paul Chaignon (2):
net: Fix checksum update for ILA adj-transport
bpf: Fix L4 csum update on IPv6 in CHECKSUM_COMPLETE
Pavel Begunkov (2):
io_uring: account drain memory to cgroup io_uring/kbuf: account ring io_buffer_list memory
Peng Fan (1):
gpiolib: of: Add polarity quirk for s5m8767
Penglei Jiang (1):
io_uring: fix task leak issue in io_wq_create()
Peter Marheine (1):
ACPI: battery: negate current when discharging
Peter Oberparleiter (1):
scsi: s390: zfcp: Ensure synchronous unit_add
Peter Zijlstra (2):
perf: Fix sample vs do_exit()
perf: Fix cgroup state vs ERROR
Petr Malat (1):
sctp: Do not wake readers in __sctp_write_space()
Qasim Ijaz (1):
net: ch9200: fix uninitialised access during mii_nway_restart
Renato Caldas (1):
platform/x86: ideapad-laptop: add missing Ideapad Pro 5 fn keys
Rengarajan S (2):
net: lan743x: Modify the EEPROM and OTP size for PCI1xxxx devices
net: microchip: lan743x: Reduce PTP timeout on HW failure
Ricardo Ribalda (3):
media: uvcvideo: Return the number of processed controls
media: uvcvideo: Send control events for partial succeeds
media: uvcvideo: Fix deferred probing error
Ronnie Sahlberg (1):
ublk: santizize the arguments from userspace when adding a device
Ross Stutterheim (1):
ARM: 9447/1: arm/memremap: fix arch_memremap_can_ram_remap()
Ruben Devos (1):
smb: client: add NULL check in automount_fullpath
Ryan Roberts (1):
arm64/mm: Close theoretical race where stale TLB entry remains valid
Sakari Ailus (4):
media: ccs-pll: Start VT pre-PLL multiplier search from correct value
media: ccs-pll: Start OP pre-PLL multiplier search from correct value
media: ccs-pll: Correct the upper limit of maximum op_pre_pll_clk_div
media: ccs-pll: Check for too high VT PLL multiplier in dual PLL case
Salah Triki (1):
wireless: purelifi: plfxlc: fix memory leak in plfxlc_usb_wreq_asyn()
Samuel Williams (1):
wifi: mt76: mt7921: add 160 MHz AP for mt7922 device
Sean Christopherson (1):
iommu/amd: Ensure GA log notifier callbacks finish running before module unload
Sean Nyekjaer (3):
iio: accel: fxls8962af: Fix temperature scan element sign
iio: imu: inv_icm42600: Fix temperature calculation
iio: accel: fxls8962af: Fix temperature calculation
Sebastian Andrzej Siewior (1):
ipv4/route: Use this_cpu_inc() for stats on PREEMPT_RT
Sergio Perez Gonzalez (1):
net: macb: Check return value of dma_set_mask_and_coherent()
Seunghun Han (2):
ACPICA: fix acpi operand cache leak in dswstate.c
ACPICA: fix acpi parse and parseext cache leaks
Shin'ichiro Kawasaki (1):
RDMA/iwcm: Fix use-after-free of work objects after cm_id destruction
Shyam Prasad N (6):
cifs: reset connections for all channels when reconnect requested
cifs: update dstaddr whenever channel iface is updated
cifs: dns resolution is needed only for primary channel
cifs: deal with the channel loading lag while picking channels
cifs: serialize other channels when query server interfaces is pending
cifs: do not disable interface polling on failure
Simon Horman (1):
pldmfw: Select CRC32 when PLDMFW is selected
Srinivas Pandruvada (1):
platform/x86/intel-uncore-freq: Fail module load when plat_info is NULL
Stefan Wahren (1):
net: vertexcom: mse102x: Return code for mse102x_rx_pkt_spi
Stephen Smalley (2):
fs/xattr.c: fix simple_xattr_list()
selinux: fix selinux_xfrm_alloc_user() to set correct ctx_len
Stuart Hayes (2):
platform/x86: dell_rbu: Fix list usage platform/x86: dell_rbu: Stop overwriting data buffer
Sukrut Bellary (1):
ARM: OMAP2+: Fix l4ls clk domain handling in STANDBY
Sumit Kumar (1):
bus: mhi: ep: Update read pointer only after buffer is written
Suraj P Kizhakkethil (1):
wifi: ath12k: Pass correct values of center freq1 and center freq2 for 160 MHz
Takashi Iwai (1):
ALSA: hda/intel: Add Thinkpad E15 to PM deny list
Talhah Peerbhai (1):
ASoC: amd: yc: Add quirk for Lenovo Yoga Pro 7 14ASP9
Tali Perry (1):
i2c: npcm: Add clock toggle recovery
Tan En De (1):
i2c: designware: Invoke runtime suspend on quick slave re-registration
Tasos Sahanidis (1):
ata: pata_via: Force PIO for ATAPI devices on VT6415/VT6330
Tengda Wu (1):
arm64/ptrace: Fix stack-out-of-bounds read in regs_get_kernel_stack_nth()
Thadeu Lima de Souza Cascardo (1):
ext4: inline: fix len overflow in ext4_prepare_inline_data
Thomas Zimmermann (1):
video: screen_info: Relocate framebuffers behind PCI bridges
Tianyang Zhang (1):
LoongArch: Fix panic caused by NULL-PMD in huge_pte_offset()
Tomi Valkeinen (1):
media: i2c: ds90ub913: Fix returned fmt from .set_fmt()
Tzung-Bi Shih (1):
drm/i915/pmu: Fix build error with GCOV and AutoFDO enabled
Vitaliy Shevtsov (1):
scsi: elx: efct: Fix memory leak in efct_hw_parse_filter()
Vitaly Lifshits (1):
e1000e: set fixed clock frequency indication for Nahum 11 and Nahum 13
Vladimir Oltean (2):
ptp: fix breakage after ptp_vclock_in_use() rework
ptp: allow reading of currently dialed frequency to succeed on free-running clocks
Víctor Gonzalo (1):
wifi: iwlwifi: Add missing MODULE_FIRMWARE for Qu-c0-jf-b0
Wan Junjie (1):
bus: fsl-mc: fix GET/SET_TAILDROP command ids
WangYuli (1):
Input: sparcspkr - avoid unannotated fall-through
Wentao Liang (8):
ASoC: qcom: sdm845: Add error handling in sdm845_slim_snd_hw_params() net/mlx5_core: Add error handling inmlx5_query_nic_vport_qkey_viol_cntr() net/mlx5: Add error handling in mlx5_query_nic_vport_node_guid()
media: gspca: Add error handling for stv06xx_read_sensor()
mtd: rawnand: sunxi: Add randomizer configuration in sunxi_nfc_hw_ecc_write_chunk
mtd: nand: sunxi: Add randomizer configuration before randomizer enable
regulator: max14577: Add error check for max14577_read_reg()
octeontx2-pf: Add error log forcn10k_map_unmap_rq_policer()
Xiaolei Wang (2):
remoteproc: core: Cleanup acquired resources when rproc_handle_resources() fails in rproc_attach()
remoteproc: core: Release rproc->clean_table after rproc_attach() fails
Xin Li (Intel) (1):
selftests/x86: Add a test to detect infinite SIGTRAP handler loop
Xu Yang (1):
phy: fsl-imx8mq-usb: fix phy_tx_vboost_level_from_property()
Yao Zi (3):
platform/loongarch: laptop: Get brightness setting from EC on probe platform/loongarch: laptop: Unregister generic_sub_drivers on exit platform/loongarch: laptop: Add backlight power control support
Ye Bin (1):
ftrace: Fix UAF when lookup kallsym after ftrace disabled
Yong Wang (2):
net: bridge: mcast: update multicast contex when vlan state is changed
net: bridge: mcast: re-implement br_multicast_{enable, disable}_port functions
Yosry Ahmed (1):
KVM: SVM: Clear current_vmcb during vCPU free for all *possible* CPUs
Yuanjun Gong (1):
ASoC: tegra210_ahub: Add check to of_device_get_match_data()
Zhang Yi (2):
ext4: factor out ext4_get_maxbytes()
ext4: ensure i_size is smaller than maxbytes
Zijun Hu (3):
configfs: Do not override creating attribute file failure in populate_attrs() software node: Correct a OOB check in software_node_get_reference_args()
sock: Correct error checking condition for (assign|release)_proto_idx()
Zilin Guan (1):
tipc: use kfree_sensitive() for aead cleanup
gldrk (1):
ACPICA: utilities: Fix overflow check in vsnprintf()
wangdicheng (1):
ALSA: usb-audio: Rename ALSA kcontrol PCM and PCM1 for the KTMicro sound card
zhangjian (1):
smb: client: fix first command failure during re-negotiation
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +0 -2
@@ -5978,8 +5978,6 @@ Selecting 'on' will also enable the mitigation against user space to user space task attacks. - Selecting specific mitigation does not force enable - user mitigations. Selecting 'off' will disable both the kernel and the user space protections.
Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml +23 -1
@@ -103,7 +103,10 @@ properties: resets: items: - - description: module reset + - description: + Module reset. This property is optional for controllers in Tegra194, + Tegra234 etc where an internal software reset is available as an + alternative. reset-names: items:
@@ -119,6 +122,13 @@ properties: - const: rx - const: tx +required: + - compatible + - reg + - interrupts + - clocks + - clock-names + allOf: - $ref: /schemas/i2c/i2c-controller.yaml - if:
@@ -172,6 +182,18 @@ allOf: items: - description: phandle to the VENC power domain + - if: + not: + properties: + compatible: + contains: + enum: + - nvidia,tegra194-i2c + then: + required: + - resets + - reset-names + unevaluatedProperties: false examples:
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 6 -SUBLEVEL = 94 +SUBLEVEL = 95 EXTRAVERSION = NAME = Pinguïn Aangedreven
arch/arm/boot/dts/ti/omap/am335x-bone-common.dtsi +1 -1
@@ -385,7 +385,7 @@ ethphy0: ethernet-phy@0 { /* Support GPIO reset on revision C3 boards */ reset-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>; reset-assert-us = <300>; - reset-deassert-us = <6500>; + reset-deassert-us = <50000>; }; };
arch/arm/mach-omap2/clockdomain.h +1 -0
@@ -48,6 +48,7 @@#define CLKDM_NO_AUTODEPS (1 << 4)#define CLKDM_ACTIVE_WITH_MPU (1 << 5)#define CLKDM_MISSING_IDLE_REPORTING (1 << 6) +#define CLKDM_STANDBY_FORCE_WAKEUP BIT(7)#define CLKDM_CAN_HWSUP (CLKDM_CAN_ENABLE_AUTO | CLKDM_CAN_DISABLE_AUTO)#define CLKDM_CAN_SWSUP (CLKDM_CAN_FORCE_SLEEP | CLKDM_CAN_FORCE_WAKEUP)
arch/arm/mach-omap2/clockdomains33xx_data.c +1 -1
@@ -19,7 +19,7 @@ static struct clockdomain l4ls_am33xx_clkdm = { .pwrdm = { .name = "per_pwrdm" }, .cm_inst = AM33XX_CM_PER_MOD, .clkdm_offs = AM33XX_CM_PER_L4LS_CLKSTCTRL_OFFSET, - .flags = CLKDM_CAN_SWSUP, + .flags = CLKDM_CAN_SWSUP | CLKDM_STANDBY_FORCE_WAKEUP, };static struct clockdomain l3s_am33xx_clkdm = {
arch/arm/mach-omap2/cm33xx.c +13 -1
@@ -20,6 +20,9 @@#include "cm-regbits-34xx.h" #include "cm-regbits-33xx.h" #include "prm33xx.h" +#if IS_ENABLED (CONFIG_SUSPEND ) +#include <linux/suspend.h> +#endif /* * CLKCTRL_IDLEST_*: possible values for the CM_*_CLKCTRL.IDLEST bitfield:
@@ -328,8 +331,17 @@ static int am33xx_clkdm_clk_disable(struct clockdomain *clkdm) {bool hwsup = false; +#if IS_ENABLED (CONFIG_SUSPEND ) +/* +* In case of standby, Don't put the l4ls clk domain to sleep. +* Since CM3 PM FW doesn't wake-up/enable the l4ls clk domain +* upon wake-up, CM3 PM FW fails to wake-up th MPU. +*/ +if (pm_suspend_target_state ==PM_SUSPEND_STANDBY && + (clkdm->flags &CLKDM_STANDBY_FORCE_WAKEUP )) +return 0 ; +#endif hwsup =am33xx_cm_is_clkdm_in_hwsup (clkdm->cm_inst, clkdm->clkdm_offs); -if (!hwsup && (clkdm->flags &CLKDM_CAN_FORCE_SLEEP ))am33xx_clkdm_sleep (clkdm);
arch/arm/mach-omap2/pmic-cpcap.c +5 -1
@@ -264,7 +264,11 @@ int __init omap4_cpcap_init(void)static int __init cpcap_late_init (void ) { -omap4_vc_set_pmic_signaling (PWRDM_POWER_RET ); +if (!of_find_compatible_node (NULL ,NULL ,"motorola,cpcap" )) +return 0 ; + +if (soc_is_omap443x () ||soc_is_omap446x () ||soc_is_omap447x ()) +omap4_vc_set_pmic_signaling (PWRDM_POWER_RET );return 0 ; }
arch/arm/mm/ioremap.c +1 -3
@@ -515,7 +515,5 @@ void __init early_ioremap_init(void)bool arch_memremap_can_ram_remap (resource_size_t offset,size_t size,unsigned long flags) { -unsigned long pfn =PHYS_PFN (offset); - -return memblock_is_map_memory (pfn); +return memblock_is_map_memory (offset); }
arch/arm64/include/asm/tlbflush.h +5 -4
@@ -311,13 +311,14 @@ static inline void arch_tlbbatch_add_pending(struct arch_tlbflush_unmap_batch *b }/* -* If mprotect/munmap/etc occurs during TLB batched flushing, we need to -* synchronise all the TLBI issued with a DSB to avoid the race mentioned in -* flush_tlb_batched_pending(). +* If mprotect/munmap/etc occurs during TLB batched flushing, we need to ensure +* all the previously issued TLBIs targeting mm have completed. But since we +* can be executing on a remote CPU, a DSB cannot guarantee this like it can +* for arch_tlbbatch_flush(). Our only option is to flush the entire mm. */ static inline void arch_flush_tlb_batched_pending (struct mm_struct *mm) { -dsb (ish); +flush_tlb_mm (mm); }/*
arch/arm64/kernel/ptrace.c +1 -1
@@ -139,7 +139,7 @@ unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs, unsigned int n) addr += n;if (regs_within_kernel_stack (regs, (unsigned long )addr)) -return *addr; +return READ_ONCE_NOCHECK (*addr);else return 0 ; }
arch/arm64/mm/mmu.c +2 -1
@@ -1253,7 +1253,8 @@ int pud_free_pmd_page(pud_t *pudp, unsigned long addr) next = addr; end = addr +PUD_SIZE ;do { -pmd_free_pte_page (pmdp, next); +if (pmd_present (pmdp_get (pmdp))) +pmd_free_pte_page (pmdp, next); }while (pmdp++, next +=PMD_SIZE , next != end);pud_clear (pudp);
arch/loongarch/include/asm/irqflags.h +12 -4
@@ -14,40 +14,48 @@static inline void arch_local_irq_enable (void ) {u32 flags =CSR_CRMD_IE ; + register u32 mask asm("t0") = CSR_CRMD_IE; + __asm__ __volatile__("csrxchg %[val], %[mask], %[reg]\n\t" : [val]"+r" (flags) - : [mask]"r" (CSR_CRMD_IE ), [reg]"i" (LOONGARCH_CSR_CRMD ) + : [mask]"r" (mask), [reg]"i" (LOONGARCH_CSR_CRMD ) :"memory" ); }static inline void arch_local_irq_disable (void ) {u32 flags =0 ; + register u32 mask asm("t0") = CSR_CRMD_IE; + __asm__ __volatile__("csrxchg %[val], %[mask], %[reg]\n\t" : [val]"+r" (flags) - : [mask]"r" (CSR_CRMD_IE ), [reg]"i" (LOONGARCH_CSR_CRMD ) + : [mask]"r" (mask), [reg]"i" (LOONGARCH_CSR_CRMD ) :"memory" ); }static inline unsigned long arch_local_irq_save (void ) {u32 flags =0 ; + register u32 mask asm("t0") = CSR_CRMD_IE; + __asm__ __volatile__("csrxchg %[val], %[mask], %[reg]\n\t" : [val]"+r" (flags) - : [mask]"r" (CSR_CRMD_IE ), [reg]"i" (LOONGARCH_CSR_CRMD ) + : [mask]"r" (mask), [reg]"i" (LOONGARCH_CSR_CRMD ) :"memory" );return flags; }static inline void arch_local_irq_restore (unsigned long flags) { + register u32 mask asm("t0") = CSR_CRMD_IE; + __asm__ __volatile__("csrxchg %[val], %[mask], %[reg]\n\t" : [val]"+r" (flags) - : [mask]"r" (CSR_CRMD_IE ), [reg]"i" (LOONGARCH_CSR_CRMD ) + : [mask]"r" (mask), [reg]"i" (LOONGARCH_CSR_CRMD ) :"memory" ); }
arch/loongarch/mm/hugetlbpage.c +2 -1
@@ -47,7 +47,8 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr, pmd =pmd_offset (pud, addr); } } -return pmd_none (pmdp_get (pmd)) ?NULL : (pte_t *) pmd; + +return (!pmd ||pmd_none (pmdp_get (pmd))) ?NULL : (pte_t *) pmd; }int pmd_huge (pmd_t pmd)
arch/mips/vdso/Makefile +1 -0
@@ -30,6 +30,7 @@ endif # offsets. cflags-vdso := $(ccflags-vdso) \ $(filter -W%,$(filter-out -Wa$(comma)%,$(KBUILD_CFLAGS))) \ + $(filter -std=%,$(KBUILD_CFLAGS)) \ -O3 -g -fPIC -fno-strict-aliasing -fno-common -fno-builtin -G 0 \ -mrelax-pic-calls $(call cc-option, -mexplicit-relocs) \ -fno-stack-protector -fno-jump-tables -DDISABLE_BRANCH_PROFILING \
arch/parisc/boot/compressed/Makefile +1 -0
@@ -22,6 +22,7 @@ KBUILD_CFLAGS += -fno-PIE -mno-space-regs -mdisable-fpregs -Os ifndef CONFIG_64BIT KBUILD_CFLAGS += -mfast-indirect-calls endif +KBUILD_CFLAGS += -std=gnu11 LDFLAGS_vmlinux := -X -e startup --as-needed -T $(obj)/vmlinux: $(obj)/vmlinux.lds $(addprefix $(obj)/, $(OBJECTS)) $(LIBGCC) FORCE
arch/parisc/kernel/unaligned.c +1 -1
@@ -24,7 +24,7 @@ #define DPRINTF(fmt, args...)#endif -#define RFMT "%#08lx" +#define RFMT "0x%08lx"/* 1111 1100 0000 0000 0001 0011 1100 0000 */ #define OPCODE1 (a,b,c) ((a)<<26|(b)<<12|(c)<<6)
arch/powerpc/include/asm/ppc_asm.h +1 -1
@@ -183,7 +183,7 @@/* * Used to name C functions called from asm */ -#ifdef CONFIG_PPC_KERNEL_PCREL +#if defined(__powerpc64__) && defined(CONFIG_PPC_KERNEL_PCREL )#define CFUNC (name) name@notoc#else #define CFUNC (name) name
arch/powerpc/kernel/eeh.c +2 -0
@@ -1516,6 +1516,8 @@ int eeh_pe_configure(struct eeh_pe *pe)/* Invalid PE ? */ if (!pe)return -ENODEV ; +else + ret = eeh_ops->configure_bridge (pe);return ret; }
arch/powerpc/kernel/vdso/Makefile +1 -1
@@ -50,7 +50,7 @@ ldflags-$(CONFIG_LD_ORPHAN_WARN) += -Wl,--orphan-handling=$(CONFIG_LD_ORPHAN_WAR ldflags-y += $(filter-out $(CC_AUTO_VAR_INIT_ZERO_ENABLER) $(CC_FLAGS_FTRACE) -Wa$(comma)%, $(KBUILD_CFLAGS)) CC32FLAGS := -m32 -CC32FLAGSREMOVE := -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc +CC32FLAGSREMOVE := -mcmodel=medium -mabi=elfv1 -mabi=elfv2 -mcall-aixdesc -mpcrel ifdef CONFIG_CC_IS_CLANG # This flag is supported by clang for 64-bit but not 32-bit so it will cause # an unused command line flag warning for this file.
arch/powerpc/platforms/pseries/msi.c +6 -1
@@ -519,7 +519,12 @@ static struct msi_domain_info pseries_msi_domain_info = {static void pseries_msi_compose_msg (struct irq_data *data,struct msi_msg *msg) { -__pci_read_msi_msg (irq_data_get_msi_desc (data), msg); +struct pci_dev *dev =msi_desc_to_pci_dev (irq_data_get_msi_desc (data)); + +if (dev->current_state ==PCI_D0 ) +__pci_read_msi_msg (irq_data_get_msi_desc (data), msg); +else +get_cached_msi_msg (data->irq, msg); }static struct irq_chip pseries_msi_irq_chip = {
arch/riscv/kvm/vcpu_sbi_replace.c +4 -4
@@ -103,7 +103,7 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *runkvm_riscv_vcpu_pmu_incr_fw (vcpu,SBI_PMU_FW_FENCE_I_SENT );break ;case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA : -if (cp->a2 ==0 && cp->a3 ==0 ) +if ((cp->a2 ==0 && cp->a3 ==0 ) || cp->a3 ==-1UL )kvm_riscv_hfence_vvma_all (vcpu->kvm, hbase, hmask);else kvm_riscv_hfence_vvma_gva(vcpu->kvm, hbase, hmask,
@@ -111,7 +111,7 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *runkvm_riscv_vcpu_pmu_incr_fw (vcpu,SBI_PMU_FW_HFENCE_VVMA_SENT );break ;case SBI_EXT_RFENCE_REMOTE_SFENCE_VMA_ASID : -if (cp->a2 ==0 && cp->a3 ==0 ) +if ((cp->a2 ==0 && cp->a3 ==0 ) || cp->a3 ==-1UL )kvm_riscv_hfence_vvma_asid_all (vcpu->kvm, hbase, hmask, cp->a4);else
@@ -127,9 +127,9 @@ static int kvm_sbi_ext_rfence_handler(struct kvm_vcpu *vcpu, struct kvm_run *runcase SBI_EXT_RFENCE_REMOTE_HFENCE_VVMA_ASID :/* * Until nested virtualization is implemented, the -* SBI HFENCE calls should be treated as NOPs +* SBI HFENCE calls should return not supported +* hence fallthrough. */ -break ;default : retdata->err_val =SBI_ERR_NOT_SUPPORTED ; }
arch/s390/kvm/gaccess.c +4 -4
@@ -490,7 +490,7 @@ enum prot_type {PROT_TYPE_DAT =3 ,PROT_TYPE_IEP =4 ,/* Dummy value for passing an initialized value when code != PGM_PROTECTION */ - PROT_NONE, + PROT_TYPE_DUMMY, }; static int trans_exc_ending(struct kvm_vcpu *vcpu, int code, unsigned long gva, u8 ar,
@@ -506,7 +506,7 @@ static int trans_exc_ending(struct kvm_vcpu *vcpu, int code, unsigned long gva,switch (code) {case PGM_PROTECTION :switch (prot) { -case PROT_NONE : +case PROT_TYPE_DUMMY :/* We should never get here, acts like termination */ WARN_ON_ONCE (1 );break ;
@@ -976,7 +976,7 @@ static int guest_range_to_gpas(struct kvm_vcpu *vcpu, unsigned long ga, u8 ar, gpa =kvm_s390_real_to_abs (vcpu, ga);if (kvm_is_error_gpa (vcpu->kvm, gpa)) { rc =PGM_ADDRESSING ; - prot =PROT_NONE ; + prot =PROT_TYPE_DUMMY ; } }if (rc)
@@ -1134,7 +1134,7 @@ int access_guest_with_key(struct kvm_vcpu *vcpu, unsigned long ga, u8 ar,if (rc ==PGM_PROTECTION ) prot =PROT_TYPE_KEYC ;else - prot =PROT_NONE ; + prot =PROT_TYPE_DUMMY ; rc =trans_exc_ending (vcpu, rc, ga, ar, mode, prot, terminate); } out_unlock:
arch/s390/pci/pci_mmio.c +1 -1
@@ -223,7 +223,7 @@ static inline int __pcilg_mio_inuser( [ioaddr_len] "+&d" (ioaddr_len.pair), [cc] "+d" (cc), [val] "=d" (val), [dst] "+a" (dst), [cnt] "+d" (cnt), [tmp] "=d" (tmp), - [shift] "+d" (shift) + [shift] "+a" (shift) :: "cc", "memory"); /* did we write everything to the user space buffer? */
arch/x86/kernel/cpu/bugs.c +3 -7
@@ -1442,13 +1442,9 @@ static __ro_after_init enum spectre_v2_mitigation_cmd spectre_v2_cmd;static enum spectre_v2_user_cmd __init spectre_v2_parse_user_cmdline (void ) { -enum spectre_v2_user_cmd mode;char arg[20 ];int ret, i; - mode =IS_ENABLED (CONFIG_MITIGATION_SPECTRE_V2 ) ? -SPECTRE_V2_USER_CMD_AUTO :SPECTRE_V2_USER_CMD_NONE ; -switch (spectre_v2_cmd) {case SPECTRE_V2_CMD_NONE :return SPECTRE_V2_USER_CMD_NONE ;
@@ -1461,7 +1457,7 @@ spectre_v2_parse_user_cmdline(void) ret =cmdline_find_option (boot_command_line,"spectre_v2_user" , arg,sizeof (arg));if (ret <0 ) -return mode; +return SPECTRE_V2_USER_CMD_AUTO ;for (i =0 ; i <ARRAY_SIZE (v2_user_options); i++) {if (match_option (arg, ret, v2_user_options[i].option)) {
@@ -1471,8 +1467,8 @@ spectre_v2_parse_user_cmdline(void) } } -pr_err ("Unknown user space protection option (%s). Switching to default\n" , arg); -return mode; +pr_err ("Unknown user space protection option (%s). Switching to AUTO select\n" , arg); +return SPECTRE_V2_USER_CMD_AUTO ; }static inline bool spectre_v2_in_ibrs_mode (enum spectre_v2_mitigation mode)
arch/x86/kernel/cpu/sgx/main.c +2 -0
@@ -718,6 +718,8 @@ int arch_memory_failure(unsigned long pfn, int flags) goto out; } +sgx_unmark_page_reclaimable (page); +/* * TBD: Add additional plumbing to enable pre-emptive * action for asynchronous poison notification. Until
arch/x86/kvm/svm/svm.c +1 -1
@@ -1503,7 +1503,7 @@ static void svm_clear_current_vmcb(struct vmcb *vmcb) {int i; -for_each_online_cpu (i) +for_each_possible_cpu (i)cmpxchg (per_cpu_ptr (&svm_data.current_vmcb, i), vmcb,NULL ); }
arch/x86/kvm/vmx/vmx.c +4 -1
@@ -787,8 +787,11 @@ static void vmx_emergency_disable(void)return ;list_for_each_entry (v, &per_cpu (loaded_vmcss_on_cpu, cpu), - loaded_vmcss_on_cpu_link) + loaded_vmcss_on_cpu_link) {vmcs_clear (v->vmcs); +if (v->shadow_vmcs) +vmcs_clear (v->shadow_vmcs); + }kvm_cpu_vmxoff (); }
drivers/acpi/acpica/dsutils.c +8 -1
@@ -668,6 +668,8 @@ acpi_ds_create_operands(struct acpi_walk_state *walk_state,union acpi_parse_object *arguments[ACPI_OBJ_NUM_OPERANDS ];u32 arg_count =0 ;u32 index = walk_state->num_operands; +u32 prev_num_operands = walk_state->num_operands; +u32 new_num_operands;u32 i;ACPI_FUNCTION_TRACE_PTR (ds_create_operands, first_arg);
@@ -696,6 +698,7 @@ acpi_ds_create_operands(struct acpi_walk_state *walk_state,/* Create the interpreter arguments, in reverse order */ + new_num_operands = index; index--;for (i =0 ; i < arg_count; i++) { arg = arguments[index];
@@ -720,7 +723,11 @@ acpi_ds_create_operands(struct acpi_walk_state *walk_state,* pop everything off of the operand stack and delete those * objects */ -acpi_ds_obj_stack_pop_and_delete (arg_count, walk_state); + walk_state->num_operands = i; +acpi_ds_obj_stack_pop_and_delete (new_num_operands, walk_state); + +/* Restore operand count */ + walk_state->num_operands = prev_num_operands;ACPI_EXCEPTION ((AE_INFO , status,"While creating Arg %u" , index));return_ACPI_STATUS (status);
drivers/acpi/acpica/psobject.c +15 -37
83 lines not on this page · raw message
drivers/acpi/acpica/utprint.c +2 -5
@@ -333,11 +333,8 @@ int vsnprintf(char *string, acpi_size size, const char *format, va_list args) pos = string; -if (size !=ACPI_UINT32_MAX ) { - end = string + size; - }else { - end =ACPI_CAST_PTR (char,ACPI_UINT32_MAX ); - } + size =ACPI_MIN (size,ACPI_PTR_DIFF (ACPI_MAX_PTR , string)); + end = string + size;for (; *format; ++format) {if (*format !='%' ) {
drivers/acpi/battery.c +16 -3
@@ -243,10 +243,23 @@ static int acpi_battery_get_property(struct power_supply *psy,break ;case POWER_SUPPLY_PROP_CURRENT_NOW :case POWER_SUPPLY_PROP_POWER_NOW : -if (battery->rate_now ==ACPI_BATTERY_VALUE_UNKNOWN ) +if (battery->rate_now ==ACPI_BATTERY_VALUE_UNKNOWN ) { ret = -ENODEV ; -else - val->intval = battery->rate_now *1000 ; +break ; + } + + val->intval = battery->rate_now *1000 ; +/* +* When discharging, the current should be reported as a +* negative number as per the power supply class interface +* definition. +*/ +if (psp ==POWER_SUPPLY_PROP_CURRENT_NOW && + (battery->state &ACPI_BATTERY_STATE_DISCHARGING ) && +acpi_battery_handle_discharging (battery) + ==POWER_SUPPLY_STATUS_DISCHARGING ) + val->intval = -val->intval; +break ;case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN :case POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN :
drivers/acpi/bus.c +4 -2
@@ -1396,8 +1396,10 @@ static int __init acpi_init(void) } acpi_kobj =kobject_create_and_add ("acpi" , firmware_kobj); -if (!acpi_kobj) -pr_debug ("%s: kset create error\n" , __func__); +if (!acpi_kobj) { +pr_err ("Failed to register kobject\n" ); +return -ENOMEM ; + }init_prmt ();acpi_init_pcc ();
drivers/ata/pata_via.c +2 -1
@@ -368,7 +368,8 @@ static unsigned int via_mode_filter(struct ata_device *dev, unsigned int mask) }if (dev->class ==ATA_DEV_ATAPI && -dmi_check_system (no_atapi_dma_dmi_table)) { + (dmi_check_system (no_atapi_dma_dmi_table) || + config->id ==PCI_DEVICE_ID_VIA_6415 )) {ata_dev_warn (dev,"controller locks up on ATAPI DMA, forcing PIO\n" ); mask &=ATA_MASK_PIO ; }
drivers/atm/atmtcp.c +3 -1
@@ -288,7 +288,9 @@ static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)struct sk_buff *new_skb;int result =0 ; -if (!skb->len)return 0 ; +if (skb->len <sizeof (struct atmtcp_hdr )) + goto done; + dev = vcc->dev_data; hdr = (struct atmtcp_hdr *) skb->data;if (hdr->length ==ATMTCP_HDR_MAGIC ) {
drivers/base/power/runtime.c +1 -1
@@ -1001,7 +1001,7 @@ static enum hrtimer_restart pm_suspend_timer_fn(struct hrtimer *timer)* If 'expires' is after the current time, we've been called * too early. */ -if (expires >0 && expires <ktime_get_mono_fast_ns ()) { +if (expires >0 && expires <=ktime_get_mono_fast_ns ()) { dev->power.timer_expires =0 ;rpm_suspend (dev, dev->power.timer_autosuspends ? (RPM_ASYNC |RPM_AUTO ) :RPM_ASYNC );
drivers/base/swnode.c +1 -1
@@ -518,7 +518,7 @@ software_node_get_reference_args(const struct fwnode_handle *fwnode,if (prop->is_inline)return -EINVAL ; -if (index *sizeof (*ref) >= prop->length) +if ((index +1 ) *sizeof (*ref) > prop->length)return -ENOENT ; ref_array = prop->pointer;
drivers/block/aoe/aoedev.c +8 -0
@@ -198,6 +198,7 @@ aoedev_downdev(struct aoedev *d) {struct aoetgt *t, **tt, **te;struct list_head *head, *pos, *nx; +struct request *rq, *rqnext;int i; d->flags &= ~DEVFL_UP ;
@@ -223,6 +224,13 @@ aoedev_downdev(struct aoedev *d)/* clean out the in-process request (if any) */ aoe_failip (d); +/* clean out any queued block requests */ +list_for_each_entry_safe (rq, rqnext, &d->rq_list, queuelist) { +list_del_init (&rq->queuelist); +blk_mq_start_request (rq); +blk_mq_end_request (rq,BLK_STS_IOERR ); + } +/* fast fail all pending I/O */ if (d->blkq) {/* UP is cleared, freeze+quiesce to insure all are errored */
drivers/block/ublk_drv.c +3 -0
@@ -2323,6 +2323,9 @@ static int ublk_ctrl_add_dev(struct io_uring_cmd *cmd)if (copy_from_user (&info, argp,sizeof (info)))return -EFAULT ; +if (info.queue_depth >UBLK_MAX_QUEUE_DEPTH || info.nr_hw_queues >UBLK_MAX_NR_QUEUES ) +return -EINVAL ; +if (capable (CAP_SYS_ADMIN )) info.flags &= ~UBLK_F_UNPRIVILEGED_DEV ;else if (!(info.flags &UBLK_F_UNPRIVILEGED_DEV ))
drivers/bus/fsl-mc/fsl-mc-uapi.c +2 -2
@@ -275,13 +275,13 @@ static struct fsl_mc_cmd_desc fsl_mc_accepted_cmds[] = { .size = 8, }, [DPSW_GET_TAILDROP] = { - .cmdid_value = 0x0A80, + .cmdid_value = 0x0A90, .cmdid_mask = 0xFFF0, .token = true, .size = 14, }, [DPSW_SET_TAILDROP] = { - .cmdid_value = 0x0A90, + .cmdid_value = 0x0A80, .cmdid_mask = 0xFFF0, .token = true, .size = 24,
drivers/bus/fsl-mc/mc-io.c +13 -6
@@ -214,12 +214,19 @@ int __must_check fsl_mc_portal_allocate(struct fsl_mc_device *mc_dev,if (error <0 ) goto error_cleanup_resource; - dpmcp_dev->consumer_link =device_link_add (&mc_dev->dev, - &dpmcp_dev->dev, -DL_FLAG_AUTOREMOVE_CONSUMER ); -if (!dpmcp_dev->consumer_link) { - error = -EINVAL ; - goto error_cleanup_mc_io; +/* If the DPRC device itself tries to allocate a portal (usually for +* UAPI interaction), don't add a device link between them since the +* DPMCP device is an actual child device of the DPRC and a reverse +* dependency is not allowed. +*/ +if (mc_dev != mc_bus_dev) { + dpmcp_dev->consumer_link =device_link_add (&mc_dev->dev, + &dpmcp_dev->dev, +DL_FLAG_AUTOREMOVE_CONSUMER ); +if (!dpmcp_dev->consumer_link) { + error = -EINVAL ; + goto error_cleanup_mc_io; + } } *new_mc_io = mc_io;
drivers/bus/fsl-mc/mc-sys.c +1 -1
@@ -19,7 +19,7 @@/* * Timeout in milliseconds to wait for the completion of an MC command */ -#define MC_CMD_COMPLETION_TIMEOUT_MS 500 +#define MC_CMD_COMPLETION_TIMEOUT_MS 15000/* * usleep_range() min and max values used to throttle down polling
drivers/bus/mhi/ep/ring.c +10 -6
@@ -131,19 +131,23 @@ int mhi_ep_ring_add_element(struct mhi_ep_ring *ring, struct mhi_ring_element *e } old_offset = ring->rd_offset; -mhi_ep_ring_inc_index (ring);dev_dbg (dev,"Adding an element to ring at offset (%zu)\n" , ring->rd_offset); + buf_info.host_addr = ring->rbase + (old_offset *sizeof (*el)); + buf_info.dev_addr = el; + buf_info.size =sizeof (*el); + + ret = mhi_cntrl->write_sync (mhi_cntrl, &buf_info); +if (ret) +return ret; + +mhi_ep_ring_inc_index (ring);/* Update rp in ring context */ rp =cpu_to_le64 (ring->rd_offset *sizeof (*el) + ring->rbase);memcpy_toio ((void __iomem *) &ring->ring_ctx->generic.rp, &rp,sizeof (u64)); - buf_info.host_addr = ring->rbase + (old_offset *sizeof (*el)); - buf_info.dev_addr = el; - buf_info.size =sizeof (*el); - -return mhi_cntrl->write_sync (mhi_cntrl, &buf_info); +return ret; }void mhi_ep_ring_init (struct mhi_ep_ring *ring,enum mhi_ep_ring_type type,u32 id)
drivers/bus/mhi/host/pm.c +17 -1
@@ -586,6 +586,7 @@ static void mhi_pm_sys_error_transition(struct mhi_controller *mhi_cntrl)struct mhi_cmd *mhi_cmd;struct mhi_event_ctxt *er_ctxt;struct device *dev = &mhi_cntrl->mhi_dev->dev; +bool reset_device = false;int ret, i; dev_dbg(dev, "Transitioning from PM state: %s to: %s\n",
@@ -614,8 +615,23 @@ static void mhi_pm_sys_error_transition(struct mhi_controller *mhi_cntrl)/* Wake up threads waiting for state transition */ wake_up_all (&mhi_cntrl->state_event); -/* Trigger MHI RESET so that the device will not access host memory */ if (MHI_REG_ACCESS_VALID (prev_state)) { +/* +* If the device is in PBL or SBL, it will only respond to +* RESET if the device is in SYSERR state. SYSERR might +* already be cleared at this point. +*/ +enum mhi_state cur_state =mhi_get_mhi_state (mhi_cntrl); +enum mhi_ee_type cur_ee =mhi_get_exec_env (mhi_cntrl); + +if (cur_state ==MHI_STATE_SYS_ERR ) + reset_device = true; +else if (cur_ee !=MHI_EE_PBL && cur_ee !=MHI_EE_SBL ) + reset_device = true; + } + +/* Trigger MHI RESET so that the device will not access host memory */ +if (reset_device) {u32 in_reset =-1 ;unsigned long timeout =msecs_to_jiffies (mhi_cntrl->timeout_ms);
drivers/bus/ti-sysc.c +0 -49
61 lines not on this page · raw message
drivers/clk/meson/g12a.c +1 -0
@@ -3971,6 +3971,7 @@ static const struct clk_parent_data spicc_sclk_parent_data[] = { { .hw = &g12a_clk81.hw }, { .hw = &g12a_fclk_div4.hw }, { .hw = &g12a_fclk_div3.hw }, + { .hw = &g12a_fclk_div2.hw }, { .hw = &g12a_fclk_div5.hw }, { .hw = &g12a_fclk_div7.hw }, };
drivers/clk/rockchip/clk-rk3036.c +1 -0
@@ -431,6 +431,7 @@ static const char *const rk3036_critical_clocks[] __initconst = {"hclk_peri" ,"pclk_peri" ,"pclk_ddrupctl" , + "ddrphy", };static void __init rk3036_clk_init (struct device_node *np)
drivers/cpufreq/scmi-cpufreq.c +35 -1
@@ -299,6 +299,40 @@ static struct cpufreq_driver scmi_cpufreq_driver = { .register_em = scmi_cpufreq_register_em, }; +static bool scmi_dev_used_by_cpus (struct device *scmi_dev) +{ +struct device_node *scmi_np =dev_of_node (scmi_dev); +struct device_node *cpu_np, *np; +struct device *cpu_dev; +int cpu, idx; + +if (!scmi_np) +return false; + +for_each_possible_cpu (cpu) { + cpu_dev =get_cpu_device (cpu); +if (!cpu_dev) +continue ; + + cpu_np =dev_of_node (cpu_dev); + + np =of_parse_phandle (cpu_np,"clocks" ,0 ); +of_node_put (np); + +if (np == scmi_np) +return true; + + idx =of_property_match_string (cpu_np,"power-domain-names" ,"perf" ); + np =of_parse_phandle (cpu_np,"power-domains" , idx); +of_node_put (np); + +if (np == scmi_np) +return true; + } + +return false; +} +static int scmi_cpufreq_probe (struct scmi_device *sdev) {int ret;
@@ -307,7 +341,7 @@ static int scmi_cpufreq_probe(struct scmi_device *sdev) handle = sdev->handle; -if (!handle) +if (!handle || !scmi_dev_used_by_cpus (dev))return -ENODEV ; perf_ops = handle->devm_protocol_get (sdev,SCMI_PROTOCOL_PERF , &ph);
drivers/cpufreq/tegra186-cpufreq.c +0 -7
@@ -73,18 +73,11 @@ static int tegra186_cpufreq_init(struct cpufreq_policy *policy) {struct tegra186_cpufreq_data *data =cpufreq_get_driver_data ();unsigned int cluster = data->cpus[policy->cpu].bpmp_cluster_id; -u32 cpu; policy->freq_table = data->clusters[cluster].table; policy->cpuinfo.transition_latency =300 *1000 ; policy->driver_data =NULL ; -/* set same policy for all cpus in a cluster */ -for (cpu =0 ; cpu <ARRAY_SIZE (tegra186_cpus); cpu++) { -if (data->cpus[cpu].bpmp_cluster_id == cluster) -cpumask_set_cpu (cpu, policy->cpus); - } -return 0 ; }
drivers/crypto/marvell/cesa/cesa.c +1 -1
@@ -94,7 +94,7 @@ static int mv_cesa_std_process(struct mv_cesa_engine *engine, u32 status)static int mv_cesa_int_process (struct mv_cesa_engine *engine,u32 status) { -if (engine->chain.first && engine->chain.last) +if (engine->chain_hw.first && engine->chain_hw.last)return mv_cesa_tdma_process (engine, status);return mv_cesa_std_process (engine, status);
drivers/crypto/marvell/cesa/cesa.h +6 -3
@@ -440,8 +440,10 @@ struct mv_cesa_dev {* SRAM * @queue: fifo of the pending crypto requests * @load: engine load counter, useful for load balancing -* @chain: list of the current tdma descriptors being processed -* by this engine. +* @chain_hw: list of the current tdma descriptors being processed +* by the hardware. +* @chain_sw: list of the current tdma descriptors that will be +* submitted to the hardware. * @complete_queue: fifo of the processed requests by the engine * * Structure storing CESA engine information.
@@ -463,7 +465,8 @@ struct mv_cesa_engine {struct gen_pool *pool;struct crypto_queue queue;atomic_t load; -struct mv_cesa_tdma_chain chain; +struct mv_cesa_tdma_chain chain_hw; +struct mv_cesa_tdma_chain chain_sw;struct list_head complete_queue;int irq; };
drivers/crypto/marvell/cesa/tdma.c +32 -21
82 lines not on this page · raw message
drivers/dma-buf/udmabuf.c +2 -3
@@ -161,8 +161,7 @@ static int begin_cpu_udmabuf(struct dma_buf *buf, ubuf->sg =NULL ; } }else { -dma_sync_sg_for_cpu (dev, ubuf->sg->sgl, ubuf->sg->nents, - direction); +dma_sync_sgtable_for_cpu (dev, ubuf->sg, direction); }return ret;
@@ -177,7 +176,7 @@ static int end_cpu_udmabuf(struct dma_buf *buf,if (!ubuf->sg)return -EINVAL ; -dma_sync_sg_for_device (dev, ubuf->sg->sgl, ubuf->sg->nents, direction); +dma_sync_sgtable_for_device (dev, ubuf->sg, direction);return 0 ; }
drivers/edac/altera_edac.c +3 -3
@@ -1756,9 +1756,9 @@ altr_edac_a10_device_trig(struct file *file, const char __user *user_buf,local_irq_save (flags);if (trig_type ==ALTR_UE_TRIGGER_CHAR ) -writel (priv->ue_set_mask, set_addr); +writew (priv->ue_set_mask, set_addr);else -writel (priv->ce_set_mask, set_addr); +writew (priv->ce_set_mask, set_addr);/* Ensure the interrupt test bits are set */ wmb ();
@@ -1788,7 +1788,7 @@ altr_edac_a10_device_trig2(struct file *file, const char __user *user_buf,local_irq_save (flags);if (trig_type ==ALTR_UE_TRIGGER_CHAR ) { -writel (priv->ue_set_mask, set_addr); +writew (priv->ue_set_mask, set_addr); }else {/* Setup read/write of 4 bytes */ writel (ECC_WORD_WRITE , drvdata->base +ECC_BLK_DBYTECTRL_OFST );
drivers/edac/amd64_edac.c +1 -0
@@ -4130,6 +4130,7 @@ static int per_family_init(struct amd64_pvt *pvt)break ; case 0x70 ... 0x7f: pvt->ctl_name ="F19h_M70h" ; + pvt->max_mcs =4 ; pvt->flags.zn_regs_v2 =1 ;break ; case 0xa0 ... 0xaf:
drivers/gpio/gpio-mlxbf3.c +35 -19
67 lines not on this page · raw message
drivers/gpio/gpiolib-of.c +9 -0
@@ -203,6 +203,15 @@ static void of_gpio_try_fixup_polarity(const struct device_node *np, */ { "lantiq,pci-xway", "gpio-reset", false }, #endif +#if IS_ENABLED(CONFIG_REGULATOR_S5M8767) + /* + * According to S5M8767, the DVS and DS pin are + * active-high signals. However, exynos5250-spring.dts use + * active-low setting. + */ + { "samsung,s5m8767-pmic", "s5m8767,pmic-buck-dvs-gpios", true }, + { "samsung,s5m8767-pmic", "s5m8767,pmic-buck-ds-gpios", true }, +#endif #if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2005) /* * DTS for Nokia N900 incorrectly specified "active high"
drivers/gpu/drm/i915/i915_pmu.c +2 -2
@@ -105,7 +105,7 @@ static u32 config_mask(const u64 config) {unsigned int bit =config_bit (config); -if (__builtin_constant_p (config)) +if (__builtin_constant_p (bit))BUILD_BUG_ON (bit > BITS_PER_TYPE(typeof_member(struct i915_pmu, enable)) -1 );
@@ -114,7 +114,7 @@ static u32 config_mask(const u64 config)BITS_PER_TYPE (typeof_member (struct i915_pmu , enable)) - 1); -return BIT (config_bit (config)); +return BIT (bit); }static bool is_engine_event (struct perf_event *event)
drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_vid.c +9 -5
@@ -93,17 +93,21 @@ static void drm_mode_to_intf_timing_params( timing->vsync_polarity =0 ; } -/* for DP/EDP, Shift timings to align it to bottom right */ -if (phys_enc->hw_intf->cap->type ==INTF_DP ) { + timing->wide_bus_en =dpu_encoder_is_widebus_enabled (phys_enc->parent); + timing->compression_en =dpu_encoder_is_dsc_enabled (phys_enc->parent); + +/* +* For DP/EDP, Shift timings to align it to bottom right. +* wide_bus_en is set for everything excluding SDM845 & +* porch changes cause DisplayPort failure and HDMI tearing. +*/ +if (phys_enc->hw_intf->cap->type ==INTF_DP && timing->wide_bus_en) { timing->h_back_porch += timing->h_front_porch; timing->h_front_porch =0 ; timing->v_back_porch += timing->v_front_porch; timing->v_front_porch =0 ; } - timing->wide_bus_en =dpu_encoder_is_widebus_enabled (phys_enc->parent); - timing->compression_en =dpu_encoder_is_dsc_enabled (phys_enc->parent); -/* * for DP, divide the horizonal parameters by 2 when * widebus is enabled
drivers/gpu/drm/msm/dsi/phy/dsi_phy_10nm.c +7 -0
@@ -716,6 +716,13 @@ static int dsi_pll_10nm_init(struct msm_dsi_phy *phy)/* TODO: Remove this when we have proper display handover support */ msm_dsi_phy_pll_save_state (phy); +/* +* Store also proper vco_current_rate, because its value will be used in +* dsi_10nm_pll_restore_state(). +*/ +if (!dsi_pll_10nm_vco_recalc_rate (&pll_10nm->clk_hw,VCO_REF_CLK_RATE )) + pll_10nm->vco_current_rate = pll_10nm->phy->cfg->min_pll_rate; +return 0 ; }
drivers/gpu/drm/nouveau/nouveau_backlight.c +1 -1
@@ -42,7 +42,7 @@#include "nouveau_acpi.h" static struct ida bl_ida; -#define BL_NAME_SIZE 15 // 12 for name + 2 for digits + 1 for '\0' +#define BL_NAME_SIZE 24 // 12 for name + 11 for digits + 1 for '\0' static bool nouveau_get_backlight_name(char backlight_name[BL_NAME_SIZE],
drivers/hv/connection.c +17 -6
@@ -206,11 +206,20 @@ int vmbus_connect(void)INIT_LIST_HEAD (&vmbus_connection.chn_list);mutex_init (&vmbus_connection.channel_mutex); +/* +* The following Hyper-V interrupt and monitor pages can be used by +* UIO for mapping to user-space, so they should always be allocated on +* system page boundaries. The system page size must be >= the Hyper-V +* page size. +*/ +BUILD_BUG_ON (PAGE_SIZE <HV_HYP_PAGE_SIZE ); +/* * Setup the vmbus event connection for channel interrupt * abstraction stuff */ - vmbus_connection.int_page =hv_alloc_hyperv_zeroed_page (); + vmbus_connection.int_page = + (void *)__get_free_page (GFP_KERNEL | __GFP_ZERO);if (vmbus_connection.int_page ==NULL ) { ret = -ENOMEM ; goto cleanup;
@@ -225,8 +234,8 @@ int vmbus_connect(void)* Setup the monitor notification facility. The 1st page for * parent->child and the 2nd page for child->parent */ - vmbus_connection.monitor_pages[0 ] =hv_alloc_hyperv_page (); - vmbus_connection.monitor_pages[1 ] =hv_alloc_hyperv_page (); + vmbus_connection.monitor_pages[0 ] = (void *)__get_free_page (GFP_KERNEL ); + vmbus_connection.monitor_pages[1 ] = (void *)__get_free_page (GFP_KERNEL );if ((vmbus_connection.monitor_pages[0 ] ==NULL ) || (vmbus_connection.monitor_pages[1 ] ==NULL )) { ret = -ENOMEM ;
@@ -342,21 +351,23 @@ void vmbus_disconnect(void)destroy_workqueue (vmbus_connection.work_queue);if (vmbus_connection.int_page) { -hv_free_hyperv_page (vmbus_connection.int_page); +free_page ((unsigned long )vmbus_connection.int_page); vmbus_connection.int_page =NULL ; }if (vmbus_connection.monitor_pages[0 ]) {if (!set_memory_encrypted ( (unsigned long )vmbus_connection.monitor_pages[0 ],1 )) -hv_free_hyperv_page (vmbus_connection.monitor_pages[0 ]); +free_page ((unsigned long ) + vmbus_connection.monitor_pages[0 ]); vmbus_connection.monitor_pages[0 ] =NULL ; }if (vmbus_connection.monitor_pages[1 ]) {if (!set_memory_encrypted ( (unsigned long )vmbus_connection.monitor_pages[1 ],1 )) -hv_free_hyperv_page (vmbus_connection.monitor_pages[1 ]); +free_page ((unsigned long ) + vmbus_connection.monitor_pages[1 ]); vmbus_connection.monitor_pages[1 ] =NULL ; } }
drivers/hwmon/ftsteutates.c +6 -3
@@ -423,13 +423,16 @@ static int fts_read(struct device *dev, enum hwmon_sensor_types type, u32 attr,break ;case hwmon_pwm:switch (attr) { -case hwmon_pwm_auto_channels_temp: -if (data->fan_source[channel] ==FTS_FAN_SOURCE_INVALID ) +case hwmon_pwm_auto_channels_temp: { +u8 fan_source = data->fan_source[channel]; + +if (fan_source ==FTS_FAN_SOURCE_INVALID || fan_source >=BITS_PER_LONG ) *val =0 ;else - *val =BIT (data->fan_source[channel]); + *val =BIT (fan_source);return 0 ; + }default :break ; }
drivers/hwmon/occ/common.c +98 -142
385 lines not on this page · raw message
drivers/i2c/busses/i2c-designware-slave.c +1 -1
@@ -91,7 +91,7 @@ static int i2c_dw_unreg_slave(struct i2c_client *slave)i2c_dw_disable (dev);synchronize_irq (dev->irq); dev->slave =NULL ; -pm_runtime_put (dev->dev); +pm_runtime_put_sync_suspend (dev->dev);return 0 ; }
drivers/i2c/busses/i2c-npcm7xx.c +8 -4
@@ -1971,10 +1971,14 @@ static int npcm_i2c_init_module(struct npcm_i2c *bus, enum i2c_mode mode,/* Check HW is OK: SDA and SCL should be high at this point. */ if ((npcm_i2c_get_SDA (&bus->adap) ==0 ) || (npcm_i2c_get_SCL (&bus->adap) ==0 )) { -dev_err (bus->dev,"I2C%d init fail: lines are low\n" , bus->num); -dev_err (bus->dev,"SDA=%d SCL=%d\n" ,npcm_i2c_get_SDA (&bus->adap), -npcm_i2c_get_SCL (&bus->adap)); -return -ENXIO ; +dev_warn (bus->dev," I2C%d SDA=%d SCL=%d, attempting to recover\n" , bus->num, +npcm_i2c_get_SDA (&bus->adap),npcm_i2c_get_SCL (&bus->adap)); +if (npcm_i2c_recovery_tgclk (&bus->adap)) { +dev_err (bus->dev,"I2C%d init fail: SDA=%d SCL=%d\n" , + bus->num,npcm_i2c_get_SDA (&bus->adap), +npcm_i2c_get_SCL (&bus->adap)); +return -ENXIO ; + } }npcm_i2c_int_enable (bus, true);
drivers/i2c/busses/i2c-tegra.c +5 -0
@@ -1397,6 +1397,11 @@ static int tegra_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], ret =tegra_i2c_xfer_msg (i2c_dev, &msgs[i],MSG_END_CONTINUE );if (ret)break ; + +/* Validate message length before proceeding */ +if (msgs[i].buf[0 ] ==0 || msgs[i].buf[0 ] >I2C_SMBUS_BLOCK_MAX ) +break ; +/* Set the msg length from first byte */ msgs[i].len += msgs[i].buf[0 ];dev_dbg (i2c_dev->dev,"reading %d bytes\n" , msgs[i].len);
drivers/iio/accel/fxls8962af-core.c +13 -2
@@ -20,6 +20,7 @@#include <linux/pm_runtime.h> #include <linux/regulator/consumer.h> #include <linux/regmap.h> +#include <linux/units.h> #include <linux/iio/buffer.h> #include <linux/iio/events.h>
@@ -434,8 +435,16 @@ static int fxls8962af_read_raw(struct iio_dev *indio_dev, *val =FXLS8962AF_TEMP_CENTER_VAL ;return IIO_VAL_INT ;case IIO_CHAN_INFO_SCALE : - *val =0 ; -return fxls8962af_read_full_scale (data, val2); +switch (chan->type) { +case IIO_TEMP : + *val =MILLIDEGREE_PER_DEGREE ; +return IIO_VAL_INT ; +case IIO_ACCEL : + *val =0 ; +return fxls8962af_read_full_scale (data, val2); +default : +return -EINVAL ; + }case IIO_CHAN_INFO_SAMP_FREQ :return fxls8962af_read_samp_freq (data, val, val2);default :
@@ -734,9 +743,11 @@ static const struct iio_event_spec fxls8962af_event[] = { .type = IIO_TEMP, \ .address = FXLS8962AF_TEMP_OUT, \ .info_mask_separate =BIT (IIO_CHAN_INFO_RAW ) | \ +BIT (IIO_CHAN_INFO_SCALE ) | \ BIT(IIO_CHAN_INFO_OFFSET),\ .scan_index = -1, \ .scan_type = { \ + .sign = 's', \ .realbits = 8, \ .storagebits = 8, \ }, \
drivers/iio/adc/ad7606_spi.c +1 -1
@@ -151,7 +151,7 @@ static int ad7606_spi_reg_write(struct ad7606_state *st,struct spi_device *spi =to_spi_device (st->dev); st->d16[0 ] =cpu_to_be16 ((st->bops->rd_wr_cmd (addr,1 ) <<8 ) | - (val &0x1FF )); + (val &0xFF ));return spi_write (spi, &st->d16[0 ],sizeof (st->d16[0 ])); }
drivers/iio/imu/inv_icm42600/inv_icm42600_temp.c +5 -3
@@ -67,16 +67,18 @@ int inv_icm42600_temp_read_raw(struct iio_dev *indio_dev,return IIO_VAL_INT ;/* * T°C = (temp / 132.48) + 25 -* Tm°C = 1000 * ((temp * 100 / 13248) + 25) +* Tm°C = 1000 * ((temp / 132.48) + 25) +* Tm°C = 7.548309 * temp + 25000 +* Tm°C = (temp + 3312) * 7.548309 * scale: 100000 / 13248 ~= 7.548309 -* offset: 25000 +* offset: 3312 */ case IIO_CHAN_INFO_SCALE : *val =7 ; *val2 =548309 ;return IIO_VAL_INT_PLUS_MICRO ;case IIO_CHAN_INFO_OFFSET : - *val =25000 ; + *val =3312 ;return IIO_VAL_INT ;default :return -EINVAL ;
drivers/infiniband/core/iwcm.c +15 -14
@@ -367,12 +367,9 @@ EXPORT_SYMBOL(iw_cm_disconnect);/* * CM_ID <-- DESTROYING * -* Clean up all resources associated with the connection and release -* the initial reference taken by iw_create_cm_id. -* -* Returns true if and only if the last cm_id_priv reference has been dropped. +* Clean up all resources associated with the connection. */ -static bool destroy_cm_id (struct iw_cm_id *cm_id) +static void destroy_cm_id (struct iw_cm_id *cm_id) {struct iwcm_id_private *cm_id_priv;struct ib_qp *qp;
@@ -441,20 +438,22 @@ static bool destroy_cm_id(struct iw_cm_id *cm_id)iwpm_remove_mapinfo (&cm_id->local_addr, &cm_id->m_local_addr);iwpm_remove_mapping (&cm_id->local_addr,RDMA_NL_IWCM ); } - -return iwcm_deref_id (cm_id_priv); }/* -* This function is only called by the application thread and cannot -* be called by the event thread. The function will wait for all -* references to be released on the cm_id and then kfree the cm_id -* object. +* Destroy cm_id. If the cm_id still has other references, wait for all +* references to be released on the cm_id and then release the initial +* reference taken by iw_create_cm_id. */ void iw_destroy_cm_id (struct iw_cm_id *cm_id) { -if (!destroy_cm_id (cm_id)) +struct iwcm_id_private *cm_id_priv; + + cm_id_priv = container_of(cm_id, struct iwcm_id_private, id); +destroy_cm_id (cm_id); +if (refcount_read (&cm_id_priv->refcount) >1 )flush_workqueue (iwcm_wq); +iwcm_deref_id (cm_id_priv); }EXPORT_SYMBOL (iw_destroy_cm_id);
@@ -1037,8 +1036,10 @@ static void cm_work_handler(struct work_struct *_work)if (!test_bit (IWCM_F_DROP_EVENTS , &cm_id_priv->flags)) { ret =process_event (cm_id_priv, &levent); -if (ret) -WARN_ON_ONCE (destroy_cm_id (&cm_id_priv->id)); +if (ret) { +destroy_cm_id (&cm_id_priv->id); +WARN_ON_ONCE (iwcm_deref_id (cm_id_priv)); + } }else pr_debug ("dropping event %d\n" , levent.event);if (iwcm_deref_id (cm_id_priv))
drivers/input/keyboard/gpio_keys.c +2 -0
@@ -455,6 +455,8 @@ static enum hrtimer_restart gpio_keys_irq_timer(struct hrtimer *t) release_timer);struct input_dev *input = bdata->input; +guard (spinlock_irqsave)(&bdata->lock); +if (bdata->key_pressed) {input_report_key (input, *bdata->code,0 );input_sync (input);
drivers/input/misc/ims-pcu.c +6 -0
@@ -845,6 +845,12 @@ static int ims_pcu_flash_firmware(struct ims_pcu *pcu, addr =be32_to_cpu (rec->addr) /2 ; len =be16_to_cpu (rec->len); +if (len >sizeof (pcu->cmd_buf) -1 -sizeof (*fragment)) { +dev_err (pcu->dev, +"Invalid record length in firmware: %d\n" , len); +return -EINVAL ; + } + fragment = (void *)&pcu->cmd_buf[1 ];put_unaligned_le32 (addr, &fragment->addr); fragment->len = len;
drivers/input/misc/sparcspkr.c +16 -6
@@ -75,9 +75,14 @@ static int bbc_spkr_event(struct input_dev *dev, unsigned int type, unsigned intreturn -1 ;switch (code) { -case SND_BELL :if (value) value =1000 ; -case SND_TONE :break ; -default :return -1 ; +case SND_BELL : +if (value) + value =1000 ; +break ; +case SND_TONE : +break ; +default : +return -1 ; }if (value >20 && value <32767 )
@@ -113,9 +118,14 @@ static int grover_spkr_event(struct input_dev *dev, unsigned int type, unsignedreturn -1 ;switch (code) { -case SND_BELL :if (value) value =1000 ; -case SND_TONE :break ; -default :return -1 ; +case SND_BELL : +if (value) + value =1000 ; +break ; +case SND_TONE : +break ; +default : +return -1 ; }if (value >20 && value <32767 )
drivers/iommu/amd/iommu.c +8 -0
@@ -780,6 +780,14 @@ int amd_iommu_register_ga_log_notifier(int (*notifier)(u32)) { iommu_ga_log_notifier = notifier; +/* +* Ensure all in-flight IRQ handlers run to completion before returning +* to the caller, e.g. to ensure module code isn't unloaded while it's +* being executed in the IRQ handler. +*/ +if (!notifier) +synchronize_rcu (); +return 0 ; }EXPORT_SYMBOL (amd_iommu_register_ga_log_notifier);
drivers/md/dm-raid1.c +2 -3
@@ -133,10 +133,9 @@ static void queue_bio(struct mirror_set *ms, struct bio *bio, int rw)spin_lock_irqsave (&ms->lock, flags); should_wake = !(bl->head);bio_list_add (bl, bio); -spin_unlock_irqrestore (&ms->lock, flags); -if (should_wake)wakeup_mirrord (ms); +spin_unlock_irqrestore (&ms->lock, flags); }static void dispatch_bios (void *context,struct bio_list *bio_list)
@@ -646,9 +645,9 @@ static void write_callback(unsigned long error, void *context)if (!ms->failures.head) should_wake =1 ;bio_list_add (&ms->failures, bio); -spin_unlock_irqrestore (&ms->lock, flags);if (should_wake)wakeup_mirrord (ms); +spin_unlock_irqrestore (&ms->lock, flags); }static void do_write (struct mirror_set *ms,struct bio *bio)
drivers/md/dm-verity-fec.c +4 -0
@@ -624,6 +624,10 @@ int verity_fec_parse_opt_args(struct dm_arg_set *as, struct dm_verity *v, (*argc)--;if (!strcasecmp (arg_name,DM_VERITY_OPT_FEC_DEV )) { +if (v->fec->dev) { + ti->error ="FEC device already specified" ; +return -EINVAL ; + } r =dm_get_device (ti, arg_value,BLK_OPEN_READ , &v->fec->dev);if (r) { ti->error ="FEC device lookup failed" ;
drivers/md/dm-verity-target.c +7 -1
@@ -1043,6 +1043,9 @@ static int verity_alloc_most_once(struct dm_verity *v) {struct dm_target *ti = v->ti; +if (v->validated_blocks) +return 0 ; +/* the bitset can only handle INT_MAX blocks */ if (v->data_blocks >INT_MAX ) { ti->error ="device too large to use check_at_most_once" ;
@@ -1066,6 +1069,9 @@ static int verity_alloc_zero_digest(struct dm_verity *v)struct ahash_request *req;u8 *zero_data; +if (v->zero_digest) +return 0 ; + v->zero_digest =kmalloc (v->digest_size,GFP_KERNEL );if (!v->zero_digest)
@@ -1405,7 +1411,7 @@ static int verity_ctr(struct dm_target *ti, unsigned int argc, char **argv) goto bad; } -/* Root hash signature is a optional parameter*/ +/* Root hash signature is an optional parameter */ r = verity_verify_root_hash(root_hash_digest_to_validate, strlen(root_hash_digest_to_validate), verify_args.sig,
drivers/md/dm-verity-verify-sig.c +13 -4
@@ -71,9 +71,14 @@ int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, const char *arg_name) {struct dm_target *ti = v->ti; -int ret =0 ; +int ret;const char *sig_key =NULL ; +if (v->signature_key_desc) { + ti->error =DM_VERITY_VERIFY_ERR ("root_hash_sig_key_desc already specified" ); +return -EINVAL ; + } +if (!*argc) { ti->error =DM_VERITY_VERIFY_ERR ("Signature key not specified" );return -EINVAL ;
@@ -83,14 +88,18 @@ int verity_verify_sig_parse_opt_args(struct dm_arg_set *as, (*argc)--; ret =verity_verify_get_sig_from_key (sig_key, sig_opts); -if (ret <0 ) +if (ret <0 ) { ti->error =DM_VERITY_VERIFY_ERR ("Invalid key specified" ); +return ret; + } v->signature_key_desc =kstrdup (sig_key,GFP_KERNEL ); -if (!v->signature_key_desc) +if (!v->signature_key_desc) { + ti->error =DM_VERITY_VERIFY_ERR ("Could not allocate memory for signature key" );return -ENOMEM ; + } -return ret; +return 0 ; }/*
drivers/media/common/videobuf2/videobuf2-dma-sg.c +2 -2
@@ -469,7 +469,7 @@ vb2_dma_sg_dmabuf_ops_begin_cpu_access(struct dma_buf *dbuf,struct vb2_dma_sg_buf *buf = dbuf->priv;struct sg_table *sgt = buf->dma_sgt; -dma_sync_sg_for_cpu (buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); +dma_sync_sgtable_for_cpu (buf->dev, sgt, buf->dma_dir);return 0 ; }
@@ -480,7 +480,7 @@ vb2_dma_sg_dmabuf_ops_end_cpu_access(struct dma_buf *dbuf,struct vb2_dma_sg_buf *buf = dbuf->priv;struct sg_table *sgt = buf->dma_sgt; -dma_sync_sg_for_device (buf->dev, sgt->sgl, sgt->nents, buf->dma_dir); +dma_sync_sgtable_for_device (buf->dev, sgt, buf->dma_dir);return 0 ; }
drivers/media/i2c/ccs-pll.c +10 -1
@@ -312,6 +312,11 @@ __ccs_pll_calculate_vt_tree(struct device *dev,dev_dbg (dev,"more_mul2: %u\n" , more_mul); pll_fr->pll_multiplier = mul * more_mul; +if (pll_fr->pll_multiplier > lim_fr->max_pll_multiplier) { +dev_dbg (dev,"pll multiplier %u too high\n" , + pll_fr->pll_multiplier); +return -EINVAL ; + }if (pll_fr->pll_multiplier * pll_fr->pll_ip_clk_freq_hz > lim_fr->max_pll_op_clk_freq_hz)
@@ -397,6 +402,8 @@ static int ccs_pll_calculate_vt_tree(struct device *dev, min_pre_pll_clk_div =max_t (u16, min_pre_pll_clk_div, pll->ext_clk_freq_hz / lim_fr->max_pll_ip_clk_freq_hz); +if (!(pll->flags &CCS_PLL_FLAG_EXT_IP_PLL_DIVIDER )) + min_pre_pll_clk_div =clk_div_even (min_pre_pll_clk_div);dev_dbg (dev,"vt min/max_pre_pll_clk_div: %u,%u\n" , min_pre_pll_clk_div, max_pre_pll_clk_div);
@@ -792,7 +799,7 @@ int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *lim, op_lim_fr->min_pre_pll_clk_div, op_lim_fr->max_pre_pll_clk_div); max_op_pre_pll_clk_div =min_t (u16, op_lim_fr->max_pre_pll_clk_div, -clk_div_even (pll->ext_clk_freq_hz / +DIV_ROUND_UP (pll->ext_clk_freq_hz, op_lim_fr->min_pll_ip_clk_freq_hz)); min_op_pre_pll_clk_div = max_t(u16, op_lim_fr->min_pre_pll_clk_div,
@@ -815,6 +822,8 @@ int ccs_pll_calculate(struct device *dev, const struct ccs_pll_limits *lim,one_or_more (DIV_ROUND_UP (op_lim_fr->max_pll_op_clk_freq_hz, pll->ext_clk_freq_hz)))); +if (!(pll->flags &CCS_PLL_FLAG_EXT_IP_PLL_DIVIDER )) + min_op_pre_pll_clk_div =clk_div_even (min_op_pre_pll_clk_div);dev_dbg (dev,"pll_op check: min / max op_pre_pll_clk_div: %u / %u\n" , min_op_pre_pll_clk_div, max_op_pre_pll_clk_div);
drivers/media/i2c/ds90ub913.c +2 -2
@@ -453,10 +453,10 @@ static int ub913_set_fmt(struct v4l2_subdev *sd,if (!fmt)return -EINVAL ; - format->format.code = finfo->outcode; - *fmt = format->format; + fmt->code = finfo->outcode; +return 0 ; }
drivers/media/i2c/ov5675.c +1 -4
@@ -1339,11 +1339,8 @@ static int ov5675_probe(struct i2c_client *client)return -ENOMEM ; ret =ov5675_get_hwcfg (ov5675, &client->dev); -if (ret) { -dev_err (&client->dev,"failed to get HW configuration: %d" , - ret); +if (ret)return ret; - }v4l2_i2c_subdev_init (&ov5675->sd, client, &ov5675_subdev_ops);
drivers/media/i2c/ov8856.c +3 -6
@@ -2323,8 +2323,8 @@ static int ov8856_get_hwcfg(struct ov8856 *ov8856, struct device *dev)if (!is_acpi_node (fwnode)) { ov8856->xvclk =devm_clk_get (dev,"xvclk" );if (IS_ERR (ov8856->xvclk)) { -dev_err (dev,"could not get xvclk clock (%pe)\n" , - ov8856->xvclk); +dev_err_probe (dev,PTR_ERR (ov8856->xvclk), +"could not get xvclk clock\n" );return PTR_ERR (ov8856->xvclk); }
@@ -2429,11 +2429,8 @@ static int ov8856_probe(struct i2c_client *client)return -ENOMEM ; ret =ov8856_get_hwcfg (ov8856, &client->dev); -if (ret) { -dev_err (&client->dev,"failed to get HW configuration: %d" , - ret); +if (ret)return ret; - }v4l2_i2c_subdev_init (&ov8856->sd, client, &ov8856_subdev_ops);
drivers/media/platform/mediatek/vcodec/decoder/vdec/vdec_hevc_req_multi_if.c +1 -1
@@ -821,7 +821,7 @@ static int vdec_hevc_slice_setup_core_buffer(struct vdec_hevc_slice_inst *inst, inst->vsi_core->fb.y.dma_addr = y_fb_dma; inst->vsi_core->fb.y.size = ctx->picinfo.fb_sz[0 ]; inst->vsi_core->fb.c.dma_addr = c_fb_dma; - inst->vsi_core->fb.y.size = ctx->picinfo.fb_sz[1 ]; + inst->vsi_core->fb.c.size = ctx->picinfo.fb_sz[1 ]; inst->vsi_core->dec.vdec_fb_va = (unsigned long )fb;
drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +38 -21
83 lines not on this page · raw message
drivers/media/platform/nxp/imx8-isi/imx8-isi-m2m.c +13 -1
@@ -43,6 +43,7 @@ struct mxc_isi_m2m_ctx_queue_data {struct v4l2_pix_format_mplane format;const struct mxc_isi_format_info *info;u32 sequence; +bool streaming; };struct mxc_isi_m2m_ctx {
@@ -486,15 +487,18 @@ static int mxc_isi_m2m_streamon(struct file *file, void *fh, enum v4l2_buf_type type) {struct mxc_isi_m2m_ctx *ctx =to_isi_m2m_ctx (fh); +struct mxc_isi_m2m_ctx_queue_data *q =mxc_isi_m2m_ctx_qdata (ctx, type);const struct v4l2_pix_format_mplane *out_pix = &ctx->queues.out.format;const struct v4l2_pix_format_mplane *cap_pix = &ctx->queues.cap.format;const struct mxc_isi_format_info *cap_info = ctx->queues.cap.info;const struct mxc_isi_format_info *out_info = ctx->queues.out.info;struct mxc_isi_m2m *m2m = ctx->m2m;bool bypass; -int ret; +if (q->streaming) +return 0 ; +mutex_lock (&m2m->lock);if (m2m->usage_count ==INT_MAX ) {
@@ -547,6 +551,8 @@ static int mxc_isi_m2m_streamon(struct file *file, void *fh, goto unchain; } + q->streaming = true; +return 0 ; unchain:
@@ -569,10 +575,14 @@ static int mxc_isi_m2m_streamoff(struct file *file, void *fh, enum v4l2_buf_type type) {struct mxc_isi_m2m_ctx *ctx =to_isi_m2m_ctx (fh); +struct mxc_isi_m2m_ctx_queue_data *q =mxc_isi_m2m_ctx_qdata (ctx, type);struct mxc_isi_m2m *m2m = ctx->m2m;v4l2_m2m_ioctl_streamoff (file, fh, type); +if (!q->streaming) +return 0 ; +mutex_lock (&m2m->lock);/*
@@ -598,6 +608,8 @@ static int mxc_isi_m2m_streamoff(struct file *file, void *fh,mutex_unlock (&m2m->lock); + q->streaming = false; +return 0 ; }
drivers/media/platform/qcom/venus/core.c +8 -8
@@ -348,7 +348,7 @@ static int venus_probe(struct platform_device *pdev) ret =v4l2_device_register (dev, &core->v4l2_dev);if (ret) - goto err_core_deinit; + goto err_hfi_destroy;platform_set_drvdata (pdev, core);
@@ -380,24 +380,24 @@ static int venus_probe(struct platform_device *pdev) ret =venus_enumerate_codecs (core,VIDC_SESSION_TYPE_DEC );if (ret) - goto err_venus_shutdown; + goto err_core_deinit; ret =venus_enumerate_codecs (core,VIDC_SESSION_TYPE_ENC );if (ret) - goto err_venus_shutdown; + goto err_core_deinit; ret =pm_runtime_put_sync (dev);if (ret) {pm_runtime_get_noresume (dev); - goto err_dev_unregister; + goto err_core_deinit; }venus_dbgfs_init (core);return 0 ; -err_dev_unregister: -v4l2_device_unregister (&core->v4l2_dev); +err_core_deinit: +hfi_core_deinit (core, false); err_venus_shutdown:venus_shutdown (core); err_firmware_deinit:
@@ -408,9 +408,9 @@ static int venus_probe(struct platform_device *pdev)pm_runtime_put_noidle (dev);pm_runtime_disable (dev);pm_runtime_set_suspended (dev); +v4l2_device_unregister (&core->v4l2_dev); +err_hfi_destroy:hfi_destroy (core); -err_core_deinit: -hfi_core_deinit (core, false); err_core_put:if (core->pm_ops->core_put) core->pm_ops->core_put (core);
drivers/media/platform/ti/davinci/vpif.c +3 -1
@@ -505,7 +505,7 @@ static int vpif_probe(struct platform_device *pdev) pdev_display =kzalloc (sizeof (*pdev_display),GFP_KERNEL );if (!pdev_display) { ret = -ENOMEM ; - goto err_put_pdev_capture; + goto err_del_pdev_capture; } pdev_display->name ="vpif_display" ;
@@ -528,6 +528,8 @@ static int vpif_probe(struct platform_device *pdev) err_put_pdev_display:platform_device_put (pdev_display); +err_del_pdev_capture: +platform_device_del (pdev_capture); err_put_pdev_capture:platform_device_put (pdev_capture); err_put_rpm:
drivers/media/platform/ti/omap3isp/ispccdc.c +4 -4
@@ -446,8 +446,8 @@ static int ccdc_lsc_config(struct isp_ccdc_device *ccdc,if (ret <0 ) goto done; -dma_sync_sg_for_cpu (isp->dev, req->table.sgt.sgl, - req->table.sgt.nents,DMA_TO_DEVICE ); +dma_sync_sgtable_for_cpu (isp->dev, &req->table.sgt, +DMA_TO_DEVICE );if (copy_from_user (req->table.addr, config->lsc, req->config.size)) {
@@ -455,8 +455,8 @@ static int ccdc_lsc_config(struct isp_ccdc_device *ccdc, goto done; } -dma_sync_sg_for_device (isp->dev, req->table.sgt.sgl, - req->table.sgt.nents,DMA_TO_DEVICE ); +dma_sync_sgtable_for_device (isp->dev, &req->table.sgt, +DMA_TO_DEVICE ); }spin_lock_irqsave (&ccdc->lsc.req_lock, flags);
drivers/media/platform/ti/omap3isp/ispstat.c +2 -4
@@ -161,8 +161,7 @@ static void isp_stat_buf_sync_for_device(struct ispstat *stat,if (ISP_STAT_USES_DMAENGINE (stat))return ; -dma_sync_sg_for_device (stat->isp->dev, buf->sgt.sgl, - buf->sgt.nents,DMA_FROM_DEVICE ); +dma_sync_sgtable_for_device (stat->isp->dev, &buf->sgt,DMA_FROM_DEVICE ); } static void isp_stat_buf_sync_for_cpu(struct ispstat *stat,
@@ -171,8 +170,7 @@ static void isp_stat_buf_sync_for_cpu(struct ispstat *stat,if (ISP_STAT_USES_DMAENGINE (stat))return ; -dma_sync_sg_for_cpu (stat->isp->dev, buf->sgt.sgl, - buf->sgt.nents,DMA_FROM_DEVICE ); +dma_sync_sgtable_for_cpu (stat->isp->dev, &buf->sgt,DMA_FROM_DEVICE ); }static void isp_stat_buf_clear (struct ispstat *stat)
drivers/media/test-drivers/vidtv/vidtv_channel.c +1 -1
@@ -497,7 +497,7 @@ int vidtv_channel_si_init(struct vidtv_mux *m)vidtv_psi_sdt_table_destroy (m->si.sdt); free_pat:vidtv_psi_pat_table_destroy (m->si.pat); -return 0 ; +return -EINVAL ; }void vidtv_channel_si_destroy (struct vidtv_mux *m)
drivers/media/test-drivers/vivid/vivid-vid-cap.c +1 -1
@@ -954,8 +954,8 @@ int vivid_vid_cap_s_selection(struct file *file, void *fh, struct v4l2_selectionif (dev->has_compose_cap) {v4l2_rect_set_min_size (compose, &min_rect);v4l2_rect_set_max_size (compose, &max_rect); -v4l2_rect_map_inside (compose, &fmt); } +v4l2_rect_map_inside (compose, &fmt); dev->fmt_cap_rect = fmt;tpg_s_buf_height (&dev->tpg, fmt.height); }else if (dev->has_compose_cap) {
drivers/media/usb/dvb-usb/cxusb.c +1 -2
@@ -119,9 +119,8 @@ static void cxusb_gpio_tuner(struct dvb_usb_device *d, int onoff) o[0 ] =GPIO_TUNER ; o[1 ] = onoff; -cxusb_ctrl_msg (d,CMD_GPIO_WRITE , o,2 , &i,1 ); -if (i !=0x01 ) +if (!cxusb_ctrl_msg (d,CMD_GPIO_WRITE , o,2 , &i,1 ) && i !=0x01 )dev_info (&d->udev->dev,"gpio_write failed.\n" ); st->gpio_write_state[GPIO_TUNER ] = onoff;
drivers/media/usb/gspca/stv06xx/stv06xx_hdcs.c +4 -3
@@ -520,12 +520,13 @@ static int hdcs_init(struct sd *sd)static int hdcs_dump (struct sd *sd) {u16 reg, val; +int err =0 ;pr_info ("Dumping sensor registers:\n" ); -for (reg =HDCS_IDENT ; reg <=HDCS_ROWEXPH ; reg++) { -stv06xx_read_sensor (sd, reg, &val); +for (reg =HDCS_IDENT ; reg <=HDCS_ROWEXPH && !err; reg++) { + err =stv06xx_read_sensor (sd, reg, &val);pr_info ("reg 0x%02x = 0x%02x\n" , reg, val); } -return 0 ; +return (err <0 ) ? err :0 ; }
drivers/media/usb/uvc/uvc_ctrl.c +19 -4
@@ -1642,7 +1642,9 @@ static bool uvc_ctrl_xctrls_has_control(const struct v4l2_ext_control *xctrls, }static void uvc_ctrl_send_events (struct uvc_fh *handle, -const struct v4l2_ext_control *xctrls,unsigned int xctrls_count) +struct uvc_entity *entity, +const struct v4l2_ext_control *xctrls, +unsigned int xctrls_count) {struct uvc_control_mapping *mapping;struct uvc_control *ctrl;
@@ -1653,6 +1655,9 @@ static void uvc_ctrl_send_events(struct uvc_fh *handle,u32 changes =V4L2_EVENT_CTRL_CH_VALUE ; ctrl =uvc_find_control (handle->chain, xctrls[i].id, &mapping); +if (ctrl->entity != entity) +continue ; +if (ctrl->info.flags &UVC_CTRL_FLAG_ASYNCHRONOUS )/* Notification will be sent from an Interrupt event. */ continue ;
@@ -1783,12 +1788,17 @@ int uvc_ctrl_begin(struct uvc_video_chain *chain)return mutex_lock_interruptible (&chain->ctrl_mutex) ? -ERESTARTSYS :0 ; } +/* +* Returns the number of uvc controls that have been correctly set, or a +* negative number if there has been an error. +*/ static int uvc_ctrl_commit_entity (struct uvc_device *dev,struct uvc_fh *handle,struct uvc_entity *entity,int rollback,struct uvc_control **err_ctrl) { +unsigned int processed_ctrls =0 ;struct uvc_control *ctrl;unsigned int i;int ret;
@@ -1823,6 +1833,9 @@ static int uvc_ctrl_commit_entity(struct uvc_device *dev,else ret =0 ; +if (!ret) + processed_ctrls++; +if (rollback || ret <0 ) memcpy(uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT), uvc_ctrl_data(ctrl, UVC_CTRL_DATA_BACKUP),
@@ -1841,7 +1854,7 @@ static int uvc_ctrl_commit_entity(struct uvc_device *dev,uvc_ctrl_set_handle (handle, ctrl, handle); } -return 0 ; +return processed_ctrls; } static int uvc_ctrl_find_ctrl_idx(struct uvc_entity *entity,
@@ -1883,11 +1896,13 @@ int __uvc_ctrl_commit(struct uvc_fh *handle, int rollback,uvc_ctrl_find_ctrl_idx (entity, ctrls, err_ctrl); goto done; + }else if (ret >0 && !rollback) { +uvc_ctrl_send_events (handle, entity, + ctrls->controls, ctrls->count); } } -if (!rollback) -uvc_ctrl_send_events (handle, ctrls->controls, ctrls->count); + ret =0 ; done:mutex_unlock (&chain->ctrl_mutex);return ret;
drivers/media/usb/uvc/uvc_driver.c +19 -8
@@ -2217,13 +2217,16 @@ static int uvc_probe(struct usb_interface *intf,#endif /* Parse the Video Class control descriptor. */ -if (uvc_parse_control (dev) <0 ) { + ret =uvc_parse_control (dev); +if (ret <0 ) { + ret = -ENODEV ;uvc_dbg (dev,PROBE ,"Unable to parse UVC descriptors\n" ); goto error; }/* Parse the associated GPIOs. */ -if (uvc_gpio_parse (dev) <0 ) { + ret =uvc_gpio_parse (dev); +if (ret <0 ) {uvc_dbg (dev,PROBE ,"Unable to parse UVC GPIOs\n" ); goto error; }
@@ -2249,24 +2252,32 @@ static int uvc_probe(struct usb_interface *intf, }/* Register the V4L2 device. */ -if (v4l2_device_register (&intf->dev, &dev->vdev) <0 ) + ret =v4l2_device_register (&intf->dev, &dev->vdev); +if (ret <0 ) goto error;/* Scan the device for video chains. */ -if (uvc_scan_device (dev) <0 ) +if (uvc_scan_device (dev) <0 ) { + ret = -ENODEV ; goto error; + }/* Initialize controls. */ -if (uvc_ctrl_init_device (dev) <0 ) +if (uvc_ctrl_init_device (dev) <0 ) { + ret = -ENODEV ; goto error; + }/* Register video device nodes. */ -if (uvc_register_chains (dev) <0 ) +if (uvc_register_chains (dev) <0 ) { + ret = -ENODEV ; goto error; + }#ifdef CONFIG_MEDIA_CONTROLLER /* Register the media device node */ -if (media_device_register (&dev->mdev) <0 ) + ret =media_device_register (&dev->mdev); +if (ret <0 ) goto error;#endif /* Save our data pointer in the interface data. */
@@ -2300,7 +2311,7 @@ static int uvc_probe(struct usb_interface *intf, error:uvc_unregister_video (dev);kref_put (&dev->ref, uvc_delete); -return -ENODEV ; +return ret; }static void uvc_disconnect (struct usb_interface *intf)
drivers/media/v4l2-core/v4l2-dev.c +7 -7
@@ -1033,25 +1033,25 @@ int __video_register_device(struct video_device *vdev, vdev->dev.class = &video_class; vdev->dev.devt =MKDEV (VIDEO_MAJOR , vdev->minor); vdev->dev.parent = vdev->dev_parent; + vdev->dev.release = v4l2_device_release;dev_set_name (&vdev->dev,"%s%d" , name_base, vdev->num); + +/* Increase v4l2_device refcount */ +v4l2_device_get (vdev->v4l2_dev); +mutex_lock (&videodev_lock); ret =device_register (&vdev->dev);if (ret <0 ) {mutex_unlock (&videodev_lock);pr_err ("%s: device_register failed\n" , __func__); - goto cleanup; +put_device (&vdev->dev); +return ret; } -/* Register the release callback that will be called when the last -reference to the device goes away. */ - vdev->dev.release = v4l2_device_release;if (nr !=-1 && nr != vdev->num && warn_if_nr_in_use)pr_warn ("%s: requested %s%d, got %s\n" , __func__, name_base, nr,video_device_node_name (vdev)); -/* Increase v4l2_device refcount */ -v4l2_device_get (vdev->v4l2_dev); -/* Part 5: Register the entity. */ ret =video_register_media_controller (vdev);
drivers/mmc/core/card.h +6 -0
@@ -86,6 +86,7 @@ struct mmc_fixup {#define CID_MANFID_MICRON 0x13#define CID_MANFID_SAMSUNG 0x15#define CID_MANFID_APACER 0x27 +#define CID_MANFID_SWISSBIT 0x5D#define CID_MANFID_KINGSTON 0x70#define CID_MANFID_HYNIX 0x90#define CID_MANFID_KINGSTON_SD 0x9F
@@ -291,4 +292,9 @@ static inline int mmc_card_broken_sd_poweroff_notify(const struct mmc_card *c) return c->quirks & MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY; } +static inline int mmc_card_no_uhs_ddr50_tuning (const struct mmc_card *c) +{ +return c->quirks &MMC_QUIRK_NO_UHS_DDR50_TUNING ; +} +#endif
drivers/mmc/core/quirks.h +10 -0
@@ -34,6 +34,16 @@ static const struct mmc_fixup __maybe_unused mmc_sd_fixups[] = { MMC_QUIRK_BROKEN_SD_CACHE | MMC_QUIRK_BROKEN_SD_POWEROFF_NOTIFY, EXT_CSD_REV_ANY), +/* +* Swissbit series S46-u cards throw I/O errors during tuning requests +* after the initial tuning request expectedly times out. This has +* only been observed on cards manufactured on 01/2019 that are using +* Bay Trail host controllers. +*/ +_FIXUP_EXT ("0016G" ,CID_MANFID_SWISSBIT ,0x5342 ,2019 ,1 , +0 ,-1ull ,SDIO_ANY_ID ,SDIO_ANY_ID , add_quirk_sd, +MMC_QUIRK_NO_UHS_DDR50_TUNING ,EXT_CSD_REV_ANY ), + END_FIXUP };
drivers/mmc/core/sd.c +24 -8
@@ -618,6 +618,29 @@ static int sd_set_current_limit(struct mmc_card *card, u8 *status)return 0 ; } +/* +* Determine if the card should tune or not. +*/ +static bool mmc_sd_use_tuning (struct mmc_card *card) +{ +/* +* SPI mode doesn't define CMD19 and tuning is only valid for SDR50 and +* SDR104 mode SD-cards. Note that tuning is mandatory for SDR104. +*/ +if (mmc_host_is_spi (card->host)) +return false; + +switch (card->host->ios.timing) { +case MMC_TIMING_UHS_SDR50 : +case MMC_TIMING_UHS_SDR104 : +return true; +case MMC_TIMING_UHS_DDR50 : +return !mmc_card_no_uhs_ddr50_tuning (card); + } + +return false; +} +/* * UHS-I specific initialization procedure */
@@ -661,14 +684,7 @@ static int mmc_sd_init_uhs_card(struct mmc_card *card)if (err) goto out; -/* -* SPI mode doesn't define CMD19 and tuning is only valid for SDR50 and -* SDR104 mode SD-cards. Note that tuning is mandatory for SDR104. -*/ -if (!mmc_host_is_spi (card->host) && - (card->host->ios.timing ==MMC_TIMING_UHS_SDR50 || - card->host->ios.timing ==MMC_TIMING_UHS_DDR50 || - card->host->ios.timing ==MMC_TIMING_UHS_SDR104 )) { +if (mmc_sd_use_tuning (card)) { err =mmc_execute_tuning (card);/*
drivers/mtd/nand/raw/qcom_nandc.c +1 -1
@@ -2917,7 +2917,7 @@ static int qcom_param_page_type_exec(struct nand_chip *chip, const struct nand_write_reg_dma (nandc,NAND_DEV_CMD1 ,1 ,NAND_BAM_NEXT_SGL ); } - nandc->buf_count = len; + nandc->buf_count =512 ;memset (nandc->data_buffer,0xff , nandc->buf_count);config_nand_single_cw_page_read (chip, false,0 );
drivers/mtd/nand/raw/sunxi_nand.c +2 -0
@@ -817,6 +817,7 @@ static int sunxi_nfc_hw_ecc_read_chunk(struct nand_chip *nand,if (ret)return ret; +sunxi_nfc_randomizer_config (nand, page, false);sunxi_nfc_randomizer_enable (nand);writel (NFC_DATA_TRANS |NFC_DATA_SWAP_METHOD |NFC_ECC_OP , nfc->regs +NFC_REG_CMD );
@@ -1049,6 +1050,7 @@ static int sunxi_nfc_hw_ecc_write_chunk(struct nand_chip *nand,if (ret)return ret; +sunxi_nfc_randomizer_config (nand, page, false);sunxi_nfc_randomizer_enable (nand);sunxi_nfc_hw_ecc_set_prot_oob_bytes (nand, oob,0 , bbm, page);
drivers/net/can/m_can/tcan4x5x-core.c +5 -4
@@ -385,10 +385,11 @@ static int tcan4x5x_can_probe(struct spi_device *spi) priv =cdev_to_priv (mcan_class); priv->power =devm_regulator_get_optional (&spi->dev,"vsup" ); -if (PTR_ERR (priv->power) == -EPROBE_DEFER ) { - ret = -EPROBE_DEFER ; - goto out_m_can_class_free_dev; - }else { +if (IS_ERR (priv->power)) { +if (PTR_ERR (priv->power) == -EPROBE_DEFER ) { + ret = -EPROBE_DEFER ; + goto out_m_can_class_free_dev; + } priv->power =NULL ; }
drivers/net/ethernet/aquantia/atlantic/aq_main.c +0 -1
@@ -123,7 +123,6 @@ static netdev_tx_t aq_ndev_start_xmit(struct sk_buff *skb, struct net_device *nd }#endif -skb_tx_timestamp (skb);return aq_nic_xmit (aq_nic, skb); }
drivers/net/ethernet/aquantia/atlantic/aq_nic.c +2 -0
@@ -898,6 +898,8 @@ int aq_nic_xmit(struct aq_nic_s *self, struct sk_buff *skb) frags =aq_nic_map_skb (self, skb, ring); +skb_tx_timestamp (skb); +if (likely (frags)) { err = self->aq_hw_ops->hw_ring_tx_xmit (self->aq_hw, ring, frags);
drivers/net/ethernet/cadence/macb_main.c +5 -1
@@ -5070,7 +5070,11 @@ static int macb_probe(struct platform_device *pdev)#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT if (GEM_BFEXT (DAW64 ,gem_readl (bp,DCFG6 ))) { -dma_set_mask_and_coherent (&pdev->dev,DMA_BIT_MASK (44 )); + err =dma_set_mask_and_coherent (&pdev->dev,DMA_BIT_MASK (44 )); +if (err) { +dev_err (&pdev->dev,"failed to set DMA mask\n" ); + goto err_out_free_netdev; + } bp->hw_dma_cap |=HW_DMA_CAP_64B ; }#endif
drivers/net/ethernet/cortina/gemini.c +29 -8
@@ -1148,6 +1148,7 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb,struct gmac_txdesc *txd;skb_frag_t *skb_frag;dma_addr_t mapping; +bool tcp = false;void *buffer;u16 mss;int ret;
@@ -1155,6 +1156,13 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, word1 = skb->len; word3 =SOF_BIT ; +/* Determine if we are doing TCP */ +if (skb->protocol ==htons (ETH_P_IP )) + tcp = (ip_hdr (skb)->protocol ==IPPROTO_TCP ); +else +/* IPv6 */ + tcp = (ipv6_hdr (skb)->nexthdr ==IPPROTO_TCP ); + mss =skb_shinfo (skb)->gso_size;if (mss) {/* This means we are dealing with TCP and skb->len is the
@@ -1167,8 +1175,26 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, mss, skb->len); word1 |=TSS_MTU_ENABLE_BIT ; word3 |= mss; + }else if (tcp) { +/* Even if we are not using TSO, use the hardware offloader +* for transferring the TCP frame: this hardware has partial +* TCP awareness (called TOE - TCP Offload Engine) and will +* according to the datasheet put packets belonging to the +* same TCP connection in the same queue for the TOE/TSO +* engine to process. The engine will deal with chopping +* up frames that exceed ETH_DATA_LEN which the +* checksumming engine cannot handle (see below) into +* manageable chunks. It flawlessly deals with quite big +* frames and frames containing custom DSA EtherTypes. +*/ + mss = netdev->mtu +skb_tcp_all_headers (skb); + mss =min (mss, skb->len); +netdev_dbg (netdev,"TOE/TSO len %04x mtu %04x mss %04x\n" , + skb->len, netdev->mtu, mss); + word1 |=TSS_MTU_ENABLE_BIT ; + word3 |= mss; }else if (skb->len >=ETH_FRAME_LEN ) { -/* Hardware offloaded checksumming isn't working on frames +/* Hardware offloaded checksumming isn't working on non-TCP frames * bigger than 1514 bytes. A hypothesis about this is that the * checksum buffer is only 1518 bytes, so when the frames get * bigger they get truncated, or the last few bytes get
@@ -1185,21 +1211,16 @@ static int gmac_map_tx_bufs(struct net_device *netdev, struct sk_buff *skb, }if (skb->ip_summed ==CHECKSUM_PARTIAL ) { -int tcp =0 ; -/* We do not switch off the checksumming on non TCP/UDP * frames: as is shown from tests, the checksumming engine * is smart enough to see that a frame is not actually TCP * or UDP and then just pass it through without any changes * to the frame. */ -if (skb->protocol ==htons (ETH_P_IP )) { +if (skb->protocol ==htons (ETH_P_IP )) word1 |=TSS_IP_CHKSUM_BIT ; - tcp =ip_hdr (skb)->protocol ==IPPROTO_TCP ; - }else {/* IPv6 */ +else word1 |=TSS_IPV6_ENABLE_BIT ; - tcp =ipv6_hdr (skb)->nexthdr ==IPPROTO_TCP ; - } word1 |= tcp ?TSS_TCP_CHKSUM_BIT :TSS_UDP_CHKSUM_BIT ; }
drivers/net/ethernet/dlink/dl2k.c +13 -1
@@ -146,6 +146,8 @@ rio_probe1 (struct pci_dev *pdev, const struct pci_device_id *ent) np->ioaddr = ioaddr; np->chip_id = chip_idx; np->pdev = pdev; + +spin_lock_init (&np->stats_lock);spin_lock_init (&np->tx_lock);spin_lock_init (&np->rx_lock);
@@ -866,7 +868,6 @@ tx_error (struct net_device *dev, int tx_status) frame_id = (tx_status &0xffff0000 );printk (KERN_ERR "%s: Transmit error, TxStatus %4.4x, FrameId %d.\n" , dev->name, tx_status, frame_id); - dev->stats.tx_errors++;/* Ttransmit Underrun */ if (tx_status &0x10 ) { dev->stats.tx_fifo_errors++;
@@ -903,9 +904,15 @@ tx_error (struct net_device *dev, int tx_status)rio_set_led_mode (dev);/* Let TxStartThresh stay default value */ } + +spin_lock (&np->stats_lock);/* Maximum Collisions */ if (tx_status &0x08 ) dev->stats.collisions++; + + dev->stats.tx_errors++; +spin_unlock (&np->stats_lock); +/* Restart the Tx */ dw32 (MACCtrl,dr16 (MACCtrl) | TxEnable); }
@@ -1074,7 +1081,9 @@ get_stats (struct net_device *dev)int i;#endif unsigned int stat_reg; +unsigned long flags; +spin_lock_irqsave (&np->stats_lock, flags);/* All statistics registers need to be acknowledged, else statistic overflow could cause problems */
@@ -1124,6 +1133,9 @@ get_stats (struct net_device *dev)dr16 (TCPCheckSumErrors);dr16 (UDPCheckSumErrors);dr16 (IPCheckSumErrors); + +spin_unlock_irqrestore (&np->stats_lock, flags); +return &dev->stats; }
drivers/net/ethernet/dlink/dl2k.h +2 -0
@@ -372,6 +372,8 @@ struct netdev_private {struct pci_dev *pdev;void __iomem *ioaddr;void __iomem *eeprom_addr; +// To ensure synchronization when stats are updated. +spinlock_t stats_lock;spinlock_t tx_lock;spinlock_t rx_lock;unsigned int rx_buf_sz;/* Based on MTU+slack. */
drivers/net/ethernet/emulex/benet/be_cmds.c +1 -1
@@ -1609,7 +1609,7 @@ int be_cmd_get_stats(struct be_adapter *adapter, struct be_dma_mem *nonemb_cmd)/* version 1 of the cmd is not supported only by BE2 */ if (BE2_chip (adapter)) hdr->version =0 ; -if (BE3_chip (adapter) ||lancer_chip (adapter)) +else if (BE3_chip (adapter) ||lancer_chip (adapter)) hdr->version =1 ;else hdr->version =2 ;
drivers/net/ethernet/faraday/Kconfig +1 -0
@@ -31,6 +31,7 @@ config FTGMAC100 depends on ARM || COMPILE_TEST depends on !64BIT || BROKEN select PHYLIB + select FIXED_PHY select MDIO_ASPEED if MACH_ASPEED_G6 select CRC32 help
drivers/net/ethernet/intel/e1000e/netdev.c +11 -3
@@ -3540,9 +3540,6 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca)case e1000_pch_cnp:case e1000_pch_tgp:case e1000_pch_adp: -case e1000_pch_mtp: -case e1000_pch_lnp: -case e1000_pch_ptp:case e1000_pch_nvp:if (er32 (TSYNCRXCTL ) &E1000_TSYNCRXCTL_SYSCFI ) {/* Stable 24MHz frequency */
@@ -3558,6 +3555,17 @@ s32 e1000e_get_base_timinca(struct e1000_adapter *adapter, u32 *timinca) adapter->cc.shift = shift; }break ; +case e1000_pch_mtp: +case e1000_pch_lnp: +case e1000_pch_ptp: +/* System firmware can misreport this value, so set it to a +* stable 38400KHz frequency. +*/ + incperiod =INCPERIOD_38400KHZ ; + incvalue =INCVALUE_38400KHZ ; + shift =INCVALUE_SHIFT_38400KHZ ; + adapter->cc.shift = shift; +break ;case e1000_82574:case e1000_82583:/* Stable 25MHz frequency */
drivers/net/ethernet/intel/e1000e/ptp.c +5 -3
@@ -294,15 +294,17 @@ void e1000e_ptp_init(struct e1000_adapter *adapter)case e1000_pch_cnp:case e1000_pch_tgp:case e1000_pch_adp: -case e1000_pch_mtp: -case e1000_pch_lnp: -case e1000_pch_ptp:case e1000_pch_nvp:if (er32 (TSYNCRXCTL ) &E1000_TSYNCRXCTL_SYSCFI ) adapter->ptp_clock_info.max_adj =MAX_PPB_24MHZ ;else adapter->ptp_clock_info.max_adj =MAX_PPB_38400KHZ ;break ; +case e1000_pch_mtp: +case e1000_pch_lnp: +case e1000_pch_ptp: + adapter->ptp_clock_info.max_adj =MAX_PPB_38400KHZ ; +break ;case e1000_82574:case e1000_82583: adapter->ptp_clock_info.max_adj =MAX_PPB_25MHZ ;
drivers/net/ethernet/intel/i40e/i40e_common.c +4 -3
@@ -1067,10 +1067,11 @@ int i40e_pf_reset(struct i40e_hw *hw)void i40e_clear_hw (struct i40e_hw *hw) {u32 num_queues, base_queue; -u32 num_pf_int; -u32 num_vf_int; +s32 num_pf_int; +s32 num_vf_int;u32 num_vfs; -u32 i, j; +s32 i; +u32 j;u32 val;u32 eol =0x7ff ;
drivers/net/ethernet/intel/ice/ice_arfs.c +48 -0
60 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_switch.c +2 -2
@@ -3024,7 +3024,7 @@ ice_add_update_vsi_list(struct ice_hw *hw,u16 vsi_handle_arr[2 ];/* A rule already exists with the new VSI being added */ -if (cur_fltr->fwd_id.hw_vsi_id == new_fltr->fwd_id.hw_vsi_id) +if (cur_fltr->vsi_handle == new_fltr->vsi_handle)return -EEXIST ; vsi_handle_arr[0 ] = cur_fltr->vsi_handle;
@@ -5991,7 +5991,7 @@ ice_adv_add_update_vsi_list(struct ice_hw *hw,/* A rule already exists with the new VSI being added */ if (test_bit (vsi_handle, m_entry->vsi_list_info->vsi_map)) -return 0 ; +return -EEXIST ;/* Update the previously created VSI list set with * the new VSI ID passed in
drivers/net/ethernet/marvell/octeontx2/nic/cn10k.c +6 -3
@@ -352,9 +352,12 @@ int cn10k_free_matchall_ipolicer(struct otx2_nic *pfvf)mutex_lock (&pfvf->mbox.lock);/* Remove RQ's policer mapping */ -for (qidx =0 ; qidx < hw->rx_queues; qidx++) -cn10k_map_unmap_rq_policer (pfvf, qidx, - hw->matchall_ipolicer, false); +for (qidx =0 ; qidx < hw->rx_queues; qidx++) { + rc =cn10k_map_unmap_rq_policer (pfvf, qidx, hw->matchall_ipolicer, false); +if (rc) +dev_warn (pfvf->dev,"Failed to unmap RQ %d's policer (error %d)." , + qidx, rc); + } rc =cn10k_free_leaf_profile (pfvf, hw->matchall_ipolicer);
drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +1 -0
@@ -1916,6 +1916,7 @@ static int mlx4_en_get_ts_info(struct net_device *dev,if (mdev->dev->caps.flags2 &MLX4_DEV_CAP_FLAG2_TS ) { info->so_timestamping |=SOF_TIMESTAMPING_TX_HARDWARE | +SOF_TIMESTAMPING_TX_SOFTWARE |SOF_TIMESTAMPING_RX_HARDWARE |SOF_TIMESTAMPING_RAW_HARDWARE ;
drivers/net/ethernet/mellanox/mlx5/core/vport.c +12 -6
@@ -444,19 +444,22 @@ int mlx5_query_nic_vport_node_guid(struct mlx5_core_dev *mdev, u64 *node_guid) {u32 *out;int outlen =MLX5_ST_SZ_BYTES (query_nic_vport_context_out); +int err; out =kvzalloc (outlen,GFP_KERNEL );if (!out)return -ENOMEM ; -mlx5_query_nic_vport_context (mdev,0 , out); + err =mlx5_query_nic_vport_context (mdev,0 , out); +if (err) + goto out; *node_guid =MLX5_GET64 (query_nic_vport_context_out, out, nic_vport_context.node_guid); - +out:kvfree (out); -return 0 ; +return err; }EXPORT_SYMBOL_GPL (mlx5_query_nic_vport_node_guid);
@@ -498,19 +501,22 @@ int mlx5_query_nic_vport_qkey_viol_cntr(struct mlx5_core_dev *mdev, {u32 *out;int outlen =MLX5_ST_SZ_BYTES (query_nic_vport_context_out); +int err; out =kvzalloc (outlen,GFP_KERNEL );if (!out)return -ENOMEM ; -mlx5_query_nic_vport_context (mdev,0 , out); + err =mlx5_query_nic_vport_context (mdev,0 , out); +if (err) + goto out; *qkey_viol_cntr =MLX5_GET (query_nic_vport_context_out, out, nic_vport_context.qkey_violation_counter); - +out:kvfree (out); -return 0 ; +return err; }
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_ethtool.c +16 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_ptp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microchip/lan743x_ptp.h +3 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/pensando/ionic/ionic_main.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/ti/am65-cpsw-nuss.c +13 -11
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/vertexcom/mse102x.c +9 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath11k/core.c +55 -0
55 lines not on this page · raw message
drivers/net/wireless/ath/ath11k/dp_rx.c +16 -9
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath12k/dp_mon.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/ath12k/hal_desc.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/ath/carl9170/usb.c +13 -6
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/cfg/22000.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/pcie/trans.c +6 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/p54/fwio.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/p54/p54.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intersil/p54/txrx.c +9 -4
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x2/usb.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x2/usb_init.c +12 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/main.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7996/mac.c +8 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/purelifi/plfxlc/usb.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/pci.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/usb.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/cam.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw89/pci.c +67 -2
69 lines not on this page · raw message
drivers/net/wireless/realtek/rtw89/pci.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/virtual/mac80211_hwsim.c +5 -0
Lines of this file are not shown. View the raw message.
drivers/pci/controller/cadence/pcie-cadence-ep.c +3 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-dw-rockchip.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/phy/freescale/phy-fsl-imx8mq-usb.c +5 -5
Lines of this file are not shown. View the raw message.
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c +13 -8
Lines of this file are not shown. View the raw message.
drivers/platform/loongarch/loongson-laptop.c +47 -40
87 lines not on this page · raw message
drivers/platform/x86/intel/uncore-frequency/uncore-frequency-tpmi.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/power/supply/bq27xxx_battery_i2c.c +12 -1
Lines of this file are not shown. View the raw message.
drivers/staging/iio/impedance-analyzer/ad5933.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/video/screen_info_pci.c +50 -29
79 lines not on this page · raw message
kernel/events/core.c +57 -23
80 lines not on this page · raw message
kernel/watchdog.c +27 -14
41 lines not on this page · raw message
mm/hugetlb.c +51 -16
67 lines not on this page · raw message
net/bridge/br_multicast.c +95 -8
103 lines not on this page · raw message
net/ipv4/tcp_input.c +35 -28
63 lines not on this page · raw message
tools/testing/selftests/x86/sigtrap_loop.c new file +101 -0
101 lines not on this page · 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.