Linux 6.1.79
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.79 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/sysfs-class-net-statistics | 48 +- Documentation/arm64/silicon-errata.rst | 7 Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt | 4 Makefile | 8 arch/Kconfig | 1 arch/arc/include/asm/jump_label.h | 4 arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts | 2 arch/arm/include/asm/jump_label.h | 4 arch/arm64/boot/dts/qcom/apq8016-sbc.dts | 4 arch/arm64/boot/dts/qcom/msm8916.dtsi | 2 arch/arm64/boot/dts/qcom/sdm845.dtsi | 4 arch/arm64/boot/dts/qcom/sm8150.dtsi | 4 arch/arm64/include/asm/alternative-macros.h | 4 arch/arm64/include/asm/cputype.h | 4 arch/arm64/include/asm/jump_label.h | 4 arch/arm64/kernel/cpu_errata.c | 3 arch/arm64/kernel/vdso32/Makefile | 2 arch/csky/include/asm/jump_label.h | 4 arch/mips/include/asm/checksum.h | 3 arch/mips/include/asm/jump_label.h | 4 arch/parisc/Kconfig | 1 arch/parisc/include/asm/assembly.h | 1 arch/parisc/include/asm/extable.h | 64 ++ arch/parisc/include/asm/jump_label.h | 4 arch/parisc/include/asm/special_insns.h | 6 arch/parisc/include/asm/uaccess.h | 48 -- arch/parisc/kernel/drivers.c | 3 arch/parisc/kernel/unaligned.c | 44 - arch/parisc/mm/fault.c | 11 arch/powerpc/include/asm/bug.h | 2 arch/powerpc/include/asm/jump_label.h | 4 arch/powerpc/include/asm/thread_info.h | 2 arch/powerpc/include/asm/uaccess.h | 8 arch/powerpc/kernel/cpu_specs_e500mc.h | 3 arch/powerpc/kernel/interrupt_64.S | 4 arch/powerpc/kernel/irq_64.c | 2 arch/powerpc/mm/kasan/init_32.c | 1 arch/powerpc/platforms/pseries/lpar.c | 8 arch/riscv/include/asm/jump_label.h | 4 arch/s390/include/asm/jump_label.h | 4 arch/sparc/include/asm/jump_label.h | 4 arch/um/Makefile | 4 arch/um/include/asm/cpufeature.h | 2 arch/x86/Kconfig.cpu | 2 arch/x86/include/asm/cpufeature.h | 2 arch/x86/include/asm/jump_label.h | 6 arch/x86/include/asm/rmwcc.h | 2 arch/x86/include/asm/uaccess.h | 10 arch/x86/include/asm/virtext.h | 12 arch/x86/kernel/fpu/signal.c | 13 arch/x86/kvm/svm/svm_ops.h | 6 arch/x86/kvm/vmx/pmu_intel.c | 2 arch/x86/kvm/vmx/vmx.c | 8 arch/x86/kvm/vmx/vmx_ops.h | 6 arch/x86/mm/ident_map.c | 23 - arch/xtensa/include/asm/jump_label.h | 4 block/blk-mq.c | 9 drivers/android/binder.c | 10 drivers/base/core.c | 15 drivers/base/power/domain.c | 2 drivers/bus/moxtet.c | 7 drivers/crypto/ccp/sev-dev.c | 10 drivers/dma/ioat/dma.c | 12 drivers/firewire/core-device.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 9 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 drivers/gpu/drm/amd/display/dc/dml/Makefile | 6 drivers/gpu/drm/drm_prime.c | 2 drivers/gpu/drm/msm/msm_iommu.c | 32 + drivers/gpu/drm/nouveau/nouveau_svm.c | 2 drivers/gpu/drm/virtio/virtgpu_drv.c | 1 drivers/hid/i2c-hid/i2c-hid-of.c | 1 drivers/hid/wacom_sys.c | 63 +- drivers/hid/wacom_wac.c | 9 drivers/i2c/busses/Makefile | 6 drivers/i2c/busses/i2c-i801.c | 4 drivers/i2c/busses/i2c-pasemi-core.c | 5 drivers/i2c/busses/i2c-qcom-geni.c | 14 drivers/iio/accel/Kconfig | 2 drivers/iio/imu/bno055/Kconfig | 1 drivers/iio/industrialio-core.c | 5 drivers/iio/light/hid-sensor-als.c | 1 drivers/iio/magnetometer/rm3100-core.c | 10 drivers/infiniband/hw/irdma/verbs.c | 7 drivers/interconnect/qcom/sc8180x.c | 1 drivers/irqchip/irq-brcmstb-l2.c | 5 drivers/irqchip/irq-gic-v3-its.c | 22 drivers/irqchip/irq-loongson-eiointc.c | 2 drivers/md/dm-core.h | 2 drivers/md/dm-crypt.c | 37 - drivers/md/dm-ioctl.c | 3 drivers/md/dm-table.c | 9 drivers/md/dm-verity-target.c | 26 - drivers/md/dm-verity.h | 1 drivers/md/md.c | 7 drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c | 2 drivers/media/rc/bpf-lirc.c | 6 drivers/media/rc/ir_toy.c | 2 drivers/media/rc/lirc_dev.c | 5 drivers/media/rc/rc-core-priv.h | 2 drivers/misc/fastrpc.c | 2 drivers/mmc/core/slot-gpio.c | 6 drivers/mmc/host/sdhci-pci-o2micro.c | 30 + drivers/net/can/dev/netlink.c | 2 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 38 + drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c | 2 drivers/net/ethernet/microchip/lan966x/lan966x_lag.c | 9 drivers/net/ethernet/netronome/nfp/flower/conntrack.c | 24 - drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c | 2 drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c | 6 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 3 drivers/net/ethernet/ti/cpsw.c | 2 drivers/net/ethernet/ti/cpsw_new.c | 3 drivers/net/hyperv/netvsc.c | 5 drivers/net/hyperv/netvsc_drv.c | 82 ++- drivers/net/wireless/intel/iwlwifi/fw/acpi.c | 15 drivers/net/wireless/marvell/mwifiex/Kconfig | 5 drivers/net/wireless/marvell/mwifiex/sdio.c | 46 +- drivers/net/wireless/marvell/mwifiex/sdio.h | 3 drivers/net/xen-netback/netback.c | 84 +-- drivers/of/property.c | 18 drivers/of/unittest.c | 12 drivers/s390/net/qeth_l3_main.c | 9 drivers/scsi/fcoe/fcoe_ctlr.c | 20 drivers/scsi/storvsc_drv.c | 12 drivers/spi/spi-ppc4xx.c | 5 drivers/staging/iio/impedance-analyzer/ad5933.c | 2 drivers/tty/serial/max310x.c | 53 +- drivers/usb/common/ulpi.c | 2 drivers/usb/core/hub.c | 30 - drivers/usb/dwc3/gadget.c | 6 drivers/usb/gadget/function/f_mass_storage.c | 20 drivers/usb/typec/ucsi/ucsi.c | 2 drivers/usb/typec/ucsi/ucsi_acpi.c | 17 fs/btrfs/block-group.c | 49 ++ fs/btrfs/block-group.h | 7 fs/btrfs/delalloc-space.c | 29 - fs/btrfs/disk-io.c | 13 fs/btrfs/inode.c | 26 + fs/btrfs/ioctl.c | 5 fs/btrfs/qgroup.c | 14 fs/btrfs/send.c | 2 fs/ceph/caps.c | 3 fs/ext4/mballoc.c | 39 - fs/ext4/move_extent.c | 6 fs/hugetlbfs/inode.c | 19 fs/namespace.c | 11 fs/nfsd/nfs4state.c | 37 - fs/nilfs2/dat.c | 27 - fs/nilfs2/file.c | 8 fs/nilfs2/recovery.c | 7 fs/nilfs2/segment.c | 8 fs/ntfs3/fsntfs.c | 16 fs/ntfs3/index.c | 3 fs/proc/array.c | 10 fs/smb/client/cached_dir.c | 8 fs/smb/client/smb2ops.c | 2 fs/smb/client/smb2pdu.c | 93 ++-- fs/smb/client/smb2proto.h | 12 fs/smb/server/smb2pdu.c | 8 fs/zonefs/file.c | 42 + fs/zonefs/super.c | 66 +- include/asm-generic/vmlinux.lds.h | 6 include/linux/bpf.h | 12 include/linux/cleanup.h | 171 +++++++ include/linux/compiler-clang.h | 9 include/linux/compiler-gcc.h | 20 include/linux/compiler_attributes.h | 6 include/linux/compiler_types.h | 11 include/linux/device.h | 7 include/linux/file.h | 6 include/linux/iio/adc/ad_sigma_delta.h | 4 include/linux/iio/common/st_sensors.h | 4 include/linux/iio/imu/adis.h | 3 include/linux/init.h | 3 include/linux/irqflags.h | 7 include/linux/mmc/sdio_ids.h | 1 include/linux/mutex.h | 4 include/linux/netfilter/ipset/ip_set.h | 4 include/linux/percpu.h | 4 include/linux/preempt.h | 5 include/linux/rcupdate.h | 3 include/linux/rwsem.h | 8 include/linux/sched/task.h | 2 include/linux/slab.h | 3 include/linux/spinlock.h | 31 + include/linux/srcu.h | 5 include/net/tls.h | 5 init/Kconfig | 9 io_uring/net.c | 5 kernel/bpf/helpers.c | 67 +- kernel/bpf/verifier.c | 3 kernel/sched/membarrier.c | 6 kernel/time/hrtimer.c | 14 kernel/trace/bpf_trace.c | 56 +- kernel/trace/ring_buffer.c | 2 kernel/trace/trace.c | 78 +-- kernel/trace/trace_events_trigger.c | 6 lib/mpi/ec.c | 3 mm/page-writeback.c | 2 mm/userfaultfd.c | 15 net/can/j1939/j1939-priv.h | 3 net/can/j1939/main.c | 2 net/can/j1939/socket.c | 46 +- net/core/skbuff.c | 3 net/hsr/hsr_device.c | 4 net/mac80211/tx.c | 5 net/mptcp/pm_userspace.c | 13 net/mptcp/protocol.c | 24 - net/mptcp/protocol.h | 4 net/netfilter/ipset/ip_set_bitmap_gen.h | 14 net/netfilter/ipset/ip_set_core.c | 39 + net/netfilter/ipset/ip_set_hash_gen.h | 19 net/netfilter/ipset/ip_set_list_set.c | 13 net/netfilter/nft_set_pipapo_avx2.c | 2 net/nfc/nci/core.c | 4 net/openvswitch/flow_netlink.c | 49 +- net/tls/tls.h | 1 net/tls/tls_main.c | 2 net/tls/tls_sw.c | 226 ++++++---- net/wireless/core.c | 1 net/xfrm/xfrm_input.c | 77 +-- net/xfrm/xfrm_output.c | 33 - samples/bpf/asm_goto_workaround.h | 8 scripts/Makefile.modpost | 1 scripts/checkpatch.pl | 2 scripts/link-vmlinux.sh | 9 scripts/mod/modpost.c | 43 + scripts/mod/sumversion.c | 7 security/apparmor/include/lib.h | 6 security/security.c | 14 sound/pci/hda/patch_conexant.c | 18 sound/pci/hda/patch_cs8409.c | 1 sound/pci/hda/patch_realtek.c | 11 sound/soc/amd/yc/acp6x-mach.c | 14 sound/soc/codecs/rt5645.c | 1 sound/soc/codecs/wcd938x.c | 2 tools/arch/x86/include/asm/rmwcc.h | 2 tools/include/linux/compiler_types.h | 4 tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh | 56 ++ tools/testing/selftests/kvm/dirty_log_test.c | 77 +-- tools/testing/selftests/net/mptcp/config | 3 tools/testing/selftests/net/mptcp/settings | 2 tools/testing/selftests/vm/ksm_tests.c | 2 tools/testing/selftests/vm/va_128TBswitch.sh | 6 tools/tracing/rtla/Makefile | 7 tools/tracing/rtla/src/osnoise_hist.c | 9 tools/tracing/rtla/src/osnoise_top.c | 6 tools/tracing/rtla/src/timerlat_hist.c | 9 tools/tracing/rtla/src/timerlat_top.c | 6 tools/tracing/rtla/src/utils.c | 12 tools/tracing/rtla/src/utils.h | 2 254 files changed, 2393 insertions(+), 1127 deletions(-)
Aaron Conole (1):
net: openvswitch: limit the number of recursions from action sets
Aleksander Mazur (1):
x86/Kconfig: Transmeta Crusoe is CPU family 5, not 6
Alexander Stein (1):
mmc: slot-gpio: Allow non-sleeping GPIO ro
Alexandra Winter (1):
s390/qeth: Fix potential loss of L3-IP@ in case of network issues
Alexey Khoroshilov (1):
ASoC: rt5645: Fix deadlock in rt5645_jack_detect_work()
Andrei Vagin (1):
x86/fpu: Stop relying on userspace for info to fault in xsave buffer
Andrejs Cainikovs (1):
ARM: dts: imx6q-apalis: add can power-up delay on ixora board
Andy Chi (1):
ALSA: hda/realtek: fix mute/micmute LEDs for HP ZBook Power
Arnd Bergmann (2):
nouveau/svm: fix kvcalloc() argument order
i2c: pasemi: split driver into two separate modules
Audra Mitchell (1):
selftests/mm: Update va_high_addr_switch.sh to check CPU for la57 flag
Baokun Li (2):
ext4: fix double-free of blocks due to wrong extents moved_len
ext4: avoid bb_free and bb_fragments inconsistency in mb_free_blocks()
Bibo Mao (1):
irqchip/loongson-eiointc: Use correct struct type in eiointc_domain_alloc()
Boris Burkov (2):
btrfs: forbid creating subvol qgroups
btrfs: forbid deleting live subvol qgroup
Breno Leitao (1):
net: sysfs: Fix /sys/class/net/<iface> path for statistics
Carlos Llamas (1):
binder: signal epoll threads of self-work
Christian A. Ehrhardt (3):
of: unittest: Fix compile in the non-dynamic case
usb: ucsi: Add missing ppm_lock
usb: ucsi_acpi: Fix command completion handling
Christian Brauner (1):
fs: relax mount_setattr() permission checks
Damien Le Moal (2):
zonefs: Improve error handling
block: fix partial zone append completion handling in req_bio_endio()
Dan Carpenter (3):
wifi: iwlwifi: Fix some error codes
wifi: iwlwifi: uninitialized variable in iwl_acpi_get_ppag_table()
cifs: fix underflow in parse_server_interfaces()
Daniel Basilio (1):
nfp: use correct macro for LengthSelect in BAR config
Daniel Bristot de Oliveira (3):
tools/rtla: Remove unused sched_getattr() function tools/rtla: Fix uninitialized bucket/data->bucket_size warning tools/rtla: Fix Makefile compiler options for clang
Daniel de Villiers (1):
nfp: flower: prevent re-adding mac index for bonded port
David Engraf (1):
powerpc/cputable: Add missing PPC_FEATURE_BOOKE on PPC64 Book-E
David Howells (1):
tls/sw: Use splice_eof() to flush
David Lin (2):
wifi: mwifiex: add extra delay for firmware ready
wifi: mwifiex: fix uninitialized firmware_stat
David Schiller (1):
staging: iio: ad5933: fix type mismatch regression
David Senoner (1):
ALSA: hda/realtek: Fix the external mic not being recognised for Acer Swift 1 SF114-32
David Sterba (1):
btrfs: send: return EOPNOTSUPP on unknown flags
Davidlohr Bueso (1):
hrtimer: Ignore slack time for RT tasks in schedule_hrtimeout_range()
Dinghao Liu (1):
iio: core: fix memleak in iio_device_register_sysfs
Doug Berger (1):
irqchip/irq-brcmstb-l2: Add write memory barrier before exit
Easwar Hariharan (1):
arm64: Subscribe Microsoft Azure Cobalt 100 to ARM Neoverse N2 errata
Edson Juliano Drosdeck (1):
ALSA: hda/realtek: Enable headset mic on Vaio VJFE-ADL
Ekansh Gupta (1):
misc: fastrpc: Mark all sessions as invalid in cb_remove
Eniac Zhang (1):
ALSA: hda/realtek: fix mute/micmute LED For HP mt645
Eric Dumazet (1):
net: prevent mss overflow in skb_segment()
Esben Haabendal (1):
net: stmmac: do not clear TBS enable bit on link up/down
Fedor Pchelkin (2):
nfc: nci: free rx_data_reassembly skb on NCI device cleanup
ksmbd: free aux buffer if ksmbd_iov_pin_rsp_read fails
Filipe Manana (4):
btrfs: add and use helper to check if block group is used
btrfs: do not delete unused block group if it may be used soon
btrfs: don't reserve space for checksums when writing to nocow files
btrfs: reject encoded write if inode has nodatasum flag set
Fred Ai (1):
mmc: sdhci-pci-o2micro: Fix a warm reboot issue that disk can't be detected by BIOS
Gavin Shan (1):
KVM: selftests: Clear dirty ring states between two modes in dirty_log_test
Geliang Tang (1):
mptcp: check addrs list in userspace_pm_get_local_id
Greg Kroah-Hartman (1):
Linux 6.1.79
Guenter Roeck (1):
MIPS: Add 'memory' clobber to csum_ipv6_magic() inline assembler
Helge Deller (2):
parisc: Prevent hung tasks when printing inventory on serial console
parisc: Fix random data corruption from exception handler
Herbert Xu (4):
xfrm: Remove inner/outer modes from output path
xfrm: Remove inner/outer modes from input path
xfrm: Use xfrm_state selector for BEET input
xfrm: Silence warnings triggerable by bad packets
Horatiu Vultur (1):
lan966x: Fix crash when adding interface under a lag
Hugo Villeneuve (4):
serial: max310x: set default value when reading clock ready bit
serial: max310x: improve crystal stable clock detection
serial: max310x: fail probe if clock crystal is unstable
serial: max310x: prevent infinite while() loop in port startupHui Zhou (1):
nfp: flower: fix hardware offload for the transfer layer port
Ido Schimmel (1):
mlxsw: spectrum_acl_tcam: Fix stack corruption
Ivan Vecera (2):
i40e: Do not allow untrusted VF to remove administratively set MAC
i40e: Fix waiting for queues of all VSIs to be disabled
Jakub Kicinski (3):
net: tls: factor out tls_*crypt_async_wait()
tls: fix race between async notify and socket close
net: tls: fix returned read length with async decrypt
Jan Beulich (1):
xen-netback: properly sync TX responses
Jann Horn (1):
tls: fix NULL deref on tls_sw_splice_eof() with empty record
Jason Gerecke (1):
HID: wacom: Do not register input devices until after hid_hw_start
Jean Delvare (1):
i2c: i801: Fix block process call transactions
Jens Axboe (1):
io_uring/net: fix multishot accept overflow handling
Jiangfeng Xiao (1):
powerpc/kasan: Fix addr error caused by page alignment
Jiri Olsa (3):
bpf: Add struct for bin_args arg in bpf_bprintf_prepare
bpf: Do cleanup in bpf_bprintf_cleanup only when needed
bpf: Remove trace_printk_lock
Johan Hovold (3):
HID: i2c-hid-of: fix NULL-deref on failed power up
arm64: dts: qcom: sdm845: fix USB SS wakeup
arm64: dts: qcom: sm8150: fix USB SS wakeup
Johannes Berg (2):
wifi: cfg80211: fix wiphy delayed work queueing
wifi: mac80211: reload info pointer in ieee80211_tx_dequeue()
John Kacur (1):
tools/rtla: Exit with EXIT_SUCCESS when help is invoked
Josef Bacik (1):
btrfs: don't drop extent_map for free space inode on write error
José Relvas (1):
ALSA: hda/realtek: Apply headset jack quirk for non-bass alc287 thinkpads
Jozsef Kadlecsik (2):
netfilter: ipset: fix performance regression in swap operation
netfilter: ipset: Missing gc cancellations fixed
Junxiao Bi (1):
md: bypass block throttle for superblock update
Kim Phillips (1):
crypto: ccp - Fix null pointer dereference in __sev_platform_shutdown_locked
Konrad Dybcio (2):
interconnect: qcom: sc8180x: Mark CO0 BCM keepalive
pmdomain: core: Move the unused cleanup to a _sync initcall
Konstantin Komarov (1):
fs/ntfs3: Add null pointer checks
Krzysztof Kozlowski (1):
ASoC: codecs: wcd938x: handle deferred probe
Lee Duncan (1):
scsi: Revert "scsi: fcoe: Fix potential deadlock on &fip->ctlr_lock"
Linus Torvalds (3):
work around gcc bugs with 'asm goto' with outputs update workarounds for gcc "asm goto" issue sched/membarrier: reduce the ability to hammer on sys_membarrier
Lokesh Gidra (1):
userfaultfd: fix mmap_changing checking in mfill_atomic_hugetlb
Luka Guzenko (1):
ALSA: hda/realtek: Enable Mute LED on HP Laptop 14-fq0xxx
Lukas Wunner (1):
wifi: mwifiex: Support SD8978 chipset
Marc Zyngier (1):
irqchip/gic-v3-its: Fix GICv4.1 VPE affinity update
Mario Limonciello (3):
Revert "drm/amd: flush any delayed gfxoff on suspend entry"
iio: accel: bma400: Fix a compilation problem
ASoC: amd: yc: Add DMI quirk for Lenovo Ideapad Pro 5 16ARP8
Masahiro Yamada (2):
modpost: propagate W=1 build option to modpost linux/init: remove __memexit* annotations
Masami Hiramatsu (Google) (1):
tracing/trigger: Fix to return error if failed to alloc snapshot
Matthieu Baerts (NGI0) (4):
selftests: mptcp: add missing kconfig for NF Filter
selftests: mptcp: add missing kconfig for NF Filter in v6
selftests: mptcp: add missing kconfig for NF Mangle
selftests: mptcp: increase timeout to 30 min
Maxime Jayat (1):
can: netlink: Fix TDCO calculation using the old data bittiming
Michael Ellerman (1):
powerpc/kasan: Limit KASAN thread size increase to 32KB
Michael Kelley (1):
scsi: storvsc: Fix ring buffer size calculation
Mike Marciniszyn (1):
RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
Mikulas Patocka (2):
dm-crypt, dm-verity: disable tasklets
dm: limit the number of targets and parameter size area
Mingwei Zhang (1):
KVM: x86/pmu: Fix type length error when reading pmu->fixed_ctr_ctrl
Nathan Chancellor (5):
kbuild: Fix changing ELF file type for output of gen_btf for big endian
modpost: Include '.text.*' in TEXT_SECTIONS
um: Fix adding '-no-pie' for clang
modpost: Add '.ltext' and '.ltext.*' to TEXT_SECTIONS drm/amd/display: Increase frame-larger-than for all display_mode_vba files
Naveen N Rao (1):
powerpc/64: Set task pt_regs->link to the LR value on scv entry
NeilBrown (2):
nfsd: fix RELEASE_LOCKOWNER
nfsd: don't take fi_lock in nfsd_break_deleg_cb()
Nikita Zhandarovich (1):
net: hsr: remove WARN_ONCE() in send_hsr_supervision_frame()
Nuno Sa (4):
iio: commom: st_sensors: ensure proper DMA alignment
iio: adc: ad_sigma_delta: ensure proper DMA alignment
iio: imu: adis: ensure proper DMA alignment
of: property: fix typo in io-channels
Oleg Nesterov (1):
fs/proc: do_task_stat: move thread_group_cputime_adjusted() outside of lock_task_sighand()
Oleksij Rempel (1):
can: j1939: Fix UAF in j1939_sk_match_filter during setsockopt(SO_J1939_FILTER)
Oliver Neukum (1):
USB: hub: check for alternate port before enabling A_ALT_HNP_SUPPORT
Ondrej Mosnacek (1):
lsm: fix the logic in security_inode_getsecctx()
Oscar Salvador (1):
fs,hugetlb: fix NULL pointer dereference in hugetlbs_fill_super
Paolo Abeni (3):
mptcp: get rid of msk->subflow
mptcp: fix data re-injection from stale subflow
mptcp: drop the push_pending field
Paulo Alcantara (2):
smb: client: fix potential OOBs in smb2_parse_contexts()
smb: client: fix parsing of SMB3.1.1 POSIX create context
Peter Zijlstra (4):
dmaengine: ioat: Free up __cleanup() name
apparmor: Free up __cleanup() name
locking: Introduce __cleanup() based infrastructure
kbuild: Drop -Wdeclaration-after-statement
Philip Yang (1):
drm/prime: Support page array >= 4GB
Prakash Sangappa (1):
mm: hugetlb pages should not be reserved by shmat() if SHM_NORESERVE
Qu Wenruo (1):
btrfs: do not ASSERT() if the newly created subvolume already got read
Radek Krejci (1):
modpost: trim leading spaces when processing source files list
Randy Dunlap (1):
iio: imu: bno055: serdev requires REGMAP
Rishabh Dave (1):
ceph: prevent use-after-free in encode_cap_msg()
Rob Clark (1):
drm/msm: Wire up tlb ops
Ryan Roberts (1):
selftests/mm: ksm_tests should only MADV_HUGEPAGE valid memory
Ryusuke Konishi (4):
nilfs2: fix data corruption in dsync block recovery for small block sizes
nilfs2: fix hang in nilfs_lookup_dirty_data_buffers()
nilfs2: fix potential bug in end_buffer_async_write
nilfs2: replace WARN_ONs for invalid DAT metadata block requests
Sabrina Dubroca (2):
tls: extract context alloc/initialization out of tls_set_sw_offload
net: tls: fix use-after-free with partial reads and async decrypt
Samuel Holland (1):
scs: add CONFIG_MMU dependency for vfree_atomic()
Saravana Kannan (4):
driver core: Fix device_link_flag_is_sync_state_only()
of: property: Improve finding the supplier of a remote-endpoint property driver core: fw_devlink: Improve detection of overlapping cycles
of: property: Add in-ports/out-ports support to of_graph_get_port_parent()
Sean Anderson (1):
usb: ulpi: Fix debugfs directory leak
Sean Christopherson (1):
KVM: selftests: Fix a semaphore imbalance in the dirty ring logging test
Sean Young (1):
media: rc: bpf attach/detach requires write permission
Sebastian Ott (1):
drm/virtio: Set segment size for virtio_gpu device
Shradha Gupta (1):
hv_netvsc: Register VF in netvsc_probe if NET_DEVICE_REGISTER missed
Shrikanth Hegde (1):
powerpc/pseries: fix accuracy of stolen time
Sinthu Raja (2):
net: ethernet: ti: cpsw: enable mac_managed_pm to fix mdio
net: ethernet: ti: cpsw_new: enable mac_managed_pm to fix mdio
Sjoerd Simons (1):
bus: moxtet: Add spi device table
Souradeep Chakrabarti (1):
hv_netvsc: Fix race condition between netvsc_probe and netvsc_remove
Srinivas Pandruvada (1):
iio: hid-sensor-als: Return 0 for HID_USAGE_SENSOR_TIME_TIMESTAMP
Stephan Gerhold (2):
arm64: dts: qcom: msm8916: Enable blsp_dma by default
arm64: dts: qcom: msm8916: Make blsp_dma controlled-remotely
Steve Wahl (1):
x86/mm/ident_map: Use gbpages only where full GB page should be mapped.
Steven Rostedt (Google) (2):
tracing: Fix wasted memory in saved_cmdlines logic
tracing: Inform kmemleak of saved_cmdlines allocation
Takashi Sakamoto (1):
firewire: core: correct documentation of fw_csr_string() kernel API
Tatsunosuke Tobita (1):
HID: wacom: generic: Avoid reporting a serial of '0' to userspace
Techno Mooney (1):
ASoC: amd: yc: Add DMI quirk for MSI Bravo 15 C7VF
Tianjia Zhang (1):
crypto: lib/mpi - Fix unexpected pointer access in mpi_ec_init
Tom Chung (1):
drm/amd/display: Preserve original aspect ratio in create stream
Tomi Valkeinen (1):
media: Revert "media: rkisp1: Drop IRQF_SHARED"
Uttkarsh Aggarwal (1):
usb: dwc3: gadget: Fix NULL pointer dereference in dwc3_gadget_suspend
Uwe Kleine-König (2):
spi: ppc4xx: Drop write-only variable
modpost: Don't let "driver"s reference .exit.*
Viken Dadhaniya (1):
i2c: qcom-geni: Correct I2C TRE sequence
Vincent Donnefort (1):
ring-buffer: Clean ring_buffer_poll_wait() error return
Vitaly Rodionov (1):
ALSA: hda/cs8409: Suppress vmaster control for Dolphin models
Zach O'Keefe (1):
mm/writeback: fix possible divide-by-zero in wb_dirty_limits(), again
Zhipeng Lu (1):
media: ir_toy: fix a memleak in irtoy_tx
Ziqi Zhao (1):
can: j1939: prevent deadlock by changing j1939_socks_lock to rwlock
bo liu (1):
ALSA: hda/conexant: Add quirk for SWS JS201D
limingming3 (1):
tools/rtla: Replace setting prio with nice for SCHED_OTHER
yuan linyu (1):
usb: f_mass_storage: forbid async queue when shutdown happen
zhili.liu (1):
iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/sysfs-class-net-statistics +24 -24
@@ -1,4 +1,4 @@ -What: /sys/class/<iface>/statistics/collisions +What: /sys/class/net/<iface>/statistics/collisions Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -6,7 +6,7 @@ Description: Indicates the number of collisions seen by this network device. This value might not be relevant with all MAC layers. -What: /sys/class/<iface>/statistics/multicast +What: /sys/class/net/<iface>/statistics/multicast Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -14,7 +14,7 @@ Description: Indicates the number of multicast packets received by this network device. -What: /sys/class/<iface>/statistics/rx_bytes +What: /sys/class/net/<iface>/statistics/rx_bytes Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -23,7 +23,7 @@ Description: See the network driver for the exact meaning of when this value is incremented. -What: /sys/class/<iface>/statistics/rx_compressed +What: /sys/class/net/<iface>/statistics/rx_compressed Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -32,7 +32,7 @@ Description: network device. This value might only be relevant for interfaces that support packet compression (e.g: PPP). -What: /sys/class/<iface>/statistics/rx_crc_errors +What: /sys/class/net/<iface>/statistics/rx_crc_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -41,7 +41,7 @@ Description: by this network device. Note that the specific meaning might depend on the MAC layer used by the interface. -What: /sys/class/<iface>/statistics/rx_dropped +What: /sys/class/net/<iface>/statistics/rx_dropped Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -51,7 +51,7 @@ Description: packet processing. See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/rx_errors +What: /sys/class/net/<iface>/statistics/rx_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -59,7 +59,7 @@ Description: Indicates the number of receive errors on this network device. See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/rx_fifo_errors +What: /sys/class/net/<iface>/statistics/rx_fifo_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -68,7 +68,7 @@ Description: network device. See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/rx_frame_errors +What: /sys/class/net/<iface>/statistics/rx_frame_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -78,7 +78,7 @@ Description: on the MAC layer protocol used. See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/rx_length_errors +What: /sys/class/net/<iface>/statistics/rx_length_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -87,7 +87,7 @@ Description: error, oversized or undersized. See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/rx_missed_errors +What: /sys/class/net/<iface>/statistics/rx_missed_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -96,7 +96,7 @@ Description: due to lack of capacity in the receive side. See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/rx_nohandler +What: /sys/class/net/<iface>/statistics/rx_nohandler Date: February 2016 KernelVersion: 4.6 Contact: [email protected]
@@ -104,7 +104,7 @@ Description: Indicates the number of received packets that were dropped on an inactive device by the network core. -What: /sys/class/<iface>/statistics/rx_over_errors +What: /sys/class/net/<iface>/statistics/rx_over_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -114,7 +114,7 @@ Description: (e.g: larger than MTU). See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/rx_packets +What: /sys/class/net/<iface>/statistics/rx_packets Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -122,7 +122,7 @@ Description: Indicates the total number of good packets received by this network device. -What: /sys/class/<iface>/statistics/tx_aborted_errors +What: /sys/class/net/<iface>/statistics/tx_aborted_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -132,7 +132,7 @@ Description: a medium collision). See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/tx_bytes +What: /sys/class/net/<iface>/statistics/tx_bytes Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -143,7 +143,7 @@ Description: transmitted packets or all packets that have been queued for transmission. -What: /sys/class/<iface>/statistics/tx_carrier_errors +What: /sys/class/net/<iface>/statistics/tx_carrier_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -152,7 +152,7 @@ Description: because of carrier errors (e.g: physical link down). See the network driver for the exact meaning of this value. -What: /sys/class/<iface>/statistics/tx_compressed +What: /sys/class/net/<iface>/statistics/tx_compressed Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -161,7 +161,7 @@ Description: this might only be relevant for devices that support compression (e.g: PPP). -What: /sys/class/<iface>/statistics/tx_dropped +What: /sys/class/net/<iface>/statistics/tx_dropped Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -170,7 +170,7 @@ Description: See the driver for the exact reasons as to why the packets were dropped. -What: /sys/class/<iface>/statistics/tx_errors +What: /sys/class/net/<iface>/statistics/tx_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -179,7 +179,7 @@ Description: a network device. See the driver for the exact reasons as to why the packets were dropped. -What: /sys/class/<iface>/statistics/tx_fifo_errors +What: /sys/class/net/<iface>/statistics/tx_fifo_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -188,7 +188,7 @@ Description: FIFO error. See the driver for the exact reasons as to why the packets were dropped. -What: /sys/class/<iface>/statistics/tx_heartbeat_errors +What: /sys/class/net/<iface>/statistics/tx_heartbeat_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -197,7 +197,7 @@ Description: reported as heartbeat errors. See the driver for the exact reasons as to why the packets were dropped. -What: /sys/class/<iface>/statistics/tx_packets +What: /sys/class/net/<iface>/statistics/tx_packets Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
@@ -206,7 +206,7 @@ Description: device. See the driver for whether this reports the number of all attempted or successful transmissions. -What: /sys/class/<iface>/statistics/tx_window_errors +What: /sys/class/net/<iface>/statistics/tx_window_errors Date: April 2005 KernelVersion: 2.6.12 Contact: [email protected]
Documentation/arm64/silicon-errata.rst +7 -0
@@ -221,3 +221,10 @@ stable kernels. +----------------+-----------------+-----------------+-----------------------------+ | Fujitsu | A64FX | E#010001 | FUJITSU_ERRATUM_010001 | +----------------+-----------------+-----------------+-----------------------------+ ++----------------+-----------------+-----------------+-----------------------------+ +| Microsoft | Azure Cobalt 100| #2139208 | ARM64_ERRATUM_2139208 | ++----------------+-----------------+-----------------+-----------------------------+ +| Microsoft | Azure Cobalt 100| #2067961 | ARM64_ERRATUM_2067961 | ++----------------+-----------------+-----------------+-----------------------------+ +| Microsoft | Azure Cobalt 100| #2253138 | ARM64_ERRATUM_2253138 | ++----------------+-----------------+-----------------+-----------------------------+
Documentation/devicetree/bindings/net/wireless/marvell-8xxx.txt +3 -1
@@ -1,4 +1,4 @@ -Marvell 8787/8897/8997 (sd8787/sd8897/sd8997/pcie8997) SDIO/PCIE devices +Marvell 8787/8897/8978/8997 (sd8787/sd8897/sd8978/sd8997/pcie8997) SDIO/PCIE devices ------ This node provides properties for controlling the Marvell SDIO/PCIE wireless device.
@@ -10,7 +10,9 @@ Required properties: - compatible : should be one of the following: * "marvell,sd8787" * "marvell,sd8897" + * "marvell,sd8978" * "marvell,sd8997" + * "nxp,iw416" * "pci11ab,2b42" * "pci1b4b,2b42"
Makefile +2 -6
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 78 +SUBLEVEL = 79 EXTRAVERSION = NAME = Curry Ramen
@@ -459,8 +459,7 @@ HOSTRUSTC = rustc HOSTPKG_CONFIG = pkg-config KBUILD_USERHOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \ - -O2 -fomit-frame-pointer -std=gnu11 \ - -Wdeclaration-after-statement + -O2 -fomit-frame-pointer -std=gnu11 KBUILD_USERCFLAGS := $(KBUILD_USERHOSTCFLAGS) $(USERCFLAGS) KBUILD_USERLDFLAGS := $(USERLDFLAGS)
@@ -1018,9 +1017,6 @@ endif # arch Makefile may override CC so keep this after arch Makefile is included NOSTDINC_FLAGS += -nostdinc -# warn about C99 declaration after statement -KBUILD_CFLAGS += -Wdeclaration-after-statement - # Variable Length Arrays (VLAs) should not be used anywhere in the kernel KBUILD_CFLAGS += -Wvla
arch/Kconfig +1 -0
@@ -642,6 +642,7 @@ config SHADOW_CALL_STACK bool "Shadow Call Stack" depends on ARCH_SUPPORTS_SHADOW_CALL_STACK depends on DYNAMIC_FTRACE_WITH_ARGS || DYNAMIC_FTRACE_WITH_REGS || !FUNCTION_GRAPH_TRACER + depends on MMU help This option enables the compiler's Shadow Call Stack, which uses a shadow stack to protect function return addresses from
arch/arc/include/asm/jump_label.h +2 -2
@@ -31,7 +31,7 @@ static __always_inline bool arch_static_branch(struct static_key *key,bool branch) { - asm_volatile_goto(".balign "__stringify(JUMP_LABEL_NOP_SIZE)" \n" + asm goto(".balign "__stringify(JUMP_LABEL_NOP_SIZE)" \n""1: \n" "nop \n" ".pushsection __jump_table, \"aw\" \n"
@@ -47,7 +47,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, static __always_inline bool arch_static_branch_jump(struct static_key *key,bool branch) { - asm_volatile_goto(".balign "__stringify(JUMP_LABEL_NOP_SIZE)" \n" + asm goto(".balign "__stringify(JUMP_LABEL_NOP_SIZE)" \n""1: \n" "b %l[l_yes] \n" ".pushsection __jump_table, \"aw\" \n"
arch/arm/boot/dts/imx6q-apalis-ixora-v1.2.dts +2 -0
@@ -76,6 +76,7 @@ reg_can1_supply: regulator-can1-supply { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enable_can1_power>; regulator-name = "can1_supply"; + startup-delay-us = <1000>; }; reg_can2_supply: regulator-can2-supply {
@@ -85,6 +86,7 @@ reg_can2_supply: regulator-can2-supply { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_enable_can2_power>; regulator-name = "can2_supply"; + startup-delay-us = <1000>; }; };
arch/arm/include/asm/jump_label.h +2 -2
@@ -11,7 +11,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { - asm_volatile_goto("1:\n\t" + asm goto("1:\n\t" WASM(nop) "\n\t"".pushsection __jump_table, \"aw\"\n\t" ".word 1b, %l[l_yes], %c0\n\t"
@@ -25,7 +25,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { - asm_volatile_goto("1:\n\t" + asm goto("1:\n\t" WASM(b) " %l[l_yes]\n\t"".pushsection __jump_table, \"aw\"\n\t" ".word 1b, %l[l_yes], %c0\n\t"
arch/arm64/boot/dts/qcom/apq8016-sbc.dts +0 -4
@@ -169,10 +169,6 @@ led@6 { }; }; -&blsp_dma { - status = "okay"; -}; - &blsp_i2c2 { /* On Low speed expansion */ status = "okay";
arch/arm64/boot/dts/qcom/msm8916.dtsi +1 -1
@@ -1522,7 +1522,7 @@ blsp_dma: dma-controller@7884000 { clock-names = "bam_clk"; #dma-cells = <1>; qcom,ee = <0>; - status = "disabled"; + qcom,controlled-remotely; }; blsp1_uart1: serial@78af000 {
arch/arm64/boot/dts/qcom/sdm845.dtsi +2 -2
@@ -4049,7 +4049,7 @@ usb_1: usb@a6f8800 { assigned-clock-rates = <19200000>, <150000000>; interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <&intc GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 6 IRQ_TYPE_LEVEL_HIGH>, <&pdc_intc 8 IRQ_TYPE_EDGE_BOTH>, <&pdc_intc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq",
@@ -4100,7 +4100,7 @@ usb_2: usb@a8f8800 { assigned-clock-rates = <19200000>, <150000000>; interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, - <&intc GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, + <&pdc_intc 7 IRQ_TYPE_LEVEL_HIGH>, <&pdc_intc 10 IRQ_TYPE_EDGE_BOTH>, <&pdc_intc 11 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq",
arch/arm64/boot/dts/qcom/sm8150.dtsi +2 -2
@@ -3629,7 +3629,7 @@ usb_1: usb@a6f8800 { assigned-clock-rates = <19200000>, <200000000>; interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, - <&intc GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 6 IRQ_TYPE_LEVEL_HIGH>, <&pdc 8 IRQ_TYPE_EDGE_BOTH>, <&pdc 9 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq",
@@ -3678,7 +3678,7 @@ usb_2: usb@a8f8800 { assigned-clock-rates = <19200000>, <200000000>; interrupts-extended = <&intc GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>, - <&intc GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>, + <&pdc 7 IRQ_TYPE_LEVEL_HIGH>, <&pdc 10 IRQ_TYPE_EDGE_BOTH>, <&pdc 11 IRQ_TYPE_EDGE_BOTH>; interrupt-names = "hs_phy_irq", "ss_phy_irq",
arch/arm64/include/asm/alternative-macros.h +2 -2
@@ -229,7 +229,7 @@ alternative_has_feature_likely(unsigned long feature)compiletime_assert (feature <ARM64_NCAPS ,"feature must be < ARM64_NCAPS" ); -asm_volatile_goto ( + asm goto( ALTERNATIVE_CB("b %l[l_no]", %[feature], alt_cb_patch_nops) : : [feature] "i" (feature)
@@ -247,7 +247,7 @@ alternative_has_feature_unlikely(unsigned long feature)compiletime_assert (feature <ARM64_NCAPS ,"feature must be < ARM64_NCAPS" ); -asm_volatile_goto ( + asm goto( ALTERNATIVE("nop", "b %l[l_yes]", %[feature]) : : [feature] "i" (feature)
arch/arm64/include/asm/cputype.h +4 -0
@@ -61,6 +61,7 @@#define ARM_CPU_IMP_HISI 0x48#define ARM_CPU_IMP_APPLE 0x61#define ARM_CPU_IMP_AMPERE 0xC0 +#define ARM_CPU_IMP_MICROSOFT 0x6D#define ARM_CPU_PART_AEM_V8 0xD0F#define ARM_CPU_PART_FOUNDATION 0xD00
@@ -128,6 +129,8 @@#define AMPERE_CPU_PART_AMPERE1 0xAC3 +#define MICROSOFT_CPU_PART_AZURE_COBALT_100 0xD49/* Based on r0p0 of ARM Neoverse N2 */ +#define MIDR_CORTEX_A53 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53)#define MIDR_CORTEX_A57 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57)#define MIDR_CORTEX_A72 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72)
@@ -179,6 +182,7 @@#define MIDR_APPLE_M1_ICESTORM_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_ICESTORM_MAX)#define MIDR_APPLE_M1_FIRESTORM_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M1_FIRESTORM_MAX)#define MIDR_AMPERE1 MIDR_CPU_MODEL(ARM_CPU_IMP_AMPERE, AMPERE_CPU_PART_AMPERE1) +#define MIDR_MICROSOFT_AZURE_COBALT_100 MIDR_CPU_MODEL(ARM_CPU_IMP_MICROSOFT, MICROSOFT_CPU_PART_AZURE_COBALT_100)/* Fujitsu Erratum 010001 affects A64FX 1.0 and 1.1, (v0r0 and v1r0) */ #define MIDR_FUJITSU_ERRATUM_010001 MIDR_FUJITSU_A64FX
arch/arm64/include/asm/jump_label.h +2 -2
@@ -18,7 +18,7 @@ static __always_inline bool arch_static_branch(struct static_key *key,bool branch) { -asm_volatile_goto ( + asm goto("1: nop \n\t" " .pushsection __jump_table, \"aw\" \n\t" " .align 3 \n\t"
@@ -35,7 +35,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, static __always_inline bool arch_static_branch_jump(struct static_key *key,bool branch) { -asm_volatile_goto ( + asm goto("1: b %l[l_yes] \n\t" " .pushsection __jump_table, \"aw\" \n\t" " .align 3 \n\t"
arch/arm64/kernel/cpu_errata.c +3 -0
@@ -390,6 +390,7 @@ static const struct midr_range erratum_1463225[] = {static const struct midr_range trbe_overwrite_fill_mode_cpus[] = { #ifdef CONFIG_ARM64_ERRATUM_2139208MIDR_ALL_VERSIONS (MIDR_NEOVERSE_N2 ), +MIDR_ALL_VERSIONS (MIDR_MICROSOFT_AZURE_COBALT_100 ), #endif #ifdef CONFIG_ARM64_ERRATUM_2119858 MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
@@ -403,6 +404,7 @@ static const struct midr_range trbe_overwrite_fill_mode_cpus[] = {static const struct midr_range tsb_flush_fail_cpus[] = { #ifdef CONFIG_ARM64_ERRATUM_2067961MIDR_ALL_VERSIONS (MIDR_NEOVERSE_N2 ), +MIDR_ALL_VERSIONS (MIDR_MICROSOFT_AZURE_COBALT_100 ), #endif #ifdef CONFIG_ARM64_ERRATUM_2054223 MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
@@ -415,6 +417,7 @@ static const struct midr_range tsb_flush_fail_cpus[] = {static struct midr_range trbe_write_out_of_range_cpus[] = { #ifdef CONFIG_ARM64_ERRATUM_2253138MIDR_ALL_VERSIONS (MIDR_NEOVERSE_N2 ), +MIDR_ALL_VERSIONS (MIDR_MICROSOFT_AZURE_COBALT_100 ), #endif #ifdef CONFIG_ARM64_ERRATUM_2224489 MIDR_ALL_VERSIONS(MIDR_CORTEX_A710),
arch/arm64/kernel/vdso32/Makefile +0 -2
@@ -68,11 +68,9 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ -fno-strict-aliasing -fno-common \ -Werror-implicit-function-declaration \ -Wno-format-security \ - -Wdeclaration-after-statement \ -std=gnu11 VDSO_CFLAGS += -O2 # Some useful compiler-dependent flags from top-level Makefile -VDSO_CFLAGS += $(call cc32-option,-Wdeclaration-after-statement,) VDSO_CFLAGS += $(call cc32-option,-Wno-pointer-sign) VDSO_CFLAGS += -fno-strict-overflow VDSO_CFLAGS += $(call cc32-option,-Werror=strict-prototypes)
arch/csky/include/asm/jump_label.h +2 -2
@@ -12,7 +12,7 @@ static __always_inline bool arch_static_branch(struct static_key *key,bool branch) { -asm_volatile_goto ( + asm goto("1: nop32 \n" " .pushsection __jump_table, \"aw\" \n" " .align 2 \n"
@@ -29,7 +29,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, static __always_inline bool arch_static_branch_jump(struct static_key *key,bool branch) { -asm_volatile_goto ( + asm goto("1: bsr32 %l[label] \n" " .pushsection __jump_table, \"aw\" \n" " .align 2 \n"
arch/mips/include/asm/checksum.h +2 -1
@@ -241,7 +241,8 @@ static __inline__ __sum16 csum_ipv6_magic(const struct in6_addr *saddr, " .set pop" : "=&r" (sum), "=&r" (tmp) : "r" (saddr), "r" (daddr), - "0" (htonl(len)), "r" (htonl(proto)), "r" (sum)); + "0" (htonl(len)), "r" (htonl(proto)), "r" (sum) + : "memory");return csum_fold (sum); }
arch/mips/include/asm/jump_label.h +2 -2
@@ -36,7 +36,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\t" B_INSN " 2f\n\t" + asm goto("1:\t" B_INSN " 2f\n\t" "2:\t.insn\n\t" ".pushsection __jump_table, \"aw\"\n\t" WORD_INSN " 1b, %l[l_yes], %0\n\t"
@@ -50,7 +50,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\t" J_INSN " %l[l_yes]\n\t" + asm goto("1:\t" J_INSN " %l[l_yes]\n\t" ".pushsection __jump_table, \"aw\"\n\t" WORD_INSN " 1b, %l[l_yes], %0\n\t" ".popsection\n\t"
arch/parisc/Kconfig +0 -1
@@ -24,7 +24,6 @@ config PARISC select RTC_DRV_GENERIC select INIT_ALL_POSSIBLE select BUG - select BUILDTIME_TABLE_SORT select HAVE_PCI select HAVE_PERF_EVENTS select HAVE_KERNEL_BZIP2
arch/parisc/include/asm/assembly.h +1 -0
@@ -576,6 +576,7 @@ .section __ex_table,"aw" ! \ .align 4 ! \ .word (fault_addr - .), (except_addr - .) ! \ + or %r0,%r0,%r0 ! \ .previous
arch/parisc/include/asm/extable.h new file +64 -0
64 lines not on this page · raw message
arch/parisc/include/asm/jump_label.h +2 -2
@@ -12,7 +12,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" "nop\n\t" ".pushsection __jump_table, \"aw\"\n\t" ".align %1\n\t"
@@ -29,7 +29,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" "b,n %l[l_yes]\n\t" ".pushsection __jump_table, \"aw\"\n\t" ".align %1\n\t"
arch/parisc/include/asm/special_insns.h +4 -2
@@ -8,7 +8,8 @@"copy %%r0,%0\n" \"8:\tlpa %%r0(%1),%0\n" \"9:\n" \ -ASM_EXCEPTIONTABLE_ENTRY (8b ,9b ) \ +ASM_EXCEPTIONTABLE_ENTRY (8b ,9b , \ +"or %%r0,%%r0,%%r0" ) \ : "=&r" (pa) \: " r" (va) \ : " memory" \
@@ -22,7 +23,8 @@"copy %%r0,%0\n" \"8:\tlpa %%r0(%%sr3,%1),%0\n" \"9:\n" \ -ASM_EXCEPTIONTABLE_ENTRY (8b ,9b ) \ +ASM_EXCEPTIONTABLE_ENTRY (8b ,9b , \ +"or %%r0,%%r0,%%r0" ) \ : "=&r" (pa) \: " r" (va) \ : " memory" \
arch/parisc/include/asm/uaccess.h +7 -41
94 lines not on this page · raw message
arch/parisc/kernel/drivers.c +3 -0
@@ -1003,6 +1003,9 @@ static __init int qemu_print_iodc_data(struct device *lin_dev, void *data)pr_info ("\n" ); +/* Prevent hung task messages when printing on serial console */ +cond_resched (); +pr_info ("#define HPA_%08lx_DESCRIPTION \"%s\"\n" , hpa,parisc_hardware_description (&dev->id));
arch/parisc/kernel/unaligned.c +22 -22
92 lines not on this page · raw message
arch/parisc/mm/fault.c +8 -3
@@ -150,11 +150,16 @@ int fixup_exception(struct pt_regs *regs)* Fix up get_user() and put_user(). * ASM_EXCEPTIONTABLE_ENTRY_EFAULT() sets the least-significant * bit in the relative address of the fixup routine to indicate -* that gr[ASM_EXCEPTIONTABLE_REG] should be loaded with -* -EFAULT to report a userspace access error. +* that the register encoded in the "or %r0,%r0,register" +* opcode should be loaded with -EFAULT to report a userspace +* access error. */ if (fix->fixup &1 ) { - regs->gr[ASM_EXCEPTIONTABLE_REG ] = -EFAULT ; +int fault_error_reg = fix->err_opcode &0x1f ; +if (!WARN_ON (!fault_error_reg)) + regs->gr[fault_error_reg] = -EFAULT ; +pr_debug ("Unalignment fixup of register %d at %pS\n" , + fault_error_reg, (void *)regs->iaoq[0 ]);/* zero target register for get_user() */ if (parisc_acctyp (0 , regs->iir) ==VM_READ ) {
arch/powerpc/include/asm/bug.h +1 -1
@@ -74,7 +74,7 @@ ##__VA_ARGS__)#define WARN_ENTRY (insn, flags, label, ...) \ - asm_volatile_goto( \ + asm goto( \ "1: " insn "\n" \ EX_TABLE(1b, %l[label]) \ _EMIT_BUG_ENTRY \
arch/powerpc/include/asm/jump_label.h +2 -2
@@ -17,7 +17,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" "nop # arch_static_branch\n\t" ".pushsection __jump_table, \"aw\"\n\t" ".long 1b - ., %l[l_yes] - .\n\t"
@@ -32,7 +32,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" "b %l[l_yes] # arch_static_branch_jump\n\t" ".pushsection __jump_table, \"aw\"\n\t" ".long 1b - ., %l[l_yes] - .\n\t"
arch/powerpc/include/asm/thread_info.h +1 -1
@@ -14,7 +14,7 @@#ifdef __KERNEL__ -#ifdef CONFIG_KASAN +#if defined(CONFIG_KASAN ) &&CONFIG_THREAD_SHIFT <15 #define MIN_THREAD_SHIFT (CONFIG_THREAD_SHIFT + 1)#else #define MIN_THREAD_SHIFT CONFIG_THREAD_SHIFT
arch/powerpc/include/asm/uaccess.h +4 -4
@@ -72,7 +72,7 @@ __pu_failed: \* are no aliasing issues. */ #define __put_user_asm_goto (x, addr, label, op) \ - asm_volatile_goto( \ + asm goto( \ "1: " op "%U1%X1 %0,%1 # put_user\n" \ EX_TABLE(1b, %l2) \ : \
@@ -85,7 +85,7 @@ __pu_failed: \ __put_user_asm_goto(x, ptr, label, "std")#else /* __powerpc64__ */ #define __put_user_asm2_goto (x, addr, label) \ - asm_volatile_goto( \ + asm goto( \ "1: stw%X1 %0, %1\n" \ "2: stw%X1 %L0, %L1\n" \ EX_TABLE(1b, %l2) \
@@ -132,7 +132,7 @@ do { \#ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT #define __get_user_asm_goto (x, addr, label, op) \ - asm_volatile_goto( \ + asm_goto_output( \ "1: "op"%U1%X1 %0, %1 # get_user\n" \ EX_TABLE(1b, %l2) \ : "=r" (x) \
@@ -145,7 +145,7 @@ do { \ __get_user_asm_goto(x, addr, label, "ld")#else /* __powerpc64__ */ #define __get_user_asm2_goto (x, addr, label) \ - asm_volatile_goto( \ + asm_goto_output( \ "1: lwz%X1 %0, %1\n" \ "2: lwz%X1 %L0, %L1\n" \ EX_TABLE(1b, %l2) \
arch/powerpc/kernel/cpu_specs_e500mc.h +2 -1
@@ -8,7 +8,8 @@#ifdef CONFIG_PPC64 #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ - PPC_FEATURE_HAS_FPU | PPC_FEATURE_64) + PPC_FEATURE_HAS_FPU | PPC_FEATURE_64 | \ + PPC_FEATURE_BOOKE)#else #define COMMON_USER_BOOKE (PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU | \ PPC_FEATURE_BOOKE)
arch/powerpc/kernel/interrupt_64.S +2 -2
@@ -52,7 +52,8 @@ _ASM_NOKPROBE_SYMBOL(system_call_vectored_\name) mr r10,r1 ld r1,PACAKSAVE(r13) std r10,0(r1) - std r11,_NIP(r1) + std r11,_LINK(r1) + std r11,_NIP(r1) /* Saved LR is also the next instruction */ std r12,_MSR(r1) std r0,GPR0(r1) std r10,GPR1(r1)
@@ -70,7 +71,6 @@ _ASM_NOKPROBE_SYMBOL(system_call_vectored_\name) std r9,GPR13(r1) SAVE_NVGPRS(r1) std r11,_XER(r1) - std r11,_LINK(r1) std r11,_CTR(r1) li r11,\trapnr
arch/powerpc/kernel/irq_64.c +1 -1
@@ -230,7 +230,7 @@ notrace void arch_local_irq_restore(unsigned long mask)* This allows interrupts to be unmasked without hard disabling, and * also without new hard interrupts coming in ahead of pending ones. */ -asm_volatile_goto ( + asm goto("1: \n" " lbz 9,%0(13) \n" " cmpwi 9,0 \n"
arch/powerpc/mm/kasan/init_32.c +1 -0
@@ -64,6 +64,7 @@ int __init __weak kasan_init_region(void *start, size_t size)if (ret)return ret; + k_start = k_start &PAGE_MASK ; block =memblock_alloc (k_end - k_start,PAGE_SIZE );if (!block)return -ENOMEM ;
arch/powerpc/platforms/pseries/lpar.c +6 -2
@@ -660,8 +660,12 @@ u64 pseries_paravirt_steal_clock(int cpu) {struct lppaca *lppaca = &lppaca_of (cpu); -return be64_to_cpu (READ_ONCE (lppaca->enqueue_dispatch_tb)) + -be64_to_cpu (READ_ONCE (lppaca->ready_enqueue_tb)); +/* +* VPA steal time counters are reported at TB frequency. Hence do a +* conversion to ns before returning +*/ +return tb_to_ns (be64_to_cpu (READ_ONCE (lppaca->enqueue_dispatch_tb)) + +be64_to_cpu (READ_ONCE (lppaca->ready_enqueue_tb))); }#endif
arch/riscv/include/asm/jump_label.h +2 -2
@@ -17,7 +17,7 @@ static __always_inline bool arch_static_branch(struct static_key * const key,const bool branch) { -asm_volatile_goto ( + asm goto(" .align 2 \n\t" " .option push \n\t" " .option norelax \n\t"
@@ -39,7 +39,7 @@ static __always_inline bool arch_static_branch(struct static_key * const key, static __always_inline bool arch_static_branch_jump(struct static_key * const key,const bool branch) { -asm_volatile_goto ( + asm goto(" .align 2 \n\t" " .option push \n\t" " .option norelax \n\t"
arch/s390/include/asm/jump_label.h +2 -2
@@ -25,7 +25,7 @@*/ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { -asm_volatile_goto ("0: brcl 0,%l[label]\n" + asm goto("0: brcl 0,%l[label]\n" ".pushsection __jump_table,\"aw\"\n" ".balign 8\n" ".long 0b-.,%l[label]-.\n"
@@ -39,7 +39,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { -asm_volatile_goto ("0: brcl 15,%l[label]\n" + asm goto("0: brcl 15,%l[label]\n" ".pushsection __jump_table,\"aw\"\n" ".balign 8\n" ".long 0b-.,%l[label]-.\n"
arch/sparc/include/asm/jump_label.h +2 -2
@@ -10,7 +10,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" "nop\n\t" "nop\n\t" ".pushsection __jump_table, \"aw\"\n\t"
@@ -26,7 +26,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch_jump(struct static_key *key, bool branch) { -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" "b %l[l_yes]\n\t" "nop\n\t" ".pushsection __jump_table, \"aw\"\n\t"
arch/um/Makefile +3 -1
@@ -118,7 +118,9 @@ archprepare: $(Q)$(MAKE) $(build)=$(HOST_DIR)/um include/generated/user_constants.h LINK-$(CONFIG_LD_SCRIPT_STATIC) += -static -LINK-$(CONFIG_LD_SCRIPT_DYN) += $(call cc-option, -no-pie) +ifdef CONFIG_LD_SCRIPT_DYN +LINK-$(call gcc-min-version, 60100)$(CONFIG_CC_IS_CLANG) += -no-pie +endif LINK-$(CONFIG_LD_SCRIPT_DYN_RPATH) += -Wl,-rpath,/lib CFLAGS_NO_HARDENING := $(call cc-option, -fno-PIC,) $(call cc-option, -fno-pic,) \
arch/um/include/asm/cpufeature.h +1 -1
@@ -75,7 +75,7 @@ extern void setup_clear_cpu_cap(unsigned int bit);*/ static __always_inline bool _static_cpu_has(u16 bit) { -asm_volatile_goto ("1: jmp 6f\n" + asm goto("1: jmp 6f\n" "2:\n" ".skip -(((5f-4f) - (2b-1b)) > 0) * " "((5f-4f) - (2b-1b)),0x90\n"
arch/x86/Kconfig.cpu +1 -1
@@ -375,7 +375,7 @@ config X86_CMOV config X86_MINIMUM_CPU_FAMILY int default "64" if X86_64 - default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCRUSOE || MCORE2 || MK7 || MK8) + default "6" if X86_32 && (MPENTIUM4 || MPENTIUMM || MPENTIUMIII || MPENTIUMII || M686 || MVIAC3_2 || MVIAC7 || MEFFICEON || MATOM || MCORE2 || MK7 || MK8) default "5" if X86_32 && X86_CMPXCHG64 default "4"
arch/x86/include/asm/cpufeature.h +1 -1
@@ -173,7 +173,7 @@ extern void clear_cpu_cap(struct cpuinfo_x86 *c, unsigned int bit);*/ static __always_inline bool _static_cpu_has(u16 bit) { -asm_volatile_goto ( + asm goto( ALTERNATIVE_TERNARY("jmp 6f", %P[feature], "", "jmp %l[t_no]")".pushsection .altinstr_aux,\"ax\"\n" "6:\n"
arch/x86/include/asm/jump_label.h +3 -3
@@ -24,7 +24,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { - asm_volatile_goto("1:" + asm goto("1:" "jmp %l[l_yes] # objtool NOPs this \n\t" JUMP_TABLE_ENTRY : :"i" (key),"i" (2 | branch) : : l_yes);
@@ -38,7 +38,7 @@ static __always_inline bool arch_static_branch(struct static_key *key, bool bran static __always_inline bool arch_static_branch(struct static_key * const key, const bool branch) { - asm_volatile_goto("1:" + asm goto("1:" ".byte " __stringify(BYTES_NOP5) "\n\t" JUMP_TABLE_ENTRY : : "i" (key), "i" (branch) : : l_yes);
@@ -52,7 +52,7 @@ static __always_inline bool arch_static_branch(struct static_key * const key, co static __always_inline bool arch_static_branch_jump(struct static_key * const key, const bool branch) { - asm_volatile_goto("1:" + asm goto("1:" "jmp %l[l_yes]\n\t" JUMP_TABLE_ENTRY : :"i" (key),"i" (branch) : : l_yes);
arch/x86/include/asm/rmwcc.h +1 -1
@@ -18,7 +18,7 @@#define __GEN_RMWcc (fullop, _var, cc, clobbers, ...) \ ({ \ bool c = false; \ - asm_volatile_goto (fullop "; j" #cc " %l[cc_label]" \ + asm goto (fullop "; j" #cc " %l[cc_label]" \ : : [var] "m" (_var), ## __VA_ARGS__ \ : clobbers : cc_label); \ if (0) { \
arch/x86/include/asm/uaccess.h +5 -5
@@ -155,7 +155,7 @@ extern int __get_user_bad(void);#ifdef CONFIG_X86_32 #define __put_user_goto_u64 (x, addr, label) \ - asm_volatile_goto("\n" \ + asm goto("\n" \ "1: movl %%eax,0(%1)\n" \ "2: movl %%edx,4(%1)\n" \ _ASM_EXTABLE_UA(1b, %l2) \
@@ -317,7 +317,7 @@ do { \ } while (0)#define __get_user_asm (x, addr, itype, ltype, label) \ - asm_volatile_goto("\n" \ + asm_goto_output("\n" \ "1: mov"itype" %[umem],%[output]\n" \ _ASM_EXTABLE_UA(1b, %l2) \ : [output] ltype(x) \
@@ -397,7 +397,7 @@ do { \__typeof__ (_ptr) _old = (__typeof__ (_ptr))(_pold); \ __typeof__(*(_ptr)) __old = *_old; \ __typeof__(*(_ptr)) __new = (_new); \ -asm_volatile_goto ("\n" \ +asm_goto_output ("\n" \"1: " LOCK_PREFIX "cmpxchg" itype" %[new], %[ptr]\n" \ _ASM_EXTABLE_UA(1b, %l[label]) \ : CC_OUT(z) (success), \
@@ -416,7 +416,7 @@ do { \__typeof__ (_ptr) _old = (__typeof__ (_ptr))(_pold); \ __typeof__(*(_ptr)) __old = *_old; \ __typeof__(*(_ptr)) __new = (_new); \ - asm_volatile_goto("\n" \ + asm_goto_output("\n" \ "1: " LOCK_PREFIX "cmpxchg8b %[ptr]\n" \ _ASM_EXTABLE_UA(1b, %l[label]) \ : CC_OUT(z) (success), \
@@ -499,7 +499,7 @@ struct __large_struct { unsigned long buf[100]; };* aliasing issues. */ #define __put_user_goto (x, addr, itype, ltype, label) \ - asm_volatile_goto("\n" \ + asm goto("\n" \ "1: mov"itype" %0,%1\n" \ _ASM_EXTABLE_UA(1b, %l2) \ : : ltype(x), "m" (__m(addr)) \
arch/x86/include/asm/virtext.h +6 -6
@@ -43,9 +43,9 @@ static inline int cpu_has_vmx(void)*/ static inline int cpu_vmxoff (void ) { - asm_volatile_goto("1: vmxoff\n\t" - _ASM_EXTABLE(1b, %l[fault]) - ::: "cc", "memory" : fault); + asm goto("1: vmxoff\n\t" + _ASM_EXTABLE(1b, %l[fault]) + ::: "cc", "memory" : fault); cr4_clear_bits(X86_CR4_VMXE );return 0 ;
@@ -129,9 +129,9 @@ static inline void cpu_svm_disable(void)* case, GIF must already be set, otherwise the NMI would have * been blocked, so just eat the fault. */ - asm_volatile_goto("1: stgi\n\t" - _ASM_EXTABLE(1b, %l[fault]) - ::: "memory" : fault); + asm goto("1: stgi\n\t" + _ASM_EXTABLE(1b, %l[fault]) + ::: "memory" : fault); fault:wrmsrl (MSR_EFER , efer & ~EFER_SVME ); }
arch/x86/kernel/fpu/signal.c +5 -8
@@ -274,12 +274,13 @@ static int __restore_fpregs_from_user(void __user *buf, u64 ufeatures,* Attempt to restore the FPU registers directly from user memory. * Pagefaults are handled and any errors returned are fatal. */ -static bool restore_fpregs_from_user (void __user *buf,u64 xrestore, -bool fx_only,unsigned int size) +static bool restore_fpregs_from_user (void __user *buf,u64 xrestore,bool fx_only) {struct fpu *fpu = ¤t->thread.fpu;int ret; +/* Restore enabled features only. */ + xrestore &= fpu->fpstate->user_xfeatures; retry:fpregs_lock ();/* Ensure that XFD is up to date */
@@ -309,7 +310,7 @@ static bool restore_fpregs_from_user(void __user *buf, u64 xrestore,if (ret !=X86_TRAP_PF )return false; -if (!fault_in_readable (buf, size)) +if (!fault_in_readable (buf, fpu->fpstate->user_size)) goto retry;return false; }
@@ -339,7 +340,6 @@ static bool __fpu_restore_sig(void __user *buf, void __user *buf_fx,struct user_i387_ia32_struct env;bool success, fx_only = false;union fpregs_state *fpregs; -unsigned int state_size;u64 user_xfeatures =0 ;if (use_xsave ()) {
@@ -349,17 +349,14 @@ static bool __fpu_restore_sig(void __user *buf, void __user *buf_fx,return false; fx_only = !fx_sw_user.magic1; - state_size = fx_sw_user.xstate_size; user_xfeatures = fx_sw_user.xfeatures; }else { user_xfeatures =XFEATURE_MASK_FPSSE ; - state_size = fpu->fpstate->user_size; }if (likely (!ia32_fxstate)) {/* Restore the FPU registers directly from user memory. */ -return restore_fpregs_from_user (buf_fx, user_xfeatures, fx_only, - state_size); +return restore_fpregs_from_user (buf_fx, user_xfeatures, fx_only); }/*
arch/x86/kvm/svm/svm_ops.h +3 -3
@@ -8,7 +8,7 @@ #define svm_asm(insn, clobber...) \ do { \ - asm_volatile_goto("1: " __stringify(insn) "\n\t" \ + asm goto("1: " __stringify(insn) "\n\t" \ _ASM_EXTABLE(1b, %l[fault]) \ ::: clobber : fault); \ return; \
@@ -18,7 +18,7 @@ fault: \ #define svm_asm1(insn, op1, clobber...) \ do { \ - asm_volatile_goto("1: " __stringify(insn) " %0\n\t" \ + asm goto("1: " __stringify(insn) " %0\n\t" \ _ASM_EXTABLE(1b, %l[fault]) \ :: op1 : clobber : fault); \ return; \
@@ -28,7 +28,7 @@ fault: \ #define svm_asm2(insn, op1, op2, clobber...) \ do { \ - asm_volatile_goto("1: " __stringify(insn) " %1, %0\n\t" \ + asm goto("1: " __stringify(insn) " %1, %0\n\t" \ _ASM_EXTABLE(1b, %l[fault]) \ :: op1, op2 : clobber : fault); \ return; \
arch/x86/kvm/vmx/pmu_intel.c +1 -1
@@ -38,7 +38,7 @@ static int fixed_pmc_events[] = {1, 0, 7};static void reprogram_fixed_counters (struct kvm_pmu *pmu,u64 data) {struct kvm_pmc *pmc; -u8 old_fixed_ctr_ctrl = pmu->fixed_ctr_ctrl; +u64 old_fixed_ctr_ctrl = pmu->fixed_ctr_ctrl;int i; pmu->fixed_ctr_ctrl = data;
arch/x86/kvm/vmx/vmx.c +4 -4
@@ -2469,10 +2469,10 @@ static int kvm_cpu_vmxon(u64 vmxon_pointer)cr4_set_bits (X86_CR4_VMXE ); - asm_volatile_goto("1: vmxon %[vmxon_pointer]\n\t" - _ASM_EXTABLE(1b, %l[fault]) - : : [vmxon_pointer] "m"(vmxon_pointer) - : : fault); + asm goto("1: vmxon %[vmxon_pointer]\n\t" + _ASM_EXTABLE(1b, %l[fault]) + : : [vmxon_pointer] "m"(vmxon_pointer) + : : fault);return 0 ; fault:
arch/x86/kvm/vmx/vmx_ops.h +3 -3
@@ -73,7 +73,7 @@ static __always_inline unsigned long __vmcs_readl(unsigned long field)#ifdef CONFIG_CC_HAS_ASM_GOTO_OUTPUT -asm_volatile_goto ("1: vmread %[field], %[output]\n\t" +asm_goto_output ("1: vmread %[field], %[output]\n\t" "jna %l[do_fail]\n\t" _ASM_EXTABLE(1b, %l[do_exception])
@@ -166,7 +166,7 @@ static __always_inline unsigned long vmcs_readl(unsigned long field) #define vmx_asm1(insn, op1, error_args...) \ do { \ - asm_volatile_goto("1: " __stringify(insn) " %0\n\t" \ + asm goto("1: " __stringify(insn) " %0\n\t" \ ".byte 0x2e\n\t"/* branch not taken hint */ \"jna %l[error]\n\t" \ _ASM_EXTABLE(1b, %l[fault]) \
@@ -183,7 +183,7 @@ fault: \ #define vmx_asm2(insn, op1, op2, error_args...) \ do { \ - asm_volatile_goto("1: " __stringify(insn) " %1, %0\n\t" \ + asm goto("1: " __stringify(insn) " %1, %0\n\t" \ ".byte 0x2e\n\t"/* branch not taken hint */ \"jna %l[error]\n\t" \ _ASM_EXTABLE(1b, %l[fault]) \
arch/x86/mm/ident_map.c +18 -5
@@ -26,18 +26,31 @@ static int ident_pud_init(struct x86_mapping_info *info, pud_t *pud_page,for (; addr < end; addr = next) {pud_t *pud = pud_page +pud_index (addr);pmd_t *pmd; +bool use_gbpage; next = (addr &PUD_MASK ) +PUD_SIZE ;if (next > end) next = end; -if (info->direct_gbpages) { -pud_t pudval; +/* if this is already a gbpage, this portion is already mapped */ +if (pud_large (*pud)) +continue ; + +/* Is using a gbpage allowed? */ + use_gbpage = info->direct_gbpages; -if (pud_present (*pud)) -continue ; +/* Don't use gbpage if it maps more than the requested region. */ +/* at the begining: */ + use_gbpage &= ((addr & ~PUD_MASK ) ==0 ); +/* ... or at the end: */ + use_gbpage &= ((next & ~PUD_MASK ) ==0 ); + +/* Never overwrite existing mappings */ + use_gbpage &= !pud_present (*pud); + +if (use_gbpage) { +pud_t pudval; - addr &=PUD_MASK ; pudval =__pud ((addr - info->offset) | info->page_flag);set_pud (pud, pudval);continue ;
arch/xtensa/include/asm/jump_label.h +2 -2
@@ -13,7 +13,7 @@ static __always_inline bool arch_static_branch(struct static_key *key,bool branch) { -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" "_nop\n\t" ".pushsection __jump_table, \"aw\"\n\t" ".word 1b, %l[l_yes], %c0\n\t"
@@ -38,7 +38,7 @@ static __always_inline bool arch_static_branch_jump(struct static_key *key,* make it reachable and wrap both into a no-transform block * to avoid any assembler interference with this. */ -asm_volatile_goto ("1:\n\t" + asm goto("1:\n\t" ".begin no-transform\n\t" "_j %l[l_yes]\n\t" "2:\n\t"
block/blk-mq.c +7 -2
@@ -747,11 +747,16 @@ static void req_bio_endio(struct request *rq, struct bio *bio,/* * Partial zone append completions cannot be supported as the * BIO fragments may end up not being written sequentially. +* For such case, force the completed nbytes to be equal to +* the BIO size so that bio_advance() sets the BIO remaining +* size to 0 and we end up calling bio_endio() before returning. */ -if (bio->bi_iter.bi_size != nbytes) +if (bio->bi_iter.bi_size != nbytes) { bio->bi_status =BLK_STS_IOERR ; -else + nbytes = bio->bi_iter.bi_size; + }else { bio->bi_iter.bi_sector = rq->__sector; + } }bio_advance (bio, nbytes);
drivers/android/binder.c +10 -0
@@ -477,6 +477,16 @@ binder_enqueue_thread_work_ilocked(struct binder_thread *thread, {WARN_ON (!list_empty (&thread->waiting_thread_node));binder_enqueue_work_ilocked (work, &thread->todo); + +/* (e)poll-based threads require an explicit wakeup signal when +* queuing their own work; they rely on these events to consume +* messages without I/O block. Without it, threads risk waiting +* indefinitely without handling the work. +*/ +if (thread->looper &BINDER_LOOPER_STATE_POLL && + thread->pid == current->pid && !thread->process_todo) +wake_up_interruptible_sync (&thread->wait); + thread->process_todo = true; }
drivers/base/core.c +11 -4
@@ -337,10 +337,12 @@ static bool device_is_ancestor(struct device *dev, struct device *target)return false; } +#define DL_MARKER_FLAGS (DL_FLAG_INFERRED | \ + DL_FLAG_CYCLE | \ + DL_FLAG_MANAGED)static inline bool device_link_flag_is_sync_state_only (u32 flags) { -return (flags & ~(DL_FLAG_INFERRED |DL_FLAG_CYCLE )) == - (DL_FLAG_SYNC_STATE_ONLY |DL_FLAG_MANAGED ); +return (flags & ~DL_MARKER_FLAGS ) ==DL_FLAG_SYNC_STATE_ONLY ; }/**
@@ -2054,9 +2056,14 @@ static int fw_devlink_create_devlink(struct device *con,/* * SYNC_STATE_ONLY device links don't block probing and supports cycles. -* So cycle detection isn't necessary and shouldn't be done. +* So, one might expect that cycle detection isn't necessary for them. +* However, if the device link was marked as SYNC_STATE_ONLY because +* it's part of a cycle, then we still need to do cycle detection. This +* is because the consumer and supplier might be part of multiple cycles +* and we need to detect all those cycles. */ -if (!(flags &DL_FLAG_SYNC_STATE_ONLY )) { +if (!device_link_flag_is_sync_state_only (flags) || + flags &DL_FLAG_CYCLE ) {device_links_write_lock ();if (__fw_devlink_relax_cycles (con, sup_handle)) {__fwnode_link_cycle (link);
drivers/base/power/domain.c +1 -1
@@ -1052,7 +1052,7 @@ static int __init genpd_power_off_unused(void)return 0 ; } -late_initcall (genpd_power_off_unused); +late_initcall_sync (genpd_power_off_unused);#ifdef CONFIG_PM_SLEEP
drivers/bus/moxtet.c +7 -0
@@ -830,6 +830,12 @@ static void moxtet_remove(struct spi_device *spi)mutex_destroy (&moxtet->lock); } +static const struct spi_device_id moxtet_spi_ids[] = { + {"moxtet" }, + { }, +}; +MODULE_DEVICE_TABLE (spi, moxtet_spi_ids); +static const struct of_device_id moxtet_dt_ids[] = { { .compatible ="cznic,moxtet" }, {},
@@ -841,6 +847,7 @@ static struct spi_driver moxtet_spi_driver = { .name = "moxtet", .of_match_table = moxtet_dt_ids, }, + .id_table = moxtet_spi_ids, .probe = moxtet_probe, .remove = moxtet_remove, };
drivers/crypto/ccp/sev-dev.c +8 -2
@@ -515,10 +515,16 @@ EXPORT_SYMBOL_GPL(sev_platform_init);static int __sev_platform_shutdown_locked (int *error) { -struct sev_device *sev = psp_master->sev_data; +struct psp_device *psp = psp_master; +struct sev_device *sev;int ret; -if (!sev || sev->state ==SEV_STATE_UNINIT ) +if (!psp || !psp->sev_data) +return 0 ; + + sev = psp->sev_data; + +if (sev->state ==SEV_STATE_UNINIT )return 0 ; ret =__sev_do_cmd_locked (SEV_CMD_SHUTDOWN ,NULL , error);
drivers/dma/ioat/dma.c +6 -6
@@ -584,11 +584,11 @@ desc_get_errstat(struct ioatdma_chan *ioat_chan, struct ioat_ring_ent *desc) }/** -* __cleanup - reclaim used descriptors +* __ioat_cleanup - reclaim used descriptors * @ioat_chan: channel (ring) to clean * @phys_complete: zeroed (or not) completion address (from status) */ -static void __cleanup (struct ioatdma_chan *ioat_chan,dma_addr_t phys_complete) +static void __ioat_cleanup (struct ioatdma_chan *ioat_chan,dma_addr_t phys_complete) {struct ioatdma_device *ioat_dma = ioat_chan->ioat_dma;struct ioat_ring_ent *desc;
@@ -675,7 +675,7 @@ static void ioat_cleanup(struct ioatdma_chan *ioat_chan)spin_lock_bh (&ioat_chan->cleanup_lock);if (ioat_cleanup_preamble (ioat_chan, &phys_complete)) -__cleanup (ioat_chan, phys_complete); +__ioat_cleanup (ioat_chan, phys_complete);if (is_ioat_halted (*ioat_chan->completion)) {u32 chanerr =readl (ioat_chan->reg_base +IOAT_CHANERR_OFFSET );
@@ -712,7 +712,7 @@ static void ioat_restart_channel(struct ioatdma_chan *ioat_chan)ioat_quiesce (ioat_chan,0 );if (ioat_cleanup_preamble (ioat_chan, &phys_complete)) -__cleanup (ioat_chan, phys_complete); +__ioat_cleanup (ioat_chan, phys_complete);__ioat_restart_chan (ioat_chan); }
@@ -786,7 +786,7 @@ static void ioat_eh(struct ioatdma_chan *ioat_chan)/* cleanup so tail points to descriptor that caused the error */ if (ioat_cleanup_preamble (ioat_chan, &phys_complete)) -__cleanup (ioat_chan, phys_complete); +__ioat_cleanup (ioat_chan, phys_complete); chanerr =readl (ioat_chan->reg_base +IOAT_CHANERR_OFFSET );pci_read_config_dword (pdev,IOAT_PCI_CHANERR_INT_OFFSET , &chanerr_int);
@@ -943,7 +943,7 @@ void ioat_timer_event(struct timer_list *t)/* timer restarted in ioat_cleanup_preamble * and IOAT_COMPLETION_ACK cleared */ -__cleanup (ioat_chan, phys_complete); +__ioat_cleanup (ioat_chan, phys_complete); goto unlock_out; }
drivers/firewire/core-device.c +3 -4
@@ -100,10 +100,9 @@ static int textual_leaf_to_string(const u32 *block, char *buf, size_t size)* @buf: where to put the string * @size: size of @buf, in bytes * -* The string is taken from a minimal ASCII text descriptor leaf after -* the immediate entry with @key. The string is zero-terminated. -* An overlong string is silently truncated such that it and the -* zero byte fit into @size. +* The string is taken from a minimal ASCII text descriptor leaf just after the entry with the +* @key. The string is zero-terminated. An overlong string is silently truncated such that it +* and the zero byte fit into @size. * * Returns strlen(buf) or a negative error code. */
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c +0 -1
@@ -4203,7 +4203,6 @@ int amdgpu_device_suspend(struct drm_device *dev, bool fbcon)drm_fb_helper_set_suspend_unlocked (adev_to_drm (adev)->fb_helper, true);cancel_delayed_work_sync (&adev->delayed_init_work); -flush_delayed_work (&adev->gfx.gfx_off_delay_work);amdgpu_ras_suspend (adev);
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +8 -1
@@ -585,8 +585,15 @@ void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)if (adev->gfx.gfx_off_req_count ==0 && !adev->gfx.gfx_off_state) { -schedule_delayed_work (&adev->gfx.gfx_off_delay_work, +/* If going to s2idle, no need to wait */ +if (adev->in_s0ix) { +if (!amdgpu_dpm_set_powergating_by_smu (adev, +AMD_IP_BLOCK_TYPE_GFX , true)) + adev->gfx.gfx_off_state = true; + }else { +schedule_delayed_work (&adev->gfx.gfx_off_delay_work, delay); + } } }else {if (adev->gfx.gfx_off_req_count ==0 ) {
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +2 -0
@@ -6001,7 +6001,9 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,if (recalculate_timing) { freesync_mode =get_highest_refresh_rate_mode (aconnector, false);drm_mode_copy (&saved_mode, &mode); + saved_mode.picture_aspect_ratio = mode.picture_aspect_ratio;drm_mode_copy (&mode, freesync_mode); + mode.picture_aspect_ratio = saved_mode.picture_aspect_ratio; }else {decide_crtc_timing_for_drm_display_mode ( &mode, preferred_mode, scale);
drivers/gpu/drm/amd/display/dc/dml/Makefile +3 -3
@@ -60,11 +60,11 @@ ifdef CONFIG_DRM_AMD_DC_DCN CFLAGS_$(AMDDALPATH)/dc/dml/display_mode_vba.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/dcn10/dcn10_fpu.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/dcn20_fpu.o := $(dml_ccflags) -CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_ccflags) +CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20.o := $(dml_ccflags) $(frame_warn_flag) CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20.o := $(dml_ccflags) -CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_ccflags) +CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/display_mode_vba_20v2.o := $(dml_ccflags) $(frame_warn_flag) CFLAGS_$(AMDDALPATH)/dc/dml/dcn20/display_rq_dlg_calc_20v2.o := $(dml_ccflags) -CFLAGS_$(AMDDALPATH)/dc/dml/dcn21/display_mode_vba_21.o := $(dml_ccflags) +CFLAGS_$(AMDDALPATH)/dc/dml/dcn21/display_mode_vba_21.o := $(dml_ccflags) $(frame_warn_flag) CFLAGS_$(AMDDALPATH)/dc/dml/dcn21/display_rq_dlg_calc_21.o := $(dml_ccflags) CFLAGS_$(AMDDALPATH)/dc/dml/dcn30/display_mode_vba_30.o := $(dml_ccflags) $(frame_warn_flag) CFLAGS_$(AMDDALPATH)/dc/dml/dcn30/display_rq_dlg_calc_30.o := $(dml_ccflags)
drivers/gpu/drm/drm_prime.c +1 -1
@@ -828,7 +828,7 @@ struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,if (max_segment ==0 ) max_segment =UINT_MAX ; err =sg_alloc_table_from_pages_segment (sg, pages, nr_pages,0 , - nr_pages <<PAGE_SHIFT , + (unsigned long )nr_pages <<PAGE_SHIFT , max_segment,GFP_KERNEL );if (err) {kfree (sg);
drivers/gpu/drm/msm/msm_iommu.c +29 -3
@@ -21,6 +21,8 @@ struct msm_iommu_pagetable {struct msm_mmu base;struct msm_mmu *parent;struct io_pgtable_ops *pgtbl_ops; +const struct iommu_flush_ops *tlb; +struct device *iommu_dev;unsigned long pgsize_bitmap;/* Bitmap of page sizes in use */ phys_addr_t ttbr;u32 asid;
@@ -194,11 +196,33 @@ static const struct msm_mmu_funcs pagetable_funcs = {static void msm_iommu_tlb_flush_all (void *cookie) { +struct msm_iommu_pagetable *pagetable = cookie; +struct adreno_smmu_priv *adreno_smmu; + +if (!pm_runtime_get_if_in_use (pagetable->iommu_dev)) +return ; + + adreno_smmu =dev_get_drvdata (pagetable->parent->dev); + + pagetable->tlb->tlb_flush_all ((void *)adreno_smmu->cookie); + +pm_runtime_put_autosuspend (pagetable->iommu_dev); }static void msm_iommu_tlb_flush_walk (unsigned long iova,size_t size,size_t granule,void *cookie) { +struct msm_iommu_pagetable *pagetable = cookie; +struct adreno_smmu_priv *adreno_smmu; + +if (!pm_runtime_get_if_in_use (pagetable->iommu_dev)) +return ; + + adreno_smmu =dev_get_drvdata (pagetable->parent->dev); + + pagetable->tlb->tlb_flush_walk (iova, size, granule, (void *)adreno_smmu->cookie); + +pm_runtime_put_autosuspend (pagetable->iommu_dev); } static void msm_iommu_tlb_add_page(struct iommu_iotlb_gather *gather,
@@ -206,7 +230,7 @@ static void msm_iommu_tlb_add_page(struct iommu_iotlb_gather *gather, { } -static const struct iommu_flush_ops null_tlb_ops = { +static const struct iommu_flush_ops tlb_ops = { .tlb_flush_all = msm_iommu_tlb_flush_all, .tlb_flush_walk = msm_iommu_tlb_flush_walk, .tlb_add_page = msm_iommu_tlb_add_page,
@@ -254,10 +278,10 @@ struct msm_mmu *msm_iommu_pagetable_create(struct msm_mmu *parent)/* The incoming cfg will have the TTBR1 quirk enabled */ ttbr0_cfg.quirks &= ~IO_PGTABLE_QUIRK_ARM_TTBR1 ; - ttbr0_cfg.tlb = &null_tlb_ops; + ttbr0_cfg.tlb = &tlb_ops; pagetable->pgtbl_ops =alloc_io_pgtable_ops (ARM_64_LPAE_S1 , - &ttbr0_cfg, iommu->domain); + &ttbr0_cfg, pagetable);if (!pagetable->pgtbl_ops) {kfree (pagetable);
@@ -282,6 +306,8 @@ struct msm_mmu *msm_iommu_pagetable_create(struct msm_mmu *parent)/* Needed later for TLB flush */ pagetable->parent = parent; + pagetable->tlb = ttbr1_cfg->tlb; + pagetable->iommu_dev = ttbr1_cfg->iommu_dev; pagetable->pgsize_bitmap = ttbr0_cfg.pgsize_bitmap; pagetable->ttbr = ttbr0_cfg.arm_lpae_s1_cfg.ttbr;
drivers/gpu/drm/nouveau/nouveau_svm.c +1 -1
@@ -997,7 +997,7 @@ nouveau_svm_fault_buffer_ctor(struct nouveau_svm *svm, s32 oclass, int id)if (ret)return ret; - buffer->fault =kvcalloc (sizeof (*buffer->fault), buffer->entries,GFP_KERNEL ); + buffer->fault =kvcalloc (buffer->entries,sizeof (*buffer->fault),GFP_KERNEL );if (!buffer->fault)return -ENOMEM ;
drivers/gpu/drm/virtio/virtgpu_drv.c +1 -0
@@ -93,6 +93,7 @@ static int virtio_gpu_probe(struct virtio_device *vdev) goto err_free; } +dma_set_max_seg_size (dev->dev,dma_max_mapping_size (dev->dev) ?:UINT_MAX ); ret =virtio_gpu_init (vdev, dev);if (ret) goto err_free;
drivers/hid/i2c-hid/i2c-hid-of.c +1 -0
@@ -80,6 +80,7 @@ static int i2c_hid_of_probe(struct i2c_client *client,if (!ihid_of)return -ENOMEM ; + ihid_of->client = client; ihid_of->ops.power_up = i2c_hid_of_power_up; ihid_of->ops.power_down = i2c_hid_of_power_down;
drivers/hid/wacom_sys.c +43 -20
99 lines not on this page · raw message
drivers/hid/wacom_wac.c +8 -1
@@ -2571,7 +2571,14 @@ static void wacom_wac_pen_report(struct hid_device *hdev, wacom_wac->hid_data.tipswitch);input_report_key (input, wacom_wac->tool[0 ], sense);if (wacom_wac->serial[0 ]) { -input_event (input,EV_MSC ,MSC_SERIAL , wacom_wac->serial[0 ]); +/* +* xf86-input-wacom does not accept a serial number +* of '0'. Report the low 32 bits if possible, but +* if they are zero, report the upper ones instead. +*/ +__u32 serial_lo = wacom_wac->serial[0 ] &0xFFFFFFFFu ; +__u32 serial_hi = wacom_wac->serial[0 ] >>32 ; +input_event (input,EV_MSC ,MSC_SERIAL , (int )(serial_lo ? serial_lo : serial_hi));input_report_abs (input,ABS_MISC , sense ? id :0 ); }
drivers/i2c/busses/Makefile +2 -4
@@ -89,10 +89,8 @@ obj-$(CONFIG_I2C_NPCM) += i2c-npcm7xx.o obj-$(CONFIG_I2C_OCORES) += i2c-ocores.o obj-$(CONFIG_I2C_OMAP) += i2c-omap.o obj-$(CONFIG_I2C_OWL) += i2c-owl.o -i2c-pasemi-objs := i2c-pasemi-core.o i2c-pasemi-pci.o -obj-$(CONFIG_I2C_PASEMI) += i2c-pasemi.o -i2c-apple-objs := i2c-pasemi-core.o i2c-pasemi-platform.o -obj-$(CONFIG_I2C_APPLE) += i2c-apple.o +obj-$(CONFIG_I2C_PASEMI) += i2c-pasemi-core.o i2c-pasemi-pci.o +obj-$(CONFIG_I2C_APPLE) += i2c-pasemi-core.o i2c-pasemi-platform.o obj-$(CONFIG_I2C_PCA_PLATFORM) += i2c-pca-platform.o obj-$(CONFIG_I2C_PNX) += i2c-pnx.o obj-$(CONFIG_I2C_PXA) += i2c-pxa.o
drivers/i2c/busses/i2c-i801.c +2 -2
@@ -500,11 +500,10 @@ static int i801_block_transaction_by_block(struct i801_priv *priv,/* Set block buffer mode */ outb_p (inb_p (SMBAUXCTL (priv)) |SMBAUXCTL_E32B ,SMBAUXCTL (priv)); -inb_p (SMBHSTCNT (priv));/* reset the data buffer index */ -if (read_write ==I2C_SMBUS_WRITE ) { len = data->block[0 ];outb_p (len,SMBHSTDAT0 (priv)); +inb_p (SMBHSTCNT (priv));/* reset the data buffer index */ for (i =0 ; i < len; i++)outb_p (data->block[i+1 ],SMBBLKDAT (priv)); }
@@ -520,6 +519,7 @@ static int i801_block_transaction_by_block(struct i801_priv *priv,return -EPROTO ; data->block[0 ] = len; +inb_p (SMBHSTCNT (priv));/* reset the data buffer index */ for (i =0 ; i < len; i++) data->block[i +1 ] =inb_p (SMBBLKDAT (priv)); }
drivers/i2c/busses/i2c-pasemi-core.c +5 -0
@@ -356,3 +356,8 @@ int pasemi_i2c_common_probe(struct pasemi_smbus *smbus)return 0 ; } +EXPORT_SYMBOL_GPL (pasemi_i2c_common_probe); + +MODULE_LICENSE ("GPL" ); +MODULE_AUTHOR ("Olof Johansson <[email protected]>" ); +MODULE_DESCRIPTION ("PA Semi PWRficient SMBus driver" );
drivers/i2c/busses/i2c-qcom-geni.c +7 -7
@@ -605,20 +605,20 @@ static int geni_i2c_gpi_xfer(struct geni_i2c_dev *gi2c, struct i2c_msg msgs[], i peripheral.addr = msgs[i].addr; + ret =geni_i2c_gpi (gi2c, &msgs[i], &config, + &tx_addr, &tx_buf,I2C_WRITE , gi2c->tx_c); +if (ret) + goto err; +if (msgs[i].flags &I2C_M_RD ) { ret =geni_i2c_gpi (gi2c, &msgs[i], &config, &rx_addr, &rx_buf,I2C_READ , gi2c->rx_c);if (ret) goto err; - } - - ret =geni_i2c_gpi (gi2c, &msgs[i], &config, - &tx_addr, &tx_buf,I2C_WRITE , gi2c->tx_c); -if (ret) - goto err; -if (msgs[i].flags &I2C_M_RD )dma_async_issue_pending (gi2c->rx_c); + } +dma_async_issue_pending (gi2c->tx_c); timeout =wait_for_completion_timeout (&gi2c->done,XFER_TIMEOUT );
drivers/iio/accel/Kconfig +2 -0
@@ -219,10 +219,12 @@ config BMA400 config BMA400_I2C tristate + select REGMAP_I2C depends on BMA400 config BMA400_SPI tristate + select REGMAP_SPI depends on BMA400 config BMC150_ACCEL
drivers/iio/imu/bno055/Kconfig +1 -0
@@ -8,6 +8,7 @@ config BOSCH_BNO055 config BOSCH_BNO055_SERIAL tristate "Bosch BNO055 attached via UART" depends on SERIAL_DEV_BUS + select REGMAP select BOSCH_BNO055 help Enable this to support Bosch BNO055 IMUs attached via UART.
drivers/iio/industrialio-core.c +4 -1
@@ -1601,10 +1601,13 @@ static int iio_device_register_sysfs(struct iio_dev *indio_dev) ret =iio_device_register_sysfs_group (indio_dev, &iio_dev_opaque->chan_attr_group);if (ret) - goto error_clear_attrs; + goto error_free_chan_attrs;return 0 ; +error_free_chan_attrs: +kfree (iio_dev_opaque->chan_attr_group.attrs); + iio_dev_opaque->chan_attr_group.attrs =NULL ; error_clear_attrs:iio_free_chan_devattr_list (&iio_dev_opaque->channel_attr_list);
drivers/iio/light/hid-sensor-als.c +1 -0
@@ -228,6 +228,7 @@ static int als_capture_sample(struct hid_sensor_hub_device *hsdev,case HID_USAGE_SENSOR_TIME_TIMESTAMP : als_state->timestamp =hid_sensor_convert_timestamp (&als_state->common_attributes, *(s64 *)raw_data); + ret =0 ;break ;default :break ;
drivers/iio/magnetometer/rm3100-core.c +8 -2
@@ -530,6 +530,7 @@ int rm3100_common_probe(struct device *dev, struct regmap *regmap, int irq)struct rm3100_data *data;unsigned int tmp;int ret; +int samp_rate_index; indio_dev =devm_iio_device_alloc (dev,sizeof (*data));if (!indio_dev)
@@ -586,9 +587,14 @@ int rm3100_common_probe(struct device *dev, struct regmap *regmap, int irq) ret =regmap_read (regmap,RM3100_REG_TMRC , &tmp);if (ret <0 )return ret; + + samp_rate_index = tmp -RM3100_TMRC_OFFSET ; +if (samp_rate_index <0 || samp_rate_index >=RM3100_SAMP_NUM ) { +dev_err (dev,"The value read from RM3100_REG_TMRC is invalid!\n" ); +return -EINVAL ; + }/* Initializing max wait time, which is double conversion time. */ - data->conversion_time = rm3100_samp_rates[tmp -RM3100_TMRC_OFFSET ][2 ] - *2 ; + data->conversion_time = rm3100_samp_rates[samp_rate_index][2 ] *2 ;/* Cycle count values may not be what we want. */ if ((tmp -RM3100_TMRC_OFFSET ) ==0 )
drivers/infiniband/hw/irdma/verbs.c +7 -0
@@ -2845,6 +2845,13 @@ static struct ib_mr *irdma_reg_user_mr(struct ib_pd *pd, u64 start, u64 len,switch (req.reg_type) {case IRDMA_MEMREG_TYPE_QP : +/* iWarp: Catch page not starting on OS page boundary */ +if (!rdma_protocol_roce (&iwdev->ibdev,1 ) && +ib_umem_offset (iwmr->region)) { + err = -EINVAL ; + goto error; + } + total = req.sq_pages + req.rq_pages + shadow_pgcnt;if (total > iwmr->page_cnt) { err = -EINVAL ;
drivers/interconnect/qcom/sc8180x.c +1 -0
@@ -1387,6 +1387,7 @@ static struct qcom_icc_bcm bcm_mm0 = {static struct qcom_icc_bcm bcm_co0 = { .name ="CO0" , + .keepalive = true, .num_nodes =1 , .nodes = { &slv_qns_cdsp_mem_noc } };
drivers/irqchip/irq-brcmstb-l2.c +4 -1
@@ -2,7 +2,7 @@/* * Generic Broadcom Set Top Box Level 2 Interrupt controller driver * -* Copyright (C) 2014-2017 Broadcom +* Copyright (C) 2014-2024 Broadcom */ #define pr_fmt (fmt) KBUILD_MODNAME ": " fmt
@@ -113,6 +113,9 @@ static void brcmstb_l2_intc_irq_handle(struct irq_desc *desc)generic_handle_domain_irq (b->domain, irq); }while (status); out: +/* Don't ack parent before all device writes are done */ +wmb (); +chained_irq_exit (chip, desc); }
drivers/irqchip/irq-gic-v3-its.c +13 -9
@@ -3805,8 +3805,9 @@ static int its_vpe_set_affinity(struct irq_data *d, bool force) {struct its_vpe *vpe =irq_data_get_irq_chip_data (d); -int from, cpu =cpumask_first (mask_val); +struct cpumask common, *table_mask;unsigned long flags; +int from, cpu;/* * Changing affinity is mega expensive, so let's be as lazy as
@@ -3822,19 +3823,22 @@ static int its_vpe_set_affinity(struct irq_data *d,* taken on any vLPI handling path that evaluates vpe->col_idx. */ from =vpe_to_cpuid_lock (vpe, &flags); -if (from == cpu) - goto out; - - vpe->col_idx = cpu; + table_mask =gic_data_rdist_cpu (from)->vpe_table_mask;/* -* GICv4.1 allows us to skip VMOVP if moving to a cpu whose RD -* is sharing its VPE table with the current one. +* If we are offered another CPU in the same GICv4.1 ITS +* affinity, pick this one. Otherwise, any CPU will do. */ -if (gic_data_rdist_cpu (cpu)->vpe_table_mask && -cpumask_test_cpu (from,gic_data_rdist_cpu (cpu)->vpe_table_mask)) +if (table_mask &&cpumask_and (&common, mask_val, table_mask)) + cpu =cpumask_test_cpu (from, &common) ? from :cpumask_first (&common); +else + cpu =cpumask_first (mask_val); + +if (from == cpu) goto out; + vpe->col_idx = cpu; +its_send_vmovp (vpe);its_vpe_db_proxy_move (vpe, from, cpu);
drivers/irqchip/irq-loongson-eiointc.c +1 -1
@@ -242,7 +242,7 @@ static int eiointc_domain_alloc(struct irq_domain *domain, unsigned int virq,int ret;unsigned int i, type;unsigned long hwirq =0 ; -struct eiointc *priv = domain->host_data; +struct eiointc_priv *priv = domain->host_data; ret =irq_domain_translate_onecell (domain, arg, &hwirq, &type);if (ret)
drivers/md/dm-core.h +2 -0
@@ -21,6 +21,8 @@#include "dm-ima.h" #define DM_RESERVED_MAX_IOS 1024 +#define DM_MAX_TARGETS 1048576 +#define DM_MAX_TARGET_PARAMS 1024struct dm_io ;
drivers/md/dm-crypt.c +2 -35
@@ -72,10 +72,8 @@ struct dm_crypt_io {struct bio *base_bio;u8 *integrity_metadata; bool integrity_metadata_from_pool:1; - bool in_tasklet:1;struct work_struct work; -struct tasklet_struct tasklet;struct convert_context ctx;
@@ -1729,7 +1727,6 @@ static void crypt_io_init(struct dm_crypt_io *io, struct crypt_config *cc, io->ctx.r.req =NULL ; io->integrity_metadata =NULL ; io->integrity_metadata_from_pool = false; - io->in_tasklet = false;atomic_set (&io->io_pending,0 ); }
@@ -1738,12 +1735,6 @@ static void crypt_inc_pending(struct dm_crypt_io *io)atomic_inc (&io->io_pending); } -static void kcryptd_io_bio_endio (struct work_struct *work) -{ - struct dm_crypt_io *io = container_of(work, struct dm_crypt_io, work); -bio_endio (io->base_bio); -} -/* * One of the bios was finished. Check for completion of * the whole request and correctly clean up the buffer.
@@ -1767,20 +1758,6 @@ static void crypt_dec_pending(struct dm_crypt_io *io) base_bio->bi_status = error; -/* -* If we are running this function from our tasklet, -* we can't call bio_endio() here, because it will call -* clone_endio() from dm.c, which in turn will -* free the current struct dm_crypt_io structure with -* our tasklet. In this case we need to delay bio_endio() -* execution to after the tasklet is done and dequeued. -*/ -if (io->in_tasklet) { -INIT_WORK (&io->work, kcryptd_io_bio_endio); -queue_work (cc->io_queue, &io->work); -return ; - } -bio_endio (base_bio); }
@@ -2213,11 +2190,6 @@ static void kcryptd_crypt(struct work_struct *work)kcryptd_crypt_write_convert (io); } -static void kcryptd_crypt_tasklet (unsigned long work) -{ -kcryptd_crypt ((struct work_struct *)work); -} -static void kcryptd_queue_crypt (struct dm_crypt_io *io) {struct crypt_config *cc = io->cc;
@@ -2229,15 +2201,10 @@ static void kcryptd_queue_crypt(struct dm_crypt_io *io)* irqs_disabled(): the kernel may run some IO completion from the idle thread, but * it is being executed with irqs disabled. */ -if (in_hardirq () ||irqs_disabled ()) { - io->in_tasklet = true; -tasklet_init (&io->tasklet, kcryptd_crypt_tasklet, (unsigned long )&io->work); -tasklet_schedule (&io->tasklet); +if (!(in_hardirq () ||irqs_disabled ())) { +kcryptd_crypt (&io->work);return ; } - -kcryptd_crypt (&io->work); -return ; }INIT_WORK (&io->work, kcryptd_crypt);
drivers/md/dm-ioctl.c +2 -1
@@ -1877,7 +1877,8 @@ static int copy_params(struct dm_ioctl __user *user, struct dm_ioctl *param_kern minimum_data_size - sizeof(param_kernel->version)))return -EFAULT ; -if (param_kernel->data_size < minimum_data_size) { +if (unlikely (param_kernel->data_size < minimum_data_size) || +unlikely (param_kernel->data_size >DM_MAX_TARGETS *DM_MAX_TARGET_PARAMS )) {DMERR ("Invalid data size in the ioctl structure: %u" , param_kernel->data_size);return -EINVAL ;
drivers/md/dm-table.c +7 -2
@@ -128,7 +128,12 @@ static int alloc_targets(struct dm_table *t, unsigned int num)int dm_table_create (struct dm_table **result,fmode_t mode,unsigned int num_targets,struct mapped_device *md) { -struct dm_table *t =kzalloc (sizeof (*t),GFP_KERNEL ); +struct dm_table *t; + +if (num_targets >DM_MAX_TARGETS ) +return -EOVERFLOW ; + + t =kzalloc (sizeof (*t),GFP_KERNEL );if (!t)return -ENOMEM ;
@@ -143,7 +148,7 @@ int dm_table_create(struct dm_table **result, fmode_t mode,if (!num_targets) {kfree (t); -return -ENOMEM ; +return -EOVERFLOW ; }if (alloc_targets (t, num_targets)) {
drivers/md/dm-verity-target.c +2 -24
@@ -634,23 +634,6 @@ static void verity_work(struct work_struct *w)verity_finish_io (io,errno_to_blk_status (verity_verify_io (io))); } -static void verity_tasklet (unsigned long data) -{ -struct dm_verity_io *io = (struct dm_verity_io *)data; -int err; - - io->in_tasklet = true; - err =verity_verify_io (io); -if (err == -EAGAIN || err == -ENOMEM ) { -/* fallback to retrying with work-queue */ -INIT_WORK (&io->work, verity_work); -queue_work (io->v->verify_wq, &io->work); -return ; - } - -verity_finish_io (io,errno_to_blk_status (err)); -} -static void verity_end_io (struct bio *bio) {struct dm_verity_io *io = bio->bi_private;
@@ -663,13 +646,8 @@ static void verity_end_io(struct bio *bio)return ; } -if (static_branch_unlikely (&use_tasklet_enabled) && io->v->use_tasklet) { -tasklet_init (&io->tasklet, verity_tasklet, (unsigned long )io); -tasklet_schedule (&io->tasklet); - }else { -INIT_WORK (&io->work, verity_work); -queue_work (io->v->verify_wq, &io->work); - } +INIT_WORK (&io->work, verity_work); +queue_work (io->v->verify_wq, &io->work); }/*
drivers/md/dm-verity.h +0 -1
@@ -83,7 +83,6 @@ struct dm_verity_io {struct bvec_iter iter;struct work_struct work; -struct tasklet_struct tasklet;/* * Three variably-size fields follow this struct:
drivers/md/md.c +4 -3
@@ -963,9 +963,10 @@ void md_super_write(struct mddev *mddev, struct md_rdev *rdev,return ; bio =bio_alloc_bioset (rdev->meta_bdev ? rdev->meta_bdev : rdev->bdev, -1 , -REQ_OP_WRITE |REQ_SYNC |REQ_PREFLUSH |REQ_FUA , -GFP_NOIO , &mddev->sync_set); +1 , +REQ_OP_WRITE |REQ_SYNC |REQ_IDLE |REQ_META + |REQ_PREFLUSH |REQ_FUA , +GFP_NOIO , &mddev->sync_set);atomic_inc (&rdev->nr_pending);
drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c +1 -1
@@ -559,7 +559,7 @@ static int rkisp1_probe(struct platform_device *pdev) rkisp1->irqs[il] = irq; } - ret =devm_request_irq (dev, irq, info->isrs[i].isr,0 , + ret =devm_request_irq (dev, irq, info->isrs[i].isr,IRQF_SHARED ,dev_driver_string (dev), dev);if (ret) {dev_err (dev,"request irq failed: %d\n" , ret);
drivers/media/rc/bpf-lirc.c +3 -3
@@ -253,7 +253,7 @@ int lirc_prog_attach(const union bpf_attr *attr, struct bpf_prog *prog)if (attr->attach_flags)return -EINVAL ; - rcdev =rc_dev_get_from_fd (attr->target_fd); + rcdev =rc_dev_get_from_fd (attr->target_fd, true);if (IS_ERR (rcdev))return PTR_ERR (rcdev);
@@ -278,7 +278,7 @@ int lirc_prog_detach(const union bpf_attr *attr)if (IS_ERR (prog))return PTR_ERR (prog); - rcdev =rc_dev_get_from_fd (attr->target_fd); + rcdev =rc_dev_get_from_fd (attr->target_fd, true);if (IS_ERR (rcdev)) {bpf_prog_put (prog);return PTR_ERR (rcdev);
@@ -303,7 +303,7 @@ int lirc_prog_query(const union bpf_attr *attr, union bpf_attr __user *uattr)if (attr->query.query_flags)return -EINVAL ; - rcdev =rc_dev_get_from_fd (attr->query.target_fd); + rcdev =rc_dev_get_from_fd (attr->query.target_fd, false);if (IS_ERR (rcdev))return PTR_ERR (rcdev);
drivers/media/rc/ir_toy.c +2 -0
@@ -332,6 +332,7 @@ static int irtoy_tx(struct rc_dev *rc, uint *txbuf, uint count) sizeof(COMMAND_SMODE_EXIT), STATE_COMMAND_NO_RESP);if (err) {dev_err (irtoy->dev,"exit sample mode: %d\n" , err); +kfree (buf);return err; }
@@ -339,6 +340,7 @@ static int irtoy_tx(struct rc_dev *rc, uint *txbuf, uint count) sizeof(COMMAND_SMODE_ENTER), STATE_COMMAND);if (err) {dev_err (irtoy->dev,"enter sample mode: %d\n" , err); +kfree (buf);return err; }
drivers/media/rc/lirc_dev.c +4 -1
@@ -814,7 +814,7 @@ void __exit lirc_dev_exit(void)unregister_chrdev_region (lirc_base_dev,RC_DEV_MAX ); } -struct rc_dev *rc_dev_get_from_fd (int fd) +struct rc_dev *rc_dev_get_from_fd (int fd,bool write) {struct fd f =fdget (fd);struct lirc_fh *fh;
@@ -828,6 +828,9 @@ struct rc_dev *rc_dev_get_from_fd(int fd)return ERR_PTR (-EINVAL ); } +if (write && !(f.file->f_mode &FMODE_WRITE )) +return ERR_PTR (-EPERM ); + fh = f.file->private_data; dev = fh->rc;
drivers/media/rc/rc-core-priv.h +1 -1
@@ -325,7 +325,7 @@ void lirc_raw_event(struct rc_dev *dev, struct ir_raw_event ev);void lirc_scancode_event (struct rc_dev *dev,struct lirc_scancode *lsc);int lirc_register (struct rc_dev *dev);void lirc_unregister (struct rc_dev *dev); -struct rc_dev *rc_dev_get_from_fd (int fd); +struct rc_dev *rc_dev_get_from_fd (int fd,bool write);#else static inline int lirc_dev_init (void ) {return 0 ; }static inline void lirc_dev_exit (void ) {}
drivers/misc/fastrpc.c +1 -1
@@ -1990,7 +1990,7 @@ static int fastrpc_cb_remove(struct platform_device *pdev)int i;spin_lock_irqsave (&cctx->lock, flags); -for (i =1 ; i <FASTRPC_MAX_SESSIONS ; i++) { +for (i =0 ; i <FASTRPC_MAX_SESSIONS ; i++) {if (cctx->session[i].sid == sess->sid) { cctx->session[i].valid = false; cctx->sesscount--;
drivers/mmc/core/slot-gpio.c +5 -1
@@ -62,11 +62,15 @@ int mmc_gpio_alloc(struct mmc_host *host)int mmc_gpio_get_ro (struct mmc_host *host) {struct mmc_gpio *ctx = host->slot.handler_priv; +int cansleep;if (!ctx || !ctx->ro_gpio)return -ENOSYS ; -return gpiod_get_value_cansleep (ctx->ro_gpio); + cansleep =gpiod_cansleep (ctx->ro_gpio); +return cansleep ? +gpiod_get_value_cansleep (ctx->ro_gpio) : +gpiod_get_value (ctx->ro_gpio); }EXPORT_SYMBOL (mmc_gpio_get_ro);
drivers/mmc/host/sdhci-pci-o2micro.c +30 -0
@@ -602,6 +602,35 @@ static void sdhci_pci_o2_set_clock(struct sdhci_host *host, unsigned int clock)sdhci_o2_enable_clk (host, clk); } +static void sdhci_pci_o2_set_power (struct sdhci_host *host,unsigned char mode,unsigned short vdd) +{ +struct sdhci_pci_chip *chip; +struct sdhci_pci_slot *slot =sdhci_priv (host); +u32 scratch_32 =0 ; +u8 scratch_8 =0 ; + + chip = slot->chip; + +if (mode ==MMC_POWER_OFF ) { +/* UnLock WP */ +pci_read_config_byte (chip->pdev,O2_SD_LOCK_WP , &scratch_8); + scratch_8 &=0x7f ; +pci_write_config_byte (chip->pdev,O2_SD_LOCK_WP , scratch_8); + +/* Set PCR 0x354[16] to switch Clock Source back to OPE Clock */ +pci_read_config_dword (chip->pdev,O2_SD_OUTPUT_CLK_SOURCE_SWITCH , &scratch_32); + scratch_32 &= ~(O2_SD_SEL_DLL ); +pci_write_config_dword (chip->pdev,O2_SD_OUTPUT_CLK_SOURCE_SWITCH , scratch_32); + +/* Lock WP */ +pci_read_config_byte (chip->pdev,O2_SD_LOCK_WP , &scratch_8); + scratch_8 |=0x80 ; +pci_write_config_byte (chip->pdev,O2_SD_LOCK_WP , scratch_8); + } + +sdhci_set_power (host, mode, vdd); +} +static int sdhci_pci_o2_probe_slot (struct sdhci_pci_slot *slot) {struct sdhci_pci_chip *chip;
@@ -911,6 +940,7 @@ static const struct sdhci_ops sdhci_pci_o2_ops = { .set_bus_width = sdhci_set_bus_width, .reset = sdhci_reset, .set_uhs_signaling = sdhci_set_uhs_signaling, + .set_power = sdhci_pci_o2_set_power, };const struct sdhci_pci_fixes sdhci_o2 = {
drivers/net/can/dev/netlink.c +1 -1
@@ -311,7 +311,7 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],/* Neither of TDC parameters nor TDC flags are * provided: do calculation */ -can_calc_tdco (&priv->tdc, priv->tdc_const, &priv->data_bittiming, +can_calc_tdco (&priv->tdc, priv->tdc_const, &dbt, &priv->ctrlmode, priv->ctrlmode_supported); }/* else: both CAN_CTRLMODE_TDC_{AUTO,MANUAL} are explicitly * turned off. TDC is disabled: do nothing
drivers/net/ethernet/intel/i40e/i40e_main.c +1 -1
@@ -5333,7 +5333,7 @@ static int i40e_pf_wait_queues_disabled(struct i40e_pf *pf) {int v, ret =0 ; -for (v =0 ; v < pf->hw.func_caps.num_vsis; v++) { +for (v =0 ; v < pf->num_alloc_vsi; v++) {if (pf->vsi[v]) { ret =i40e_vsi_wait_queues_disabled (pf->vsi[v]);if (ret)
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +33 -5
@@ -2846,6 +2846,24 @@ static int i40e_vc_get_stats_msg(struct i40e_vf *vf, u8 *msg) (u8 *)&stats, sizeof(stats)); } +/** +* i40e_can_vf_change_mac +* @vf: pointer to the VF info +* +* Return true if the VF is allowed to change its MAC filters, false otherwise +*/ +static bool i40e_can_vf_change_mac (struct i40e_vf *vf) +{ +/* If the VF MAC address has been set administratively (via the +* ndo_set_vf_mac command), then deny permission to the VF to +* add/delete unicast MAC addresses, unless the VF is trusted +*/ +if (vf->pf_set_mac && !vf->trusted) +return false; + +return true; +} +#define I40E_MAX_MACVLAN_PER_HW 3072#define I40E_MAX_MACVLAN_PER_PF (num_ports) (I40E_MAX_MACVLAN_PER_HW / \ (num_ports))
@@ -2905,8 +2923,8 @@ static inline int i40e_check_vf_permission(struct i40e_vf *vf,* The VF may request to set the MAC address filter already * assigned to it so do not return an error in that case. */ -if (!test_bit (I40E_VIRTCHNL_VF_CAP_PRIVILEGE , &vf->vf_caps) && - !is_multicast_ether_addr (addr) && vf->pf_set_mac && +if (!i40e_can_vf_change_mac (vf) && + !is_multicast_ether_addr (addr) && !ether_addr_equal (addr, vf->default_lan_addr.addr)) {dev_err (&pf->pdev->dev,"VF attempting to override administratively set MAC address, bring down and up the VF interface to resume normal operation\n" );
@@ -3049,19 +3067,29 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg) ret =I40E_ERR_INVALID_MAC_ADDR ; goto error_param; } -if (ether_addr_equal (al->list[i].addr, vf->default_lan_addr.addr)) - was_unimac_deleted = true; } vsi = pf->vsi[vf->lan_vsi_idx];spin_lock_bh (&vsi->mac_filter_hash_lock);/* delete addresses from the list */ -for (i =0 ; i < al->num_elements; i++) +for (i =0 ; i < al->num_elements; i++) { +const u8 *addr = al->list[i].addr; + +/* Allow to delete VF primary MAC only if it was not set +* administratively by PF or if VF is trusted. +*/ +if (ether_addr_equal (addr, vf->default_lan_addr.addr) && +i40e_can_vf_change_mac (vf)) + was_unimac_deleted = true; +else +continue ; +if (i40e_del_mac_filter (vsi, al->list[i].addr)) { ret =I40E_ERR_INVALID_MAC_ADDR ;spin_unlock_bh (&vsi->mac_filter_hash_lock); goto error_param; } + }spin_unlock_bh (&vsi->mac_filter_hash_lock);
drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.c +2 -0
@@ -65,6 +65,8 @@ int mlxsw_sp_acl_tcam_init(struct mlxsw_sp *mlxsw_sp, tcam->max_groups = max_groups; tcam->max_group_size =MLXSW_CORE_RES_GET (mlxsw_sp->core,ACL_MAX_GROUP_SIZE ); + tcam->max_group_size = min_t(unsigned int, tcam->max_group_size, +MLXSW_REG_PAGT_ACL_MAX_NUM ); err = ops->init (mlxsw_sp, tcam->priv, tcam);if (err)
drivers/net/ethernet/microchip/lan966x/lan966x_lag.c +7 -2
@@ -37,19 +37,24 @@ static void lan966x_lag_set_aggr_pgids(struct lan966x *lan966x)/* Now, set PGIDs for each active LAG */ for (lag =0 ; lag < lan966x->num_phys_ports; ++lag) { -struct net_device *bond = lan966x->ports[lag]->bond; +struct lan966x_port *port = lan966x->ports[lag];int num_active_ports =0 ; +struct net_device *bond;unsigned long bond_mask;u8 aggr_idx[16 ]; -if (!bond || (visited &BIT (lag))) +if (!port || !port->bond || (visited &BIT (lag)))continue ; + bond = port->bond; bond_mask =lan966x_lag_get_mask (lan966x, bond);for_each_set_bit (p, &bond_mask, lan966x->num_phys_ports) {struct lan966x_port *port = lan966x->ports[p]; +if (!port) +continue ; +lan_wr (ANA_PGID_PGID_SET (bond_mask), lan966x,ANA_PGID (p));if (port->lag_tx_active)
drivers/net/ethernet/netronome/nfp/flower/conntrack.c +22 -2
@@ -1379,10 +1379,30 @@ static void nfp_nft_ct_translate_mangle_action(struct flow_action_entry *mangle_ mangle_action->mangle.mask = (__force u32 )cpu_to_be32 (mangle_action->mangle.mask);return ; +/* Both struct tcphdr and struct udphdr start with +* __be16 source; +* __be16 dest; +* so we can use the same code for both. +*/ case FLOW_ACT_MANGLE_HDR_TYPE_TCP :case FLOW_ACT_MANGLE_HDR_TYPE_UDP : - mangle_action->mangle.val = (__force u16 )cpu_to_be16 (mangle_action->mangle.val); - mangle_action->mangle.mask = (__force u16 )cpu_to_be16 (mangle_action->mangle.mask); +if (mangle_action->mangle.offset == offsetof(struct tcphdr , source)) { + mangle_action->mangle.val = + (__force u32 )cpu_to_be32 (mangle_action->mangle.val <<16 ); +/* The mask of mangle action is inverse mask, +* so clear the dest tp port with 0xFFFF to +* instead of rotate-left operation. +*/ + mangle_action->mangle.mask = + (__force u32 )cpu_to_be32 (mangle_action->mangle.mask <<16 |0xFFFF ); + } +if (mangle_action->mangle.offset == offsetof(struct tcphdr , dest)) { + mangle_action->mangle.offset =0 ; + mangle_action->mangle.val = + (__force u32 )cpu_to_be32 (mangle_action->mangle.val); + mangle_action->mangle.mask = + (__force u32 )cpu_to_be32 (mangle_action->mangle.mask); + }return ;default :
drivers/net/ethernet/netronome/nfp/flower/tunnel_conf.c +1 -1
@@ -980,7 +980,7 @@ nfp_tunnel_add_shared_mac(struct nfp_app *app, struct net_device *netdev,u16 nfp_mac_idx =0 ; entry =nfp_tunnel_lookup_offloaded_macs (app, netdev->dev_addr); -if (entry &&nfp_tunnel_is_mac_idx_global (entry->index)) { +if (entry && (nfp_tunnel_is_mac_idx_global (entry->index) ||netif_is_lag_port (netdev))) {if (entry->bridge_count || !nfp_flower_is_supported_bridge (netdev)) { nfp_tunnel_offloaded_macs_inc_ref_and_link(entry,
drivers/net/ethernet/netronome/nfp/nfpcore/nfp6000_pcie.c +4 -2
@@ -537,11 +537,13 @@ static int enable_bars(struct nfp6000_pcie *nfp, u16 interface)const u32 barcfg_msix_general =NFP_PCIE_BAR_PCIE2CPP_MapType ( NFP_PCIE_BAR_PCIE2CPP_MapType_GENERAL) | - NFP_PCIE_BAR_PCIE2CPP_LengthSelect_32BIT; +NFP_PCIE_BAR_PCIE2CPP_LengthSelect ( + NFP_PCIE_BAR_PCIE2CPP_LengthSelect_32BIT);const u32 barcfg_msix_xpb =NFP_PCIE_BAR_PCIE2CPP_MapType ( NFP_PCIE_BAR_PCIE2CPP_MapType_BULK) | - NFP_PCIE_BAR_PCIE2CPP_LengthSelect_32BIT | +NFP_PCIE_BAR_PCIE2CPP_LengthSelect ( + NFP_PCIE_BAR_PCIE2CPP_LengthSelect_32BIT) |NFP_PCIE_BAR_PCIE2CPP_Target_BaseAddress (NFP_CPP_TARGET_ISLAND_XPB );const u32 barcfg_explicit[4 ] = {
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +3 -0
@@ -3826,6 +3826,9 @@ static int __stmmac_open(struct net_device *dev, priv->rx_copybreak =STMMAC_RX_COPYBREAK ; buf_sz = dma_conf->dma_buf_sz; +for (int i =0 ; i <MTL_MAX_TX_QUEUES ; i++) +if (priv->dma_conf.tx_queue[i].tbs &STMMAC_TBS_EN ) + dma_conf->tx_queue[i].tbs = priv->dma_conf.tx_queue[i].tbs;memcpy (&priv->dma_conf, dma_conf,sizeof (*dma_conf));stmmac_reset_queues_param (priv);
drivers/net/ethernet/ti/cpsw.c +2 -0
@@ -631,6 +631,8 @@ static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv) } } + phy->mac_managed_pm = true; + slave->phy = phy;phy_attached_info (slave->phy);
drivers/net/ethernet/ti/cpsw_new.c +3 -0
@@ -772,6 +772,9 @@ static void cpsw_slave_open(struct cpsw_slave *slave, struct cpsw_priv *priv) slave->slave_num);return ; } + + phy->mac_managed_pm = true; + slave->phy = phy;phy_attached_info (slave->phy);
drivers/net/hyperv/netvsc.c +4 -1
@@ -740,7 +740,10 @@ void netvsc_device_remove(struct hv_device *device)/* Disable NAPI and disassociate its context from the device. */ for (i =0 ; i < net_device->num_chn; i++) {/* See also vmbus_reset_channel_cb(). */ -napi_disable (&net_device->chan_table[i].napi); +/* only disable enabled NAPI channel */ +if (i < ndev->real_num_rx_queues) +napi_disable (&net_device->chan_table[i].napi); +netif_napi_del (&net_device->chan_table[i].napi); }
drivers/net/hyperv/netvsc_drv.c +62 -20
140 lines not on this page · raw message
drivers/net/wireless/intel/iwlwifi/fw/acpi.c +9 -6
@@ -576,7 +576,7 @@ int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) &tbl_rev);if (!IS_ERR (wifi_pkg)) {if (tbl_rev !=2 ) { - ret =PTR_ERR (wifi_pkg); + ret = -EINVAL ; goto out_free; }
@@ -592,7 +592,7 @@ int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) &tbl_rev);if (!IS_ERR (wifi_pkg)) {if (tbl_rev !=1 ) { - ret =PTR_ERR (wifi_pkg); + ret = -EINVAL ; goto out_free; }
@@ -608,7 +608,7 @@ int iwl_sar_get_wrds_table(struct iwl_fw_runtime *fwrt) &tbl_rev);if (!IS_ERR (wifi_pkg)) {if (tbl_rev !=0 ) { - ret =PTR_ERR (wifi_pkg); + ret = -EINVAL ; goto out_free; }
@@ -665,7 +665,7 @@ int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) &tbl_rev);if (!IS_ERR (wifi_pkg)) {if (tbl_rev !=2 ) { - ret =PTR_ERR (wifi_pkg); + ret = -EINVAL ; goto out_free; }
@@ -681,7 +681,7 @@ int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) &tbl_rev);if (!IS_ERR (wifi_pkg)) {if (tbl_rev !=1 ) { - ret =PTR_ERR (wifi_pkg); + ret = -EINVAL ; goto out_free; }
@@ -697,7 +697,7 @@ int iwl_sar_get_ewrd_table(struct iwl_fw_runtime *fwrt) &tbl_rev);if (!IS_ERR (wifi_pkg)) {if (tbl_rev !=0 ) { - ret =PTR_ERR (wifi_pkg); + ret = -EINVAL ; goto out_free; }
@@ -1044,6 +1044,9 @@ int iwl_acpi_get_ppag_table(struct iwl_fw_runtime *fwrt) goto read_table; } + ret =PTR_ERR (wifi_pkg); + goto out_free; + read_table: fwrt->ppag_ver = tbl_rev; flags = &wifi_pkg->package.elements[1 ];
drivers/net/wireless/marvell/mwifiex/Kconfig +3 -2
@@ -10,13 +10,14 @@ config MWIFIEX mwifiex. config MWIFIEX_SDIO - tristate "Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897/SD8977/SD8987/SD8997" + tristate "Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897/SD8977/SD8978/SD8987/SD8997" depends on MWIFIEX && MMC select FW_LOADER select WANT_DEV_COREDUMP help This adds support for wireless adapters based on Marvell - 8786/8787/8797/8887/8897/8977/8987/8997 chipsets with SDIO interface. + 8786/8787/8797/8887/8897/8977/8978/8987/8997 chipsets with + SDIO interface. SD8978 is also known as NXP IW416. If you choose to build it as a module, it will be called mwifiex_sdio.
drivers/net/wireless/marvell/mwifiex/sdio.c +43 -3
148 lines not on this page · raw message
drivers/net/wireless/marvell/mwifiex/sdio.h +3 -0
@@ -25,6 +25,7 @@#define SD8887_DEFAULT_FW_NAME "mrvl/sd8887_uapsta.bin"#define SD8801_DEFAULT_FW_NAME "mrvl/sd8801_uapsta.bin"#define SD8977_DEFAULT_FW_NAME "mrvl/sdsd8977_combo_v2.bin" +#define SD8978_SDIOUART_FW_NAME "mrvl/sdiouartiw416_combo_v0.bin"#define SD8987_DEFAULT_FW_NAME "mrvl/sd8987_uapsta.bin"#define SD8997_DEFAULT_FW_NAME "mrvl/sdsd8997_combo_v4.bin"#define SD8997_SDIOUART_FW_NAME "mrvl/sdiouart8997_combo_v4.bin"
@@ -257,6 +258,7 @@ struct sdio_mmc_card {bool fw_dump_enh;bool can_auto_tdls;bool can_ext_scan; +bool fw_ready_extra_delay;struct mwifiex_sdio_mpa_tx mpa_tx;struct mwifiex_sdio_mpa_rx mpa_rx;
@@ -280,6 +282,7 @@ struct mwifiex_sdio_device {bool fw_dump_enh;bool can_auto_tdls;bool can_ext_scan; +bool fw_ready_extra_delay; };/*
drivers/net/xen-netback/netback.c +40 -44
154 lines not on this page · raw message
drivers/of/property.c +15 -3
@@ -762,7 +762,9 @@ struct device_node *of_graph_get_port_parent(struct device_node *node)/* Walk 3 levels up only if there is 'ports' node. */ for (depth =3 ; depth && node; depth--) { node =of_get_next_parent (node); -if (depth ==2 && !of_node_name_eq (node,"ports" )) +if (depth ==2 && !of_node_name_eq (node,"ports" ) && + !of_node_name_eq (node,"in-ports" ) && + !of_node_name_eq (node,"out-ports" ))break ; }return node;
@@ -1243,7 +1245,7 @@ DEFINE_SIMPLE_PROP(clocks, "clocks", "#clock-cells") DEFINE_SIMPLE_PROP(interconnects, "interconnects", "#interconnect-cells") DEFINE_SIMPLE_PROP(iommus, "iommus", "#iommu-cells") DEFINE_SIMPLE_PROP(mboxes, "mboxes", "#mbox-cells") -DEFINE_SIMPLE_PROP(io_channels, "io-channel", "#io-channel-cells") +DEFINE_SIMPLE_PROP(io_channels, "io-channels", "#io-channel-cells") DEFINE_SIMPLE_PROP(interrupt_parent, "interrupt-parent", NULL) DEFINE_SIMPLE_PROP(dmas, "dmas", "#dma-cells")DEFINE_SIMPLE_PROP (power_domains,"power-domains" ,"#power-domain-cells" )
@@ -1261,7 +1263,6 @@ DEFINE_SIMPLE_PROP(pinctrl5, "pinctrl-5", NULL) DEFINE_SIMPLE_PROP(pinctrl6, "pinctrl-6", NULL) DEFINE_SIMPLE_PROP(pinctrl7, "pinctrl-7", NULL) DEFINE_SIMPLE_PROP(pinctrl8, "pinctrl-8", NULL) -DEFINE_SIMPLE_PROP(remote_endpoint, "remote-endpoint", NULL) DEFINE_SIMPLE_PROP(pwms, "pwms", "#pwm-cells") DEFINE_SIMPLE_PROP(resets, "resets", "#reset-cells")DEFINE_SIMPLE_PROP (leds,"leds" ,NULL )
@@ -1326,6 +1327,17 @@ static struct device_node *parse_interrupts(struct device_node *np,return of_irq_parse_one (np, index, &sup_args) ?NULL : sup_args.np; } +static struct device_node *parse_remote_endpoint (struct device_node *np, +const char *prop_name, +int index) +{ +/* Return NULL for index > 0 to signify end of remote-endpoints. */ +if (!index ||strcmp (prop_name,"remote-endpoint" )) +return NULL ; + +return of_graph_get_remote_port_parent (np); +} +static const struct supplier_bindings of_supplier_bindings[] = { { .parse_prop = parse_clocks, }, { .parse_prop = parse_interconnects, },
drivers/of/unittest.c +9 -3
@@ -49,6 +49,12 @@ static struct unittest_results { failed; \ })
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/tty/serial/max310x.c +43 -10
53 lines not on this page · raw message
drivers/usb/gadget/function/f_mass_storage.c +18 -2
Lines of this file are not shown. View the raw message.
fs/btrfs/block-group.c +47 -2
49 lines not on this page · raw message
fs/smb/client/smb2pdu.c +56 -37
93 lines not on this page · raw message
fs/zonefs/file.c +27 -15
42 lines not on this page · raw message
fs/zonefs/super.c +38 -28
66 lines not on this page · raw message
include/linux/cleanup.h new file +171 -0
171 lines not on this page · raw message
kernel/bpf/helpers.c +39 -28
67 lines not on this page · raw message
kernel/trace/bpf_trace.c +27 -29
56 lines not on this page · raw message
kernel/trace/trace.c +40 -38
78 lines not on this page · raw message
net/can/j1939/socket.c +30 -16
46 lines not on this page · raw message
net/netfilter/ipset/ip_set_bitmap_gen.h +11 -3
Lines of this file are not shown. View the raw message.
net/openvswitch/flow_netlink.c +33 -16
49 lines not on this page · raw message
net/tls/tls_sw.c +145 -81
226 lines not on this page · raw message
net/xfrm/xfrm_input.c +26 -51
77 lines not on this page · raw message
scripts/mod/modpost.c +25 -18
43 lines not on this page · raw message
tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh +55 -1
56 lines not on this page · raw message
tools/testing/selftests/kvm/dirty_log_test.c +44 -33
77 lines not on this page · raw message
tools/testing/selftests/net/mptcp/config +3 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/mptcp/settings +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/vm/va_128TBswitch.sh +6 -0
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.