Linux 6.12.95
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.12.95 kernel.
All users of the 6.12 kernel series must upgrade.
The updated 6.12.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.12.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/networking/bonding.rst | 15 Documentation/userspace-api/ioctl/ioctl-number.rst | 485 ++--- Makefile | 2 arch/arm64/Kconfig | 1 arch/loongarch/kernel/smp.c | 1 arch/mips/dec/prom/console.c | 7 arch/mips/kernel/smp.c | 2 arch/riscv/include/asm/cacheflush.h | 25 arch/riscv/include/asm/kfence.h | 7 arch/riscv/kernel/entry.S | 6 arch/x86/kvm/hyperv.c | 5 arch/x86/kvm/mmu/mmu.c | 28 arch/x86/kvm/svm/sev.c | 113 - block/bdev.c | 5 block/blk-cgroup.c | 21 drivers/acpi/scan.c | 41 drivers/base/memory.c | 3 drivers/char/agp/amd64-agp.c | 2 drivers/crypto/intel/qat/qat_common/adf_cfg.c | 10 drivers/crypto/intel/qat/qat_common/adf_cfg.h | 1 drivers/crypto/intel/qat/qat_common/adf_cfg_common.h | 32 drivers/crypto/intel/qat/qat_common/adf_cfg_user.h | 38 drivers/crypto/intel/qat/qat_common/adf_common_drv.h | 3 drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c | 416 ---- drivers/crypto/intel/qat/qat_common/adf_dev_mgr.c | 70 drivers/fpga/of-fpga-region.c | 3 drivers/gpio/gpiolib.c | 136 - drivers/gpu/drm/v3d/v3d_drv.h | 7 drivers/gpu/drm/v3d/v3d_gem.c | 7 drivers/gpu/drm/v3d/v3d_irq.c | 62 drivers/gpu/drm/v3d/v3d_sched.c | 42 drivers/gpu/drm/xe/display/xe_display.c | 11 drivers/hv/hv_kvp.c | 25 drivers/hv/vmbus_drv.c | 29 drivers/i2c/i2c-core-base.c | 8 drivers/i2c/i2c-stub.c | 5 drivers/iio/adc/ti-ads1298.c | 7 drivers/iio/light/bh1780.c | 4 drivers/iio/light/veml6075.c | 8 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 drivers/irqchip/irq-imgpdc.c | 6 drivers/media/test-drivers/vidtv/vidtv_mux.c | 8 drivers/mtd/spi-nor/macronix.c | 31 drivers/net/bonding/bond_3ad.c | 131 - drivers/net/bonding/bond_main.c | 86 drivers/net/bonding/bond_netlink.c | 37 drivers/net/bonding/bond_options.c | 71 drivers/net/bonding/bond_procfs.c | 11 drivers/net/bonding/bond_sysfs_slave.c | 17 drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c | 8 drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h | 1 drivers/net/wan/hdlc_ppp.c | 15 drivers/net/wireless/ath/ath11k/dp.c | 1 drivers/net/wireless/intel/iwlwifi/mvm/ptp.c | 2 drivers/net/wireless/mediatek/mt76/mt76x2/usb.c | 1 drivers/net/wireless/mediatek/mt76/mt7921/init.c | 7 drivers/net/wireless/mediatek/mt76/mt7921/main.c | 14 drivers/net/wireless/mediatek/mt76/mt7925/main.c | 3 drivers/net/wireless/realtek/rtlwifi/rtl8821ae/trx.h | 2 drivers/net/wireless/realtek/rtw88/tx.c | 7 drivers/net/wireless/realtek/rtw88/usb.c | 13 drivers/ntb/hw/epf/ntb_hw_epf.c | 3 drivers/pci/controller/dwc/pcie-qcom.c | 17 drivers/power/reset/linkstation-poweroff.c | 2 drivers/power/sequencing/core.c | 14 drivers/regulator/core.c | 10 drivers/rpmsg/rpmsg_char.c | 15 drivers/staging/rtl8723bs/core/rtw_mlme.c | 10 drivers/tty/serial/8250/8250_dw.c | 4 drivers/tty/serial/qcom_geni_serial.c | 9 drivers/tty/vt/vc_screen.c | 2 drivers/video/fbdev/core/fbmem.c | 12 drivers/video/fbdev/core/fbsysfs.c | 10 drivers/video/fbdev/core/modedb.c | 5 fs/backing-file.c | 22 fs/dlm/lockspace.c | 2 fs/eventpoll.c | 142 - fs/exfat/dir.c | 4 fs/f2fs/acl.c | 18 fs/f2fs/data.c | 16 fs/f2fs/extent_cache.c | 19 fs/f2fs/file.c | 9 fs/f2fs/inode.c | 9 fs/fhandle.c | 16 fs/file_table.c | 40 fs/fuse/dev.c | 23 fs/fuse/file.c | 8 fs/fuse/passthrough.c | 2 fs/gfs2/super.c | 1 fs/internal.h | 4 fs/mount.h | 10 fs/namespace.c | 6 fs/nfs/client.c | 1 fs/nfs/pnfs.c | 2 fs/nfs/pnfs_nfs.c | 4 fs/nfsd/nfs2acl.c | 17 fs/nfsd/nfs3acl.c | 17 fs/nfsd/nfs4recover.c | 3 fs/nfsd/nfs4state.c | 1 fs/nfsd/nfs4xdr.c | 3 fs/nfsd/vfs.c | 6 fs/ntfs3/xattr.c | 12 fs/ocfs2/suballoc.c | 22 fs/overlayfs/dir.c | 2 fs/overlayfs/file.c | 3 fs/smb/server/smb2pdu.c | 5 fs/smb/server/smbacl.c | 4 fs/xfs/libxfs/xfs_ag_resv.c | 8 fs/xfs/libxfs/xfs_alloc.c | 5 fs/xfs/libxfs/xfs_attr_leaf.c | 2 fs/xfs/libxfs/xfs_bmap.c | 17 fs/xfs/libxfs/xfs_btree.c | 2 fs/xfs/libxfs/xfs_da_btree.c | 2 fs/xfs/libxfs/xfs_dir2.c | 2 fs/xfs/libxfs/xfs_exchmaps.c | 4 fs/xfs/libxfs/xfs_ialloc.c | 2 fs/xfs/libxfs/xfs_inode_buf.c | 4 fs/xfs/libxfs/xfs_inode_fork.c | 3 fs/xfs/libxfs/xfs_refcount.c | 5 fs/xfs/libxfs/xfs_rmap.c | 2 fs/xfs/scrub/cow_repair.c | 7 fs/xfs/scrub/repair.c | 2 fs/xfs/xfs_attr_item.c | 2 fs/xfs/xfs_buf.c | 4 fs/xfs/xfs_error.c | 5 fs/xfs/xfs_error.h | 10 fs/xfs/xfs_inode.c | 28 fs/xfs/xfs_iomap.c | 2 fs/xfs/xfs_log.c | 8 fs/xfs/xfs_trans_ail.c | 2 include/keys/request_key_auth-type.h | 2 include/linux/backing-file.h | 4 include/linux/blkdev.h | 16 include/linux/err.h | 12 include/linux/fs.h | 19 include/linux/kvm_host.h | 7 include/linux/lsm_audit.h | 2 include/linux/lsm_hook_defs.h | 5 include/linux/lsm_hooks.h | 1 include/linux/security.h | 22 include/linux/skmsg.h | 15 include/net/bond_3ad.h | 3 include/net/bond_options.h | 2 include/net/bonding.h | 3 include/net/phonet/pn_dev.h | 2 include/net/rtnetlink.h | 2 include/net/sock.h | 2 include/net/udp_tunnel.h | 14 include/uapi/linux/if_link.h | 3 io_uring/net.c | 36 io_uring/opdef.c | 4 kernel/bpf/cgroup.c | 2 kernel/fork.c | 1 kernel/futex/pi.c | 6 kernel/locking/mutex.c | 16 kernel/locking/rtmutex.c | 51 kernel/locking/rtmutex_api.c | 14 kernel/locking/rtmutex_common.h | 3 kernel/locking/rwbase_rt.c | 8 kernel/locking/rwsem.c | 4 kernel/locking/spinlock_rt.c | 5 kernel/locking/ww_mutex.h | 30 kernel/sched/core.c | 12 kernel/trace/bpf_trace.c | 4 kernel/trace/ftrace.c | 68 lib/debugobjects.c | 56 net/9p/client.c | 3 net/batman-adv/bat_iv_ogm.c | 11 net/batman-adv/bat_v.c | 1 net/batman-adv/bat_v_ogm.c | 23 net/batman-adv/bridge_loop_avoidance.c | 28 net/batman-adv/distributed-arp-table.c | 12 net/batman-adv/fragmentation.c | 22 net/batman-adv/fragmentation.h | 3 net/batman-adv/netlink.c | 8 net/batman-adv/routing.c | 73 net/batman-adv/tp_meter.c | 113 - net/batman-adv/translation-table.c | 12 net/batman-adv/tvlv.c | 69 net/batman-adv/types.h | 21 net/core/filter.c | 27 net/core/rtnetlink.c | 8 net/core/skbuff.c | 23 net/core/skmsg.c | 2 net/ipv4/ip_gre.c | 6 net/ipv4/ip_output.c | 20 net/ipv4/tcp_ao.c | 4 net/ipv6/ip6_output.c | 22 net/ipv6/ip6_udp_tunnel.c | 15 net/ipv6/ip6_vti.c | 1 net/mac802154/llsec.c | 14 net/phonet/pn_dev.c | 12 net/phonet/pn_netlink.c | 23 net/rxrpc/input.c | 21 net/sctp/ipv6.c | 9 net/sctp/protocol.c | 2 net/socket.c | 2 net/tipc/crypto.c | 9 net/tipc/udp_media.c | 10 net/tls/tls_sw.c | 4 net/unix/garbage.c | 2 scripts/link-vmlinux.sh | 4 scripts/sorttable.c | 1119 ++++++++++++- scripts/sorttable.h | 500 ----- security/apparmor/include/policy_unpack.h | 19 security/apparmor/lsm.c | 16 security/apparmor/policy.c | 8 security/keys/internal.h | 2 security/keys/keyctl.c | 24 security/keys/keyctl_pkey.c | 9 security/keys/request_key_auth.c | 33 security/security.c | 109 + security/selinux/hooks.c | 242 ++ security/selinux/include/objsec.h | 11 tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c | 35 tools/testing/selftests/bpf/progs/kprobe_multi_sleepable.c | 25 tools/testing/selftests/ptp/testptp.c | 62 virt/kvm/eventfd.c | 12 218 files changed, 3856 insertions(+), 2326 deletions(-)
Amir Goldstein (1):
fs: constify file ptr in backing_file accessor helpers
André Draszik (1):
regulator: core: fix locking in regulator_resolve_supply() error path
Andy Shevchenko (2):
gpiolib: Extract gpiochip_choose_fwnode() for wider use
gpiolib: Remove redundant assignment of return variable
Antoniu Miclaus (1):
iio: light: bh1780: fix PM runtime leak on error path
Arnd Bergmann (1):
err.h: use __always_inline on all error pointer helpers
Ashutosh Desai (1):
KVM: SVM: Fix page overflow in sev_dbg_crypt() for ENCRYPT path
Bagas Sanjaya (2):
Documentation: ioctl-number: Fix linuxppc-dev mailto link
Documentation: ioctl-number: Extend "Include File" column width
Bitterblue Smith (1):
wifi: rtlwifi: rtl8821ae: Fix C2H bit location in RX descriptor
Bryam Vargas (1):
apparmor: mediate the implicit connect of TCP fast open sendmsg
Cheng Ming Lin (2):
mtd: spi-nor: macronix: Add post_sfdp fixups for Quad Input Page Program
mtd: spi-nor: macronix: add support for mx66{l2, u1}g45g
Christian Brauner (7):
eventpoll: use hlist_is_singular_node() in __ep_remove()
eventpoll: split __ep_remove()
eventpoll: kill __ep_remove()
eventpoll: drop vestigial __ prefix from ep_remove_{file,epi}()
eventpoll: rename ep_remove_safe() back to ep_remove()
eventpoll: move epi_fget() up
eventpoll: fix ep_remove struct eventpoll / struct file UAF
Christoph Hellwig (1):
xfs: remove the expr argument to XFS_TEST_ERROR
David Howells (1):
rxrpc: Fix the ACK parser to extract the SACK table for parsing
Davidlohr Bueso (1):
locking/rtmutex: Skip remove_waiter() when waiter is not enqueued
Dawei Feng (1):
bpf: use kvfree() for replaced sysctl write buffer
Denis Arefev (1):
block: Avoid mounting the bdev pseudo-filesystem in userspace
Dexuan Cui (1):
Drivers: hv: vmbus: Improve the logic of reserving fb_mmio on Gen2 VMs
Dominik Woźniak (1):
nfsd: check get_user() return when reading princhashlen
Doruk Tan Ozturk (2):
mac802154: llsec: add skb_cow_data() before in-place crypto
tipc: fix slab-use-after-free Read in tipc_aead_decrypt_done
ElXreno (1):
wifi: mt76: mt7925: don't disable AP BSS when removing TDLS peer
Eric Dumazet (4):
ip6_vti: set netns_immutable on the fallback device.
bonding: 3ad: implement proper RCU rules for port->aggregator
inet: add indirect call wrapper for getfrag() calls
bonding: annotate data-races arcound churn variables
Fan Wu (1):
hdlc_ppp: sync per-proto timers before freeing hdlc state
Gabriel Krisman Bertazi (1):
io_uring/net: Avoid msghdr on op_connect/op_bind async data
Georgi Djakov (1):
drivers/base/memory: set mem->altmap after successful device registration
Gil Portnoy (1):
ksmbd: reject non-VALID session in compound request branch
Giovanni Cabiddu (1):
crypto: qat - remove unused character device and IOCTLs
Greg Kroah-Hartman (1):
Linux 6.12.95
Guannan Wang (1):
NFSD: Fix SECINFO_NO_NAME decode error cleanup
Guenter Roeck (1):
ftrace: Do not over-allocate ftrace memory
HanQuan (1):
net/tcp-ao: fix use-after-free of key in del_async path
Hangbin Liu (4):
bonding: add support for per-port LACP actor priority
bonding: print churn state via netlink
bonding: fix NULL pointer dereference in actor_port_prio setting
bonding: do not set usable_slaves for broadcast mode
Helen Koike (1):
debugobjects: Do not fill_pool() if pi_blocked_on
Hem Parekh (1):
ksmbd: fix out-of-bounds read in smb_check_perm_dacl()
Herbert Xu (1):
crypto: qat - Return pointer directly in adf_ctl_alloc_resources
Huacai Chen (1):
LoongArch: Report dying CPU to RCU in stop_this_cpu()
Hyunwoo Kim (1):
KVM: x86: hyper-v: Bound the bank index when querying sparse banks
Ian Bridges (2):
fbdev: fix use-after-free in store_modes()
fbdev: Fix fb_new_modelist to prevent null-ptr-deref in fb_videomode_to_var
Jani Nikula (1):
drm/xe/display: fix oops in suspend/shutdown without display
Jann Horn (2):
fuse: limit FUSE_NOTIFY_RETRIEVE to uptodate folios
fhandle: fix UAF due to unlocked ->mnt_ns read in may_decode_fh()
Jarkko Sakkinen (1):
KEYS: fix overflow in keyctl_pkey_params_get_2()
Jeff Layton (3):
nfsd: fix posix_acl leak on SETACL decode failure
nfsd: avoid leaking pre-allocated openowner on unconfirmed retry race
nfsd: reset write verifier on deferred writeback errors
Joanne Koong (1):
fuse: re-lock request before replacing page cache folio
Johan Hovold (1):
i2c: core: fix adapter registration race
John Stultz (1):
locking: rtmutex: Fix wake_q logic in task_blocks_on_rt_mutex
Jonas Jelonek (1):
MIPS: smp: report dying CPU to RCU in stop_this_cpu()
Jose Ignacio Tornos Martinez (1):
wifi: ath11k: fix warning when unbinding
Junjie Cao (1):
wifi: iwlwifi: mvm: fix race condition in PTP removal
Kevin Berry (1):
Revert "net: bonding: fix use-after-free in bond_xmit_broadcast()"
Koichiro Den (1):
NTB: epf: Avoid pci_iounmap() with offset when PEER_SPAD and CONFIG share BAR
Konstantin Komarov (1):
ntfs3: reject direct userspace writes to reserved $LX* xattrs
Kuniyuki Iwashima (3):
phonet: Pass ifindex to fill_addr().
phonet: Pass net and ifindex to phonet_address_notify().
af_unix: Set gc_in_progress to true in unix_gc().
Leon Yen (1):
wifi: mt76: mt7921: avoid undesired changes of the preset regulatory domain
Lord Ulf Henrik Holmberg (1):
RDMA/bnxt_re: zero shared page before exposing to userspace
Luka Gejak (2):
wifi: rtw88: increase TX report timeout to fix race condition
wifi: rtw88: usb: fix memory leaks on USB write failures
Maciej W. Rozycki (1):
MIPS: DEC: Prevent initial console buffer from landing in XKPHYS
Maoyi Xie (1):
net: ip_gre: require CAP_NET_ADMIN in the device netns for changelink
Markus Elfring (1):
NFS: Prevent resource leak in nfs_alloc_server()
Maíra Canal (2):
drm/v3d: Store the active job inside the queue's state drm/v3d: Skip CSD when it has zeroed workgroups
Michael Bommarito (2):
exfat: fix potential use-after-free in exfat_find_dir_entry() NFSv4/pNFS: reject zero-length r_addr in nfs4_decode_mp_ds_addr
Michal Koutný (1):
blk-cgroup: fix UAF in __blkcg_rstat_flush()
Miklos Szeredi (1):
virtiofs: fix UAF on submount umount
Mingyu Wang (1):
agp/amd64: Fix broken error propagation in agp_amd64_probe()
Paolo Bonzini (1):
KVM: x86: Fix shadow paging use-after-free due to unexpected role
Paul Moore (2):
lsm: add backing_file LSM hooks
selinux: fix overlayfs mmap() and mprotect() access checks
Peter Zijlstra (1):
locking/mutex: Remove wakeups from under mutex::wait_lock
Petr Machata (2):
Reapply "selftest/ptp: update ptp selftest to exercise the gettimex options"
net: ipv6: Make udp_tunnel6_xmit_skb() void
Qingshuang Fu (1):
irqchip/imgpdc: Fix resource leak, add missing chained handler cleanup on remove
Quan Zhou (1):
wifi: mt76: mt7921: fix a potential scan no APs
Ruslan Valiyev (2):
media: vidtv: fix NULL pointer dereference in vidtv_mux_push_si
apparmor: fix use-after-free in rawdata dedup loop
Salman Alghamdi (1):
staging: rtl8723bs: fix buffer over-read in rtw_update_protection
Sam Daly (2):
iio: light: veml6075: add bounds check to veml6075_it_ms index
iio: adc: ti-ads1298: add bounds check to pga_settings index
Santosh Kalluri (1):
net: phonet: free phonet_device after RCU grace period
Sasha Levin (1):
Revert "PCI: qcom: Advertise Hotplug Slot Capability with no Command Completion support"
Sean Christopherson (7):
KVM: x86/mmu: Ensure hugepage is in by slot before checking max mapping level
KVM: SEV: Ignore MMIO requests of length '0'
KVM: SEV: Reject MMIO requests larger than 8 bytes with GHCB v2+
KVM: SEV: Ignore Port I/O requests of length '0'
KVM: SEV: Move sev_free_vcpu() down below sev_es_unmap_ghcb()
KVM: SEV: Unmap and unpin the GHCB as needed on vCPU free
KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned()
Sean Wang (1):
wifi: mt76: mt7921: fix potential deadlock in mt7921_roc_abort_sync
Sebastian Andrzej Siewior (3):
net: Drop the lock in skb_may_tx_timestamp()
debugobjects: Allow to refill the pool before SYSTEM_SCHEDULING
debugobjects: Use LD_WAIT_CONFIG instead of LD_WAIT_SLEEP
Shaomin Chen (1):
keys: Pin request_key_auth payload in instantiate paths
Steffen Persvold (1):
fbdev: modedb: Fix misaligned fields in the 1920x1080-60 mode
Stepan Ionichev (1):
serial: 8250_dw: unregister 8250 port if clk_notifier_register() fails
Steven Rostedt (25):
scripts/sorttable: Remove unused macro defines scripts/sorttable: Remove unused write functions scripts/sorttable: Remove unneeded Elf_Rel
scripts/sorttable: Have the ORC code use the _r() functions to read scripts/sorttable: Make compare_extable() into two functions scripts/sorttable: Convert Elf_Ehdr to union
scripts/sorttable: Replace Elf_Shdr Macro with a union scripts/sorttable: Convert Elf_Sym MACRO over to a union scripts/sorttable: Add helper functions for Elf_Ehdr scripts/sorttable: Add helper functions for Elf_Shdr scripts/sorttable: Add helper functions for Elf_Sym scripts/sorttable: Use uint64_t for mcount sorting scripts/sorttable: Move code from sorttable.h into sorttable.c scripts/sorttable: Get start/stop_mcount_loc from ELF file directly scripts/sorttable: Use a structure of function pointers for elf helpers
arm64: scripts/sorttable: Implement sorting mcount_loc at boot for arm64 scripts/sorttable: Have mcount rela sort use direct values scripts/sorttable: Always use an array for the mcount_loc sorting scripts/sorttable: Zero out weak functions in mcount_loc table
ftrace: Update the mcount_loc check of skipped entries
ftrace: Have ftrace pages output reflect freed pages
ftrace: Test mcount_loc addr before calling ftrace_call_addr()
ftrace: Check against is_kernel_text() instead of kaslr_offset() scripts/sorttable: Use normal sort if theres no relocs in the mcount section scripts/sorttable: Allow matches to functions before function entry
Sunmin Jeong (1):
f2fs: fix to round down start offset of fallocate for pin file
Sven Eckelmann (25):
batman-adv: tp_meter: keep unacked list in ascending ordered
batman-adv: tp_meter: initialize dup_acks explicitly
batman-adv: tp_meter: initialize dec_cwnd explicitly
batman-adv: tp_meter: avoid window underflow
batman-adv: tp_meter: avoid divide-by-zero for dec_cwnd
batman-adv: tp_meter: fix fast recovery precondition
batman-adv: tp_meter: handle seqno wrap-around for fast recovery detection
batman-adv: tp_meter: add only finished tp_vars to lists
batman-adv: bla: annotate lasttime access with READ/WRITE_ONCE
batman-adv: prevent ELP transmission interval underflow
batman-adv: tp_meter: initialize last_recv_time during init
batman-adv: ensure bcast is writable before modifying TTL
batman-adv: fix (m|b)cast csum after decrementing TTL
batman-adv: frag: ensure fragment is writable before modifying TTL
batman-adv: frag: avoid underflow of TTL
batman-adv: v: prevent OGM aggregation on disabled hardif
batman-adv: tp_meter: restrict number of unacked list entries
batman-adv: tp_meter: annotate last_recv_time access with READ/WRITE_ONCE
batman-adv: tp_meter: prevent parallel modifications of last_recv
batman-adv: tp_meter: handle overlapping packets
batman-adv: tt: don't merge change entries with different VIDs
batman-adv: tt: track roam count per VID
batman-adv: dat: prevent false sharing between VLANs
batman-adv: tvlv: enforce 2-byte alignment
batman-adv: tvlv: avoid race of cifsnotfound handler state
Thadeu Lima de Souza Cascardo (1):
dlm: prevent NPD when writing a positive value to event_done
Thorsten Blum (2):
hv: utils: handle and propagate errors in kvp_register
crypto: qat - Replace kzalloc() + copy_from_user() with memdup_user()
Tonghao Zhang (2):
net: bonding: add broadcast_neighbor option for 802.3ad
net: bonding: update the slave array for broadcast mode
Tristan Madani (1):
gfs2: fix use-after-free in gfs2_qd_dealloc
Tuo Li (1):
fbdev: modedb: fix a possible UAF in fb_find_mode()
Tzung-Bi Shih (1):
gpio: Fix resource leaks on errors in gpiochip_add_data_with_key()
Usama Arif (2):
kernel/fork: clear PF_BLOCK_TS in copy_process()
block: invalidate cached plug timestamp after task switch
Varun R Mallya (2):
bpf: Reject sleepable kprobe_multi programs at attach time selftests/bpf: Add test to ensure kprobe_multi is not sleepable
Vasily Gorbik (1):
scripts/sorttable: Fix endianness handling in build-time mcount sort
Viken Dadhaniya (1):
serial: qcom_geni: Fix RX DMA stall when SE_DMA_RX_LEN_IN is zero
Vivian Wang (2):
riscv: mm: Extract helper mark_new_valid_map()
riscv: kfence: Call mark_new_valid_map() for kfence_unprotect()
Waiman Long (1):
debugobjects: Dont call fill_pool() in early boot hardirq context
Weiming Shi (2):
i2c: stub: Reject I2C block transfers with invalid length
net: qualcomm: rmnet: fix endpoint use-after-free in rmnet_dellink()
Wenjie Qi (2):
f2fs: validate compress cache inode only when enabled
f2fs: keep atomic write retry from zeroing original data
Wentao Liang (4):
pwrseq: core: fix use-after-free in pwrseq_debugfs_seq_next()
pNFS: Fix use-after-free in pnfs_update_layout()
fpga: region: fix use-after-free in child_regions_with_firmware()
power: reset: linkstation-poweroff: fix use-after-free in the linkstation_poweroff_init()
Wongi Lee (2):
ipv6: account for fraggap on the paged allocation path
ipv4: account for fraggap on the paged allocation path
Xiang Mei (1):
net: bonding: fix use-after-free in bond_xmit_broadcast()
Xin Long (1):
sctp: disable BH before calling udp_tunnel_xmit_skb()
Yi Yang (1):
vc_screen: fix null-ptr-deref in vcs_notifier() during concurrent vcs_write
Yicong Yang (1):
ACPI: scan: Use async schedule function in acpi_scan_clear_dep_fn()
Yiming Qian (1):
net: skmsg: preserve sg.copy across SG transforms
Yingjie Gao (1):
xfs: fix error returns in CoW fork repair
Yizhou Zhao (1):
9p: avoid putting oldfid in p9_client_walk() error path
Yongpeng Yang (1):
f2fs: fix incorrect FI_NO_EXTENT handling in __destroy_extent_node()
Yuho Choi (1):
rpmsg: char: Fix use-after-free on probe error path
Zenm Chen (1):
wifi: mt76: mt76x2u: Add support for ELECOM WDC-867SU3S
Zhang Cen (2):
f2fs: validate ACL entry sizes in f2fs_acl_from_disk()
ocfs2: reject oversized group bitmap descriptors
Greg Kroah-Hartman
maintainerDocumentation/networking/bonding.rst +15 -0
@@ -193,6 +193,15 @@ ad_actor_sys_prio This parameter has effect only in 802.3ad mode and is available through SysFs interface. +actor_port_prio + + In an AD system, this specifies the port priority. The allowed range + is 1 - 65535. If the value is not specified, it takes 255 as the + default value. + + This parameter has effect only in 802.3ad mode and is available through + netlink interface. + ad_actor_system In an AD system, this specifies the mac-address for the actor in
@@ -562,6 +571,12 @@ lacp_rate The default is slow. +broadcast_neighbor + + Option specifying whether to broadcast ARP/ND packets to all + active slaves. This option has no effect in modes other than + 802.3ad mode. The default is off (0). + max_bonds Specifies the number of bonding devices to create for this
Documentation/userspace-api/ioctl/ioctl-number.rst +242 -243
572 lines not on this page · raw message
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 12 -SUBLEVEL = 94 +SUBLEVEL = 95 EXTRAVERSION = NAME = Baby Opossum Posse
arch/arm64/Kconfig +1 -0
@@ -212,6 +212,7 @@ config ARM64 if DYNAMIC_FTRACE_WITH_ARGS select HAVE_SAMPLE_FTRACE_DIRECT select HAVE_SAMPLE_FTRACE_DIRECT_MULTI + select HAVE_BUILDTIME_MCOUNT_SORT select HAVE_EFFICIENT_UNALIGNED_ACCESS select HAVE_GUP_FAST select HAVE_FTRACE_MCOUNT_RECORD
arch/loongarch/kernel/smp.c +1 -0
@@ -650,6 +650,7 @@ static void stop_this_cpu(void *dummy)set_cpu_online (smp_processor_id (), false);calculate_cpu_foreign_map ();local_irq_disable (); +rcutree_report_cpu_dead ();while (true); }
arch/mips/dec/prom/console.c +5 -2
@@ -2,8 +2,9 @@/* * DECstation PROM-based early console support. * -* Copyright (C) 2004, 2007 Maciej W. Rozycki +* Copyright (C) 2004, 2007, 2026 Maciej W. Rozycki */ +#include <linux/bug.h> #include <linux/console.h> #include <linux/init.h> #include <linux/kernel.h>
@@ -14,9 +15,11 @@static void __init prom_console_write (struct console *con,const char *s,unsigned int c) { -char buf[81 ]; +static char buf[81 ]__initdata = {0 };unsigned int chunk =sizeof (buf) -1 ; +BUG_ON ((long )buf != (int )(long )buf); +while (c >0 ) {if (chunk > c) chunk = c;
arch/mips/kernel/smp.c +2 -0
@@ -20,6 +20,7 @@#include <linux/sched/mm.h> #include <linux/cpumask.h> #include <linux/cpu.h> +#include <linux/rcupdate.h> #include <linux/err.h> #include <linux/ftrace.h> #include <linux/irqdomain.h>
@@ -411,6 +412,7 @@ static void stop_this_cpu(void *dummy)set_cpu_online (smp_processor_id (), false);calculate_cpu_foreign_map ();local_irq_disable (); +rcutree_report_cpu_dead ();while (1 ); }
arch/riscv/include/asm/cacheflush.h +14 -11
@@ -43,20 +43,23 @@ do { \#ifdef CONFIG_64BIT extern u64 new_vmalloc[NR_CPUS /sizeof (u64) +1 ];extern char _end[]; +static inline void mark_new_valid_map (void ) +{ +int i; + +/* +* We don't care if concurrently a cpu resets this value since +* the only place this can happen is in handle_exception() where +* an sfence.vma is emitted. +*/ +for (i =0 ; i <ARRAY_SIZE (new_vmalloc); ++i) + new_vmalloc[i] =-1ULL ; +}#define flush_cache_vmap flush_cache_vmapstatic inline void flush_cache_vmap (unsigned long start,unsigned long end) { -if (is_vmalloc_or_module_addr ((void *)start)) { -int i; - -/* -* We don't care if concurrently a cpu resets this value since -* the only place this can happen is in handle_exception() where -* an sfence.vma is emitted. -*/ -for (i =0 ; i <ARRAY_SIZE (new_vmalloc); ++i) - new_vmalloc[i] =-1ULL ; - } +if (is_vmalloc_or_module_addr ((void *)start)) +mark_new_valid_map (); }#define flush_cache_vmap_early (start, end) local_flush_tlb_kernel_range(start, end)#endif
arch/riscv/include/asm/kfence.h +5 -2
@@ -6,6 +6,7 @@#include <linux/kfence.h> #include <linux/pfn.h> #include <asm-generic/pgalloc.h> +#include <asm/cacheflush.h> #include <asm/pgtable.h> static inline bool arch_kfence_init_pool (void )
@@ -17,10 +18,12 @@ static inline bool kfence_protect_page(unsigned long addr, bool protect) {pte_t *pte =virt_to_kpte (addr); -if (protect) +if (protect) {set_pte (pte,__pte (pte_val (ptep_get (pte)) & ~_PAGE_PRESENT)); -else + }else {set_pte (pte,__pte (pte_val (ptep_get (pte)) | _PAGE_PRESENT)); +mark_new_valid_map (); + }preempt_disable ();local_flush_tlb_kernel_range (addr, addr +PAGE_SIZE );
arch/riscv/kernel/entry.S +4 -2
@@ -106,8 +106,10 @@ SYM_CODE_START(handle_exception) #ifdef CONFIG_64BIT /* - * The RISC-V kernel does not eagerly emit a sfence.vma after each - * new vmalloc mapping, which may result in exceptions: + * The RISC-V kernel does not flush TLBs on all CPUS after each new + * vmalloc mapping or kfence_unprotect(), which may result in + * exceptions: + * * - if the uarch caches invalid entries, the new mapping would not be * observed by the page table walker and an invalidation is needed. * - if the uarch does not cache invalid entries, a reordered access
arch/x86/kvm/hyperv.c +5 -0
@@ -1838,6 +1838,11 @@ static bool hv_is_vp_in_sparse_set(u32 vp_id, u64 valid_bank_mask, u64 sparse_baint valid_bit_nr = vp_id /HV_VCPUS_PER_SPARSE_BANK ;unsigned long sbank; +BUILD_BUG_ON (BITS_PER_TYPE (valid_bank_mask) !=HV_MAX_SPARSE_VCPU_BANKS ); + +if (valid_bit_nr >=HV_MAX_SPARSE_VCPU_BANKS ) +return false; +if (!test_bit (valid_bit_nr, (unsigned long *)&valid_bank_mask))return false;
arch/x86/kvm/mmu/mmu.c +18 -10
@@ -2329,13 +2329,15 @@ static struct kvm_mmu_page *kvm_mmu_get_child_sp(struct kvm_vcpu *vcpu, u64 *sptep, gfn_t gfn, bool direct, unsigned int access) { - union kvm_mmu_page_role role; + union kvm_mmu_page_role role = kvm_mmu_child_role(sptep, direct, access); -if (is_shadow_present_pte (*sptep) && !is_large_pte (*sptep) && -spte_to_child_sp (*sptep) &&spte_to_child_sp (*sptep)->gfn == gfn) +if (is_shadow_present_pte (*sptep) && + !is_large_pte (*sptep) && +spte_to_child_sp (*sptep) && +spte_to_child_sp (*sptep)->gfn == gfn && +spte_to_child_sp (*sptep)->role.word == role.word)return ERR_PTR (-EEXIST ); - role =kvm_mmu_child_role (sptep, direct, access);return kvm_mmu_get_shadow_page (vcpu, gfn, role); }
@@ -6950,13 +6952,19 @@ static bool kvm_mmu_zap_collapsible_spte(struct kvm *kvm, sp =sptep_to_sp (sptep);/* -* We cannot do huge page mapping for indirect shadow pages, -* which are found on the last rmap (level = 1) when not using -* tdp; such shadow pages are synced with the page table in -* the guest, and the guest page table is using 4K page size -* mapping if the indirect sp has level = 1. +* Direct shadow page can be replaced by a hugepage if the host +* mapping level allows it and the memslot maps all of the host +* hugepage. Note! If the memslot maps only part of the +* hugepage, sp->gfn may be below slot->base_gfn, and querying +* the max mapping level would cause an out-of-bounds lpage_info +* access. So the gfn bounds check *must* be done first. +* +* Indirect shadow pages are created when the guest page tables +* are using 4K pages. Since the host mapping is always +* constrained by the page size in the guest, indirect shadow +* pages are never collapsible. */ -if (sp->role.direct && +if (sp->role.direct &&is_gfn_in_memslot (slot, sp->gfn) && sp->role.level <kvm_mmu_max_mapping_level (kvm, slot, sp->gfn,PG_LEVEL_NUM )) {kvm_zap_one_rmap_spte (kvm, rmap_head, sptep);
arch/x86/kvm/svm/sev.c +74 -39
165 lines not on this page · raw message
block/bdev.c +0 -5
@@ -414,15 +414,10 @@ EXPORT_SYMBOL_GPL(blockdev_superblock);void __init bdev_cache_init (void ) { -int err; - bdev_cachep =kmem_cache_create ("bdev_cache" ,sizeof (struct bdev_inode ),0 , (SLAB_HWCACHE_ALIGN |SLAB_RECLAIM_ACCOUNT |SLAB_ACCOUNT |SLAB_PANIC ), init_once); - err =register_filesystem (&bd_type); -if (err) -panic ("Cannot register bdev pseudo-fs" ); blockdev_mnt =kern_mount (&bd_type);if (IS_ERR (blockdev_mnt))panic ("Cannot create bdev pseudo-fs" );
block/blk-cgroup.c +11 -10
@@ -164,20 +164,10 @@ static void blkg_free(struct blkcg_gq *blkg)static void __blkg_release (struct rcu_head *rcu) { struct blkcg_gq *blkg = container_of(rcu, struct blkcg_gq, rcu_head); -struct blkcg *blkcg = blkg->blkcg; -int cpu;#ifdef CONFIG_BLK_CGROUP_PUNT_BIO WARN_ON (!bio_list_empty (&blkg->async_bios));#endif -/* -* Flush all the non-empty percpu lockless lists before releasing -* us, given these stat belongs to us. -* -* blkg_stat_lock is for serializing blkg stat update -*/ -for_each_possible_cpu (cpu) -__blkcg_rstat_flush (blkcg, cpu);/* release the blkcg and parent blkg refs this blkg has been holding */ css_put (&blkg->blkcg->css);
@@ -195,6 +185,17 @@ static void __blkg_release(struct rcu_head *rcu)static void blkg_release (struct percpu_ref *ref) { struct blkcg_gq *blkg = container_of(ref, struct blkcg_gq, refcnt); +struct blkcg *blkcg = blkg->blkcg; +int cpu; + +/* +* Flush all the non-empty percpu lockless lists before releasing +* us, given these stat belongs to us. +* +* blkg_stat_lock is for serializing blkg stat update +*/ +for_each_possible_cpu (cpu) +__blkcg_rstat_flush (blkcg, cpu);call_rcu (&blkg->rcu_head, __blkg_release); }
drivers/acpi/scan.c +15 -26
67 lines not on this page · raw message
drivers/base/memory.c +2 -1
@@ -794,7 +794,6 @@ static int add_memory_block(unsigned long block_id, unsigned long state, mem->start_section_nr = block_id * sections_per_block; mem->state = state; mem->nid =NUMA_NO_NODE ; - mem->altmap = altmap;INIT_LIST_HEAD (&mem->group_next);#ifndef CONFIG_NUMA
@@ -812,6 +811,8 @@ static int add_memory_block(unsigned long block_id, unsigned long state,if (ret)return ret; + mem->altmap = altmap; +if (group) { mem->group = group;list_add (&mem->group_next, &group->memory_blocks);
drivers/char/agp/amd64-agp.c +1 -1
@@ -546,7 +546,7 @@ static int agp_amd64_probe(struct pci_dev *pdev,/* Fill in the mode register */ pci_read_config_dword (pdev, bridge->capndx+PCI_AGP_STATUS , &bridge->mode); -if (cache_nbs (pdev, cap_ptr) ==-1 ) { +if (cache_nbs (pdev, cap_ptr) <0 ) {agp_put_bridge (bridge);return -ENODEV ; }
drivers/crypto/intel/qat/qat_common/adf_cfg.c +0 -10
@@ -103,16 +103,6 @@ static void adf_cfg_section_del_all(struct list_head *head);static void adf_cfg_section_del_all_except (struct list_head *head,const char *section_name); -void adf_cfg_del_all (struct adf_accel_dev *accel_dev) -{ -struct adf_cfg_device_data *dev_cfg_data = accel_dev->cfg; - -down_write (&dev_cfg_data->lock); -adf_cfg_section_del_all (&dev_cfg_data->sec_list); -up_write (&dev_cfg_data->lock); -clear_bit (ADF_STATUS_CONFIGURED , &accel_dev->status); -} -void adf_cfg_del_all_except (struct adf_accel_dev *accel_dev,const char *section_name) {
drivers/crypto/intel/qat/qat_common/adf_cfg.h +0 -1
@@ -34,7 +34,6 @@ void adf_cfg_dev_remove(struct adf_accel_dev *accel_dev);void adf_cfg_dev_dbgfs_add (struct adf_accel_dev *accel_dev);void adf_cfg_dev_dbgfs_rm (struct adf_accel_dev *accel_dev);int adf_cfg_section_add (struct adf_accel_dev *accel_dev,const char *name); -void adf_cfg_del_all (struct adf_accel_dev *accel_dev);void adf_cfg_del_all_except (struct adf_accel_dev *accel_dev,const char *section_name); int adf_cfg_add_key_value_param(struct adf_accel_dev *accel_dev,
drivers/crypto/intel/qat/qat_common/adf_cfg_common.h +0 -32
@@ -4,18 +4,11 @@#define ADF_CFG_COMMON_H_ #include <linux/types.h> -#include <linux/ioctl.h> #define ADF_CFG_MAX_STR_LEN 64#define ADF_CFG_MAX_KEY_LEN_IN_BYTES ADF_CFG_MAX_STR_LEN#define ADF_CFG_MAX_VAL_LEN_IN_BYTES ADF_CFG_MAX_STR_LEN#define ADF_CFG_MAX_SECTION_LEN_IN_BYTES ADF_CFG_MAX_STR_LEN -#define ADF_CFG_BASE_DEC 10 -#define ADF_CFG_BASE_HEX 16 -#define ADF_CFG_ALL_DEVICES 0xFE -#define ADF_CFG_NO_DEVICE 0xFF -#define ADF_CFG_AFFINITY_WHATEVER 0xFF -#define MAX_DEVICE_NAME_SIZE 32#define ADF_MAX_DEVICES (32 * 32)#define ADF_DEVS_ARRAY_SIZE BITS_TO_LONGS(ADF_MAX_DEVICES)
@@ -49,29 +42,4 @@ enum adf_device_type {DEV_4XXX , DEV_420XX, }; - -struct adf_dev_status_info { -enum adf_device_type type; -__u32 accel_id; -__u32 instance_id; -__u8 num_ae; -__u8 num_accel; -__u8 num_logical_accel; -__u8 banks_per_accel; -__u8 state; -__u8 bus; -__u8 dev; -__u8 fun; -char name[MAX_DEVICE_NAME_SIZE ]; -}; - -#define ADF_CTL_IOC_MAGIC 'a' -#define IOCTL_CONFIG_SYS_RESOURCE_PARAMETERS _IOW(ADF_CTL_IOC_MAGIC, 0, \ - struct adf_user_cfg_ctl_data) -#define IOCTL_STOP_ACCEL_DEV _IOW(ADF_CTL_IOC_MAGIC, 1, \ - struct adf_user_cfg_ctl_data) -#define IOCTL_START_ACCEL_DEV _IOW(ADF_CTL_IOC_MAGIC, 2, \ - struct adf_user_cfg_ctl_data) -#define IOCTL_STATUS_ACCEL_DEV _IOW(ADF_CTL_IOC_MAGIC, 3, __u32) -#define IOCTL_GET_NUM_DEVICES _IOW(ADF_CTL_IOC_MAGIC, 4, __s32)#endif
drivers/crypto/intel/qat/qat_common/adf_cfg_user.h deleted +0 -38
@@ -1,38 +0,0 @@ -/* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0-only) */ -/* Copyright(c) 2014 - 2020 Intel Corporation */ -#ifndef ADF_CFG_USER_H_ -#define ADF_CFG_USER_H_ - -#include "adf_cfg_common.h" -#include "adf_cfg_strings.h" - -struct adf_user_cfg_key_val { -char key[ADF_CFG_MAX_KEY_LEN_IN_BYTES ]; -char val[ADF_CFG_MAX_VAL_LEN_IN_BYTES ]; -union { -struct adf_user_cfg_key_val *next; -__u64 padding3; - }; -enum adf_cfg_val_type type; -} __packed; - -struct adf_user_cfg_section { -char name[ADF_CFG_MAX_SECTION_LEN_IN_BYTES ]; -union { -struct adf_user_cfg_key_val *params; -__u64 padding1; - }; -union { -struct adf_user_cfg_section *next; -__u64 padding3; - }; -} __packed; - -struct adf_user_cfg_ctl_data { -union { -struct adf_user_cfg_section *config_section; -__u64 padding; - }; -__u8 device_id; -} __packed; -#endif
drivers/crypto/intel/qat/qat_common/adf_common_drv.h +0 -3
@@ -68,11 +68,8 @@ int adf_devmgr_add_dev(struct adf_accel_dev *accel_dev,void adf_devmgr_rm_dev (struct adf_accel_dev *accel_dev,struct adf_accel_dev *pf);struct list_head *adf_devmgr_get_head (void ); -struct adf_accel_dev *adf_devmgr_get_dev_by_id (u32 id);struct adf_accel_dev *adf_devmgr_get_first (void );struct adf_accel_dev *adf_devmgr_pci_to_accel_dev (struct pci_dev *pci_dev); -int adf_devmgr_verify_id (u32 id); -void adf_devmgr_get_num_dev (u32 *num);int adf_devmgr_in_reset (struct adf_accel_dev *accel_dev);int adf_dev_started (struct adf_accel_dev *accel_dev);int adf_dev_restarting_notify (struct adf_accel_dev *accel_dev);
drivers/crypto/intel/qat/qat_common/adf_ctl_drv.c +1 -415
445 lines not on this page · raw message
drivers/crypto/intel/qat/qat_common/adf_dev_mgr.c +0 -70
82 lines not on this page · raw message
drivers/fpga/of-fpga-region.c +1 -2
@@ -168,11 +168,10 @@ static int child_regions_with_firmware(struct device_node *overlay) fpga_region_of_match); } -of_node_put (child_region); -if (ret)pr_err ("firmware-name not allowed in child FPGA region: %pOF" , child_region); +of_node_put (child_region);return ret; }
drivers/gpio/gpiolib.c +69 -67
237 lines not on this page · raw message
drivers/gpu/drm/v3d/v3d_drv.h +3 -4
@@ -59,6 +59,9 @@ struct v3d_queue_state {/* Stores the GPU stats for this queue in the global context. */ struct v3d_stats stats; + +/* Currently active job for this queue */ +struct v3d_job *active_job; };/* Performance monitor object. The perform lifetime is controlled by userspace
@@ -147,10 +150,6 @@ struct v3d_dev {struct work_struct overflow_mem_work; -struct v3d_bin_job *bin_job; -struct v3d_render_job *render_job; -struct v3d_tfu_job *tfu_job; -struct v3d_csd_job *csd_job;struct v3d_cpu_job *cpu_job;struct v3d_queue_state queue[V3D_MAX_QUEUES ];
drivers/gpu/drm/v3d/v3d_gem.c +3 -4
@@ -304,16 +304,15 @@ void v3d_gem_destroy(struct drm_device *dev) {struct v3d_dev *v3d =to_v3d_dev (dev); +enum v3d_queue q;v3d_sched_fini (v3d);/* Waiting for jobs to finish would need to be done before * unregistering V3D. */ -WARN_ON (v3d->bin_job); -WARN_ON (v3d->render_job); -WARN_ON (v3d->tfu_job); -WARN_ON (v3d->csd_job); +for (q =0 ; q <V3D_MAX_QUEUES ; q++) +WARN_ON (v3d->queue[q].active_job);drm_mm_takedown (&v3d->mm);
drivers/gpu/drm/v3d/v3d_irq.c +24 -38
105 lines not on this page · raw message
drivers/gpu/drm/v3d/v3d_sched.c +31 -11
88 lines not on this page · raw message
drivers/gpu/drm/xe/display/xe_display.c +9 -2
@@ -148,6 +148,15 @@ int xe_display_init_noirq(struct xe_device *xe)intel_display_driver_early_probe (xe); +intel_display_device_info_runtime_init (xe); + +/* Display may have been disabled at runtime init */ +if (!has_display (xe)) { + xe->info.probe_display = false; +unset_display_features (xe); +return 0 ; + } +/* Early display init.. */ intel_opregion_setup (display);
@@ -159,8 +168,6 @@ int xe_display_init_noirq(struct xe_device *xe)intel_bw_init_hw (xe); -intel_display_device_info_runtime_init (xe); - err =intel_display_driver_probe_noirq (xe);if (err) {intel_opregion_cleanup (display);
drivers/hv/hv_kvp.c +13 -12
@@ -93,7 +93,7 @@ static void kvp_send_key(struct work_struct *dummy);static void kvp_respond_to_host (struct hv_kvp_msg *msg,int error);static void kvp_timeout_func (struct work_struct *dummy);static void kvp_host_handshake_func (struct work_struct *dummy); -static void kvp_register (int ); +static int kvp_register (int ); static DECLARE_DELAYED_WORK(kvp_timeout_work, kvp_timeout_func); static DECLARE_DELAYED_WORK(kvp_host_handshake_work, kvp_host_handshake_func);
@@ -127,24 +127,26 @@ static void kvp_register_done(void)hv_poll_channel (kvp_transaction.recv_channel, kvp_poll_wrapper); } -static void +static int kvp_register (int reg_value) {struct hv_kvp_msg *kvp_msg;char *version; +int ret; kvp_msg =kzalloc (sizeof (*kvp_msg),GFP_KERNEL ); +if (!kvp_msg) +return -ENOMEM ; -if (kvp_msg) { - version = kvp_msg->body.kvp_register.version; - kvp_msg->kvp_hdr.operation = reg_value; -strcpy (version,HV_DRV_VERSION ); + version = kvp_msg->body.kvp_register.version; + kvp_msg->kvp_hdr.operation = reg_value; +strcpy (version,HV_DRV_VERSION ); -hvutil_transport_send (hvt, kvp_msg,sizeof (*kvp_msg), - kvp_register_done); -kfree (kvp_msg); - } + ret =hvutil_transport_send (hvt, kvp_msg,sizeof (*kvp_msg), + kvp_register_done); +kfree (kvp_msg); +return ret; }static void kvp_timeout_func (struct work_struct *dummy)
@@ -186,9 +188,8 @@ static int kvp_handle_handshake(struct hv_kvp_msg *msg)*/ pr_debug ("KVP: userspace daemon ver. %d connected\n" , msg->kvp_hdr.operation); -kvp_register (dm_reg_value); -return 0 ; +return kvp_register (dm_reg_value); }
drivers/hv/vmbus_drv.c +26 -3
@@ -2205,8 +2205,8 @@ static acpi_status vmbus_walk_resources(struct acpi_resource *res, void *ctx)return AE_NO_MEMORY ;/* If this range overlaps the virtual TPM, truncate it. */ -if (end >VTPM_BASE_ADDRESS && start <VTPM_BASE_ADDRESS ) - end =VTPM_BASE_ADDRESS ; +if (end >=VTPM_BASE_ADDRESS && start <VTPM_BASE_ADDRESS ) + end =VTPM_BASE_ADDRESS -1 ; new_res->name ="hyperv mmio" ; new_res->flags =IORESOURCE_MEM ;
@@ -2273,6 +2273,7 @@ static void vmbus_mmio_remove(void)static void __maybe_unused vmbus_reserve_fb (void ) {resource_size_t start =0 , size; +resource_size_t low_mmio_base;struct pci_dev *pdev;if (efi_enabled (EFI_BOOT )) {
@@ -2280,6 +2281,24 @@ static void __maybe_unused vmbus_reserve_fb(void)if (IS_ENABLED (CONFIG_SYSFB )) { start = screen_info.lfb_base; size =max_t (__u32, screen_info.lfb_size,0x800000 ); + + low_mmio_base = hyperv_mmio->start; +if (!low_mmio_base ||upper_32_bits (low_mmio_base) || + (start && start < low_mmio_base)) { +pr_warn ("Unexpected low mmio base %pa\n" , &low_mmio_base); + }else { +/* +* If the kdump/kexec or CVM kernel's lfb_base +* is 0, fall back to the low mmio base. +*/ +if (!start) + start = low_mmio_base; +/* +* Reserve half of the space below 4GB for high +* resolutions, but cap the reservation to 128MB. +*/ + size =min ((SZ_4G - start) /2 ,SZ_128M ); + } } }else {/* Gen1 VM: get FB base from PCI */
@@ -2300,8 +2319,10 @@ static void __maybe_unused vmbus_reserve_fb(void)pci_dev_put (pdev); } -if (!start) +if (!start) { +pr_warn ("Unexpected framebuffer mmio base of zero\n" );return ; + }/* * Make a claim for the frame buffer in the resource tree under the
@@ -2311,6 +2332,8 @@ static void __maybe_unused vmbus_reserve_fb(void)*/ for (; !fb_mmio && (size >=0x100000 ); size >>=1 ) fb_mmio =__request_region (hyperv_mmio, start, size, fb_mmio_name,0 ); + +pr_info ("hv_mmio=%pR,%pR fb=%pR\n" , hyperv_mmio, hyperv_mmio->sibling, fb_mmio); }/**
drivers/i2c/i2c-core-base.c +6 -2
@@ -1559,6 +1559,10 @@ static int i2c_register_adapter(struct i2c_adapter *adap)pm_suspend_ignore_children (&adap->dev, true);pm_runtime_enable (&adap->dev); +mutex_lock (&core_lock); +idr_replace (&i2c_adapter_idr, adap, adap->nr); +mutex_unlock (&core_lock); + res =device_add (&adap->dev);if (res) {pr_err ("adapter '%s': can't register device (%d)\n" , adap->name, res);
@@ -1617,7 +1621,7 @@ static int __i2c_add_numbered_adapter(struct i2c_adapter *adap)int id;mutex_lock (&core_lock); - id =idr_alloc (&i2c_adapter_idr, adap, adap->nr, adap->nr +1 ,GFP_KERNEL ); + id =idr_alloc (&i2c_adapter_idr,NULL , adap->nr, adap->nr +1 ,GFP_KERNEL );mutex_unlock (&core_lock);if (WARN (id <0 ,"couldn't get idr" ))return id == -ENOSPC ? -EBUSY : id;
@@ -1653,7 +1657,7 @@ int i2c_add_adapter(struct i2c_adapter *adapter) }mutex_lock (&core_lock); - id =idr_alloc (&i2c_adapter_idr, adapter, + id =idr_alloc (&i2c_adapter_idr,NULL , __i2c_first_dynamic_bus_num,0 ,GFP_KERNEL );mutex_unlock (&core_lock);if (WARN (id <0 ,"couldn't get idr" ))
drivers/i2c/i2c-stub.c +5 -0
@@ -214,6 +214,11 @@ static s32 stub_xfer(struct i2c_adapter *adap, u16 addr, unsigned short flags,* We ignore banks here, because banked chips don't use I2C * block transfers */ +if (data->block[0 ] ==0 || + data->block[0 ] >I2C_SMBUS_BLOCK_MAX ) { + ret = -EINVAL ; +break ; + }if (data->block[0 ] >256 - command)/* Avoid overrun */ data->block[0 ] =256 - command; len = data->block[0 ];
drivers/iio/adc/ti-ads1298.c +6 -1
@@ -279,6 +279,7 @@ static const u8 ads1298_pga_settings[] = { 6, 1, 2, 3, 4, 8, 12 };static int ads1298_get_scale (struct ads1298_private *priv,int channel,int *val,int *val2) { +unsigned int pga_idx;int ret;unsigned int regval;u8 gain;
@@ -302,7 +303,11 @@ static int ads1298_get_scale(struct ads1298_private *priv,if (ret)return ret; - gain = ads1298_pga_settings[FIELD_GET (ADS1298_MASK_CH_PGA , regval)]; + pga_idx =FIELD_GET (ADS1298_MASK_CH_PGA , regval); +if (pga_idx >=ARRAY_SIZE (ads1298_pga_settings)) +return -EINVAL ; + + gain = ads1298_pga_settings[pga_idx]; *val /= gain;/* Full scale is VREF / gain */ *val2 =ADS1298_BITS_PER_SAMPLE -1 ;/* Signed, hence the -1 */
drivers/iio/light/bh1780.c +2 -2
@@ -109,10 +109,10 @@ static int bh1780_read_raw(struct iio_dev *indio_dev,case IIO_LIGHT :pm_runtime_get_sync (&bh1780->client->dev); value =bh1780_read_word (bh1780,BH1780_REG_DLOW ); -if (value <0 ) -return value;pm_runtime_mark_last_busy (&bh1780->client->dev);pm_runtime_put_autosuspend (&bh1780->client->dev); +if (value <0 ) +return value; *val = value;return IIO_VAL_INT ;
drivers/iio/light/veml6075.c +6 -2
@@ -100,7 +100,7 @@ static const struct iio_chan_spec veml6075_channels[] = {static int veml6075_request_measurement (struct veml6075_data *data) { -int ret, conf, int_time; +int ret, conf, int_time, int_index; ret =regmap_read (data->regmap,VEML6075_CMD_CONF , &conf);if (ret <0 )
@@ -117,7 +117,11 @@ static int veml6075_request_measurement(struct veml6075_data *data)* time for all possible configurations. Using a 1.50 factor simplifies * operations and ensures reliability under all circumstances. */ - int_time = veml6075_it_ms[FIELD_GET (VEML6075_CONF_IT , conf)]; + int_index =FIELD_GET (VEML6075_CONF_IT , conf); +if (int_index >=ARRAY_SIZE (veml6075_it_ms)) +return -EINVAL ; + + int_time = veml6075_it_ms[int_index];msleep (int_time + (int_time /2 ));/* shutdown again, data registers are still accessible */
drivers/infiniband/hw/bnxt_re/ib_verbs.c +1 -1
@@ -4231,7 +4231,7 @@ int bnxt_re_alloc_ucontext(struct ib_ucontext *ctx, struct ib_udata *udata) uctx->rdev = rdev; - uctx->shpg = (void *)__get_free_page (GFP_KERNEL ); + uctx->shpg = (void *)get_zeroed_page (GFP_KERNEL );if (!uctx->shpg) { rc = -ENOMEM ; goto fail;
drivers/irqchip/irq-imgpdc.c +6 -0
@@ -378,6 +378,7 @@ static int pdc_intc_probe(struct platform_device *pdev)dev_err (&pdev->dev,"cannot add IRQ domain\n" );return -ENOMEM ; } + priv->domain->flags |=IRQ_DOMAIN_FLAG_DESTROY_GC ;/* * Set up 2 generic irq chips with 2 chip types.
@@ -465,6 +466,11 @@ static void pdc_intc_remove(struct platform_device *pdev) {struct pdc_intc_priv *priv =platform_get_drvdata (pdev); +for (unsigned int i =0 ; i < priv->nr_perips; ++i) +irq_set_chained_handler_and_data (priv->perip_irqs[i],NULL ,NULL ); + +irq_set_chained_handler_and_data (priv->syswake_irq,NULL ,NULL ); +irq_domain_remove (priv->domain); }
drivers/media/test-drivers/vidtv/vidtv_mux.c +7 -1
@@ -101,7 +101,8 @@ static int vidtv_mux_pid_ctx_init(struct vidtv_mux *m)/* add a ctx for all PMT sections */ while (p) { pid =vidtv_psi_get_pat_program_pid (p); -vidtv_mux_create_pid_ctx_once (m, pid); +if (!vidtv_mux_create_pid_ctx_once (m, pid)) + goto free; p = p->next; }
@@ -170,6 +171,9 @@ static u32 vidtv_mux_push_si(struct vidtv_mux *m) nit_ctx =vidtv_mux_get_pid_ctx (m,VIDTV_NIT_PID ); eit_ctx =vidtv_mux_get_pid_ctx (m,VIDTV_EIT_PID ); +if (!pat_ctx || !sdt_ctx || !nit_ctx || !eit_ctx) +return 0 ; + pat_args.offset = m->mux_buf_offset; pat_args.continuity_counter = &pat_ctx->cc;
@@ -186,6 +190,8 @@ static u32 vidtv_mux_push_si(struct vidtv_mux *m) } pmt_ctx =vidtv_mux_get_pid_ctx (m, pmt_pid); +if (!pmt_ctx) +continue ; pmt_args.offset = m->mux_buf_offset; pmt_args.pmt = m->si.pmt_secs[i];
drivers/mtd/spi-nor/macronix.c +31 -0
@@ -28,8 +28,26 @@ mx25l25635_post_bfpt_fixups(struct spi_nor *nor,return 0 ; } +static int +macronix_qpp4b_post_sfdp_fixups (struct spi_nor *nor) +{ +/* PP_1_1_4_4B is supported but missing in 4BAIT. */ +struct spi_nor_flash_parameter *params = nor->params; + + params->hwcaps.mask |=SNOR_HWCAPS_PP_1_1_4 ; +spi_nor_set_pp_settings (¶ms->page_programs[SNOR_CMD_PP_1_1_4 ], +SPINOR_OP_PP_1_1_4_4B ,SNOR_PROTO_1_1_4 ); + +return 0 ; +} +static const struct spi_nor_fixups mx25l25635_fixups = { .post_bfpt = mx25l25635_post_bfpt_fixups, + .post_sfdp = macronix_qpp4b_post_sfdp_fixups, +}; + +static const struct spi_nor_fixups macronix_qpp4b_fixups = { + .post_sfdp = macronix_qpp4b_post_sfdp_fixups, };static const struct flash_info macronix_nor_parts[] = {
@@ -85,11 +103,17 @@ static const struct flash_info macronix_nor_parts[] = { .size = SZ_64M, .no_sfdp_flags = SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, .fixup_flags = SPI_NOR_4B_OPCODES, + .fixups = ¯onix_qpp4b_fixups, }, { .id = SNOR_ID(0xc2, 0x20, 0x1b), .name = "mx66l1g45g", .size = SZ_128M, .no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, + .fixups = ¯onix_qpp4b_fixups, + }, { + /* MX66L2G45G */ + .id = SNOR_ID(0xc2, 0x20, 0x1c), + .fixups = ¯onix_qpp4b_fixups, }, { .id = SNOR_ID(0xc2, 0x23, 0x14), .name = "mx25v8035f",
@@ -137,18 +161,25 @@ static const struct flash_info macronix_nor_parts[] = { .size = SZ_64M, .no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, .fixup_flags = SPI_NOR_4B_OPCODES, + .fixups = ¯onix_qpp4b_fixups, }, { .id = SNOR_ID(0xc2, 0x25, 0x3a), .name = "mx66u51235f", .size = SZ_64M, .no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, .fixup_flags = SPI_NOR_4B_OPCODES, + .fixups = ¯onix_qpp4b_fixups, + }, { + /* MX66U1G45G */ + .id = SNOR_ID(0xc2, 0x25, 0x3b), + .fixups = ¯onix_qpp4b_fixups, }, { .id = SNOR_ID(0xc2, 0x25, 0x3c), .name = "mx66u2g45g", .size = SZ_256M, .no_sfdp_flags = SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ, .fixup_flags = SPI_NOR_4B_OPCODES, + .fixups = ¯onix_qpp4b_fixups, }, { .id = SNOR_ID(0xc2, 0x26, 0x18), .name = "mx25l12855e",
drivers/net/bonding/bond_3ad.c +74 -57
343 lines not on this page · raw message
drivers/net/bonding/bond_main.c +73 -13
101 lines not on this page · raw message
drivers/net/bonding/bond_options.c +71 -0
71 lines not on this page · raw message
drivers/net/bonding/bond_sysfs_slave.c +11 -6
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.c +4 -4
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/qualcomm/rmnet/rmnet_config.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/ptp.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt76x2/usb.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/init.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7921/main.c +9 -5
Lines of this file are not shown. View the raw message.
drivers/net/wireless/mediatek/mt76/mt7925/main.c +3 -0
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtlwifi/rtl8821ae/trx.h +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/tx.c +6 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/realtek/rtw88/usb.c +11 -2
Lines of this file are not shown. View the raw message.
drivers/pci/controller/dwc/pcie-qcom.c +6 -11
Lines of this file are not shown. View the raw message.
drivers/power/reset/linkstation-poweroff.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/staging/rtl8723bs/core/rtw_mlme.c +8 -2
Lines of this file are not shown. View the raw message.
fs/eventpoll.c +79 -63
142 lines not on this page · raw message
kernel/locking/rtmutex.c +37 -14
51 lines not on this page · raw message
kernel/trace/ftrace.c +57 -11
68 lines not on this page · raw message
lib/debugobjects.c +47 -9
56 lines not on this page · raw message
net/batman-adv/bridge_loop_avoidance.c +14 -14
Lines of this file are not shown. View the raw message.
net/batman-adv/routing.c +69 -4
73 lines not on this page · raw message
net/batman-adv/tp_meter.c +75 -38
113 lines not on this page · raw message
net/batman-adv/tvlv.c +63 -6
69 lines not on this page · raw message
scripts/sorttable.c +1072 -47
1,119 lines not on this page · raw message
scripts/sorttable.h deleted +0 -500
500 lines not on this page · raw message
security/apparmor/include/policy_unpack.h +19 -0
Lines of this file are not shown. View the raw message.
security/security.c +109 -0
109 lines not on this page · raw message
security/selinux/hooks.c +178 -64
242 lines not on this page · raw message
tools/testing/selftests/bpf/prog_tests/kprobe_multi_test.c +34 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/progs/kprobe_multi_sleepable.c new file +25 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/ptp/testptp.c +57 -5
62 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.