Linux 6.12.54
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.12.54 kernel.
All users of the 6.12 kernel series must upgrade.
The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.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 | 3 Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml | 15 Makefile | 2 arch/arm/mach-omap2/am33xx-restart.c | 36 arch/arm/mach-omap2/pm33xx-core.c | 6 arch/arm64/boot/dts/qcom/msm8916.dtsi | 2 arch/arm64/boot/dts/qcom/msm8939.dtsi | 2 arch/arm64/boot/dts/qcom/sdm845.dtsi | 4 arch/arm64/boot/dts/qcom/x1e80100-pmics.dtsi | 2 arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 2 arch/arm64/kernel/cpufeature.c | 10 arch/arm64/kernel/mte.c | 3 arch/arm64/kernel/pi/map_kernel.c | 6 arch/arm64/kernel/probes/kprobes.c | 12 arch/arm64/kernel/setup.c | 4 arch/arm64/mm/init.c | 2 arch/arm64/mm/mmu.c | 14 arch/loongarch/Makefile | 2 arch/loongarch/kernel/setup.c | 1 arch/parisc/include/uapi/asm/ioctls.h | 8 arch/parisc/lib/memcpy.c | 1 arch/powerpc/platforms/powernv/pci-ioda.c | 2 arch/powerpc/platforms/pseries/msi.c | 2 arch/s390/Makefile | 1 arch/s390/kernel/vmlinux.lds.S | 54 - arch/s390/net/bpf_jit.h | 55 - arch/s390/net/bpf_jit_comp.c | 139 ++- arch/sparc/kernel/of_device_32.c | 1 arch/sparc/kernel/of_device_64.c | 1 arch/sparc/mm/hugetlbpage.c | 20 arch/x86/entry/entry_64_fred.S | 2 arch/x86/hyperv/ivm.c | 2 arch/x86/include/asm/msr-index.h | 1 arch/x86/include/asm/mtrr.h | 10 arch/x86/kernel/cpu/mtrr/generic.c | 6 arch/x86/kernel/cpu/mtrr/mtrr.c | 2 arch/x86/kernel/kvm.c | 21 arch/x86/kernel/umip.c | 15 arch/x86/kvm/cpuid.c | 2 arch/x86/kvm/pmu.c | 5 arch/x86/kvm/svm/pmu.c | 1 arch/x86/kvm/x86.c | 2 arch/x86/xen/enlighten_pv.c | 4 arch/xtensa/platforms/iss/simdisk.c | 6 block/blk-crypto-fallback.c | 3 crypto/essiv.c | 14 drivers/acpi/acpi_dbg.c | 26 drivers/acpi/acpi_tad.c | 3 drivers/acpi/acpica/evglock.c | 4 drivers/acpi/battery.c | 60 - drivers/acpi/property.c | 137 ++- drivers/block/loop.c | 8 drivers/bus/mhi/ep/main.c | 37 drivers/bus/mhi/host/init.c | 5 drivers/char/ipmi/ipmi_kcs_sm.c | 16 drivers/char/ipmi/ipmi_msghandler.c | 416 ++++------ drivers/char/tpm/tpm_tis_core.c | 4 drivers/clk/at91/clk-peripheral.c | 7 drivers/clk/mediatek/clk-mt8195-infra_ao.c | 2 drivers/clk/mediatek/clk-mux.c | 4 drivers/clk/nxp/clk-lpc18xx-cgu.c | 20 drivers/clk/qcom/common.c | 4 drivers/clk/qcom/tcsrcc-x1e80100.c | 4 drivers/clk/renesas/renesas-cpg-mssr.c | 7 drivers/clk/tegra/clk-bpmp.c | 2 drivers/clocksource/clps711x-timer.c | 23 drivers/cpufreq/cpufreq-dt.c | 2 drivers/cpufreq/imx6q-cpufreq.c | 2 drivers/cpufreq/intel_pstate.c | 8 drivers/cpufreq/mediatek-cpufreq-hw.c | 2 drivers/cpufreq/scmi-cpufreq.c | 2 drivers/cpufreq/scpi-cpufreq.c | 2 drivers/cpufreq/spear-cpufreq.c | 2 drivers/cpufreq/tegra186-cpufreq.c | 8 drivers/crypto/aspeed/aspeed-hace-crypto.c | 2 drivers/crypto/atmel-tdes.c | 2 drivers/crypto/rockchip/rk3288_crypto_ahash.c | 2 drivers/firmware/meson/meson_sm.c | 7 drivers/gpio/gpio-wcd934x.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 drivers/gpu/drm/amd/display/dc/dce/dce_transform.c | 21 drivers/gpu/drm/amd/display/dc/dce/dce_transform.h | 4 drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_d.h | 7 drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_sh_mask.h | 2 drivers/gpu/drm/nouveau/nouveau_bo.c | 2 drivers/gpu/drm/panthor/panthor_drv.c | 11 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c | 5 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h | 8 drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c | 17 drivers/gpu/drm/vmwgfx/vmwgfx_validation.c | 6 drivers/gpu/drm/xe/xe_hw_engine_group.c | 6 drivers/gpu/drm/xe/xe_query.c | 15 drivers/iio/adc/pac1934.c | 20 drivers/iio/adc/xilinx-ams.c | 47 - drivers/iio/dac/ad5360.c | 2 drivers/iio/dac/ad5421.c | 2 drivers/iio/frequency/adf4350.c | 20 drivers/iio/imu/inv_icm42600/inv_icm42600_core.c | 4 drivers/iommu/intel/iommu.c | 2 drivers/irqchip/irq-sifive-plic.c | 13 drivers/mailbox/mtk-cmdq-mailbox.c | 12 drivers/mailbox/zynqmp-ipi-mailbox.c | 24 drivers/media/cec/usb/extron-da-hd-4k-plus/Makefile | 6 drivers/media/i2c/mt9v111.c | 2 drivers/media/mc/mc-devnode.c | 6 drivers/media/mc/mc-entity.c | 2 drivers/media/pci/cx18/cx18-queue.c | 13 drivers/media/pci/ivtv/ivtv-irq.c | 2 drivers/media/pci/ivtv/ivtv-yuv.c | 8 drivers/media/pci/mgb4/mgb4_trigger.c | 2 drivers/media/platform/qcom/venus/firmware.c | 8 drivers/media/platform/samsung/s5p-mfc/s5p_mfc_cmd_v6.c | 35 drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c | 9 drivers/media/rc/lirc_dev.c | 9 drivers/media/test-drivers/vivid/vivid-cec.c | 12 drivers/memory/samsung/exynos-srom.c | 10 drivers/mfd/intel_soc_pmic_chtdc_ti.c | 5 drivers/mmc/core/sdio.c | 6 drivers/mmc/host/mmc_spi.c | 2 drivers/mtd/nand/raw/fsmc_nand.c | 6 drivers/net/ethernet/freescale/fsl_pq_mdio.c | 2 drivers/net/ethernet/intel/ice/ice_adapter.c | 10 drivers/net/ethernet/mellanox/mlx4/en_netdev.c | 2 drivers/net/ethernet/mscc/ocelot_stats.c | 2 drivers/net/wireless/ath/ath11k/core.c | 6 drivers/net/wireless/ath/ath11k/hal.c | 16 drivers/net/wireless/ath/ath11k/hal.h | 1 drivers/net/wireless/mediatek/mt76/mt7921/usb.c | 3 drivers/net/wireless/mediatek/mt76/mt7925/usb.c | 3 drivers/nvme/host/pci.c | 2 drivers/of/unittest.c | 1 drivers/pci/controller/cadence/pci-j721e.c | 25 drivers/pci/controller/dwc/pci-keystone.c | 4 drivers/pci/controller/dwc/pcie-rcar-gen4.c | 2 drivers/pci/controller/dwc/pcie-tegra194.c | 32 drivers/pci/controller/pci-tegra.c | 27 drivers/pci/controller/pcie-rcar-host.c | 40 drivers/pci/controller/pcie-xilinx-nwl.c | 7 drivers/pci/endpoint/functions/pci-epf-test.c | 19 drivers/pci/iov.c | 5 drivers/pci/pci-driver.c | 1 drivers/pci/pci-sysfs.c | 20 drivers/pci/pcie/aer.c | 12 drivers/pci/pcie/err.c | 8 drivers/perf/arm-cmn.c | 9 drivers/pinctrl/samsung/pinctrl-samsung.h | 4 drivers/power/supply/max77976_charger.c | 12 drivers/pwm/pwm-berlin.c | 4 drivers/rtc/interface.c | 27 drivers/rtc/rtc-optee.c | 1 drivers/rtc/rtc-x1205.c | 2 drivers/s390/block/dasd.c | 17 drivers/s390/cio/device.c | 37 drivers/scsi/hpsa.c | 21 drivers/scsi/mvsas/mv_init.c | 2 drivers/scsi/sd.c | 50 - drivers/spi/spi-cadence-quadspi.c | 18 drivers/video/fbdev/core/fb_cmdline.c | 2 drivers/xen/events/events_base.c | 37 drivers/xen/manage.c | 3 fs/btrfs/export.c | 8 fs/btrfs/extent_io.c | 14 fs/cramfs/inode.c | 11 fs/eventpoll.c | 139 --- fs/ext4/ext4.h | 2 fs/ext4/fsmap.c | 14 fs/ext4/indirect.c | 2 fs/ext4/inode.c | 10 fs/ext4/move_extent.c | 2 fs/ext4/orphan.c | 17 fs/ext4/super.c | 26 fs/ext4/xattr.c | 19 fs/file.c | 5 fs/fs-writeback.c | 32 fs/fsopen.c | 70 - fs/fuse/dev.c | 2 fs/fuse/file.c | 8 fs/minix/inode.c | 8 fs/namei.c | 8 fs/namespace.c | 108 +- fs/nfs/callback.c | 4 fs/nfs/callback_xdr.c | 1 fs/nfsd/export.c | 96 +- fs/nfsd/export.h | 6 fs/nfsd/lockd.c | 28 fs/nfsd/netns.h | 4 fs/nfsd/nfs4proc.c | 4 fs/nfsd/nfs4state.c | 6 fs/nfsd/nfs4xdr.c | 2 fs/nfsd/nfsfh.c | 40 fs/nfsd/trace.h | 2 fs/nfsd/vfs.c | 14 fs/nfsd/vfs.h | 2 fs/ntfs3/bitmap.c | 1 fs/quota/dquot.c | 10 fs/read_write.c | 14 fs/smb/client/smb1ops.c | 62 + fs/smb/client/smb2inode.c | 22 fs/smb/client/smb2ops.c | 10 fs/squashfs/inode.c | 24 include/acpi/acpixf.h | 6 include/asm-generic/io.h | 98 +- include/linux/cpufreq.h | 3 include/linux/iio/frequency/adf4350.h | 2 include/linux/ksm.h | 8 include/linux/mm.h | 22 include/linux/rseq.h | 11 include/linux/sunrpc/svc.h | 2 include/linux/sunrpc/svc_xprt.h | 19 include/media/v4l2-subdev.h | 30 include/trace/events/dma.h | 1 init/main.c | 12 kernel/bpf/inode.c | 4 kernel/fork.c | 2 kernel/pid.c | 2 kernel/rseq.c | 10 kernel/sched/deadline.c | 73 + kernel/sched/fair.c | 9 kernel/sys.c | 22 kernel/trace/trace_fprobe.c | 11 kernel/trace/trace_kprobe.c | 11 kernel/trace/trace_probe.h | 9 kernel/trace/trace_uprobe.c | 12 lib/crypto/Makefile | 4 lib/genalloc.c | 5 mm/damon/lru_sort.c | 2 mm/damon/vaddr.c | 8 mm/huge_memory.c | 15 mm/hugetlb.c | 3 mm/migrate.c | 23 mm/page_alloc.c | 2 mm/slab.h | 8 mm/slub.c | 3 net/bridge/br_vlan.c | 2 net/core/filter.c | 2 net/core/page_pool.c | 76 + net/ipv4/tcp.c | 5 net/ipv4/tcp_input.c | 1 net/mptcp/pm.c | 7 net/mptcp/pm_netlink.c | 50 + net/mptcp/protocol.h | 8 net/netfilter/nft_objref.c | 39 net/sctp/sm_make_chunk.c | 3 net/sctp/sm_statefuns.c | 6 net/sunrpc/svc_xprt.c | 45 - net/sunrpc/svcsock.c | 2 net/xdp/xsk_queue.h | 45 - security/keys/trusted-keys/trusted_tpm1.c | 7 sound/soc/sof/intel/hda-pcm.c | 29 sound/soc/sof/intel/hda-stream.c | 29 sound/soc/sof/ipc4-pcm.c | 138 ++- sound/soc/sof/ipc4-topology.c | 16 sound/soc/sof/ipc4-topology.h | 10 tools/build/feature/Makefile | 4 tools/lib/perf/include/perf/event.h | 1 tools/perf/builtin-stat.c | 18 tools/perf/pmu-events/arch/arm64/ampere/ampereonex/metrics.json | 10 tools/perf/tests/perf-record.c | 4 tools/perf/tests/shell/record_lbr.sh | 29 tools/perf/tests/shell/stat.sh | 29 tools/perf/tests/shell/trace_btf_enum.sh | 11 tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 18 tools/perf/util/arm-spe.c | 34 tools/perf/util/disasm.c | 7 tools/perf/util/evsel.c | 31 tools/perf/util/lzma.c | 2 tools/perf/util/session.c | 2 tools/perf/util/setup.py | 5 tools/perf/util/zlib.c | 2 tools/testing/selftests/mm/madv_populate.c | 21 tools/testing/selftests/mm/soft-dirty.c | 5 tools/testing/selftests/mm/vm_util.c | 77 + tools/testing/selftests/mm/vm_util.h | 1 tools/testing/selftests/net/mptcp/mptcp_join.sh | 11 tools/testing/selftests/net/netfilter/nf_nat_edemux.sh | 58 - tools/testing/selftests/rseq/rseq.c | 8 276 files changed, 2881 insertions(+), 1569 deletions(-)
Aaron Kling (1):
cpufreq: tegra186: Set target frequency for all cpus in policy
Abel Vesa (1):
clk: qcom: tcsrcc-x1e80100: Set the bi_tcxo as parent to eDP refclk
Abinash Singh (1):
scsi: sd: Fix build warning in sd_revalidate_disk()
Adam Xue (1):
bus: mhi: host: Do not use uninitialized 'dev' pointer in mhi_init_irq_setup()
Ahmet Eray Karadag (1):
ext4: guard against EA inode refcount underflow in xattr update
Aleksa Sarai (1):
fscontext: do not consume log entries when returning -EMSGSIZE
Aleksandar Gerasimovski (1):
iio/adc/pac1934: fix channel disable configuration
Aleksandrs Vinarskis (1):
arm64: dts: qcom: x1e80100-pmics: Disable pm8010 by default
Alex Deucher (1):
drm/amdgpu: Add additional DCE6 SCL registers
Alexander Lobakin (1):
xsk: Harden userspace-supplied xdp_desc validation
Alexander Sverdlin (1):
ARM: AM33xx: Implement TI advisory 1.0.36 (EMU0/EMU1 pins state on reset)
Alexandr Sapozhnikov (1):
net/sctp: fix a null dereference in sctp_disposition sctp_sf_do_5_1D_ce()
Alexey Gladkov (1):
s390: vmlinux.lds.S: Reorder sections
Alok Tiwari (1):
clk: nxp: Fix pll0 rate check condition in LPC18xx CGU driver
Amir Mohammad Jahangirzad (1):
ACPI: debug: fix signedness issues in read/write helpers
Anderson Nascimento (1):
btrfs: avoid potential out-of-bounds in btrfs_encode_fh()
Andy Shevchenko (2):
mfd: intel_soc_pmic_chtdc_ti: Drop unneeded assignment for cache_type
ACPI: battery: Check for error code from devm_mutex_init() call
AngeloGioacchino Del Regno (1):
clk: mediatek: mt8195-infra_ao: Fix parent for infra_ao_hdmi_26m
Anthony Yznaga (1):
sparc64: fix hugetlb for sun4u
Arnd Bergmann (1):
media: s5p-mfc: remove an unused/uninitialized variable
Askar Safin (1):
openat2: don't trigger automounts with RESOLVE_NO_XDEV
Baokun Li (1):
ext4: add ext4_sb_bread_nofail() helper function for ext4_free_branches()
Bartosz Golaszewski (1):
gpio: wcd934x: mark the GPIO controller as sleeping
Borislav Petkov (AMD) (1):
KVM: x86: Advertise SRSO_USER_KERNEL_NO to userspace
Brian Masney (2):
clk: at91: peripheral: fix return value
clk: nxp: lpc18xx-cgu: convert from round_rate() to determine_rate()
Brian Norris (1):
PCI/sysfs: Ensure devices are powered for config reads
Catalin Marinas (1):
arm64: mte: Do not flag the zero page as PG_mte_tagged
Chen-Yu Tsai (1):
clk: mediatek: clk-mux: Do not pass flags to clk_mux_determine_rate_flags()
Christian Brauner (3):
listmount: don't call path_put() under namespace semaphore
statmount: don't call path_put() under namespace semaphore
mount: handle NULL values in mnt_ns_release()
Chuck Lever (1):
NFSD: Replace use of NFSD_MAY_LOCK in nfsd4_lock()
Clément Le Goffic (1):
rtc: optee: fix memory leak on driver removal
Corey Minyard (2):
Revert "ipmi: fix msg stack when IPMI is disconnected"
ipmi: Rework user message limit handling
Dan Carpenter (2):
clk: qcom: common: Fix NULL vs IS_ERR() check in qcom_cc_icc_register() net/mlx4: prevent potential use after free in mlx4_en_do_uc_filter()
Daniel Borkmann (1):
bpf: Fix metadata_dst leak __bpf_redirect_neigh_v{4,6}Daniel Tang (1):
ACPI: TAD: Add missing sysfs_remove_group() for ACPI_TAD_RT
Darrick J. Wong (1):
fuse: fix livelock in synchronous file put from fuseblk workers
David Lechner (1):
media: pci: mg4b: fix uninitialized iio scan data
Deepanshu Kartikey (1):
ext4: validate ea_ino and size in check_xattrs
Donet Tom (1):
mm/ksm: fix incorrect KSM counter handling in mm_struct during fork
Duoming Zhou (2):
scsi: mvsas: Fix use-after-free bugs in mvs_work_queue
net: mscc: ocelot: Fix use-after-free caused by cyclic delayed work
Dzmitry Sankouski (1):
power: supply: max77976_charger: fix constant current reporting
Edward Adam Davis (1):
media: mc: Clear minor number before put device
Eric Biggers (2):
KEYS: trusted_tpm1: Compare HMAC values in constant time
sctp: Fix MAC comparison to be constant-time
Eric Dumazet (1):
tcp: take care of zero tp->window_clamp in tcp_set_rcvlowat()
Eric Woudstra (1):
bridge: br_vlan_fill_forward_path_pvid: use br_vlan_group_rcu()
Erick Karanja (1):
net: fsl_pq_mdio: Fix device node reference leak in fsl_pq_mdio_probe
Esben Haabendal (2):
rtc: interface: Ensure alarm irq is enabled when UIE is enabled
rtc: interface: Fix long-standing race when setting alarm
Fangzhi Zuo (1):
drm/amd/display: Enable Dynamic DTBCLK Switch
Fedor Pchelkin (1):
clk: tegra: do not overallocate memory for bpmp clocks
Fernando Fernandez Mancera (1):
netfilter: nft_objref: validate objref and objrefmap expressions
Finn Thain (1):
fbdev: Fix logic error in "offb" name match
Florian Westphal (1):
selftests: netfilter: query conntrack state to check for port clash resolution
Fushuai Wang (1):
cifs: Fix copy_to_iter return value check
Georg Gottleuber (1):
nvme-pci: Add TUXEDO IBS Gen8 to Samsung sleep quirk
Greg Kroah-Hartman (1):
Linux 6.12.54
Guenter Roeck (1):
ipmi: Fix handling of messages with provided receive message pointer
Gunnar Kudrjavets (1):
tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single
Hans Verkuil (1):
media: vivid: fix disappearing <Vendor Command With ID> messages
Hans de Goede (2):
mfd: intel_soc_pmic_chtdc_ti: Fix invalid regmap-config max_register value
mfd: intel_soc_pmic_chtdc_ti: Set use_single_read regmap_config flag
Haotian Zhang (1):
ice: ice_adapter: release xa entry on adapter allocation failure
Haoxiang Li (1):
fs/ntfs3: Fix a resource leak bug in wnd_extend()
Harini T (4):
mailbox: zynqmp-ipi: Remove redundant mbox_controller_unregister() call
mailbox: zynqmp-ipi: Remove dev.parent check in zynqmp_ipi_free_mboxes
mailbox: zynqmp-ipi: Fix out-of-bounds access in mailbox cleanup loop
mailbox: zynqmp-ipi: Fix SGI cleanup on unbind
Harshit Agarwal (1):
sched/deadline: Fix race in push_dl_task()
Heiko Carstens (1):
s390: Add -Wno-pointer-sign to KBUILD_CFLAGS_DECOMPRESSOR
Herbert Xu (1):
crypto: essiv - Check ssize for decryption and in-place encryption
Hongbo Li (1):
irqchip/sifive-plic: Make use of __assign_bit()
Huacai Chen (3):
LoongArch: Init acpi_gbl_use_global_lock to false
init: handle bootloader identifier in kernel parameters
ACPICA: Allow to skip Global Lock initialization
Ian Forbes (2):
drm/vmwgfx: Fix Use-after-free in validation drm/vmwgfx: Fix copy-paste typo in validation
Ian Rogers (8):
perf disasm: Avoid undefined behavior in incrementing NULL perf test trace_btf_enum: Skip if permissions are insufficient perf evsel: Avoid container_of on a NULL leader libperf event: Ensure tracing data is multiple of 8 sized perf test shell lbr: Avoid failures with perf event paranoia perf test: Don't leak workload gopipe in PERF_RECORD_* perf evsel: Ensure the fallback message is always written to perf test stat: Avoid hybrid assumption when virtualized
Ilkka Koskinen (1):
perf vendor events arm64 AmpereOneX: Fix typo - should be l1d_cache_access_prefetches
Ilya Leoshkevich (4):
s390/bpf: Centralize frame offset calculations s390/bpf: Describe the frame using a struct instead of constants s390/bpf: Write back tail call counter for BPF_PSEUDO_CALL s390/bpf: Write back tail call counter for BPF_TRAMP_F_CALL_ORIG
Jaehoon Kim (2):
s390/dasd: enforce dma_alignment to ensure proper buffer validation s390/dasd: Return BLK_STS_INVAL for EINVAL from do_dasd_request
Jai Luthra (2):
media: ti: j721e-csi2rx: Use devm_of_platform_populate
media: ti: j721e-csi2rx: Fix source subdev link creation
James Clark (1):
perf test: Add a test for default perf stat command
Jan Kara (4):
ext4: verify orphan file size is not too big
ext4: free orphan info with kvfree
writeback: Avoid softlockup when switching many inodes
writeback: Avoid excessively long inode switching times
Jani Nurminen (1):
PCI: xilinx-nwl: Fix ECAM programming
Jann Horn (1):
drm/panthor: Fix memory leak in panthor_ioctl_group_create()
Jason Andryuk (3):
xen/events: Cleanup find_virq() return codes xen/events: Return -EEXIST for bound VIRQs xen/events: Update virq_to_irq on migration
Jason-JH Lin (1):
mailbox: mtk-cmdq: Remove pm_runtime APIs from cmdq_mbox_send_data()
Jisheng Zhang (1):
pwm: berlin: Fix wrong register in suspend/resume
Johan Hovold (2):
firmware: meson_sm: fix device leak at probe lib/genalloc: fix device leak in of_gen_pool_get()
John David Anglin (1):
parisc: Remove spurious if statement from raw_copy_from_user()
K Prateek Nayak (1):
sched/fair: Block delayed tasks on throttled hierarchy during dequeue
KaFai Wan (1):
bpf: Avoid RCU context warning when unpinning htab with internal structs
Kai Vehmanen (2):
ASoC: SOF: ipc4-pcm: fix delay calculation when DSP resamples
ASoC: SOF: ipc4-pcm: fix start offset calculation for chain DMA
Kirill A. Shutemov (1):
x86/mtrr: Rename mtrr_overwrite_state() to guest_force_mtrr_state()
Krzysztof Kozlowski (1):
pinctrl: samsung: Drop unused S3C24xx driver data
Kuniyuki Iwashima (1):
tcp: Don't call reqsk_fastopen_remove() in tcp_conn_request().
Lance Yang (3):
mm/thp: fix MTE tag mismatch when replacing zero-filled subpages
selftests/mm: skip soft-dirty tests when CONFIG_MEM_SOFT_DIRTY is disabled
mm/rmap: fix soft-dirty and uffd-wp bit loss when remapping zero-filled mTHP subpage to shared zeropage
Laurent Pinchart (1):
media: mc: Fix MUST_CONNECT handling for pads with no links
Leo Yan (6):
perf arm_spe: Correct setting remote access perf arm-spe: Rename the common data source encoding perf arm_spe: Correct memory level for remote access perf session: Fix handling when buffer exceeds 2 GiB tools build: Align warning options with perf perf python: split Clang options when invoking Popen
Li Chen (1):
loop: fix backing file reference leak on validation error
Li RongQing (1):
mm/hugetlb: early exit from hugetlb_pages_alloc_boot() when max_huge_pages=0
Lichen Liu (1):
fs: Add 'initramfs_options' to set initramfs mount options
Linus Walleij (1):
mtd: rawnand: fsmc: Default to autodetect buswidth
Lu Baolu (1):
iommu/vt-d: PRS isn't usable if PDS isn't supported
Lucas Zampieri (1):
irqchip/sifive-plic: Avoid interrupt ID 0 handling during suspend/resume
Lukas Wunner (3):
xen/manage: Fix suspend error path PCI/ERR: Fix uevent on failure to recover PCI/AER: Support errors introduced by PCIe r6.0
Ma Ke (3):
media: lirc: Fix error handling in lirc_register()
of: unittest: Fix device reference count leak in of_unittest_pci_node_verify
sparc: fix error handling in scan_one_device()
Marek Vasut (5):
drm/rcar-du: dsi: Fix 1/2/3 lane support
PCI: tegra: Convert struct tegra_msi mask_lock into raw spinlock
PCI: rcar-gen4: Fix PHY initialization
PCI: rcar-host: Drop PMSR spinlock
PCI: rcar-host: Convert struct rcar_msi mask_lock into raw spinlock
Matthew Auld (1):
drm/xe/uapi: loosen used tracking restriction
Matthieu Baerts (NGI0) (2):
selftests: mptcp: join: validate C-flag + def limit
mptcp: pm: in-kernel: usable client side with C-flag
Miaoqian Lin (2):
ARM: OMAP2+: pm33xx-core: ix device node reference leaks in amx3_idle_init
xtensa: simdisk: add input size check in proc_write_simdisk
Michael Hennerich (2):
iio: frequency: adf4350: Fix ADF4350_REG3_12BIT_CLKDIV_MODE
iio: frequency: adf4350: Fix prescaler usage.
Michael Riesch (1):
dt-bindings: phy: rockchip-inno-csi-dphy: make power-domains non-required
Miklos Szeredi (2):
fuse: fix possibly missing fuse_copy_finish() call in fuse_notify()
copy_file_range: limit size if in compat mode
Muhammad Usama Anjum (1):
wifi: ath11k: HAL SRNG: don't deinitialize and re-initialize again
Nam Cao (3):
eventpoll: Replace rwlock with spinlock powerpc/powernv/pci: Fix underflow and leak issue powerpc/pseries/msi: Fix potential underflow and leak issue
Namhyung Kim (2):
perf test: Update sysfs path for core PMU caps perf tools: Add fallback for exclude_guest
Nathan Chancellor (2):
s390/vmlinux.lds.S: Move .vmlinux.info to end of allocatable sections lib/crypto/curve25519-hacl64: Disable KASAN with clang-17 and older
NeilBrown (2):
nfsd: refine and rename NFSD_MAY_LOCK
nfsd: don't use sv_nrthreads in connection limiting calculations.
Nick Morrow (2):
wifi: mt76: mt7925u: Add VID/PID for Netgear A9000
wifi: mt76: mt7921u: Add VID/PID for Netgear A7500Niklas Cassel (2):
PCI: tegra194: Fix broken tegra_pcie_ep_raise_msi_irq()
PCI: tegra194: Reset BARs when running in PCIe endpoint mode
Niklas Schnelle (2):
PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV PCI/AER: Fix missing uevent on recovery when a reset is requested
Ojaswin Mujoo (1):
ext4: correctly handle queries for metadata mappings
Oleg Nesterov (1):
kernel/sys.c: fix the racy usage of task_lock(tsk->group_leader) in sys_prlimit64() paths
Olga Kornievskaia (4):
nfsd: nfserr_jukebox in nlm_fopen should lead to a retry
nfsd: unregister with rpcbind when deleting a transport
nfsd: fix __fh_verify for localio
nfsd: fix access checking for NLM under XPRTSEC policies
Omar Sandoval (1):
arm64: map [_text, _stext) virtual address range non-executable+read-only
Pali Rohár (2):
cifs: Query EA $LXMOD in cifs_query_path_info() for WSL reparse points
nfsd: Fix NFSD_MAY_BYPASS_GSS and NFSD_MAY_BYPASS_GSS_ON_ROOT
Paulo Alcantara (1):
smb: client: fix missing timestamp updates after utime(2)
Peter Ujfalusi (5):
ASoC: SOF: ipc4-topology: Correct the minimum host DMA buffer size
ASoC: SOF: ipc4-topology: Account for different ChainDMA host buffer size
ASoC: SOF: Intel: hda-pcm: Place the constraint on period time instead of buffer time
ASoC: SOF: Intel: Read the LLP via the associated Link DMA channel
ASoC: SOF: ipc4-pcm: Enable delay reporting for ChainDMA streams
Petr Tesarik (1):
dma-mapping: fix direction in dma_alloc direction traces
Phillip Lougher (2):
Squashfs: add additional inode sanity checking
Squashfs: reject negative file sizes in squashfs_read_inode()
Pratyush Yadav (2):
spi: cadence-quadspi: Flush posted register writes before INDAC access
spi: cadence-quadspi: Flush posted register writes before DAC access
Qianfeng Rong (3):
media: i2c: mt9v111: fix incorrect type for ret
iio: dac: ad5360: use int type to store negative error codes
iio: dac: ad5421: use int type to store negative error codes
Qu Wenruo (1):
btrfs: fix the incorrect max_bytes value for find_lock_delalloc_range()
Rafael J. Wysocki (7):
ACPI: property: Fix buffer properties extraction for subnodes
cpufreq: intel_pstate: Fix object lifecycle issue in update_qos_request()
cpufreq: Make drivers using CPUFREQ_ETERNAL specify transition latency
ACPI: battery: Add synchronization between interface updates
ACPI: property: Disregard references in data-only subnode lists
ACPI: property: Add code comments explaining what is going on
ACPI: property: Do not pass NULL handles to acpi_attach_data()
Randy Dunlap (1):
media: cec: extron-da-hd-4k-plus: drop external-module make commands
Rex Chen (2):
mmc: core: SPI mode remove cmd7
mmc: mmc_spi: multiple block read remove read crc ack
Rob Herring (Arm) (1):
rtc: x1205: Fix Xicor X1205 vendor prefix
Robin Murphy (1):
perf/arm-cmn: Fix CMN S3 DTM offset
Sakari Ailus (2):
mailbox: mtk-cmdq-mailbox: Switch to __pm_runtime_put_autosuspend()
mailbox: mtk-cmdq: Switch to pm_runtime_put_autosuspend()
Sam James (1):
parisc: don't reference obsolete termio struct for TC* constants
Santhosh Kumar K (1):
spi: cadence-quadspi: Fix cqspi_setup_flash()
Scott Mayhew (1):
nfsd: decouple the xprtsec policy check from check_nfsd_access()
Sean Anderson (2):
iio: xilinx-ams: Fix AMS_ALARM_THR_DIRECT_MASK
iio: xilinx-ams: Unmask interrupts after updating alarms
Sean Christopherson (5):
KVM: SVM: Emulate PERF_CNTR_GLOBAL_STATUS_SET for PerfMonV2 rseq/selftests: Use weak symbol reference, not definition, to link with glibc x86/umip: Check that the instruction opcode is at least two bytes x86/umip: Fix decoding of register forms of 0F 01 (SGDT and SIDT aliases) x86/kvm: Force legacy PCI hole to UC when overriding MTRRs for TDX/SNP
Sean Nyekjaer (1):
iio: imu: inv_icm42600: Drop redundant pm_runtime reinitialization in resume
SeongJae Park (2):
mm/damon/vaddr: do not repeat pte_offset_map_lock() until success mm/damon/lru_sort: use param_ctx for damon_attrs staging
Shashank A P (1):
fs: quota: create dedicated workqueue for quota_release_work
Shin'ichiro Kawasaki (1):
PCI: endpoint: pci-epf-test: Add NULL check for DMA channels before release
Shuhao Fu (1):
drm/nouveau: fix bad ret code in nouveau_bo_move_prep
Shuicheng Lin (1):
drm/xe/hw_engine_group: Fix double write lock release in error path
Siddharth Vadapalli (2):
PCI: j721e: Fix programming sequence of "strap" settings
PCI: keystone: Use devm_request_irq() to free "ks-pcie-error-irq" on exit
Simon Schuster (1):
copy_sighand: Handle architectures where sizeof(unsigned long) < sizeof(u64)
Stephan Gerhold (4):
arm64: dts: qcom: msm8916: Add missing MDSS reset
arm64: dts: qcom: msm8939: Add missing MDSS reset
arm64: dts: qcom: sdm845: Fix slimbam num-channels/ees
media: venus: firmware: Use correct reset sequence for IRIS2
Sumit Kumar (1):
bus: mhi: ep: Fix chained transfer handling in read path
Suren Baghdasaryan (2):
slab: prevent warnings when slab obj_exts vector allocation fails
slab: mark slab->obj_exts allocation failures unconditionally
Tetsuo Handa (2):
minixfs: Verify inode mode when loading from disk
cramfs: Verify inode mode when loading from disk
Thadeu Lima de Souza Cascardo (1):
mm/page_alloc: only set ALLOC_HIGHATOMIC for __GPF_HIGH allocations
Theodore Ts'o (1):
ext4: avoid potential buffer over-read in parse_apply_sb_mount_options()
Thomas Fourier (5):
media: cx18: Add missing check after DMA map
media: pci: ivtv: Add missing check after DMA map
crypto: aspeed - Fix dma_unmap_sg() direction
crypto: atmel - Fix dma_unmap_sg() direction
crypto: rockchip - Fix dma_unmap_sg() nents value
Thomas Gleixner (1):
rseq: Protect event mask against membarrier IPI
Thomas Weißschuh (3):
fs: always return zero on success from replace_fd()
ACPI: battery: allocate driver data through devm_ APIs
ACPI: battery: initialize mutexes through devm_ APIs
Thorsten Blum (2):
scsi: hpsa: Fix potential memory leak in hpsa_big_passthru_ioctl()
NFSD: Fix destination buffer size in nfsd4_ssc_setup_dul()
Tiezhu Yang (1):
LoongArch: Add cflag -fno-isolate-erroneous-paths-dereference
Timur Kristóf (3):
drm/amd/display: Add missing DCE6 SCL_HORZ_FILTER_INIT* SRIs drm/amd/display: Properly clear SCL_*_FILTER_CONTROL on DCE6 drm/amd/display: Properly disable scaling on DCE6
Toke Høiland-Jørgensen (1):
page_pool: Fix PP_MAGIC_MASK to avoid crashing on some 32-bit arches
Tomi Valkeinen (1):
media: v4l2-subdev: Fix alloc failure check in v4l2_subdev_call_state_try()
Varad Gautam (1):
asm-generic/io.h: Skip trace helpers if rwmmio events are disabled
Vibhore Vardhan (1):
arm64: dts: ti: k3-am62a-main: Fix main padcfg length
Vidya Sagar (1):
PCI: tegra194: Handle errors in BPMP response
Vineeth Vijayan (1):
s390/cio: Update purge function to unregister the unused subchannels
Wang Jiang (1):
PCI: endpoint: Remove surplus return statement from pci_epf_test_clean_dma_chan()
Xin Li (Intel) (1):
x86/fred: Remove ENDBR64 from FRED entry points
Yang Shi (1):
arm64: kprobes: call set_memory_rox() for kprobe page
Yongjian Sun (1):
ext4: increase i_disksize to offset + len in ext4_update_disksize_before_punch()
Yu Kuai (1):
blk-crypto: fix missing blktrace bio split events
Yuan CHen (1):
clk: renesas: cpg-mssr: Fix memory leak in cpg_mssr_reserved_init()
Yuan Chen (1):
tracing: Fix race condition in kprobe initialization causing NULL pointer dereference
Yunseong Kim (1):
perf util: Fix compression checks returning -1 as bool
Zack Rusin (1):
drm/vmwgfx: Fix a null-ptr access in the cursor snooper
Zhang Yi (1):
ext4: fix an off-by-one issue during moving extents
Zhen Ni (2):
clocksource/drivers/clps711x: Fix resource leaks in error paths
memory: samsung: exynos-srom: Fix of_iomap leak in exynos_srom_probe
gaoxiang17 (1):
pid: Add a judgment for ns null in pid_nr_ns
Greg Kroah-Hartman
maintainerDocumentation/admin-guide/kernel-parameters.txt +3 -0
@@ -5923,6 +5923,9 @@ rootflags= [KNL] Set root filesystem mount option string + initramfs_options= [KNL] + Specify mount options for for the initramfs mount. + rootfstype= [KNL] Set root filesystem type rootwait [KNL] Wait (indefinitely) for root device to show up.
Documentation/devicetree/bindings/phy/rockchip-inno-csi-dphy.yaml +14 -1
@@ -57,11 +57,24 @@ required: - clocks - clock-names - '#phy-cells' - - power-domains - resets - reset-names - rockchip,grf +allOf: + - if: + properties: + compatible: + contains: + enum: + - rockchip,px30-csi-dphy + - rockchip,rk1808-csi-dphy + - rockchip,rk3326-csi-dphy + - rockchip,rk3368-csi-dphy + then: + required: + - power-domains + additionalProperties: false examples:
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 12 -SUBLEVEL = 53 +SUBLEVEL = 54 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm/mach-omap2/am33xx-restart.c +36 -0
@@ -2,12 +2,46 @@/* * am33xx-restart.c - Code common to all AM33xx machines. */ +#include <dt-bindings/pinctrl/am33xx.h> +#include <linux/delay.h> #include <linux/kernel.h> #include <linux/reboot.h> #include "common.h" +#include "control.h" #include "prm.h" +/* +* Advisory 1.0.36 EMU0 and EMU1: Terminals Must be Pulled High Before +* ICEPick Samples +* +* If EMU0/EMU1 pins have been used as GPIO outputs and actively driving low +* level, the device might not reboot in normal mode. We are in a bad position +* to override GPIO state here, so just switch the pins into EMU input mode +* (that's what reset will do anyway) and wait a bit, because the state will be +* latched 190 ns after reset. +*/ +static void am33xx_advisory_1_0_36 (void ) +{ +u32 emu0 =omap_ctrl_readl (AM335X_PIN_EMU0 ); +u32 emu1 =omap_ctrl_readl (AM335X_PIN_EMU1 ); + +/* If both pins are in EMU mode, nothing to do */ +if (!(emu0 &7 ) && !(emu1 &7 )) +return ; + +/* Switch GPIO3_7/GPIO3_8 into EMU0/EMU1 modes respectively */ +omap_ctrl_writel (emu0 & ~7 ,AM335X_PIN_EMU0 ); +omap_ctrl_writel (emu1 & ~7 ,AM335X_PIN_EMU1 ); + +/* +* Give pull-ups time to load the pin/PCB trace capacity. +* 5 ms shall be enough to load 1 uF (would be huge capacity for these +* pins) with TI-recommended 4k7 external pull-ups. +*/ +mdelay (5 ); +} +/** * am33xx_restart - trigger a software restart of the SoC * @mode: the "reboot mode", see arch/arm/kernel/{setup,process}.c
@@ -18,6 +52,8 @@*/ void am33xx_restart (enum reboot_mode mode,const char *cmd) { +am33xx_advisory_1_0_36 (); +/* TODO: Handle cmd if necessary */ prm_reboot_mode = mode;
arch/arm/mach-omap2/pm33xx-core.c +5 -1
@@ -388,12 +388,15 @@ static int __init amx3_idle_init(struct device_node *cpu_node, int cpu)if (!state_node)break ; -if (!of_device_is_available (state_node)) +if (!of_device_is_available (state_node)) { +of_node_put (state_node);continue ; + }if (i ==CPUIDLE_STATE_MAX ) {pr_warn ("%s: cpuidle states reached max possible\n" , __func__); +of_node_put (state_node);break ; }
@@ -403,6 +406,7 @@ static int __init amx3_idle_init(struct device_node *cpu_node, int cpu) states[state_count].wfi_flags |=WFI_FLAG_WAKE_M3 |WFI_FLAG_FLUSH_CACHE ; +of_node_put (state_node); state_count++; }
arch/arm64/boot/dts/qcom/msm8916.dtsi +2 -0
@@ -1540,6 +1540,8 @@ mdss: display-subsystem@1a00000 { interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>; + resets = <&gcc GCC_MDSS_BCR>; + interrupt-controller; #interrupt-cells = <1>;
arch/arm64/boot/dts/qcom/msm8939.dtsi +2 -0
@@ -1218,6 +1218,8 @@ mdss: display-subsystem@1a00000 { power-domains = <&gcc MDSS_GDSC>; + resets = <&gcc GCC_MDSS_BCR>; + #address-cells = <1>; #size-cells = <1>; #interrupt-cells = <1>;
arch/arm64/boot/dts/qcom/sdm845.dtsi +2 -2
@@ -5365,11 +5365,11 @@ slimbam: dma-controller@17184000 { compatible = "qcom,bam-v1.7.4", "qcom,bam-v1.7.0"; qcom,controlled-remotely; reg = <0 0x17184000 0 0x2a000>; - num-channels = <31>; + num-channels = <23>; interrupts = <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>; #dma-cells = <1>; qcom,ee = <1>; - qcom,num-ees = <2>; + qcom,num-ees = <4>; iommus = <&apps_smmu 0x1806 0x0>; };
arch/arm64/boot/dts/qcom/x1e80100-pmics.dtsi +2 -0
@@ -475,6 +475,8 @@ pm8010: pmic@c { #address-cells = <1>; #size-cells = <0>; + status = "disabled"; + pm8010_temp_alarm: temp-alarm@2400 { compatible = "qcom,spmi-temp-alarm"; reg = <0x2400>;
arch/arm64/boot/dts/ti/k3-am62a-main.dtsi +1 -1
@@ -258,7 +258,7 @@ secure_proxy_sa3: mailbox@43600000 { main_pmx0: pinctrl@f4000 { compatible = "pinctrl-single"; - reg = <0x00 0xf4000 0x00 0x2ac>; + reg = <0x00 0xf4000 0x00 0x25c>; #pinctrl-cells = <1>; pinctrl-single,register-width = <32>; pinctrl-single,function-mask = <0xffffffff>;
arch/arm64/kernel/cpufeature.c +7 -3
@@ -2279,17 +2279,21 @@ static void bti_enable(const struct arm64_cpu_capabilities *__unused)#ifdef CONFIG_ARM64_MTE static void cpu_enable_mte (struct arm64_cpu_capabilities const *cap) { +static bool cleared_zero_page = false; +sysreg_clear_set (sctlr_el1,0 , SCTLR_ELx_ATA |SCTLR_EL1_ATA0 );mte_cpu_setup ();/* * Clear the tags in the zero page. This needs to be done via the -* linear map which has the Tagged attribute. +* linear map which has the Tagged attribute. Since this page is +* always mapped as pte_special(), set_pte_at() will not attempt to +* clear the tags or set PG_mte_tagged. */ -if (try_page_mte_tagging (ZERO_PAGE (0 ))) { +if (!cleared_zero_page) { + cleared_zero_page = true;mte_clear_page_tags (lm_alias (empty_zero_page)); -set_page_mte_tagged (ZERO_PAGE (0 )); }kasan_init_hw_tags_cpu ();
arch/arm64/kernel/mte.c +2 -1
@@ -428,7 +428,8 @@ static int __access_remote_tags(struct mm_struct *mm, unsigned long addr,put_page (page);break ; } -WARN_ON_ONCE (!page_mte_tagged (page)); + +WARN_ON_ONCE (!page_mte_tagged (page) && !is_zero_page (page));/* limit access to the end of the page */ offset =offset_in_page (addr);
arch/arm64/kernel/pi/map_kernel.c +6 -0
@@ -78,6 +78,12 @@ static void __init map_kernel(u64 kaslr_offset, u64 va_offset, int root_level) twopass |= enable_scs; prot = twopass ? data_prot : text_prot; +/* +* [_stext, _text) isn't executed after boot and contains some +* non-executable, unpredictable data, so map it non-executable. +*/ +map_segment (init_pg_dir, &pgdp, va_offset, _text, _stext, data_prot, + false, root_level);map_segment (init_pg_dir, &pgdp, va_offset, _stext, _etext, prot, !twopass, root_level); map_segment(init_pg_dir, &pgdp, va_offset, __start_rodata,
arch/arm64/kernel/probes/kprobes.c +12 -0
@@ -10,6 +10,7 @@#define pr_fmt (fmt) "kprobes: " fmt +#include <linux/execmem.h> #include <linux/extable.h> #include <linux/kasan.h> #include <linux/kernel.h>
@@ -41,6 +42,17 @@ DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);static void __kprobes post_kprobe_handler (struct kprobe *,struct kprobe_ctlblk *,struct pt_regs *); +void *alloc_insn_page (void ) +{ +void *addr; + + addr =execmem_alloc (EXECMEM_KPROBES ,PAGE_SIZE ); +if (!addr) +return NULL ; +set_memory_rox ((unsigned long )addr,1 ); +return addr; +} +static void __kprobes arch_prepare_ss_slot (struct kprobe *p) {kprobe_opcode_t *addr = p->ainsn.api.insn;
arch/arm64/kernel/setup.c +2 -2
@@ -213,7 +213,7 @@ static void __init request_standard_resources(void)unsigned long i =0 ;size_t res_size; - kernel_code.start =__pa_symbol (_stext); + kernel_code.start =__pa_symbol (_text); kernel_code.end =__pa_symbol (__init_begin -1 ); kernel_data.start =__pa_symbol (_sdata); kernel_data.end =__pa_symbol (_end -1 );
@@ -281,7 +281,7 @@ u64 cpu_logical_map(unsigned int cpu) void __init __no_sanitize_address setup_arch(char **cmdline_p) { -setup_initial_init_mm (_stext, _etext, _edata, _end); +setup_initial_init_mm (_text, _etext, _edata, _end); *cmdline_p = boot_command_line;
arch/arm64/mm/init.c +1 -1
@@ -300,7 +300,7 @@ void __init arm64_memblock_init(void)* Register the kernel text, kernel data, initrd, and initial * pagetables with memblock. */ -memblock_reserve (__pa_symbol (_stext), _end - _stext); +memblock_reserve (__pa_symbol (_text), _end - _text);if (IS_ENABLED (CONFIG_BLK_DEV_INITRD ) && phys_initrd_size) {/* the generic initrd code expects virtual addresses */ initrd_start =__phys_to_virt (phys_initrd_start);
arch/arm64/mm/mmu.c +9 -5
@@ -561,8 +561,8 @@ void __init mark_linear_text_alias_ro(void)/* * Remove the write permissions from the linear alias of .text/.rodata */ -update_mapping_prot (__pa_symbol (_stext), (unsigned long )lm_alias (_stext), - (unsigned long )__init_begin - (unsigned long )_stext, +update_mapping_prot (__pa_symbol (_text), (unsigned long )lm_alias (_text), + (unsigned long )__init_begin - (unsigned long )_text,PAGE_KERNEL_RO ); }
@@ -623,7 +623,7 @@ static inline void arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp) {static void __init map_mem (pgd_t *pgdp) {static const u64 direct_map_end =_PAGE_END (VA_BITS_MIN ); -phys_addr_t kernel_start =__pa_symbol (_stext); +phys_addr_t kernel_start =__pa_symbol (_text);phys_addr_t kernel_end =__pa_symbol (__init_begin);phys_addr_t start, end;phys_addr_t early_kfence_pool;
@@ -670,7 +670,7 @@ static void __init map_mem(pgd_t *pgdp) }/* -* Map the linear alias of the [_stext, __init_begin) interval +* Map the linear alias of the [_text, __init_begin) interval * as non-executable now, and remove the write permission in * mark_linear_text_alias_ro() below (which will be called after * alternative patching has completed). This makes the contents
@@ -697,6 +697,10 @@ void mark_rodata_ro(void)WRITE_ONCE (rodata_is_rw, false);update_mapping_prot (__pa_symbol (__start_rodata), (unsigned long )__start_rodata, section_size,PAGE_KERNEL_RO ); +/* mark the range between _text and _stext as read only. */ +update_mapping_prot (__pa_symbol (_text), (unsigned long )_text, + (unsigned long )_stext - (unsigned long )_text, +PAGE_KERNEL_RO ); } static void __init declare_vma(struct vm_struct *vma,
@@ -767,7 +771,7 @@ static void __init declare_kernel_vmas(void) {static struct vm_struct vmlinux_seg[KERNEL_SEGMENT_COUNT ]; -declare_vma (&vmlinux_seg[0 ], _stext, _etext,VM_NO_GUARD ); +declare_vma (&vmlinux_seg[0 ], _text, _etext,VM_NO_GUARD );declare_vma (&vmlinux_seg[1 ], __start_rodata, __inittext_begin,VM_NO_GUARD );declare_vma (&vmlinux_seg[2 ], __inittext_begin, __inittext_end,VM_NO_GUARD );declare_vma (&vmlinux_seg[3 ], __initdata_begin, __initdata_end,VM_NO_GUARD );
arch/loongarch/Makefile +1 -1
@@ -114,7 +114,7 @@ KBUILD_RUSTFLAGS_KERNEL += -Crelocation-model=pie LDFLAGS_vmlinux += -static -pie --no-dynamic-linker -z notext $(call ld-option, --apply-dynamic-relocs) endif -cflags-y += $(call cc-option, -mno-check-zero-division) +cflags-y += $(call cc-option, -mno-check-zero-division -fno-isolate-erroneous-paths-dereference) ifndef CONFIG_KASAN cflags-y += -fno-builtin-memcpy -fno-builtin-memmove -fno-builtin-memset
arch/loongarch/kernel/setup.c +1 -0
@@ -354,6 +354,7 @@ void __init platform_init(void)#ifdef CONFIG_ACPI acpi_table_upgrade (); + acpi_gbl_use_global_lock = false; acpi_gbl_use_default_register_widths = false;acpi_boot_table_init ();#endif
arch/parisc/include/uapi/asm/ioctls.h +4 -4
@@ -10,10 +10,10 @@#define TCSETS _IOW('T', 17, struct termios)/* TCSETATTR */ #define TCSETSW _IOW('T', 18, struct termios)/* TCSETATTRD */ #define TCSETSF _IOW('T', 19, struct termios)/* TCSETATTRF */ -#define TCGETA _IOR('T', 1, struct termio) -#define TCSETA _IOW('T', 2, struct termio) -#define TCSETAW _IOW('T', 3, struct termio) -#define TCSETAF _IOW('T', 4, struct termio) +#define TCGETA 0x40125401 +#define TCSETA 0x80125402 +#define TCSETAW 0x80125403 +#define TCSETAF 0x80125404#define TCSBRK _IO('T', 5)#define TCXONC _IO('T', 6)#define TCFLSH _IO('T', 7)
arch/parisc/lib/memcpy.c +0 -1
@@ -41,7 +41,6 @@ unsigned long raw_copy_from_user(void *dst, const void __user *src,mtsp (get_kernel_space (),SR_TEMP2 );/* Check region is user accessible */ -if (start)while (start < end) {if (!prober_user (SR_TEMP1 , start)) { newlen = (start - (unsigned long ) src);
arch/powerpc/platforms/powernv/pci-ioda.c +1 -1
@@ -1897,7 +1897,7 @@ static int pnv_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,return 0 ; out: -irq_domain_free_irqs_parent (domain, virq, i -1 ); +irq_domain_free_irqs_parent (domain, virq, i);msi_bitmap_free_hwirqs (&phb->msi_bmp, hwirq, nr_irqs);return ret; }
arch/powerpc/platforms/pseries/msi.c +1 -1
@@ -592,7 +592,7 @@ static int pseries_irq_domain_alloc(struct irq_domain *domain, unsigned int virq out:/* TODO: handle RTAS cleanup in ->msi_finish() ? */ -irq_domain_free_irqs_parent (domain, virq, i -1 ); +irq_domain_free_irqs_parent (domain, virq, i);return ret; }
arch/s390/Makefile +1 -0
@@ -25,6 +25,7 @@ endif KBUILD_CFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -O2 -mpacked-stack -std=gnu11 KBUILD_CFLAGS_DECOMPRESSOR += -DDISABLE_BRANCH_PROFILING -D__NO_FORTIFY KBUILD_CFLAGS_DECOMPRESSOR += -D__DECOMPRESSOR +KBUILD_CFLAGS_DECOMPRESSOR += -Wno-pointer-sign KBUILD_CFLAGS_DECOMPRESSOR += -fno-delete-null-pointer-checks -msoft-float -mbackchain KBUILD_CFLAGS_DECOMPRESSOR += -fno-asynchronous-unwind-tables KBUILD_CFLAGS_DECOMPRESSOR += -ffreestanding
arch/s390/kernel/vmlinux.lds.S +27 -27
66 lines not on this page · raw message
arch/s390/net/bpf_jit.h deleted +0 -55
55 lines not on this page · raw message
arch/s390/net/bpf_jit_comp.c +86 -53
320 lines not on this page · raw message
arch/sparc/kernel/of_device_32.c +1 -0
@@ -387,6 +387,7 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,if (of_device_register (op)) {printk ("%pOF: Could not register of device.\n" , dp); +put_device (&op->dev);kfree (op); op =NULL ; }
arch/sparc/kernel/of_device_64.c +1 -0
@@ -677,6 +677,7 @@ static struct platform_device * __init scan_one_device(struct device_node *dp,if (of_device_register (op)) {printk ("%pOF: Could not register of device.\n" , dp); +put_device (&op->dev);kfree (op); op =NULL ; }
arch/sparc/mm/hugetlbpage.c +20 -0
@@ -130,6 +130,26 @@ hugetlb_get_unmapped_area(struct file *file, unsigned long addr,static pte_t sun4u_hugepage_shift_to_tte (pte_t entry,unsigned int shift) { +unsigned long hugepage_size = _PAGE_SZ4MB_4U; + +pte_val (entry) =pte_val (entry) & ~_PAGE_SZALL_4U; + +switch (shift) { +case HPAGE_256MB_SHIFT : + hugepage_size = _PAGE_SZ256MB_4U; +pte_val (entry) |= _PAGE_PMD_HUGE; +break ; +case HPAGE_SHIFT : +pte_val (entry) |= _PAGE_PMD_HUGE; +break ; +case HPAGE_64K_SHIFT : + hugepage_size = _PAGE_SZ64K_4U; +break ; +default : +WARN_ONCE (1 ,"unsupported hugepage shift=%u\n" , shift); + } + +pte_val (entry) =pte_val (entry) | hugepage_size;return entry; }
arch/x86/entry/entry_64_fred.S +1 -1
@@ -16,7 +16,7 @@ .macro FRED_ENTER UNWIND_HINT_END_OF_STACK - ENDBR + ANNOTATE_NOENDBR PUSH_AND_CLEAR_REGS movq %rsp, %rdi /* %rdi -> pt_regs */ .endm
arch/x86/hyperv/ivm.c +1 -1
@@ -681,7 +681,7 @@ void __init hv_vtom_init(void) x86_platform.guest.enc_status_change_finish = hv_vtom_set_host_visibility;/* Set WB as the default cache mode. */ - mtrr_overwrite_state(NULL, 0, MTRR_TYPE_WRBACK); + guest_force_mtrr_state(NULL, 0, MTRR_TYPE_WRBACK); }#endif /* defined(CONFIG_AMD_MEM_ENCRYPT) || defined(CONFIG_INTEL_TDX_GUEST) */
arch/x86/include/asm/msr-index.h +1 -0
@@ -722,6 +722,7 @@#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS 0xc0000300#define MSR_AMD64_PERF_CNTR_GLOBAL_CTL 0xc0000301#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR 0xc0000302 +#define MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_SET 0xc0000303/* AMD Last Branch Record MSRs */ #define MSR_AMD64_LBR_SELECT 0xc000010e
arch/x86/include/asm/mtrr.h +5 -5
@@ -58,8 +58,8 @@ struct mtrr_state_type {*/ # ifdef CONFIG_MTRR void mtrr_bp_init (void ); -void mtrr_overwrite_state (struct mtrr_var_range *var,unsigned int num_var, -mtrr_type def_type); +void guest_force_mtrr_state (struct mtrr_var_range *var,unsigned int num_var, +mtrr_type def_type);extern u8 mtrr_type_lookup (u64 addr,u64 end,u8 *uniform);extern void mtrr_save_fixed_ranges (void *);extern void mtrr_save_state (void );
@@ -75,9 +75,9 @@ void mtrr_disable(void);void mtrr_enable (void );void mtrr_generic_set_state (void );# else -static inline void mtrr_overwrite_state (struct mtrr_var_range *var, -unsigned int num_var, -mtrr_type def_type) +static inline void guest_force_mtrr_state (struct mtrr_var_range *var, +unsigned int num_var, +mtrr_type def_type) { }
arch/x86/kernel/cpu/mtrr/generic.c +3 -3
@@ -423,7 +423,7 @@ void __init mtrr_copy_map(void) }/** -* mtrr_overwrite_state - set static MTRR state +* guest_force_mtrr_state - set static MTRR state for a guest * * Used to set MTRR state via different means (e.g. with data obtained from * a hypervisor).
@@ -436,8 +436,8 @@ void __init mtrr_copy_map(void)* @num_var: length of the @var array * @def_type: default caching type */ -void mtrr_overwrite_state (struct mtrr_var_range *var,unsigned int num_var, -mtrr_type def_type) +void guest_force_mtrr_state (struct mtrr_var_range *var,unsigned int num_var, +mtrr_type def_type) {unsigned int i;
arch/x86/kernel/cpu/mtrr/mtrr.c +1 -1
@@ -625,7 +625,7 @@ void mtrr_save_state(void)static int __init mtrr_init_finalize (void ) {/* -* Map might exist if mtrr_overwrite_state() has been called or if +* Map might exist if guest_force_mtrr_state() has been called or if * mtrr_enabled() returns true. */ mtrr_copy_map ();
arch/x86/kernel/kvm.c +19 -2
@@ -933,6 +933,19 @@ static void kvm_sev_hc_page_enc_status(unsigned long pfn, int npages, bool enc)static void __init kvm_init_platform (void ) { +u64 tolud =PFN_PHYS (e820__end_of_low_ram_pfn ()); +/* +* Note, hardware requires variable MTRR ranges to be power-of-2 sized +* and naturally aligned. But when forcing guest MTRR state, Linux +* doesn't program the forced ranges into hardware. Don't bother doing +* the math to generate a technically-legal range. +*/ +struct mtrr_var_range pci_hole = { + .base_lo = tolud |X86_MEMTYPE_UC , + .mask_lo = (u32)(~(SZ_4G - tolud -1 )) |MTRR_PHYSMASK_V , + .mask_hi = (BIT_ULL (boot_cpu_data.x86_phys_bits) -1 ) >>32 , + }; +if (cc_platform_has (CC_ATTR_GUEST_MEM_ENCRYPT ) &&kvm_para_has_feature (KVM_FEATURE_MIGRATION_CONTROL )) {unsigned long nr_pages;
@@ -982,8 +995,12 @@ static void __init kvm_init_platform(void)kvmclock_init (); x86_platform.apic_post_init = kvm_apic_init; -/* Set WB as the default cache mode for SEV-SNP and TDX */ -mtrr_overwrite_state (NULL ,0 ,MTRR_TYPE_WRBACK ); +/* +* Set WB as the default cache mode for SEV-SNP and TDX, with a single +* UC range for the legacy PCI hole, e.g. so that devices that expect +* to get UC/WC mappings don't get surprised with WB. +*/ +guest_force_mtrr_state (&pci_hole,1 ,MTRR_TYPE_WRBACK ); }#if defined(CONFIG_AMD_MEM_ENCRYPT )
arch/x86/kernel/umip.c +13 -2
@@ -156,15 +156,26 @@ static int identify_insn(struct insn *insn)if (!insn->modrm.nbytes)return -EINVAL ; -/* All the instructions of interest start with 0x0f. */ -if (insn->opcode.bytes[0 ] !=0xf ) +/* The instructions of interest have 2-byte opcodes: 0F 00 or 0F 01. */ +if (insn->opcode.nbytes <2 || insn->opcode.bytes[0 ] !=0xf )return -EINVAL ;if (insn->opcode.bytes[1 ] ==0x1 ) {switch (X86_MODRM_REG (insn->modrm.value)) {case 0 : +/* The reg form of 0F 01 /0 encodes VMX instructions. */ +if (X86_MODRM_MOD (insn->modrm.value) ==3 ) +return -EINVAL ; +return UMIP_INST_SGDT ;case 1 : +/* +* The reg form of 0F 01 /1 encodes MONITOR/MWAIT, +* STAC/CLAC, and ENCLS. +*/ +if (X86_MODRM_MOD (insn->modrm.value) ==3 ) +return -EINVAL ; +return UMIP_INST_SIDT ;case 4 :return UMIP_INST_SMSW ;
arch/x86/kvm/cpuid.c +1 -1
@@ -816,7 +816,7 @@ void kvm_set_cpu_caps(void)F (NO_NESTED_DATA_BP ) |F (LFENCE_RDTSC ) |0 /* SmmPgCfgLock */ |F (VERW_CLEAR ) |F (NULL_SEL_CLR_BASE ) |F (AUTOIBRS ) |0 /* PrefetchCtlMsr */ | -F (WRMSR_XX_BASE_NS ) +F (WRMSR_XX_BASE_NS ) |F (SRSO_USER_KERNEL_NO ) );kvm_cpu_cap_check_and_set (X86_FEATURE_SBPB );
arch/x86/kvm/pmu.c +5 -0
@@ -650,6 +650,7 @@ int kvm_pmu_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) msr_info->data = pmu->global_ctrl;break ;case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR : +case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_SET :case MSR_CORE_PERF_GLOBAL_OVF_CTRL : msr_info->data =0 ;break ;
@@ -711,6 +712,10 @@ int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info)if (!msr_info->host_initiated) pmu->global_status &= ~data;break ; +case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_SET : +if (!msr_info->host_initiated) + pmu->global_status |= data & ~pmu->global_status_rsvd; +break ;default :kvm_pmu_mark_pmc_in_use (vcpu, msr_info->index);return kvm_pmu_call (set_msr)(vcpu, msr_info);
arch/x86/kvm/svm/pmu.c +1 -0
@@ -113,6 +113,7 @@ static bool amd_is_valid_msr(struct kvm_vcpu *vcpu, u32 msr)case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS :case MSR_AMD64_PERF_CNTR_GLOBAL_CTL :case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR : +case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_SET :return pmu->version >1 ;default : if (msr > MSR_F15H_PERF_CTR5 &&
arch/x86/kvm/x86.c +2 -0
@@ -364,6 +364,7 @@ static const u32 msrs_to_save_pmu[] = {MSR_AMD64_PERF_CNTR_GLOBAL_CTL ,MSR_AMD64_PERF_CNTR_GLOBAL_STATUS ,MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR , + MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_SET, }; static u32 msrs_to_save[ARRAY_SIZE(msrs_to_save_base) +
@@ -7449,6 +7450,7 @@ static void kvm_probe_msr_to_save(u32 msr_index)case MSR_AMD64_PERF_CNTR_GLOBAL_CTL :case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS :case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_CLR : +case MSR_AMD64_PERF_CNTR_GLOBAL_STATUS_SET :if (!kvm_cpu_cap_has (X86_FEATURE_PERFMON_V2 ))return ;break ;
arch/x86/xen/enlighten_pv.c +2 -2
@@ -171,7 +171,7 @@ static void __init xen_set_mtrr_data(void)/* Only overwrite MTRR state if any MTRR could be got from Xen. */ if (reg) -mtrr_overwrite_state (var, reg,MTRR_TYPE_UNCACHABLE ); +guest_force_mtrr_state (var, reg,MTRR_TYPE_UNCACHABLE );#endif }
@@ -195,7 +195,7 @@ static void __init xen_pv_init_platform(void)if (xen_initial_domain ())xen_set_mtrr_data ();else -mtrr_overwrite_state (NULL ,0 ,MTRR_TYPE_WRBACK ); +guest_force_mtrr_state (NULL ,0 ,MTRR_TYPE_WRBACK );/* Adjust nr_cpu_ids before "enumeration" happens */ xen_smp_count_cpus ();
arch/xtensa/platforms/iss/simdisk.c +5 -1
@@ -230,10 +230,14 @@ static ssize_t proc_read_simdisk(struct file *file, char __user *buf,static ssize_t proc_write_simdisk (struct file *file,const char __user *buf,size_t count,loff_t *ppos) { -char *tmp =memdup_user_nul (buf, count); +char *tmp;struct simdisk *dev =pde_data (file_inode (file));int err; +if (count ==0 || count >PAGE_SIZE ) +return -EINVAL ; + + tmp =memdup_user_nul (buf, count);if (IS_ERR (tmp))return PTR_ERR (tmp);
block/blk-crypto-fallback.c +3 -0
@@ -18,6 +18,7 @@#include <linux/module.h> #include <linux/random.h> #include <linux/scatterlist.h> +#include <trace/events/block.h> #include "blk-cgroup.h" #include "blk-crypto-internal.h"
@@ -230,7 +231,9 @@ static bool blk_crypto_fallback_split_bio_if_needed(struct bio **bio_ptr) bio->bi_status =BLK_STS_RESOURCE ;return false; } +bio_chain (split_bio, bio); +trace_block_split (split_bio, bio->bi_iter.bi_sector);submit_bio_noacct (bio); *bio_ptr = split_bio; }
crypto/essiv.c +6 -8
@@ -186,9 +186,14 @@ static int essiv_aead_crypt(struct aead_request *req, bool enc)const struct essiv_tfm_ctx *tctx =crypto_aead_ctx (tfm);struct essiv_aead_request_ctx *rctx =aead_request_ctx (req);struct aead_request *subreq = &rctx->aead_req; +int ivsize =crypto_aead_ivsize (tfm); +int ssize = req->assoclen - ivsize;struct scatterlist *src = req->src;int err; +if (ssize <0 ) +return -EINVAL ; +crypto_cipher_encrypt_one (tctx->essiv_cipher, req->iv, req->iv);/*
@@ -198,19 +203,12 @@ static int essiv_aead_crypt(struct aead_request *req, bool enc)*/ rctx->assoc =NULL ;if (req->src == req->dst || !enc) { -scatterwalk_map_and_copy (req->iv, req->dst, - req->assoclen -crypto_aead_ivsize (tfm), -crypto_aead_ivsize (tfm),1 ); +scatterwalk_map_and_copy (req->iv, req->dst, ssize, ivsize,1 ); }else {u8 *iv = (u8 *)aead_request_ctx (req) + tctx->ivoffset; -int ivsize =crypto_aead_ivsize (tfm); -int ssize = req->assoclen - ivsize;struct scatterlist *sg;int nents; -if (ssize <0 ) -return -EINVAL ; - nents =sg_nents_for_len (req->src, ssize);if (nents <0 )return -EINVAL ;
drivers/acpi/acpi_dbg.c +13 -13
@@ -569,11 +569,11 @@ static int acpi_aml_release(struct inode *inode, struct file *file)return 0 ; } -static int acpi_aml_read_user (char __user *buf,int len) +static ssize_t acpi_aml_read_user (char __user *buf,size_t len) { -int ret;struct circ_buf *crc = &acpi_aml_io.out_crc; -int n; +ssize_t ret; +size_t n;char *p; ret =acpi_aml_lock_read (crc,ACPI_AML_OUT_USER );
@@ -582,7 +582,7 @@ static int acpi_aml_read_user(char __user *buf, int len)/* sync head before removing logs */ smp_rmb (); p = &crc->buf[crc->tail]; - n =min (len,circ_count_to_end (crc)); + n =min_t (size_t, len,circ_count_to_end (crc));if (copy_to_user (buf, p, n)) { ret = -EFAULT ; goto out;
@@ -599,8 +599,8 @@ static int acpi_aml_read_user(char __user *buf, int len)static ssize_t acpi_aml_read (struct file *file,char __user *buf,size_t count,loff_t *ppos) { -int ret =0 ; -int size =0 ; +ssize_t ret =0 ; +ssize_t size =0 ;if (!count)return 0 ;
@@ -639,11 +639,11 @@ static ssize_t acpi_aml_read(struct file *file, char __user *buf,return size >0 ? size : ret; } -static int acpi_aml_write_user (const char __user *buf,int len) +static ssize_t acpi_aml_write_user (const char __user *buf,size_t len) { -int ret;struct circ_buf *crc = &acpi_aml_io.in_crc; -int n; +ssize_t ret; +size_t n;char *p; ret =acpi_aml_lock_write (crc,ACPI_AML_IN_USER );
@@ -652,7 +652,7 @@ static int acpi_aml_write_user(const char __user *buf, int len)/* sync tail before inserting cmds */ smp_mb (); p = &crc->buf[crc->head]; - n =min (len,circ_space_to_end (crc)); + n =min_t (size_t, len,circ_space_to_end (crc));if (copy_from_user (p, buf, n)) { ret = -EFAULT ; goto out;
@@ -663,14 +663,14 @@ static int acpi_aml_write_user(const char __user *buf, int len) ret = n; out:acpi_aml_unlock_fifo (ACPI_AML_IN_USER , ret >=0 ); -return n; +return ret; }static ssize_t acpi_aml_write (struct file *file,const char __user *buf,size_t count,loff_t *ppos) { -int ret =0 ; -int size =0 ; +ssize_t ret =0 ; +ssize_t size =0 ;if (!count)return 0 ;
drivers/acpi/acpi_tad.c +3 -0
@@ -565,6 +565,9 @@ static void acpi_tad_remove(struct platform_device *pdev)pm_runtime_get_sync (dev); +if (dd->capabilities &ACPI_TAD_RT ) +sysfs_remove_group (&dev->kobj, &acpi_tad_time_attr_group); +if (dd->capabilities &ACPI_TAD_DC_WAKE )sysfs_remove_group (&dev->kobj, &acpi_tad_dc_attr_group);
drivers/acpi/acpica/evglock.c +4 -0
@@ -42,6 +42,10 @@ acpi_status acpi_ev_init_global_lock_handler(void)return_ACPI_STATUS (AE_OK ); } +if (!acpi_gbl_use_global_lock) { +return_ACPI_STATUS (AE_OK ); + } +/* Attempt installation of the global lock handler */ status = acpi_install_fixed_event_handler(ACPI_EVENT_GLOBAL,
drivers/acpi/battery.c +37 -23
147 lines not on this page · raw message
drivers/acpi/property.c +88 -49
212 lines not on this page · raw message
drivers/block/loop.c +6 -2
@@ -536,8 +536,10 @@ static int loop_change_fd(struct loop_device *lo, struct block_device *bdev,return -EBADF ; error =loop_check_backing_file (file); -if (error) +if (error) { +fput (file);return error; + }/* suppress uevents while reconfiguring the device */ dev_set_uevent_suppress (disk_to_dev (lo->lo_disk),1 );
@@ -973,8 +975,10 @@ static int loop_configure(struct loop_device *lo, blk_mode_t mode,return -EBADF ; error =loop_check_backing_file (file); -if (error) +if (error) { +fput (file);return error; + } is_loop =is_loop_device (file);
drivers/bus/mhi/ep/main.c +12 -25
@@ -403,17 +403,13 @@ static int mhi_ep_read_channel(struct mhi_ep_cntrl *mhi_cntrl, {struct mhi_ep_chan *mhi_chan = &mhi_cntrl->mhi_chan[ring->ch_id];struct device *dev = &mhi_cntrl->mhi_dev->dev; -size_t tr_len, read_offset, write_offset; +size_t tr_len, read_offset;struct mhi_ep_buf_info buf_info = {};u32 len =MHI_EP_DEFAULT_MTU ;struct mhi_ring_element *el; -bool tr_done = false;void *buf_addr; -u32 buf_left;int ret; - buf_left = len; - do { /* Don't process the transfer ring if the channel is not in RUNNING state */ if (mhi_chan->state != MHI_CH_STATE_RUNNING) {
@@ -426,24 +422,23 @@ static int mhi_ep_read_channel(struct mhi_ep_cntrl *mhi_cntrl,/* Check if there is data pending to be read from previous read operation */ if (mhi_chan->tre_bytes_left) {dev_dbg (dev,"TRE bytes remaining: %u\n" , mhi_chan->tre_bytes_left); - tr_len =min (buf_left, mhi_chan->tre_bytes_left); + tr_len =min (len, mhi_chan->tre_bytes_left); }else { mhi_chan->tre_loc =MHI_TRE_DATA_GET_PTR (el); mhi_chan->tre_size =MHI_TRE_DATA_GET_LEN (el); mhi_chan->tre_bytes_left = mhi_chan->tre_size; - tr_len =min (buf_left, mhi_chan->tre_size); + tr_len =min (len, mhi_chan->tre_size); } read_offset = mhi_chan->tre_size - mhi_chan->tre_bytes_left; - write_offset = len - buf_left; buf_addr =kmem_cache_zalloc (mhi_cntrl->tre_buf_cache,GFP_KERNEL );if (!buf_addr)return -ENOMEM ; buf_info.host_addr = mhi_chan->tre_loc + read_offset; - buf_info.dev_addr = buf_addr + write_offset; + buf_info.dev_addr = buf_addr; buf_info.size = tr_len; buf_info.cb = mhi_ep_read_completion; buf_info.cb_buf = buf_addr;
@@ -459,16 +454,12 @@ static int mhi_ep_read_channel(struct mhi_ep_cntrl *mhi_cntrl, goto err_free_buf_addr; } - buf_left -= tr_len; mhi_chan->tre_bytes_left -= tr_len; -if (!mhi_chan->tre_bytes_left) { -if (MHI_TRE_DATA_GET_IEOT (el)) - tr_done = true; - +if (!mhi_chan->tre_bytes_left) mhi_chan->rd_offset = (mhi_chan->rd_offset +1 ) % ring->ring_size; - } - }while (buf_left && !tr_done); +/* Read until the some buffer is left or the ring becomes not empty */ + }while (!mhi_ep_queue_is_empty (mhi_chan->mhi_dev,DMA_TO_DEVICE ));return 0 ;
@@ -502,15 +493,11 @@ static int mhi_ep_process_ch_ring(struct mhi_ep_ring *ring) mhi_chan->xfer_cb (mhi_chan->mhi_dev, &result); }else {/* UL channel */ -do { - ret =mhi_ep_read_channel (mhi_cntrl, ring); -if (ret <0 ) { -dev_err (&mhi_chan->mhi_dev->dev,"Failed to read channel\n" ); -return ret; - } - -/* Read until the ring becomes empty */ - }while (!mhi_ep_queue_is_empty (mhi_chan->mhi_dev,DMA_TO_DEVICE )); + ret =mhi_ep_read_channel (mhi_cntrl, ring); +if (ret <0 ) { +dev_err (&mhi_chan->mhi_dev->dev,"Failed to read channel\n" ); +return ret; + } }return 0 ;
drivers/bus/mhi/host/init.c +2 -3
@@ -194,7 +194,6 @@ void mhi_deinit_free_irq(struct mhi_controller *mhi_cntrl)int mhi_init_irq_setup (struct mhi_controller *mhi_cntrl) {struct mhi_event *mhi_event = mhi_cntrl->mhi_event; -struct device *dev = &mhi_cntrl->mhi_dev->dev;unsigned long irq_flags =IRQF_SHARED |IRQF_NO_SUSPEND ;int i, ret;
@@ -221,7 +220,7 @@ int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl)continue ;if (mhi_event->irq >= mhi_cntrl->nr_irqs) { -dev_err (dev,"irq %d not available for event ring\n" , +dev_err (mhi_cntrl->cntrl_dev,"irq %d not available for event ring\n" , mhi_event->irq); ret = -EINVAL ; goto error_request;
@@ -232,7 +231,7 @@ int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl) irq_flags, "mhi", mhi_event);if (ret) { -dev_err (dev,"Error requesting irq:%d for ev:%d\n" , +dev_err (mhi_cntrl->cntrl_dev,"Error requesting irq:%d for ev:%d\n" , mhi_cntrl->irq[mhi_event->irq], i); goto error_request; }
drivers/char/ipmi/ipmi_kcs_sm.c +5 -11
@@ -122,10 +122,10 @@ struct si_sm_data {unsigned long error0_timeout; }; -static unsigned int init_kcs_data_with_state (struct si_sm_data *kcs, -struct si_sm_io *io,enum kcs_states state) +static unsigned int init_kcs_data (struct si_sm_data *kcs, +struct si_sm_io *io) { - kcs->state = state; + kcs->state =KCS_IDLE ; kcs->io = io; kcs->write_pos =0 ; kcs->write_count =0 ;
@@ -140,12 +140,6 @@ static unsigned int init_kcs_data_with_state(struct si_sm_data *kcs,return 2 ; } -static unsigned int init_kcs_data (struct si_sm_data *kcs, -struct si_sm_io *io) -{ -return init_kcs_data_with_state (kcs, io,KCS_IDLE ); -} -static inline unsigned char read_status (struct si_sm_data *kcs) {return kcs->io->inputb (kcs->io,1 );
@@ -276,7 +270,7 @@ static int start_kcs_transaction(struct si_sm_data *kcs, unsigned char *data,if (size >MAX_KCS_WRITE_SIZE )return IPMI_REQ_LEN_EXCEEDED_ERR ; -if (kcs->state !=KCS_IDLE ) { +if ((kcs->state !=KCS_IDLE ) && (kcs->state !=KCS_HOSED )) {dev_warn (kcs->io->dev,"KCS in invalid state %d\n" , kcs->state);return IPMI_NOT_IN_MY_STATE_ERR ; }
@@ -501,7 +495,7 @@ static enum si_sm_result kcs_event(struct si_sm_data *kcs, long time) }if (kcs->state ==KCS_HOSED ) { -init_kcs_data_with_state (kcs, kcs->io,KCS_ERROR0 ); +init_kcs_data (kcs, kcs->io);return SI_SM_HOSED ; }
drivers/char/ipmi/ipmi_msghandler.c +200 -216
588 lines not on this page · raw message
drivers/char/tpm/tpm_tis_core.c +2 -2
@@ -977,8 +977,8 @@ static int tpm_tis_probe_irq_single(struct tpm_chip *chip, u32 intmask,* will call disable_irq which undoes all of the above. */ if (!(chip->flags &TPM_CHIP_FLAG_IRQ )) { -tpm_tis_write8 (priv, original_int_vec, -TPM_INT_VECTOR (priv->locality)); +tpm_tis_write8 (priv,TPM_INT_VECTOR (priv->locality), + original_int_vec); rc =-1 ; }
drivers/clk/at91/clk-peripheral.c +5 -2
@@ -279,8 +279,11 @@ static int clk_sam9x5_peripheral_determine_rate(struct clk_hw *hw,long best_diff =LONG_MIN ;u32 shift; -if (periph->id <PERIPHERAL_ID_MIN || !periph->range.max) -return parent_rate; +if (periph->id <PERIPHERAL_ID_MIN || !periph->range.max) { + req->rate = parent_rate; + +return 0 ; + }/* Fist step: check the available dividers. */ for (shift =0 ; shift <=PERIPHERAL_MAX_SHIFT ; shift++) {
drivers/clk/mediatek/clk-mt8195-infra_ao.c +1 -1
@@ -103,7 +103,7 @@ static const struct mtk_gate infra_ao_clks[] = {GATE_INFRA_AO0 (CLK_INFRA_AO_CQ_DMA_FPC ,"infra_ao_cq_dma_fpc" ,"fpc" ,28 ),GATE_INFRA_AO0 (CLK_INFRA_AO_UART5 ,"infra_ao_uart5" ,"top_uart" ,29 ),/* INFRA_AO1 */ -GATE_INFRA_AO1 (CLK_INFRA_AO_HDMI_26M ,"infra_ao_hdmi_26m" ,"clk26m" ,0 ), +GATE_INFRA_AO1 (CLK_INFRA_AO_HDMI_26M ,"infra_ao_hdmi_26m" ,"top_hdmi_xtal" ,0 ),GATE_INFRA_AO1 (CLK_INFRA_AO_SPI0 ,"infra_ao_spi0" ,"top_spi" ,1 ),GATE_INFRA_AO1 (CLK_INFRA_AO_MSDC0 ,"infra_ao_msdc0" ,"top_msdc50_0_hclk" ,2 ), GATE_INFRA_AO1(CLK_INFRA_AO_MSDC1, "infra_ao_msdc1", "top_axi", 4),
drivers/clk/mediatek/clk-mux.c +1 -3
@@ -146,9 +146,7 @@ static int mtk_clk_mux_set_parent_setclr_lock(struct clk_hw *hw, u8 index)static int mtk_clk_mux_determine_rate (struct clk_hw *hw,struct clk_rate_request *req) { -struct mtk_clk_mux *mux =to_mtk_clk_mux (hw); - -return clk_mux_determine_rate_flags (hw, req, mux->data->flags); +return clk_mux_determine_rate_flags (hw, req,0 ); }const struct clk_ops mtk_mux_clr_set_upd_ops = {
drivers/clk/nxp/clk-lpc18xx-cgu.c +11 -9
@@ -370,23 +370,25 @@ static unsigned long lpc18xx_pll0_recalc_rate(struct clk_hw *hw,return 0 ; } -static long lpc18xx_pll0_round_rate (struct clk_hw *hw,unsigned long rate, -unsigned long *prate) +static int lpc18xx_pll0_determine_rate (struct clk_hw *hw, +struct clk_rate_request *req) {unsigned long m; -if (*prate < rate) { +if (req->best_parent_rate < req->rate) {pr_warn ("%s: pll dividers not supported\n" , __func__);return -EINVAL ; } - m =DIV_ROUND_UP_ULL (*prate, rate *2 ); -if (m <=0 && m >LPC18XX_PLL0_MSEL_MAX ) { -pr_warn ("%s: unable to support rate %lu\n" , __func__, rate); + m =DIV_ROUND_UP_ULL (req->best_parent_rate, req->rate *2 ); +if (m ==0 || m >LPC18XX_PLL0_MSEL_MAX ) { +pr_warn ("%s: unable to support rate %lu\n" , __func__, req->rate);return -EINVAL ; } -return 2 * *prate * m; + req->rate =2 * req->best_parent_rate * m; + +return 0 ; } static int lpc18xx_pll0_set_rate(struct clk_hw *hw, unsigned long rate,
@@ -402,7 +404,7 @@ static int lpc18xx_pll0_set_rate(struct clk_hw *hw, unsigned long rate, } m =DIV_ROUND_UP_ULL (parent_rate, rate *2 ); -if (m <=0 && m >LPC18XX_PLL0_MSEL_MAX ) { +if (m ==0 || m >LPC18XX_PLL0_MSEL_MAX ) {pr_warn ("%s: unable to support rate %lu\n" , __func__, rate);return -EINVAL ; }
@@ -443,7 +445,7 @@ static int lpc18xx_pll0_set_rate(struct clk_hw *hw, unsigned long rate,static const struct clk_ops lpc18xx_pll0_ops = { .recalc_rate = lpc18xx_pll0_recalc_rate, - .round_rate = lpc18xx_pll0_round_rate, + .determine_rate = lpc18xx_pll0_determine_rate, .set_rate = lpc18xx_pll0_set_rate, };
drivers/clk/qcom/common.c +2 -2
@@ -273,8 +273,8 @@ static int qcom_cc_icc_register(struct device *dev, icd[i].slave_id = desc->icc_hws[i].slave_id; hws = &desc->clks[desc->icc_hws[i].clk_id]->hw; icd[i].clk =devm_clk_hw_get_clk (dev, hws,"icc" ); -if (!icd[i].clk) -return dev_err_probe (dev, -ENOENT , +if (IS_ERR (icd[i].clk)) +return dev_err_probe (dev,PTR_ERR (icd[i].clk),"(%d) clock entry is null\n" , i); icd[i].name =clk_hw_get_name (hws); }
drivers/clk/qcom/tcsrcc-x1e80100.c +4 -0
@@ -29,6 +29,10 @@ static struct clk_branch tcsr_edp_clkref_en = { .enable_mask = BIT(0), .hw.init = &(const struct clk_init_data ) { .name ="tcsr_edp_clkref_en" , + .parent_data = &(const struct clk_parent_data ){ + .index =DT_BI_TCXO_PAD , + }, + .num_parents =1 , .ops = &clk_branch2_ops, }, },
drivers/clk/renesas/renesas-cpg-mssr.c +5 -2
@@ -1012,6 +1012,7 @@ static int __init cpg_mssr_reserved_init(struct cpg_mssr_priv *priv,of_for_each_phandle (&it, rc, node,"clocks" ,"#clock-cells" ,-1 ) {int idx; +unsigned int *new_ids;if (it.node != priv->np)continue ;
@@ -1022,11 +1023,13 @@ static int __init cpg_mssr_reserved_init(struct cpg_mssr_priv *priv,if (args[0 ] !=CPG_MOD )continue ; - ids =krealloc_array (ids, (num +1 ),sizeof (*ids),GFP_KERNEL ); -if (!ids) { + new_ids =krealloc_array (ids, (num +1 ),sizeof (*ids),GFP_KERNEL ); +if (!new_ids) {of_node_put (it.node); +kfree (ids);return -ENOMEM ; } + ids = new_ids;if (priv->reg_layout ==CLK_REG_LAYOUT_RZ_A ) idx =MOD_CLK_PACK_10 (args[1 ]);/* for DEF_MOD_STB() */
drivers/clk/tegra/clk-bpmp.c +1 -1
@@ -635,7 +635,7 @@ static int tegra_bpmp_register_clocks(struct tegra_bpmp *bpmp, bpmp->num_clocks = count; - bpmp->clocks =devm_kcalloc (bpmp->dev, count,sizeof (struct tegra_bpmp_clk ),GFP_KERNEL ); + bpmp->clocks =devm_kcalloc (bpmp->dev, count,sizeof (*bpmp->clocks),GFP_KERNEL );if (!bpmp->clocks)return -ENOMEM ;
drivers/clocksource/clps711x-timer.c +16 -7
@@ -78,24 +78,33 @@ static int __init clps711x_timer_init(struct device_node *np)unsigned int irq =irq_of_parse_and_map (np,0 );struct clk *clock =of_clk_get (np,0 );void __iomem *base =of_iomap (np,0 ); +int ret =0 ;if (!base)return -ENOMEM ; -if (!irq) -return -EINVAL ; -if (IS_ERR (clock)) -return PTR_ERR (clock); +if (!irq) { + ret = -EINVAL ; + goto unmap_io; + } +if (IS_ERR (clock)) { + ret =PTR_ERR (clock); + goto unmap_io; + }switch (of_alias_get_id (np,"timer" )) {case CLPS711X_CLKSRC_CLOCKSOURCE :clps711x_clksrc_init (clock, base);break ;case CLPS711X_CLKSRC_CLOCKEVENT : -return _clps711x_clkevt_init (clock, base, irq); + ret =_clps711x_clkevt_init (clock, base, irq); +break ;default : -return -EINVAL ; + ret = -EINVAL ; +break ; } -return 0 ; +unmap_io: +iounmap (base); +return ret; }TIMER_OF_DECLARE (clps711x,"cirrus,ep7209-timer" , clps711x_timer_init);
drivers/cpufreq/cpufreq-dt.c +1 -1
@@ -110,7 +110,7 @@ static int cpufreq_init(struct cpufreq_policy *policy) transition_latency =dev_pm_opp_get_max_transition_latency (cpu_dev);if (!transition_latency) - transition_latency =CPUFREQ_ETERNAL ; + transition_latency =CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS ;cpumask_copy (policy->cpus, priv->cpus); policy->driver_data = priv;
drivers/cpufreq/imx6q-cpufreq.c +1 -1
@@ -443,7 +443,7 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev) }if (of_property_read_u32 (np,"clock-latency" , &transition_latency)) - transition_latency =CPUFREQ_ETERNAL ; + transition_latency =CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS ;/* * Calculate the ramp time for max voltage change in the
drivers/cpufreq/intel_pstate.c +5 -3
@@ -1582,10 +1582,10 @@ static void update_qos_request(enum freq_qos_req_type type)continue ; req = policy->driver_data; -cpufreq_cpu_put (policy); - -if (!req) +if (!req) { +cpufreq_cpu_put (policy);continue ; + }if (hwp_active)intel_pstate_get_hwp_cap (cpu);
@@ -1601,6 +1601,8 @@ static void update_qos_request(enum freq_qos_req_type type)if (freq_qos_update_request (req, freq) <0 )pr_warn ("Failed to update freq constraint: CPU%d\n" , i); + +cpufreq_cpu_put (policy); } }
drivers/cpufreq/mediatek-cpufreq-hw.c +1 -1
@@ -238,7 +238,7 @@ static int mtk_cpufreq_hw_cpu_init(struct cpufreq_policy *policy) latency =readl_relaxed (data->reg_bases[REG_FREQ_LATENCY ]) *1000 ;if (!latency) - latency =CPUFREQ_ETERNAL ; + latency =CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS ; policy->cpuinfo.transition_latency = latency; policy->fast_switch_possible = true;
drivers/cpufreq/scmi-cpufreq.c +1 -1
@@ -280,7 +280,7 @@ static int scmi_cpufreq_init(struct cpufreq_policy *policy) latency = perf_ops->transition_latency_get (ph, domain);if (!latency) - latency =CPUFREQ_ETERNAL ; + latency =CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS ; policy->cpuinfo.transition_latency = latency;
drivers/cpufreq/scpi-cpufreq.c +1 -1
@@ -157,7 +157,7 @@ static int scpi_cpufreq_init(struct cpufreq_policy *policy) latency = scpi_ops->get_transition_latency (cpu_dev);if (!latency) - latency =CPUFREQ_ETERNAL ; + latency =CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS ; policy->cpuinfo.transition_latency = latency;
drivers/cpufreq/spear-cpufreq.c +1 -1
@@ -183,7 +183,7 @@ static int spear_cpufreq_probe(struct platform_device *pdev)if (of_property_read_u32 (np,"clock-latency" , &spear_cpufreq.transition_latency)) - spear_cpufreq.transition_latency =CPUFREQ_ETERNAL ; + spear_cpufreq.transition_latency =CPUFREQ_DEFAULT_TRANSITION_LATENCY_NS ; cnt =of_property_count_u32_elems (np,"cpufreq_tbl" );if (cnt <=0 ) {
drivers/cpufreq/tegra186-cpufreq.c +6 -2
@@ -86,10 +86,14 @@ static int tegra186_cpufreq_set_target(struct cpufreq_policy *policy, {struct tegra186_cpufreq_data *data =cpufreq_get_driver_data ();struct cpufreq_frequency_table *tbl = policy->freq_table + index; -unsigned int edvd_offset = data->cpus[policy->cpu].edvd_offset; +unsigned int edvd_offset;u32 edvd_val = tbl->driver_data; +u32 cpu; -writel (edvd_val, data->regs + edvd_offset); +for_each_cpu (cpu, policy->cpus) { + edvd_offset = data->cpus[cpu].edvd_offset; +writel (edvd_val, data->regs + edvd_offset); + }return 0 ; }
drivers/crypto/aspeed/aspeed-hace-crypto.c +1 -1
@@ -346,7 +346,7 @@ static int aspeed_sk_start_sg(struct aspeed_hace_dev *hace_dev) }else {dma_unmap_sg (hace_dev->dev, req->dst, rctx->dst_nents, -DMA_TO_DEVICE ); +DMA_FROM_DEVICE );dma_unmap_sg (hace_dev->dev, req->src, rctx->src_nents,DMA_TO_DEVICE ); }
drivers/crypto/atmel-tdes.c +1 -1
@@ -512,7 +512,7 @@ static int atmel_tdes_crypt_start(struct atmel_tdes_dev *dd)if (err && (dd->flags &TDES_FLAGS_FAST )) {dma_unmap_sg (dd->dev, dd->in_sg,1 ,DMA_TO_DEVICE ); -dma_unmap_sg (dd->dev, dd->out_sg,1 ,DMA_TO_DEVICE ); +dma_unmap_sg (dd->dev, dd->out_sg,1 ,DMA_FROM_DEVICE ); }return err;
drivers/crypto/rockchip/rk3288_crypto_ahash.c +1 -1
@@ -252,7 +252,7 @@ static void rk_hash_unprepare(struct crypto_engine *engine, void *breq)struct rk_ahash_rctx *rctx =ahash_request_ctx (areq);struct rk_crypto_info *rkc = rctx->dev; -dma_unmap_sg (rkc->dev, areq->src, rctx->nrsg,DMA_TO_DEVICE ); +dma_unmap_sg (rkc->dev, areq->src,sg_nents (areq->src),DMA_TO_DEVICE ); }static int rk_hash_run (struct crypto_engine *engine,void *breq)
drivers/firmware/meson/meson_sm.c +6 -1
@@ -232,11 +232,16 @@ EXPORT_SYMBOL(meson_sm_call_write);struct meson_sm_firmware *meson_sm_get (struct device_node *sm_node) {struct platform_device *pdev =of_find_device_by_node (sm_node); +struct meson_sm_firmware *fw;if (!pdev)return NULL ; -return platform_get_drvdata (pdev); + fw =platform_get_drvdata (pdev); + +put_device (&pdev->dev); + +return fw; }EXPORT_SYMBOL_GPL (meson_sm_get);
drivers/gpio/gpio-wcd934x.c +1 -1
@@ -102,7 +102,7 @@ static int wcd_gpio_probe(struct platform_device *pdev) chip->base =-1 ; chip->ngpio =WCD934X_NPINS ; chip->label =dev_name (dev); - chip->can_sleep = false; + chip->can_sleep = true;return devm_gpiochip_add_data (dev, chip, data); }
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -0
@@ -2027,6 +2027,10 @@ static int amdgpu_dm_init(struct amdgpu_device *adev) init_data.flags.disable_ips_in_vpb =0 ; +/* DCN35 and above supports dynamic DTBCLK switch */ +if (amdgpu_ip_version (adev,DCE_HWIP ,0 ) >=IP_VERSION (3 ,5 ,0 )) + init_data.flags.allow_0_dtb_clk = true; +/* Enable DWB for tested platforms only */ if (amdgpu_ip_version (adev,DCE_HWIP ,0 ) >=IP_VERSION (3 ,0 ,0 )) init_data.num_virtual_links =1 ;
drivers/gpu/drm/amd/display/dc/dce/dce_transform.c +13 -8
@@ -154,10 +154,13 @@ static bool dce60_setup_scaling_configuration(REG_SET (SCL_BYPASS_CONTROL ,0 ,SCL_BYPASS_MODE ,0 );if (data->taps.h_taps + data->taps.v_taps <=2 ) { -/* Set bypass */ - -/* DCE6 has no SCL_MODE register, skip scale mode programming */ +/* Disable scaler functionality */ +REG_WRITE (SCL_SCALER_ENABLE ,0 ); +/* Clear registers that can cause glitches even when the scaler is off */ +REG_WRITE (SCL_TAP_CONTROL ,0 ); +REG_WRITE (SCL_AUTOMATIC_MODE_CONTROL ,0 ); +REG_WRITE (SCL_F_SHARP_CONTROL ,0 );return false; }
@@ -165,7 +168,7 @@ static bool dce60_setup_scaling_configuration(SCL_H_NUM_OF_TAPS , data->taps.h_taps -1 , SCL_V_NUM_OF_TAPS, data->taps.v_taps - 1); -/* DCE6 has no SCL_MODE register, skip scale mode programming */ +REG_WRITE (SCL_SCALER_ENABLE ,1 );/* DCE6 has no SCL_BOUNDARY_MODE bit, skip replace out of bound pixels */
@@ -502,6 +505,8 @@ static void dce60_transform_set_scaler(REG_SET (DC_LB_MEM_SIZE ,0 ,DC_LB_MEM_SIZE , xfm_dce->lb_memory_size); +REG_WRITE (SCL_UPDATE ,0x00010000 ); +/* Clear SCL_F_SHARP_CONTROL value to 0 */ REG_WRITE (SCL_F_SHARP_CONTROL ,0 );
@@ -527,8 +532,7 @@ static void dce60_transform_set_scaler(if (coeffs_v != xfm_dce->filter_v || coeffs_h != xfm_dce->filter_h) {/* 4. Program vertical filters */ if (xfm_dce->filter_v ==NULL ) -REG_SET (SCL_VERT_FILTER_CONTROL ,0 , -SCL_V_2TAP_HARDCODE_COEF_EN ,0 ); +REG_WRITE (SCL_VERT_FILTER_CONTROL ,0 ); program_multi_taps_filter( xfm_dce, data->taps.v_taps,
@@ -542,8 +546,7 @@ static void dce60_transform_set_scaler(/* 5. Program horizontal filters */ if (xfm_dce->filter_h ==NULL ) -REG_SET (SCL_HORZ_FILTER_CONTROL ,0 , -SCL_H_2TAP_HARDCODE_COEF_EN ,0 ); +REG_WRITE (SCL_HORZ_FILTER_CONTROL ,0 ); program_multi_taps_filter( xfm_dce, data->taps.h_taps,
@@ -566,6 +569,8 @@ static void dce60_transform_set_scaler(/* DCE6 has no SCL_COEF_UPDATE_COMPLETE bit to flip to new coefficient memory */ /* DCE6 DATA_FORMAT register does not support ALPHA_EN */ + + REG_WRITE(SCL_UPDATE, 0); }#endif
drivers/gpu/drm/amd/display/dc/dce/dce_transform.h +4 -0
@@ -155,6 +155,9 @@SRI (SCL_COEF_RAM_TAP_DATA ,SCL , id), \SRI (VIEWPORT_START ,SCL , id), \SRI (VIEWPORT_SIZE ,SCL , id), \ +SRI (SCL_SCALER_ENABLE ,SCL , id), \ +SRI (SCL_HORZ_FILTER_INIT_RGB_LUMA ,SCL , id), \ +SRI (SCL_HORZ_FILTER_INIT_CHROMA ,SCL , id), \SRI (SCL_HORZ_FILTER_SCALE_RATIO ,SCL , id), \SRI (SCL_VERT_FILTER_SCALE_RATIO ,SCL , id), \ SRI(SCL_VERT_FILTER_INIT, SCL, id), \
@@ -590,6 +593,7 @@ struct dce_transform_registers {uint32_t SCL_VERT_FILTER_SCALE_RATIO ;uint32_t SCL_HORZ_FILTER_INIT ;#if defined(CONFIG_DRM_AMD_DC_SI ) +uint32_t SCL_SCALER_ENABLE ;uint32_t SCL_HORZ_FILTER_INIT_RGB_LUMA ;uint32_t SCL_HORZ_FILTER_INIT_CHROMA ;#endif
drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_d.h +7 -0
@@ -4115,6 +4115,7 @@#define mmSCL0_SCL_COEF_RAM_CONFLICT_STATUS 0x1B55#define mmSCL0_SCL_COEF_RAM_SELECT 0x1B40#define mmSCL0_SCL_COEF_RAM_TAP_DATA 0x1B41 +#define mmSCL0_SCL_SCALER_ENABLE 0x1B42#define mmSCL0_SCL_CONTROL 0x1B44#define mmSCL0_SCL_DEBUG 0x1B6A#define mmSCL0_SCL_DEBUG2 0x1B69
@@ -4144,6 +4145,7 @@#define mmSCL1_SCL_COEF_RAM_CONFLICT_STATUS 0x1E55#define mmSCL1_SCL_COEF_RAM_SELECT 0x1E40#define mmSCL1_SCL_COEF_RAM_TAP_DATA 0x1E41 +#define mmSCL1_SCL_SCALER_ENABLE 0x1E42#define mmSCL1_SCL_CONTROL 0x1E44#define mmSCL1_SCL_DEBUG 0x1E6A#define mmSCL1_SCL_DEBUG2 0x1E69
@@ -4173,6 +4175,7 @@#define mmSCL2_SCL_COEF_RAM_CONFLICT_STATUS 0x4155#define mmSCL2_SCL_COEF_RAM_SELECT 0x4140#define mmSCL2_SCL_COEF_RAM_TAP_DATA 0x4141 +#define mmSCL2_SCL_SCALER_ENABLE 0x4142#define mmSCL2_SCL_CONTROL 0x4144#define mmSCL2_SCL_DEBUG 0x416A#define mmSCL2_SCL_DEBUG2 0x4169
@@ -4202,6 +4205,7 @@#define mmSCL3_SCL_COEF_RAM_CONFLICT_STATUS 0x4455#define mmSCL3_SCL_COEF_RAM_SELECT 0x4440#define mmSCL3_SCL_COEF_RAM_TAP_DATA 0x4441 +#define mmSCL3_SCL_SCALER_ENABLE 0x4442#define mmSCL3_SCL_CONTROL 0x4444#define mmSCL3_SCL_DEBUG 0x446A#define mmSCL3_SCL_DEBUG2 0x4469
@@ -4231,6 +4235,7 @@#define mmSCL4_SCL_COEF_RAM_CONFLICT_STATUS 0x4755#define mmSCL4_SCL_COEF_RAM_SELECT 0x4740#define mmSCL4_SCL_COEF_RAM_TAP_DATA 0x4741 +#define mmSCL4_SCL_SCALER_ENABLE 0x4742#define mmSCL4_SCL_CONTROL 0x4744#define mmSCL4_SCL_DEBUG 0x476A#define mmSCL4_SCL_DEBUG2 0x4769
@@ -4260,6 +4265,7 @@#define mmSCL5_SCL_COEF_RAM_CONFLICT_STATUS 0x4A55#define mmSCL5_SCL_COEF_RAM_SELECT 0x4A40#define mmSCL5_SCL_COEF_RAM_TAP_DATA 0x4A41 +#define mmSCL5_SCL_SCALER_ENABLE 0x4A42#define mmSCL5_SCL_CONTROL 0x4A44#define mmSCL5_SCL_DEBUG 0x4A6A#define mmSCL5_SCL_DEBUG2 0x4A69
@@ -4287,6 +4293,7 @@#define mmSCL_COEF_RAM_CONFLICT_STATUS 0x1B55#define mmSCL_COEF_RAM_SELECT 0x1B40#define mmSCL_COEF_RAM_TAP_DATA 0x1B41 +#define mmSCL_SCALER_ENABLE 0x1B42#define mmSCL_CONTROL 0x1B44#define mmSCL_DEBUG 0x1B6A#define mmSCL_DEBUG2 0x1B69
drivers/gpu/drm/amd/include/asic_reg/dce/dce_6_0_sh_mask.h +2 -0
@@ -8648,6 +8648,8 @@#define REGAMMA_LUT_INDEX__REGAMMA_LUT_INDEX__SHIFT 0x00000000#define REGAMMA_LUT_WRITE_EN_MASK__REGAMMA_LUT_WRITE_EN_MASK_MASK 0x00000007L#define REGAMMA_LUT_WRITE_EN_MASK__REGAMMA_LUT_WRITE_EN_MASK__SHIFT 0x00000000 +#define SCL_SCALER_ENABLE__SCL_SCALE_EN_MASK 0x00000001L +#define SCL_SCALER_ENABLE__SCL_SCALE_EN__SHIFT 0x00000000#define SCL_ALU_CONTROL__SCL_ALU_DISABLE_MASK 0x00000001L#define SCL_ALU_CONTROL__SCL_ALU_DISABLE__SHIFT 0x00000000#define SCL_BYPASS_CONTROL__SCL_BYPASS_MODE_MASK 0x00000003L
drivers/gpu/drm/nouveau/nouveau_bo.c +1 -1
@@ -852,7 +852,7 @@ nouveau_bo_move_prep(struct nouveau_drm *drm, struct ttm_buffer_object *bo,nvif_vmm_put (vmm, &old_mem->vma[1 ]);nvif_vmm_put (vmm, &old_mem->vma[0 ]); } -return 0 ; +return ret; } static int
drivers/gpu/drm/panthor/panthor_drv.c +6 -5
@@ -1032,14 +1032,15 @@ static int panthor_ioctl_group_create(struct drm_device *ddev, void *data, ret =group_priority_permit (file, args->priority);if (ret) -return ret; + goto out; ret =panthor_group_create (pfile, args, queue_args); -if (ret >=0 ) { - args->group_handle = ret; - ret =0 ; - } +if (ret <0 ) + goto out; + args->group_handle = ret; + ret =0 ; +out:kvfree (queue_args);return ret; }
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c +4 -1
@@ -576,7 +576,10 @@ static int rcar_mipi_dsi_startup(struct rcar_mipi_dsi *dsi,udelay (10 );rcar_mipi_dsi_clr (dsi,CLOCKSET1 ,CLOCKSET1_UPDATEPLL ); - ppisetr =PPISETR_DLEN_3 |PPISETR_CLEN ; +rcar_mipi_dsi_clr (dsi,TXSETR ,TXSETR_LANECNT_MASK ); +rcar_mipi_dsi_set (dsi,TXSETR , dsi->lanes -1 ); + + ppisetr = ((BIT (dsi->lanes) -1 ) &PPISETR_DLEN_MASK ) |PPISETR_CLEN ;rcar_mipi_dsi_write (dsi,PPISETR , ppisetr);rcar_mipi_dsi_set (dsi,PHYSETUP ,PHYSETUP_SHUTDOWNZ );
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi_regs.h +4 -4
@@ -12,6 +12,9 @@#define LINKSR_LPBUSY (1 << 1)#define LINKSR_HSBUSY (1 << 0) +#define TXSETR 0x100 +#define TXSETR_LANECNT_MASK (0x3 << 0) +/* * Video Mode Register */
@@ -80,10 +83,7 @@* PHY-Protocol Interface (PPI) Registers */ #define PPISETR 0x700 -#define PPISETR_DLEN_0 (0x1 << 0) -#define PPISETR_DLEN_1 (0x3 << 0) -#define PPISETR_DLEN_2 (0x7 << 0) -#define PPISETR_DLEN_3 (0xf << 0) +#define PPISETR_DLEN_MASK (0xf << 0)#define PPISETR_CLEN (1 << 8)#define PPICLCR 0x710
drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c +12 -5
@@ -1515,6 +1515,7 @@ static int vmw_cmd_dma(struct vmw_private *dev_priv, SVGA3dCmdHeader *header) {struct vmw_bo *vmw_bo =NULL ; +struct vmw_resource *res;struct vmw_surface *srf =NULL ;VMW_DECLARE_CMD_VAR (*cmd, SVGA3dCmdSurfaceDMA);int ret;
@@ -1550,18 +1551,24 @@ static int vmw_cmd_dma(struct vmw_private *dev_priv, dirty = (cmd->body.transfer ==SVGA3D_WRITE_HOST_VRAM ) ?VMW_RES_DIRTY_SET :0 ; - ret =vmw_cmd_res_check (dev_priv, sw_context, vmw_res_surface, - dirty, user_surface_converter, - &cmd->body.host.sid,NULL ); + ret =vmw_cmd_res_check (dev_priv, sw_context, vmw_res_surface, dirty, + user_surface_converter, &cmd->body.host.sid, +NULL );if (unlikely (ret !=0 )) {if (unlikely (ret != -ERESTARTSYS ))VMW_DEBUG_USER ("could not find surface for DMA.\n" );return ret; } - srf =vmw_res_to_srf (sw_context->res_cache[vmw_res_surface].res); + res = sw_context->res_cache[vmw_res_surface].res; +if (!res) { +VMW_DEBUG_USER ("Invalid DMA surface.\n" ); +return -EINVAL ; + } -vmw_kms_cursor_snoop (srf, sw_context->fp->tfile, &vmw_bo->tbo, header); + srf =vmw_res_to_srf (res); +vmw_kms_cursor_snoop (srf, sw_context->fp->tfile, &vmw_bo->tbo, + header);return 0 ; }
drivers/gpu/drm/vmwgfx/vmwgfx_validation.c +4 -2
@@ -309,8 +309,10 @@ int vmw_validation_add_resource(struct vmw_validation_context *ctx,hash_add_rcu (ctx->sw_context->res_ht, &node->hash.head, node->hash.key); } node->res =vmw_resource_reference_unless_doomed (res); -if (!node->res) +if (!node->res) { +hash_del_rcu (&node->hash.head);return -ESRCH ; + } node->first_usage =1 ;if (!res->dev_priv->has_mob) {
@@ -637,7 +639,7 @@ void vmw_validation_drop_ht(struct vmw_validation_context *ctx)hash_del_rcu (&val->hash.head);list_for_each_entry (val, &ctx->resource_ctx_list, head) -hash_del_rcu (&entry->hash.head); +hash_del_rcu (&val->hash.head); ctx->sw_context =NULL ; }
drivers/gpu/drm/xe/xe_hw_engine_group.c +1 -5
@@ -237,17 +237,13 @@ static int xe_hw_engine_group_suspend_faulting_lr_jobs(struct xe_hw_engine_group err = q->ops->suspend_wait (q);if (err) - goto err_suspend; +return err; }if (need_resume)xe_hw_engine_group_resume_faulting_lr_jobs (group);return 0 ; - -err_suspend: -up_write (&group->mode_sem); -return err; }/**
drivers/gpu/drm/xe/xe_query.c +6 -9
@@ -277,8 +277,7 @@ static int query_mem_regions(struct xe_device *xe, mem_regions->mem_regions[0 ].instance =0 ; mem_regions->mem_regions[0 ].min_page_size =PAGE_SIZE ; mem_regions->mem_regions[0 ].total_size = man->size <<PAGE_SHIFT ; -if (perfmon_capable ()) - mem_regions->mem_regions[0 ].used =ttm_resource_manager_usage (man); + mem_regions->mem_regions[0 ].used =ttm_resource_manager_usage (man); mem_regions->num_mem_regions =1 ;for (i =XE_PL_VRAM0 ; i <=XE_PL_VRAM1 ; ++i) {
@@ -294,13 +293,11 @@ static int query_mem_regions(struct xe_device *xe, mem_regions->mem_regions[mem_regions->num_mem_regions].total_size = man->size; -if (perfmon_capable ()) { -xe_ttm_vram_get_used (man, - &mem_regions->mem_regions - [mem_regions->num_mem_regions].used, - &mem_regions->mem_regions - [mem_regions->num_mem_regions].cpu_visible_used); - } +xe_ttm_vram_get_used (man, + &mem_regions->mem_regions + [mem_regions->num_mem_regions].used, + &mem_regions->mem_regions + [mem_regions->num_mem_regions].cpu_visible_used); mem_regions->mem_regions[mem_regions->num_mem_regions].cpu_visible_size =xe_ttm_vram_get_cpu_visible_size (man);
drivers/iio/adc/pac1934.c +18 -2
@@ -88,6 +88,7 @@#define PAC1934_VPOWER_3_ADDR 0x19#define PAC1934_VPOWER_4_ADDR 0x1A#define PAC1934_REFRESH_V_REG_ADDR 0x1F +#define PAC1934_SLOW_REG_ADDR 0x20#define PAC1934_CTRL_STAT_REGS_ADDR 0x1C#define PAC1934_PID_REG_ADDR 0xFD#define PAC1934_MID_REG_ADDR 0xFE
@@ -1265,8 +1266,23 @@ static int pac1934_chip_configure(struct pac1934_chip_info *info)/* no SLOW triggered REFRESH, clear POR */ regs[PAC1934_SLOW_REG_OFF ] =0 ; - ret =i2c_smbus_write_block_data (client,PAC1934_CTRL_STAT_REGS_ADDR , -ARRAY_SIZE (regs), (u8 *)regs); +/* +* Write the three bytes sequentially, as the device does not support +* block write. +*/ + ret =i2c_smbus_write_byte_data (client,PAC1934_CTRL_STAT_REGS_ADDR , + regs[PAC1934_CHANNEL_DIS_REG_OFF ]); +if (ret) +return ret; + + ret =i2c_smbus_write_byte_data (client, +PAC1934_CTRL_STAT_REGS_ADDR +PAC1934_NEG_PWR_REG_OFF , + regs[PAC1934_NEG_PWR_REG_OFF ]); +if (ret) +return ret; + + ret =i2c_smbus_write_byte_data (client,PAC1934_SLOW_REG_ADDR , + regs[PAC1934_SLOW_REG_OFF ]);if (ret)return ret;
drivers/iio/adc/xilinx-ams.c +26 -21
48 lines not on this page · raw message
drivers/iio/imu/inv_icm42600/inv_icm42600_core.c +0 -4
Lines of this file are not shown. View the raw message.
drivers/media/cec/usb/extron-da-hd-4k-plus/Makefile +0 -6
Lines of this file are not shown. View the raw message.
drivers/media/platform/qcom/venus/firmware.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/media/platform/samsung/s5p-mfc/s5p_mfc_cmd_v6.c +13 -22
Lines of this file are not shown. View the raw message.
drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c +6 -3
Lines of this file are not shown. View the raw message.
drivers/media/test-drivers/vivid/vivid-cec.c +5 -7
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/freescale/fsl_pq_mdio.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_adapter.c +6 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx4/en_netdev.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mscc/ocelot_stats.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7925/usb.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/pci/controller/cadence/pci-j721e.c +25 -0
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pci-keystone.c +2 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-rcar-gen4.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-tegra194.c +28 -4
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-rcar-host.c +15 -25
Lines of this file are not shown. View the raw message.
drivers/pci/controller/pcie-xilinx-nwl.c +4 -3
Lines of this file are not shown. View the raw message.
drivers/pci/endpoint/functions/pci-epf-test.c +11 -8
Lines of this file are not shown. View the raw message.
drivers/pinctrl/samsung/pinctrl-samsung.h +0 -4
Lines of this file are not shown. View the raw message.
drivers/power/supply/max77976_charger.c +6 -6
Lines of this file are not shown. View the raw message.
drivers/scsi/sd.c +28 -22
50 lines not on this page · raw message
fs/eventpoll.c +26 -113
139 lines not on this page · raw message
fs/fsopen.c +38 -32
70 lines not on this page · raw message
fs/namespace.c +73 -35
108 lines not on this page · raw message
fs/nfsd/export.c +74 -22
96 lines not on this page · raw message
fs/smb/client/smb1ops.c +60 -2
62 lines not on this page · raw message
include/asm-generic/io.h +66 -32
98 lines not on this page · raw message
kernel/sched/deadline.c +49 -24
73 lines not on this page · raw message
net/core/page_pool.c +53 -23
76 lines not on this page · raw message
net/mptcp/pm_netlink.c +49 -1
50 lines not on this page · raw message
net/sunrpc/svc_xprt.c +29 -16
45 lines not on this page · raw message
net/xdp/xsk_queue.h +35 -10
45 lines not on this page · raw message
security/keys/trusted-keys/trusted_tpm1.c +4 -3
Lines of this file are not shown. View the raw message.
sound/soc/sof/ipc4-pcm.c +113 -25
138 lines not on this page · raw message
tools/perf/pmu-events/arch/arm64/ampere/ampereonex/metrics.json +5 -5
Lines of this file are not shown. View the raw message.
tools/perf/tests/shell/trace_btf_enum.sh +11 -0
Lines of this file are not shown. View the raw message.
tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +9 -9
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/madv_populate.c +2 -19
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/soft-dirty.c +4 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/mm/vm_util.c +77 -0
77 lines not on this page · raw message
tools/testing/selftests/net/mptcp/mptcp_join.sh +11 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/netfilter/nf_nat_edemux.sh +41 -17
58 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.