Linux 6.1.132
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.132 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/timers/no_hz.rst | 7 Makefile | 13 arch/alpha/include/asm/elf.h | 6 arch/alpha/include/asm/pgtable.h | 2 arch/alpha/include/asm/processor.h | 8 arch/alpha/kernel/osf_sys.c | 11 arch/arm/boot/dts/bcm2711.dtsi | 11 arch/arm/mach-omap1/Kconfig | 1 arch/arm/mach-shmobile/headsmp.S | 1 arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi | 6 arch/arm64/boot/dts/freescale/imx8mp-tqma8mpql.dtsi | 16 arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts | 2 arch/arm64/mm/mmu.c | 5 arch/x86/events/intel/core.c | 85 ++++ arch/x86/kernel/cpu/microcode/amd.c | 2 arch/x86/kernel/cpu/mshyperv.c | 11 arch/x86/kernel/irq.c | 2 block/bfq-cgroup.c | 2 block/bio.c | 2 drivers/acpi/resource.c | 6 drivers/clk/samsung/clk-pll.c | 7 drivers/clocksource/i8253.c | 36 +- drivers/firmware/efi/libstub/randomalloc.c | 4 drivers/firmware/imx/imx-scu.c | 1 drivers/firmware/iscsi_ibft.c | 5 drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c | 20 - drivers/gpu/drm/amd/amdgpu/nv.c | 2 drivers/gpu/drm/amd/amdgpu/soc15.c | 2 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 10 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c | 1 drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 7 drivers/gpu/drm/amd/display/dc/dce/dmub_hw_lock_mgr.c | 12 drivers/gpu/drm/display/drm_dp_mst_topology.c | 40 +- drivers/gpu/drm/drm_atomic_uapi.c | 4 drivers/gpu/drm/drm_connector.c | 4 drivers/gpu/drm/gma500/mid_bios.c | 5 drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 2 drivers/gpu/drm/mediatek/mtk_drm_gem.c | 9 drivers/gpu/drm/mediatek/mtk_drm_plane.c | 13 drivers/gpu/drm/nouveau/nouveau_connector.c | 1 drivers/gpu/drm/radeon/radeon_vce.c | 2 drivers/gpu/drm/v3d/v3d_sched.c | 9 drivers/hid/hid-apple.c | 13 drivers/hid/hid-ids.h | 2 drivers/hid/hid-quirks.c | 1 drivers/hid/intel-ish-hid/ipc/ipc.c | 15 drivers/hid/intel-ish-hid/ishtp/ishtp-dev.h | 2 drivers/hv/vmbus_drv.c | 13 drivers/i2c/busses/i2c-ali1535.c | 12 drivers/i2c/busses/i2c-ali15x3.c | 12 drivers/i2c/busses/i2c-omap.c | 26 - drivers/i2c/busses/i2c-sis630.c | 12 drivers/infiniband/hw/bnxt_re/qplib_fp.c | 2 drivers/infiniband/hw/bnxt_re/qplib_rcfw.h | 3 drivers/infiniband/hw/hns/hns_roce_hem.c | 16 drivers/infiniband/hw/hns/hns_roce_main.c | 2 drivers/infiniband/hw/hns/hns_roce_qp.c | 10 drivers/input/serio/i8042-acpipnpio.h | 111 +++--- drivers/leds/leds-mlxreg.c | 16 drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c | 10 drivers/mmc/host/atmel-mci.c | 4 drivers/mmc/host/sdhci-brcmstb.c | 10 drivers/net/bonding/bond_options.c | 55 ++- drivers/net/can/flexcan/flexcan-core.c | 18 - drivers/net/can/rcar/rcar_canfd.c | 28 - drivers/net/dsa/mv88e6xxx/chip.c | 59 ++- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 11 drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h | 3 drivers/net/ethernet/intel/ice/ice_arfs.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c | 12 drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 6 drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.c | 5 drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c | 8 drivers/net/mctp/mctp-i2c.c | 5 drivers/net/wireless/intel/iwlwifi/mvm/d3.c | 9 drivers/net/wireless/intel/iwlwifi/mvm/sta.c | 28 + drivers/net/wireless/intel/iwlwifi/mvm/sta.h | 3 drivers/net/wwan/mhi_wwan_mbim.c | 2 drivers/nvme/host/core.c | 2 drivers/nvme/host/fc.c | 3 drivers/nvme/host/pci.c | 2 drivers/nvme/host/tcp.c | 43 ++ drivers/nvme/target/rdma.c | 33 + drivers/pinctrl/bcm/pinctrl-bcm281xx.c | 2 drivers/platform/x86/thinkpad_acpi.c | 50 ++ drivers/powercap/powercap_sys.c | 3 drivers/regulator/core.c | 12 drivers/s390/cio/chp.c | 3 drivers/scsi/qla1280.c | 2 drivers/scsi/scsi_scan.c | 2 drivers/soc/imx/soc-imx8m.c | 149 +++----- drivers/soc/qcom/pdr_interface.c | 8 drivers/thermal/cpufreq_cooling.c | 2 drivers/usb/serial/ftdi_sio.c | 14 drivers/usb/serial/ftdi_sio_ids.h | 13 drivers/usb/serial/option.c | 48 +- drivers/video/fbdev/hyperv_fb.c | 2 drivers/xen/swiotlb-xen.c | 2 fs/fuse/dir.c | 2 fs/namei.c | 24 + fs/ntfs3/attrib.c | 176 ++++++---- fs/ntfs3/file.c | 151 +------- fs/ntfs3/frecord.c | 2 fs/ntfs3/index.c | 4 fs/ntfs3/inode.c | 12 fs/ntfs3/ntfs_fs.h | 9 fs/ntfs3/super.c | 68 ++- fs/proc/base.c | 9 fs/proc/generic.c | 10 fs/proc/inode.c | 6 fs/proc/internal.h | 14 fs/select.c | 11 fs/smb/client/asn1.c | 2 fs/smb/client/cifs_spnego.c | 4 fs/smb/client/cifsglob.h | 4 fs/smb/client/connect.c | 16 fs/smb/client/fs_context.c | 14 fs/smb/client/ioctl.c | 6 fs/smb/client/sess.c | 3 fs/smb/client/smb2pdu.c | 4 fs/smb/server/smbacl.c | 5 fs/vboxsf/super.c | 3 fs/xfs/libxfs/xfs_ag.c | 45 +- fs/xfs/libxfs/xfs_ag.h | 3 fs/xfs/libxfs/xfs_alloc.c | 77 ++-- fs/xfs/libxfs/xfs_alloc.h | 24 - fs/xfs/libxfs/xfs_attr.c | 6 fs/xfs/libxfs/xfs_bmap.c | 121 +++--- fs/xfs/libxfs/xfs_bmap.h | 5 fs/xfs/libxfs/xfs_bmap_btree.c | 8 fs/xfs/libxfs/xfs_btree_staging.c | 4 fs/xfs/libxfs/xfs_btree_staging.h | 6 fs/xfs/libxfs/xfs_da_btree.c | 7 fs/xfs/libxfs/xfs_format.h | 2 fs/xfs/libxfs/xfs_ialloc.c | 24 - fs/xfs/libxfs/xfs_ialloc_btree.c | 6 fs/xfs/libxfs/xfs_log_recover.h | 22 + fs/xfs/libxfs/xfs_refcount.c | 116 +++--- fs/xfs/libxfs/xfs_refcount.h | 4 fs/xfs/libxfs/xfs_refcount_btree.c | 9 fs/xfs/libxfs/xfs_rtbitmap.c | 2 fs/xfs/libxfs/xfs_rtbitmap.h | 83 ++++ fs/xfs/libxfs/xfs_sb.c | 20 + fs/xfs/libxfs/xfs_sb.h | 2 fs/xfs/libxfs/xfs_types.h | 13 fs/xfs/scrub/repair.c | 3 fs/xfs/scrub/rtbitmap.c | 3 fs/xfs/xfs_attr_item.c | 16 fs/xfs/xfs_bmap_item.c | 85 +--- fs/xfs/xfs_buf.c | 44 ++ fs/xfs/xfs_buf.h | 1 fs/xfs/xfs_extfree_item.c | 144 ++++---- fs/xfs/xfs_fsmap.c | 2 fs/xfs/xfs_fsops.c | 5 fs/xfs/xfs_inode_item.c | 3 fs/xfs/xfs_refcount_item.c | 68 +-- fs/xfs/xfs_reflink.c | 7 fs/xfs/xfs_rmap_item.c | 6 fs/xfs/xfs_rtalloc.c | 14 fs/xfs/xfs_rtalloc.h | 73 ---- fs/xfs/xfs_trace.h | 15 include/linux/fs.h | 2 include/linux/i8253.h | 1 include/linux/io_uring_types.h | 5 include/linux/nvme-tcp.h | 2 include/linux/proc_fs.h | 7 include/net/bluetooth/hci_core.h | 108 ++---- include/sound/soc.h | 5 include/uapi/linux/io_uring.h | 1 init/Kconfig | 2 io_uring/io_uring.c | 163 +++++++-- io_uring/io_uring.h | 2 kernel/sched/core.c | 13 kernel/sys.c | 2 kernel/time/hrtimer.c | 40 -- lib/buildid.c | 5 mm/migrate.c | 16 mm/nommu.c | 7 net/atm/lec.c | 3 net/batman-adv/bat_iv_ogm.c | 3 net/batman-adv/bat_v_ogm.c | 3 net/bluetooth/6lowpan.c | 7 net/bluetooth/hci_core.c | 10 net/bluetooth/hci_event.c | 37 +- net/bluetooth/iso.c | 6 net/bluetooth/l2cap_core.c | 12 net/bluetooth/rfcomm/core.c | 6 net/bluetooth/sco.c | 12 net/core/lwtunnel.c | 65 +++ net/core/neighbour.c | 1 net/core/netpoll.c | 9 net/ipv4/tcp.c | 19 - net/ipv6/route.c | 5 net/mptcp/options.c | 6 net/mptcp/protocol.h | 2 net/netfilter/ipvs/ip_vs_ctl.c | 8 net/netfilter/nf_conncount.c | 6 net/netfilter/nft_counter.c | 90 ++--- net/netfilter/nft_ct.c | 6 net/netfilter/nft_exthdr.c | 10 net/openvswitch/flow_netlink.c | 15 net/sched/sch_api.c | 6 net/sched/sch_gred.c | 3 net/sctp/stream.c | 2 net/switchdev/switchdev.c | 25 + net/wireless/core.c | 7 net/xdp/xsk_buff_pool.c | 2 net/xfrm/xfrm_output.c | 2 rust/Makefile | 7 scripts/generate_rust_analyzer.py | 64 ++- sound/pci/hda/patch_realtek.c | 1 sound/soc/amd/yc/acp6x-mach.c | 7 sound/soc/codecs/arizona.c | 14 sound/soc/codecs/madera.c | 10 sound/soc/codecs/tas2764.c | 10 sound/soc/codecs/tas2764.h | 8 sound/soc/codecs/tas2770.c | 2 sound/soc/codecs/wm0010.c | 13 sound/soc/codecs/wm5110.c | 8 sound/soc/sh/rcar/core.c | 14 sound/soc/sh/rcar/rsnd.h | 1 sound/soc/sh/rcar/src.c | 116 +++++- sound/soc/soc-ops.c | 15 sound/soc/sof/intel/hda-codec.c | 1 225 files changed, 2536 insertions(+), 1520 deletions(-)
Acs, Jakub (1):
block, bfq: fix re-introduced UAF in bic_set_bfqq()
Alex Henrie (2):
HID: apple: fix up the F6 key on the Omoton KB066 keyboard
HID: apple: disable Fn key handling on the Omoton KB066
Alex Hung (1):
drm/amd/display: Assign normalized_pix_clk when color depth = 14
Alexander Stein (1):
arm64: dts: freescale: tqma8mpql: Fix vqmmc-supply
Alexey Kashavkin (1):
netfilter: nft_exthdr: fix offset with ipv4_find_option()
Amit Cohen (1):
net: switchdev: Convert blocking notification chain to a raw one
Andreas Kemnade (1):
i2c: omap: fix IRQ storms
Andrey Albershteyn (1):
xfs: reset XFS_ATTR_INCOMPLETE filter on node removal
Andrii Nakryiko (1):
lib/buildid: Handle memfd_secret() files in build_id_parse()
Andy Shevchenko (1):
hrtimers: Mark is_migration_base() with __always_inline
Ard Biesheuvel (1):
efi/libstub: Avoid physical address 0x0 when doing random allocation
Arnd Bergmann (2):
x86/irq: Define trace events conditionally
ARM: OMAP1: select CONFIG_GENERIC_IRQ_CHIP
Arthur Mongodin (1):
mptcp: Fix data stream corruption in the address announcement
Artur Weber (1):
pinctrl: bcm281xx: Fix incorrect regmap max_registers value
Asahi Lina (1):
scripts: generate_rust_analyzer: Handle sub-modules with no Makefile
Benjamin Berg (1):
wifi: iwlwifi: mvm: ensure offloading TID queue exists
Biju Das (1):
can: rcar_canfd: Fix page entries in the AFL list
Boon Khai Ng (1):
USB: serial: ftdi_sio: add support for Altera USB Blaster 3
Brahmajit Das (1):
vboxsf: fix building with GCC 15
Breno Leitao (1):
netpoll: hold rcu read lock in __netpoll_send_skb()
Carolina Jubran (1):
net/mlx5e: Prevent bridge link show failure for non-eswitch-allowed devices
Charles Keepax (1):
ASoC: ops: Consistently treat platform_max as control value
Chengen Du (1):
iscsi_ibft: Fix UBSAN shift-out-of-bounds warning in ibft_attr_show_nic()
Chia-Lin Kao (AceLan) (1):
HID: ignore non-functional sensor in HP 5MP Camera
Christian Eggers (1):
regulator: check that dummy regulator has been probed before using it
Christoph Hellwig (1):
xfs: consider minlen sized extents in xfs_rtallocate_extent_block
Christophe JAILLET (4):
ASoC: codecs: wm0010: Fix error handling path in wm0010_spi_probe()
i2c: ali1535: Fix an error handling path in ali1535_probe()
i2c: ali15x3: Fix an error handling path in ali15x3_probe()
i2c: sis630: Fix an error handling path in sis630_probe()
Christopher Lentocha (1):
nvme-pci: quirk Acer FA100 for non-uniqueue identifiers
Cong Wang (1):
net_sched: Prevent creation of classes with TC_H_ROOT
Cosmin Ratiu (1):
xfrm_output: Force software GSO only in tunnel mode
Dan Carpenter (3):
ipvs: prevent integer overflow in do_ip_vs_get_ctl()
Bluetooth: Fix error code in chan_alloc_skb_cb()
net: atm: fix use after free in lec_send()
Daniel Lezcano (1):
thermal/cpufreq_cooling: Remove structure member documentation
Daniel Wagner (2):
nvme-fc: go straight to connecting state when initializing
nvme: only allow entering LIVE from CONNECTING state
Darrick J. Wong (17):
xfs: pass refcount intent directly through the log intent code
xfs: pass xfs_extent_free_item directly through the log intent code
xfs: fix confusing xfs_extent_item variable names
xfs: pass the xfs_bmbt_irec directly through the log intent code
xfs: pass per-ag references to xfs_free_extent
xfs: reserve less log space when recovering log intent items
xfs: move the xfs_rtbitmap.c declarations to xfs_rtbitmap.h
xfs: convert rt bitmap extent lengths to xfs_rtbxlen_t
xfs: don't leak recovered attri intent items
xfs: make rextslog computation consistent with mkfs
xfs: fix 32-bit truncation in xfs_compute_rextslog
xfs: don't allow overly small or large realtime volumes
xfs: remove unused fields from struct xbtree_ifakeroot
xfs: recompute growfsrtfree transaction reservation while growing rt volume
xfs: force all buffers to be written during btree bulk load
xfs: remove conditional building of rt geometry validator functions
xfs: give xfs_extfree_intent its own perag reference
Dave Chinner (4):
xfs: validate block number being freed before adding to xefi
xfs: fix bounds check in xfs_defer_agfl_block()
xfs: use deferred frees for btree block freeing
xfs: initialise di_crc in xfs_log_dinode
David Rosca (1):
drm/amdgpu: Fix JPEG video caps max size for navi1x and raven
David Woodhouse (1):
clockevents/drivers/i8253: Fix stop sequence for timer 0
Edson Juliano Drosdeck (1):
ALSA: hda/realtek: Limit mic boost on Positivo ARN50
Eric Dumazet (1):
tcp: fix races in tcp_abort()
Eric W. Biederman (1):
alpha/elf: Fix misc/setarch test of util-linux by removing 32bit support
Fabio Porcedda (2):
USB: serial: option: add Telit Cinterion FE990B compositions
USB: serial: option: fix Telit Cinterion FE990A name
Felix Moessbauer (1):
hrtimer: Use and report correct timerslack values for realtime tasks
Florent Revest (1):
x86/microcode/AMD: Fix out-of-bounds on systems with CPU-less NUMA nodes
Gannon Kolding (1):
ACPI: resource: IRQ override for Eluktronics MECH-17
Gavrilov Ilia (1):
xsk: fix an integer overflow in xp_create_and_assign_umem()
Geert Uytterhoeven (1):
ARM: shmobile: smp: Enforce shmobile_smp_* alignment
George Stark (1):
leds: mlxreg: Use devm_mutex_init() for mutex initialization
Greg Kroah-Hartman (1):
Linux 6.1.132
Grzegorz Nitka (1):
ice: fix memory leak in aRFS after reset
Gu Bowen (1):
mmc: atmel-mci: Add missing clk_disable_unprepare()
Guillaume Nault (2):
gre: Fix IPv6 link-local address generation. Revert "gre: Fix IPv6 link-local address generation."
Haibo Chen (2):
can: flexcan: only change CAN state when link up in system PM
can: flexcan: disable transceiver during system PM
Hangbin Liu (1):
bonding: fix incorrect MAC address setting to receive NS messages
Haoxiang Li (1):
qlcnic: fix memory leak issues in qlcnic_sriov_common.c
Hector Martin (3):
ASoC: tas2770: Fix volume scale
ASoC: tas2764: Fix power control mask
ASoC: tas2764: Set the SDOUT polarity correctly
Henrique Carvalho (1):
smb: client: Fix match_session bug preventing session reuse
Ievgen Vovk (1):
HID: hid-apple: Apple Magic Keyboard a3203 USB-C support
Ilya Maximets (1):
net: openvswitch: remove misbehaving actions length check
Imre Deak (1):
drm/dp_mst: Fix locking when skipping CSN before topology probing
Ivan Abramov (1):
drm/gma500: Add NULL check for pci_gfx_root in mid_get_vbt_data()
Jan Beulich (1):
Xen/swiotlb: mark xen_swiotlb_fixup() __init
Jann Horn (1):
sched: Clarify wake_up_q()'s write to task->wake_q.next
Jason-JH.Lin (1):
drm/mediatek: Fix coverity issue with unintentional integer overflow
Jens Axboe (5):
io_uring: return error pointer from io_mem_alloc()
io_uring: add ring freeing helper
mm: add nommu variant of vm_insert_pages()
io_uring: get rid of remap_pfn_range() for mapping rings/sqes
io_uring: don't attempt to mmap larger than what the user asks for
Jiachen Zhang (1):
xfs: ensure logflagsp is initialized in xfs_bmap_del_extent_real
Jianbo Liu (1):
net/mlx5: Bridge, fix the crash caused by LAG state check
Joe Hattori (2):
powercap: call put_device() on an error path in powercap_register_control_type()
firmware: imx-scu: fix OF node leak in .probe()
Johan Hovold (1):
USB: serial: option: match on interface class for Telit FN990B
Joseph Huang (1):
net: dsa: mv88e6xxx: Verify after ATU Load ops
Jun Yang (1):
sched: address a potential NULL pointer dereference in the GRED scheduler.
Junxian Huang (4):
RDMA/hns: Fix soft lockup during bt pages loop
RDMA/hns: Fix unmatched condition in error path of alloc_user_qp_db() RDMA/hns: Fix a missing rollback in error path of hns_roce_create_qp_common() RDMA/hns: Fix wrong value of max_sge_rd
Justin Iurman (1):
net: lwtunnel: fix recursion loops
Justin Klaassen (1):
arm64: dts: rockchip: fix u2phy1_host status for NanoPi R4S
Kamal Dasu (1):
mmc: sdhci-brcmstb: add cqhci suspend/resume to PM ops
Kan Liang (1):
perf/x86/intel: Use better start period for frequency mode
Kashyap Desai (1):
RDMA/bnxt_re: Add missing paranthesis in map_qp_id_to_tbl_indx
Kohei Enju (1):
netfilter: nf_conncount: Fully initialize struct nf_conncount_tuple in insert_tree()
Konstantin Komarov (2):
fs/ntfs3: Fix shift-out-of-bounds in ntfs_fill_super fs/ntfs3: Change new sparse cluster processing
Kuninori Morimoto (2):
ASoC: rsnd: don't indicate warning on rsnd_kctrl_accept_runtime()
ASoC: rsnd: adjust convert rate limitation
Kuniyuki Iwashima (2):
ipv6: Fix memleak of nhc_pcpu_rth_output in fib_check_nh_v6_gw().
ipv6: Set errno after ip_fib_metrics_init() in ip6_route_info_create().
Lin Ma (1):
net/neighbor: add missing policy for NDTPA_QUEUE_LENBYTES
Long Li (2):
xfs: add lock protection when remove perag from radix tree
xfs: fix perag leak when growfs fails
Luiz Augusto von Dentz (2):
Bluetooth: hci_event: Fix enabling passive scanning
Revert "Bluetooth: hci_core: Fix sleeping function called from invalid context"
Magnus Lindholm (1):
scsi: qla1280: Fix kernel oops when debug level > 2
Marek Vasut (2):
soc: imx8m: Remove global soc_uid
soc: imx8m: Use devm_* to simplify probe failure handling
Mario Limonciello (3):
drm/amd/display: Restore correct backlight brightness after a GPU reset drm/amd/display: Fix slab-use-after-free on hdcp_work drm/amd/display: Use HW lock mgr for PSR1 when only one eDP
Mark Pearson (1):
platform/x86: thinkpad_acpi: Support for V9 DYTC platform profiles
Martin Rodriguez Reboredo (1):
scripts: generate_rust_analyzer: provide cfgs for core and alloc
Matt Johnston (1):
net: mctp i2c: Copy headers if cloned
Matthew Maurer (1):
rust: Disallow BTF generation with Rust + LTO
Matthieu Baerts (NGI0) (1):
mptcp: safety check before fallback
Maurizio Lombardi (2):
nvme-tcp: add basic support for the C2HTermReq PDU
nvme-tcp: Fix a C2HTermReq error message
Maíra Canal (1):
drm/v3d: Don't run jobs that have errors flagged in its fence
Michael Kelley (3):
fbdev: hyperv_fb: iounmap() the correct memory when removing a device drm/hyperv: Fix address space leak when Hyper-V DRM device is removed
Drivers: hv: vmbus: Don't release fb_mmio resource in vmbus_free_mmio()
Miklos Szeredi (1):
fuse: don't truncate cached, mutated symlink
Ming Lei (1):
block: fix 'kmem_cache of name 'bio-108' already exists'
Miri Korenblit (1):
wifi: cfg80211: cancel wiphy_work before freeing wiphy
Murad Masimov (4):
cifs: Fix integer overflow while processing acregmax mount option
cifs: Fix integer overflow while processing acdirmax mount option
cifs: Fix integer overflow while processing actimeo mount option
cifs: Fix integer overflow while processing closetimeo mount option
Namjae Jeon (1):
ksmbd: fix incorrect validation for num_aces field of smb_acl
Nicklas Bo Jensen (1):
netfilter: nf_conncount: garbage collection is not skipped when jiffies wrap around
Nikita Zhandarovich (1):
drm/radeon: fix uninitialized size issue in radeon_vce_cs_parse()
Oleg Nesterov (1):
sched/isolation: Prevent boot crash when the boot CPU is nohz_full
Paulo Alcantara (2):
smb: client: fix noisy when tree connecting to DFS interlink targets
smb: client: fix potential UAF in cifs_dump_full_key()
Pavel Begunkov (1):
io_uring: fix corner case forgetting to vunmap
Peng Fan (1):
soc: imx8m: Unregister cpufreq and soc dev in cleanup path
Peter Oberparleiter (1):
s390/cio: Fix CHPID "configure" attribute caching
Phil Elwell (2):
ARM: dts: bcm2711: PL011 UARTs are actually r1p5
ARM: dts: bcm2711: Don't mark timer regs unconfigured
Rik van Riel (1):
scsi: core: Use GFP_NOIO to avoid circular locking dependency
Ruozhu Li (1):
nvmet-rdma: recheck queue state is LIVE in state lock in recv done
Saranya R (1):
soc: qcom: pdr: Fix the potential deadlock
Saravanan Vajravel (1):
RDMA/bnxt_re: Avoid clearing VLAN_ID mask in modify qp path
Sebastian Andrzej Siewior (2):
netfilter: nft_ct: Use __refcount_inc() for per-CPU nft_ct_pcpu_template.
netfilter: nft_counter: Use u64_stats_t for statistic.
Stefan Eichenberger (1):
arm64: dts: freescale: imx8mm-verdin-dahlia: add Microphone Jack to sound card
Stephan Gerhold (1):
net: wwan: mhi_wwan_mbim: Silence sequence number glitch errors
Steve French (1):
smb3: add support for IAKerb
Sven Eckelmann (1):
batman-adv: Ignore own maximum aggregation size during RX
Sybil Isabel Dorsett (1):
platform/x86: thinkpad_acpi: Fix invalid fan speed on ThinkPad X120e
Taehee Yoo (1):
eth: bnxt: do not update checksum in bnxt_xdp_build_skb()
Tamir Duberstein (1):
scripts: generate_rust_analyzer: add missing macros deps
Terry Cheong (1):
ASoC: SOF: Intel: hda: add softdep pre to snd-hda-codec-hdmi module
Thomas Mizrahi (1):
ASoC: amd: yc: Support mic on another Lenovo ThinkPad E16 Gen 2 model
Thomas Zimmermann (1):
drm/nouveau: Do not override forced connector status
Varada Pavani (1):
clk: samsung: update PLL locktime for PLL142XX used on FSD platform
Ville Syrjälä (1):
drm/atomic: Filter out redundant DPMS calls
Vinay Varma (1):
scripts: make rust-analyzer for out-of-tree modules
Vitaly Prosyak (1):
drm/amdgpu: fix use-after-free bug
Vitaly Rodionov (1):
ASoC: arizona/madera: use fsleep() in up/down DAPM event delays.
Wentao Liang (1):
net/mlx5: handle errors in mlx5_chains_create_table()
Werner Sembach (4):
Input: i8042 - swap old quirk combination with new quirk for NHxxRZQ
Input: i8042 - add required quirks for missing old boardnames
Input: i8042 - swap old quirk combination with new quirk for several devices
Input: i8042 - swap old quirk combination with new quirk for more devices
Xueming Feng (1):
tcp: fix forever orphan socket caused by tcp_abort
Ye Bin (1):
proc: fix UAF in proc_get_inode()
Yu-Chun Lin (1):
sctp: Fix undefined behavior in left shift operation
Yunfei Dong (1):
media: mediatek: vcodec: Fix VP8 stateless decoder smatch warning
Zhang Lixu (2):
HID: intel-ish-hid: fix the length of MNG_SYNC_FW_CLOCK in doorbell
HID: intel-ish-hid: Send clock sync message immediately after reset
Zhang Tianci (1):
xfs: update dir3 leaf block metadata after swap
Zhenhua Huang (1):
arm64: mm: Populate vmemmap at the page level if not section aligned
Zi Yan (1):
mm/migrate: fix shmem xarray update during migration
Greg Kroah-Hartman
maintainerDocumentation/timers/no_hz.rst +2 -5
@@ -129,11 +129,8 @@ adaptive-tick CPUs: At least one non-adaptive-tick CPU must remain online to handle timekeeping tasks in order to ensure that system calls like gettimeofday() returns accurate values on adaptive-tick CPUs. (This is not an issue for CONFIG_NO_HZ_IDLE=y because there are no running -user processes to observe slight drifts in clock rate.) Therefore, the -boot CPU is prohibited from entering adaptive-ticks mode. Specifying a -"nohz_full=" mask that includes the boot CPU will result in a boot-time -error message, and the boot CPU will be removed from the mask. Note that -this means that your system must have at least two CPUs in order for +user processes to observe slight drifts in clock rate.) Note that this +means that your system must have at least two CPUs in order for CONFIG_NO_HZ_FULL=y to do anything for you. Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded.
Makefile +7 -6
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 131 +SUBLEVEL = 132 EXTRAVERSION = NAME = Curry Ramen
@@ -1851,11 +1851,6 @@ rustfmt: rustfmtcheck: rustfmt_flags = --check rustfmtcheck: rustfmt -# IDE support targets -PHONY += rust-analyzer -rust-analyzer: - $(Q)$(MAKE) $(build)=rust $@ - # Misc # ---------------------------------------------------------------------------
@@ -1908,6 +1903,7 @@ help: @echo ' modules - default target, build the module(s)' @echo ' modules_install - install the module' @echo ' clean - remove generated files in module directory only' + @echo ' rust-analyzer - generate rust-project.json rust-analyzer support file' @echo '' endif # KBUILD_EXTMOD
@@ -2044,6 +2040,11 @@ quiet_cmd_tags = GEN $@ tags TAGS cscope gtags: FORCE $(call cmd,tags) +# IDE support targets +PHONY += rust-analyzer +rust-analyzer: + $(Q)$(MAKE) $(build)=rust $@ + # Script to generate missing namespace dependencies # ---------------------------------------------------------------------------
arch/alpha/include/asm/elf.h +1 -5
@@ -74,7 +74,7 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG];/* * This is used to ensure we don't load something for the wrong architecture. */ -#define elf_check_arch (x) ((x)->e_machine == EM_ALPHA) +#define elf_check_arch (x) (((x)->e_machine == EM_ALPHA) && !((x)->e_flags & EF_ALPHA_32BIT))/* * These are used to set parameters in the core dumps.
@@ -145,10 +145,6 @@ extern int dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task); : amask (AMASK_CIX) ? "ev6" : "ev67"); \ }) -#define SET_PERSONALITY (EX ) \ - set_personality(((EX).e_flags & EF_ALPHA_32BIT) \ - ? PER_LINUX_32BIT : PER_LINUX) -extern int alpha_l1i_cacheshape;extern int alpha_l1d_cacheshape;extern int alpha_l2_cacheshape;
arch/alpha/include/asm/pgtable.h +1 -1
@@ -322,7 +322,7 @@ extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)extern void paging_init (void ); -/* We have our own get_unmapped_area to cope with ADDR_LIMIT_32BIT. */ +/* We have our own get_unmapped_area */ #define HAVE_ARCH_UNMAPPED_AREA #endif /* _ALPHA_PGTABLE_H */
arch/alpha/include/asm/processor.h +2 -6
@@ -8,23 +8,19 @@#ifndef __ASM_ALPHA_PROCESSOR_H#define __ASM_ALPHA_PROCESSOR_H -#include <linux/personality.h> /* for ADDR_LIMIT_32BIT */ -/* * We have a 42-bit user address space: 4TB user VM... */ #define TASK_SIZE (0x40000000000UL) -#define STACK_TOP \ - (current->personality & ADDR_LIMIT_32BIT ? 0x80000000 : 0x00120000000UL) +#define STACK_TOP (0x00120000000UL)#define STACK_TOP_MAX 0x00120000000UL/* This decides where the kernel will search for a free chunk of vm * space during mmap's. */ -#define TASK_UNMAPPED_BASE \ - ((current->personality & ADDR_LIMIT_32BIT) ? 0x40000000 : TASK_SIZE / 2) +#define TASK_UNMAPPED_BASE (TASK_SIZE / 2)/* This is dead. Everything has been moved to thread_info. */ struct thread_struct { };
arch/alpha/kernel/osf_sys.c +2 -9
@@ -1213,8 +1213,7 @@ SYSCALL_DEFINE1(old_adjtimex, struct timex32 __user *, txc_p)return ret; } -/* Get an address range which is currently unmapped. Similar to the -generic version except that we know how to honor ADDR_LIMIT_32BIT. */ +/* Get an address range which is currently unmapped. */ static unsigned long arch_get_unmapped_area_1(unsigned long addr, unsigned long len,
@@ -1236,13 +1235,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags) { - unsigned long limit; - -/* "32 bit" actually means 31 bit, since pointers sign extend. */ -if (current->personality &ADDR_LIMIT_32BIT ) - limit =0x80000000 ; -else - limit =TASK_SIZE ; + unsigned long limit = TASK_SIZE;if (len > limit)return -ENOMEM ;
arch/arm/boot/dts/bcm2711.dtsi +5 -6
@@ -134,7 +134,7 @@ uart2: serial@7e201400 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -145,7 +145,7 @@ uart3: serial@7e201600 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -156,7 +156,7 @@ uart4: serial@7e201800 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -167,7 +167,7 @@ uart5: serial@7e201a00 { clocks = <&clocks BCM2835_CLOCK_UART>, <&clocks BCM2835_CLOCK_VPU>; clock-names = "uartclk", "apb_pclk"; - arm,primecell-periphid = <0x00241011>; + arm,primecell-periphid = <0x00341011>; status = "disabled"; };
@@ -451,8 +451,6 @@ IRQ_TYPE_LEVEL_LOW)>, IRQ_TYPE_LEVEL_LOW)>, <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; - /* This only applies to the ARMv7 stub */ - arm,cpu-registers-not-fw-configured; }; cpus: cpus {
@@ -1154,6 +1152,7 @@ &txp { }; &uart0 { + arm,primecell-periphid = <0x00341011>; interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>; };
arch/arm/mach-omap1/Kconfig +1 -0
@@ -9,6 +9,7 @@ menuconfig ARCH_OMAP1 select ARCH_OMAP select CLKSRC_MMIO select FORCE_PCI if PCCARD + select GENERIC_IRQ_CHIP select GPIOLIB help Support for older TI OMAP1 (omap7xx, omap15xx or omap16xx)
arch/arm/mach-shmobile/headsmp.S +1 -0
@@ -136,6 +136,7 @@ ENDPROC(shmobile_smp_sleep) .long shmobile_smp_arg - 1b .bss + .align 2 .globl shmobile_smp_mpidr shmobile_smp_mpidr: .space NR_CPUS * 4
arch/arm64/boot/dts/freescale/imx8mm-verdin-dahlia.dtsi +3 -3
@@ -16,10 +16,10 @@ sound_card: sound-card { "Headphone Jack", "HPOUTR", "IN2L", "Line In Jack", "IN2R", "Line In Jack", - "Headphone Jack", "MICBIAS", - "IN1L", "Headphone Jack"; + "Microphone Jack", "MICBIAS", + "IN1L", "Microphone Jack"; simple-audio-card,widgets = - "Microphone", "Headphone Jack", + "Microphone", "Microphone Jack", "Headphone", "Headphone Jack", "Line", "Line In Jack";
arch/arm64/boot/dts/freescale/imx8mp-tqma8mpql.dtsi +4 -12
@@ -1,7 +1,8 @@ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT /* - * Copyright 2021-2022 TQ-Systems GmbH - * Author: Alexander Stein <[email protected]> + * Copyright 2021-2025 TQ-Systems GmbH <[email protected]>, + * D-82229 Seefeld, Germany. + * Author: Alexander Stein */ #include "imx8mp.dtsi"
@@ -23,15 +24,6 @@ reg_vcc3v3: regulator-vcc3v3 { regulator-max-microvolt = <3300000>; regulator-always-on; }; - - /* e-MMC IO, needed for HS modes */ - reg_vcc1v8: regulator-vcc1v8 { - compatible = "regulator-fixed"; - regulator-name = "VCC1V8"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - }; }; &A53_0 {
@@ -194,7 +186,7 @@ &usdhc3 { no-sd; no-sdio; vmmc-supply = <®_vcc3v3>; - vqmmc-supply = <®_vcc1v8>; + vqmmc-supply = <&buck5_reg>; status = "okay"; };
arch/arm64/boot/dts/rockchip/rk3399-nanopi-r4s.dts +1 -1
@@ -117,7 +117,7 @@ &u2phy0_host { }; &u2phy1_host { - status = "disabled"; + phy-supply = <&vdd_5v>; }; &uart0 {
arch/arm64/mm/mmu.c +4 -1
@@ -1209,8 +1209,11 @@ int __meminit vmemmap_populate(unsigned long start, unsigned long end, int node,pmd_t *pmdp;WARN_ON ((start <VMEMMAP_START ) || (end >VMEMMAP_END )); +/* [start, end] should be within one section */ +WARN_ON_ONCE (end - start >PAGES_PER_SECTION *sizeof (struct page )); -if (!ARM64_KERNEL_USES_PMD_MAPS ) +if (!ARM64_KERNEL_USES_PMD_MAPS || + (end - start <PAGES_PER_SECTION *sizeof (struct page )))return vmemmap_populate_basepages (start, end, node, altmap); do {
arch/x86/events/intel/core.c +85 -0
97 lines not on this page · raw message
arch/x86/kernel/cpu/microcode/amd.c +1 -1
@@ -867,7 +867,7 @@ static enum ucode_state load_microcode_amd(u8 family, const u8 *data, size_t sizreturn ret; } -for_each_node (nid) { +for_each_node_with_cpus (nid) { cpu =cpumask_first (cpumask_of_node (nid)); c = &cpu_data (cpu);
arch/x86/kernel/cpu/mshyperv.c +0 -11
@@ -16,7 +16,6 @@#include <linux/interrupt.h> #include <linux/irq.h> #include <linux/kexec.h> -#include <linux/i8253.h> #include <linux/random.h> #include <linux/swiotlb.h> #include <asm/processor.h>
@@ -461,16 +460,6 @@ static void __init ms_hyperv_init_platform(void)if (efi_enabled (EFI_BOOT )) x86_platform.get_nmi_reason = hv_get_nmi_reason; -/* -* Hyper-V VMs have a PIT emulation quirk such that zeroing the -* counter register during PIT shutdown restarts the PIT. So it -* continues to interrupt @18.2 HZ. Setting i8253_clear_counter -* to false tells pit_shutdown() not to zero the counter so that -* the PIT really is shutdown. Generation 2 VMs don't have a PIT, -* and setting this value has no effect. -*/ - i8253_clear_counter_on_shutdown = false; -#if IS_ENABLED (CONFIG_HYPERV )/* * Setup the hook to get control post apic initialization.
arch/x86/kernel/irq.c +2 -0
@@ -23,8 +23,10 @@#include <asm/traps.h> #include <asm/thermal.h> +#if defined(CONFIG_X86_LOCAL_APIC ) || defined(CONFIG_X86_THERMAL_VECTOR )#define CREATE_TRACE_POINTS #include <asm/trace/irq_vectors.h> +#endif DEFINE_PER_CPU_SHARED_ALIGNED (irq_cpustat_t, irq_stat);EXPORT_PER_CPU_SYMBOL (irq_stat);
block/bfq-cgroup.c +1 -1
@@ -739,8 +739,8 @@ static void bfq_sync_bfqq_move(struct bfq_data *bfqd,* old cgroup. */ bfq_put_cooperator (sync_bfqq); -bfq_release_process_ref (bfqd, sync_bfqq);bic_set_bfqq (bic,NULL , true, act_idx); +bfq_release_process_ref (bfqd, sync_bfqq); } }
block/bio.c +1 -1
@@ -73,7 +73,7 @@ struct bio_slab {struct kmem_cache *slab;unsigned int slab_ref;unsigned int slab_size; -char name[8 ]; +char name[12 ]; };static DEFINE_MUTEX (bio_slab_lock);static DEFINE_XARRAY (bio_slabs);
drivers/acpi/resource.c +6 -0
@@ -553,6 +553,12 @@ static const struct dmi_system_id maingear_laptop[] = { DMI_MATCH(DMI_BOARD_NAME, "RP-15"), }, }, + { + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"Eluktronics Inc." ), + DMI_MATCH(DMI_BOARD_NAME, "MECH-17"), + }, + }, {/* TongFang GM6XGxX/TUXEDO Stellaris 16 Gen5 AMD */ .matches = {
drivers/clk/samsung/clk-pll.c +6 -1
@@ -206,6 +206,7 @@ static const struct clk_ops samsung_pll3000_clk_ops = {*/ /* Maximum lock time can be 270 * PDIV cycles */ #define PLL35XX_LOCK_FACTOR (270) +#define PLL142XX_LOCK_FACTOR (150)#define PLL35XX_MDIV_MASK (0x3FF)#define PLL35XX_PDIV_MASK (0x3F)
@@ -272,7 +273,11 @@ static int samsung_pll35xx_set_rate(struct clk_hw *hw, unsigned long drate, }/* Set PLL lock time. */ -writel_relaxed (rate->pdiv *PLL35XX_LOCK_FACTOR , +if (pll->type == pll_142xx) +writel_relaxed (rate->pdiv *PLL142XX_LOCK_FACTOR , + pll->lock_reg); +else +writel_relaxed (rate->pdiv *PLL35XX_LOCK_FACTOR , pll->lock_reg);/* Change PLL PMS values */
drivers/clocksource/i8253.c +25 -11
@@ -20,13 +20,6 @@DEFINE_RAW_SPINLOCK (i8253_lock);EXPORT_SYMBOL (i8253_lock); -/* -* Handle PIT quirk in pit_shutdown() where zeroing the counter register -* restarts the PIT, negating the shutdown. On platforms with the quirk, -* platform specific code can set this to false. -*/ -bool i8253_clear_counter_on_shutdown__ro_after_init = true; -#ifdef CONFIG_CLKSRC_I8253 /* * Since the PIT overflows every tick, its not very useful
@@ -112,12 +105,33 @@ void clockevent_i8253_disable(void) {raw_spin_lock (&i8253_lock); +/* +* Writing the MODE register should stop the counter, according to +* the datasheet. This appears to work on real hardware (well, on +* modern Intel and AMD boxes; I didn't dig the Pegasos out of the +* shed). +* +* However, some virtual implementations differ, and the MODE change +* doesn't have any effect until either the counter is written (KVM +* in-kernel PIT) or the next interrupt (QEMU). And in those cases, +* it may not stop the *count*, only the interrupts. Although in +* the virt case, that probably doesn't matter, as the value of the +* counter will only be calculated on demand if the guest reads it; +* it's the interrupts which cause steal time. +* +* Hyper-V apparently has a bug where even in mode 0, the IRQ keeps +* firing repeatedly if the counter is running. But it *does* do the +* right thing when the MODE register is written. +* +* So: write the MODE and then load the counter, which ensures that +* the IRQ is stopped on those buggy virt implementations. And then +* write the MODE again, which is the right way to stop it. +*/ outb_p (0x30 ,PIT_MODE ); +outb_p (0 ,PIT_CH0 ); +outb_p (0 ,PIT_CH0 ); -if (i8253_clear_counter_on_shutdown) { -outb_p (0 ,PIT_CH0 ); -outb_p (0 ,PIT_CH0 ); - } +outb_p (0x30 ,PIT_MODE );raw_spin_unlock (&i8253_lock); }
drivers/firmware/efi/libstub/randomalloc.c +4 -0
@@ -75,6 +75,10 @@ efi_status_t efi_random_alloc(unsigned long size,if (align <EFI_ALLOC_ALIGN ) align =EFI_ALLOC_ALIGN ; +/* Avoid address 0x0, as it can be mistaken for NULL */ +if (alloc_min ==0 ) + alloc_min = align; + size =round_up (size,EFI_ALLOC_ALIGN );/* count the suitable slots in each memory map entry */
drivers/firmware/imx/imx-scu.c +1 -0
@@ -279,6 +279,7 @@ static int imx_scu_probe(struct platform_device *pdev)return ret; sc_ipc->fast_ipc =of_device_is_compatible (args.np,"fsl,imx8-mu-scu" ); +of_node_put (args.np); num_channel = sc_ipc->fast_ipc ?2 :SCU_MU_CHAN_NUM ;for (i =0 ; i < num_channel; i++) {
drivers/firmware/iscsi_ibft.c +4 -1
@@ -310,7 +310,10 @@ static ssize_t ibft_attr_show_nic(void *data, int type, char *buf) str +=sprintf_ipaddr (str, nic->ip_addr);break ;case ISCSI_BOOT_ETH_SUBNET_MASK : - val =cpu_to_be32 (~((1 << (32 -nic->subnet_mask_prefix))-1 )); +if (nic->subnet_mask_prefix >32 ) + val =cpu_to_be32 (~0 ); +else + val =cpu_to_be32 (~((1 << (32 -nic->subnet_mask_prefix))-1 )); str +=sprintf (str,"%pI4" , &val);break ;case ISCSI_BOOT_ETH_PREFIX_LEN :
drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c +16 -4
@@ -132,13 +132,25 @@ static const struct mmu_interval_notifier_ops amdgpu_mn_hsa_ops = {*/ int amdgpu_mn_register (struct amdgpu_bo *bo,unsigned long addr) { +int r; +if (bo->kfd_bo) -return mmu_interval_notifier_insert (&bo->notifier, current->mm, + r =mmu_interval_notifier_insert (&bo->notifier, current->mm, addr,amdgpu_bo_size (bo), &amdgpu_mn_hsa_ops); -return mmu_interval_notifier_insert (&bo->notifier, current->mm, addr, -amdgpu_bo_size (bo), - &amdgpu_mn_gfx_ops); +else + r =mmu_interval_notifier_insert (&bo->notifier, current->mm, addr, +amdgpu_bo_size (bo), + &amdgpu_mn_gfx_ops); +if (r) +/* +* Make sure amdgpu_hmm_unregister() doesn't call +* mmu_interval_notifier_remove() when the notifier isn't properly +* initialized. +*/ + bo->notifier.mm =NULL ; + +return r; }/**
drivers/gpu/drm/amd/amdgpu/nv.c +1 -1
@@ -87,7 +87,7 @@ static const struct amdgpu_video_codec_info nv_video_codecs_decode_array[] = {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 4096, 52)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1, 4096, 4096, 4)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 8192, 4352, 186)}, - {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)}, + {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 8192, 8192, 0)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 8192, 4352, 0)}, };
drivers/gpu/drm/amd/amdgpu/soc15.c +1 -1
@@ -125,7 +125,7 @@ static const struct amdgpu_video_codec_info rv_video_codecs_decode_array[] = {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_MPEG4_AVC, 4096, 4096, 52)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VC1, 4096, 4096, 4)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_HEVC, 4096, 4096, 186)}, - {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 4096, 4096, 0)}, + {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_JPEG, 8192, 8192, 0)}, {codec_info_build(AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_VP9, 4096, 4096, 0)}, };
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +10 -0
@@ -230,6 +230,10 @@ static int amdgpu_dm_atomic_check(struct drm_device *dev,static void handle_hpd_irq_helper (struct amdgpu_dm_connector *aconnector);static void handle_hpd_rx_irq (void *param); +static void amdgpu_dm_backlight_set_level (struct amdgpu_display_manager *dm, +int bl_idx, +u32 user_brightness); +static bool is_timing_unchanged_for_freesync (struct drm_crtc_state *old_crtc_state,struct drm_crtc_state *new_crtc_state);
@@ -2885,6 +2889,12 @@ static int dm_resume(void *handle)mutex_unlock (&dm->dc_lock); +/* set the backlight after a reset */ +for (i =0 ; i < dm->num_of_edps; i++) { +if (dm->backlight_dev[i]) +amdgpu_dm_backlight_set_level (dm, i, dm->brightness[i]); + } +return 0 ; }/* Recreate dc_state - DC invalidates it when setting power state to S3. */
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c +1 -0
@@ -404,6 +404,7 @@ void hdcp_destroy(struct kobject *kobj, struct hdcp_workqueue *hdcp_work)for (i =0 ; i < hdcp_work->max_link; i++) {cancel_delayed_work_sync (&hdcp_work[i].callback_dwork);cancel_delayed_work_sync (&hdcp_work[i].watchdog_timer_dwork); +cancel_delayed_work_sync (&hdcp_work[i].property_validate_dwork); }sysfs_remove_bin_file (kobj, &hdcp_work[0 ].attr);
drivers/gpu/drm/amd/display/dc/core/dc_resource.c +5 -2
@@ -2328,10 +2328,13 @@ static int get_norm_pix_clk(const struct dc_crtc_timing *timing)break ;case COLOR_DEPTH_121212 : normalized_pix_clk = (pix_clk *36 ) /24 ; -break ; +break ; +case COLOR_DEPTH_141414 : + normalized_pix_clk = (pix_clk *42 ) /24 ; +break ;case COLOR_DEPTH_161616 : normalized_pix_clk = (pix_clk *48 ) /24 ; -break ; +break ;default :ASSERT (0 );break ;
drivers/gpu/drm/amd/display/dc/dce/dmub_hw_lock_mgr.c +12 -0
@@ -67,5 +67,17 @@ bool should_use_dmub_lock(struct dc_link *link) {if (link->psr_settings.psr_version ==DC_PSR_VERSION_SU_1 )return true; + +/* only use HW lock for PSR1 on single eDP */ +if (link->psr_settings.psr_version ==DC_PSR_VERSION_1 ) { +struct dc_link *edp_links[MAX_NUM_EDP ]; +int edp_num; + +get_edp_links (link->dc, edp_links, &edp_num); + +if (edp_num ==1 ) +return true; + } +return false; }
drivers/gpu/drm/display/drm_dp_mst_topology.c +24 -16
@@ -3959,6 +3959,22 @@ static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr)return 0 ; } +static bool primary_mstb_probing_is_done (struct drm_dp_mst_topology_mgr *mgr) +{ +bool probing_done = false; + +mutex_lock (&mgr->lock); + +if (mgr->mst_primary &&drm_dp_mst_topology_try_get_mstb (mgr->mst_primary)) { + probing_done = mgr->mst_primary->link_address_sent; +drm_dp_mst_topology_put_mstb (mgr->mst_primary); + } + +mutex_unlock (&mgr->lock); + +return probing_done; +} +static inline bool drm_dp_mst_process_up_req (struct drm_dp_mst_topology_mgr *mgr,struct drm_dp_pending_up_req *up_req)
@@ -3989,8 +4005,12 @@ drm_dp_mst_process_up_req(struct drm_dp_mst_topology_mgr *mgr,/* TODO: Add missing handler for DP_RESOURCE_STATUS_NOTIFY events */ if (msg->req_type ==DP_CONNECTION_STATUS_NOTIFY ) { - dowork =drm_dp_mst_handle_conn_stat (mstb, &msg->u.conn_stat); - hotplug = true; +if (!primary_mstb_probing_is_done (mgr)) { +drm_dbg_kms (mgr->dev,"Got CSN before finish topology probing. Skip it.\n" ); + }else { + dowork =drm_dp_mst_handle_conn_stat (mstb, &msg->u.conn_stat); + hotplug = true; + } }drm_dp_mst_topology_put_mstb (mstb);
@@ -4069,10 +4089,11 @@ static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr)drm_dp_send_up_ack_reply (mgr, mst_primary, up_req->msg.req_type, false); +drm_dp_mst_topology_put_mstb (mst_primary); +if (up_req->msg.req_type ==DP_CONNECTION_STATUS_NOTIFY ) {const struct drm_dp_connection_status_notify *conn_stat = &up_req->msg.u.conn_stat; -bool handle_csn; drm_dbg_kms(mgr->dev, "Got CSN: pn: %d ldps:%d ddps: %d mcs: %d ip: %d pdt: %d\n", conn_stat->port_number,
@@ -4081,16 +4102,6 @@ static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr) conn_stat->message_capability_status, conn_stat->input_port, conn_stat->peer_device_type); - -mutex_lock (&mgr->probe_lock); - handle_csn = mst_primary->link_address_sent; -mutex_unlock (&mgr->probe_lock); - -if (!handle_csn) { -drm_dbg_kms (mgr->dev,"Got CSN before finish topology probing. Skip it." ); -kfree (up_req); - goto out_put_primary; - } }else if (up_req->msg.req_type ==DP_RESOURCE_STATUS_NOTIFY ) {const struct drm_dp_resource_status_notify *res_stat = &up_req->msg.u.resource_stat;
@@ -4105,9 +4116,6 @@ static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr)list_add_tail (&up_req->next, &mgr->up_req_list);mutex_unlock (&mgr->up_req_lock);queue_work (system_long_wq, &mgr->up_req_work); - -out_put_primary: -drm_dp_mst_topology_put_mstb (mst_primary); out_clear_reply:memset (&mgr->up_req_recv,0 ,sizeof (struct drm_dp_sideband_msg_rx ));return 0 ;
drivers/gpu/drm/drm_atomic_uapi.c +4 -0
@@ -932,6 +932,10 @@ int drm_atomic_connector_commit_dpms(struct drm_atomic_state *state,if (mode !=DRM_MODE_DPMS_ON ) mode =DRM_MODE_DPMS_OFF ; + +if (connector->dpms == mode) + goto out; + connector->dpms = mode; crtc = connector->state->crtc;
drivers/gpu/drm/drm_connector.c +4 -0
@@ -1100,6 +1100,10 @@ static const struct drm_prop_enum_list dp_colorspaces[] = {* callback. For atomic drivers the remapping to the "ACTIVE" property is * implemented in the DRM core. * +* On atomic drivers any DPMS setproperty ioctl where the value does not +* change is completely skipped, otherwise a full atomic commit will occur. +* On legacy drivers the exact behavior is driver specific. +* * Note that this property cannot be set through the MODE_ATOMIC ioctl, * userspace must use "ACTIVE" on the CRTC instead. *
drivers/gpu/drm/gma500/mid_bios.c +5 -0
@@ -279,6 +279,11 @@ static void mid_get_vbt_data(struct drm_psb_private *dev_priv) 0, PCI_DEVFN(2, 0));int ret =-1 ; +if (pci_gfx_root ==NULL ) { +WARN_ON (1 ); +return ; + } +/* Get the address of the platform config vbt */ pci_read_config_dword (pci_gfx_root,0xFC , &addr);pci_dev_put (pci_gfx_root);
drivers/gpu/drm/hyperv/hyperv_drm_drv.c +2 -0
@@ -157,6 +157,7 @@ static int hyperv_vmbus_probe(struct hv_device *hdev,return 0 ; err_free_mmio: +iounmap (hv->vram);vmbus_free_mmio (hv->mem->start, hv->fb_size); err_vmbus_close:vmbus_close (hdev->channel);
@@ -175,6 +176,7 @@ static int hyperv_vmbus_remove(struct hv_device *hdev)vmbus_close (hdev->channel);hv_set_drvdata (hdev,NULL ); +iounmap (hv->vram);vmbus_free_mmio (hv->mem->start, hv->fb_size);return 0 ;
drivers/gpu/drm/mediatek/mtk_drm_gem.c +8 -1
@@ -119,7 +119,14 @@ int mtk_drm_gem_dumb_create(struct drm_file *file_priv, struct drm_device *dev,int ret; args->pitch =DIV_ROUND_UP (args->width * args->bpp,8 ); - args->size = args->pitch * args->height; + +/* +* Multiply 2 variables of different types, +* for example: args->size = args->spacing * args->height; +* may cause coverity issue with unintentional overflow. +*/ + args->size = args->pitch; + args->size *= args->height; mtk_gem =mtk_drm_gem_create (dev, args->size, false);if (IS_ERR (mtk_gem))
drivers/gpu/drm/mediatek/mtk_drm_plane.c +11 -2
@@ -120,6 +120,7 @@ static void mtk_plane_update_new_state(struct drm_plane_state *new_state,struct mtk_drm_gem_obj *mtk_gem;unsigned int pitch, format;dma_addr_t addr; +int offset; gem = fb->obj[0 ]; mtk_gem =to_mtk_gem_obj (gem);
@@ -127,8 +128,16 @@ static void mtk_plane_update_new_state(struct drm_plane_state *new_state, pitch = fb->pitches[0 ]; format = fb->format->format; - addr += (new_state->src.x1 >>16 ) * fb->format->cpp[0 ]; - addr += (new_state->src.y1 >>16 ) * pitch; +/* +* Using dma_addr_t variable to calculate with multiplier of different types, +* for example: addr += (new_state->src.x1 >> 16) * fb->format->cpp[0]; +* may cause coverity issue with unintentional overflow. +*/ + offset = (new_state->src.x1 >>16 ) * fb->format->cpp[0 ]; + addr += offset; + offset = (new_state->src.y1 >>16 ) * pitch; + addr += offset; + mtk_plane_state->pending.enable = true; mtk_plane_state->pending.pitch = pitch;
drivers/gpu/drm/nouveau/nouveau_connector.c +0 -1
@@ -755,7 +755,6 @@ nouveau_connector_force(struct drm_connector *connector)if (!nv_encoder) {NV_ERROR (drm,"can't find encoder to force %s on!\n" , connector->name); - connector->status = connector_status_disconnected;return ; }
drivers/gpu/drm/radeon/radeon_vce.c +1 -1
@@ -557,7 +557,7 @@ int radeon_vce_cs_parse(struct radeon_cs_parser *p) {int session_idx =-1 ;bool destroyed = false, created = false, allocated = false; -uint32_t tmp, handle =0 ; +uint32_t tmp =0 , handle =0 ;uint32_t *size = &tmp;int i, r =0 ;
drivers/gpu/drm/v3d/v3d_sched.c +8 -1
@@ -179,11 +179,15 @@ v3d_tfu_job_run(struct drm_sched_job *sched_job)struct drm_device *dev = &v3d->drm;struct dma_fence *fence; +if (unlikely (job->base.base.s_fence->finished.error)) +return NULL ; + + v3d->tfu_job = job; + fence =v3d_fence_create (v3d,V3D_TFU );if (IS_ERR (fence))return NULL ; - v3d->tfu_job = job;if (job->base.irq_fence)dma_fence_put (job->base.irq_fence); job->base.irq_fence =dma_fence_get (fence);
@@ -217,6 +221,9 @@ v3d_csd_job_run(struct drm_sched_job *sched_job)struct dma_fence *fence;int i; +if (unlikely (job->base.base.s_fence->finished.error)) +return NULL ; + v3d->csd_job = job;v3d_invalidate_caches (v3d);
drivers/hid/hid-apple.c +12 -1
@@ -339,6 +339,12 @@ static bool apple_is_non_apple_keyboard(struct hid_device *hdev)return false; } +static bool apple_is_omoton_kb066 (struct hid_device *hdev) +{ +return hdev->product ==USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI && +strcmp (hdev->name,"Bluetooth Keyboard" ) ==0 ; +} +static inline void apple_setup_key_translation (struct input_dev *input,const struct apple_key_translation *table) {
@@ -425,6 +431,7 @@ static int hidinput_apple_event(struct hid_device *hid, struct input_dev *input, hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2015) table = magic_keyboard_2015_fn_keys; else if (hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 || + hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024 || hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 || hid->product == USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021) table = apple2021_fn_keys;
@@ -675,7 +682,7 @@ static int apple_input_configured(struct hid_device *hdev, {struct apple_sc *asc =hid_get_drvdata (hdev); -if ((asc->quirks &APPLE_HAS_FN ) && !asc->fn_found) { +if (((asc->quirks &APPLE_HAS_FN ) && !asc->fn_found) ||apple_is_omoton_kb066 (hdev)) {hid_info (hdev,"Fn key not found (Apple Wireless Keyboard clone?), disabling Fn key handling\n" ); asc->quirks &= ~APPLE_HAS_FN ; }
@@ -1030,6 +1037,10 @@ static const struct hid_device_id apple_devices[] = { .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY }, { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021), .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK }, + { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024), + .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY }, + { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024), + .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK }, { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021), .driver_data = APPLE_HAS_FN | APPLE_ISO_TILDE_QUIRK | APPLE_RDESC_BATTERY }, { HID_BLUETOOTH_DEVICE(BT_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021),
drivers/hid/hid-ids.h +2 -0
@@ -184,6 +184,7 @@#define USB_DEVICE_ID_APPLE_IRCONTROL4 0x8242#define USB_DEVICE_ID_APPLE_IRCONTROL5 0x8243#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2021 0x029c +#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_2024 0x0320#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_FINGERPRINT_2021 0x029a#define USB_DEVICE_ID_APPLE_MAGIC_KEYBOARD_NUMPAD_2021 0x029f#define USB_DEVICE_ID_APPLE_TOUCHBAR_BACKLIGHT 0x8102
@@ -1072,6 +1073,7 @@#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001 0x3001#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3003 0x3003#define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008 0x3008 +#define USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473 0x5473#define I2C_VENDOR_ID_RAYDIUM 0x2386#define I2C_PRODUCT_ID_RAYDIUM_4B33 0x4b33
drivers/hid/hid-quirks.c +1 -0
@@ -882,6 +882,7 @@ static const struct hid_device_id hid_ignore_list[] = { { HID_USB_DEVICE(USB_VENDOR_ID_SYNAPTICS, USB_DEVICE_ID_SYNAPTICS_DPAD) }, #endif { HID_USB_DEVICE(USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K) }, + { HID_USB_DEVICE(USB_VENDOR_ID_QUANTA, USB_DEVICE_ID_QUANTA_HP_5MP_CAMERA_5473) }, { } };
drivers/hid/intel-ish-hid/ipc/ipc.c +9 -6
@@ -517,6 +517,10 @@ static int ish_fw_reset_handler(struct ishtp_device *dev)/* ISH FW is dead */ if (!ish_is_input_ready (dev))return -EPIPE ; + +/* Send clock sync at once after reset */ + ishtp_dev->prev_sync =0 ; +/* * Set HOST2ISH.ILUP. Apparently we need this BEFORE sending * RESET_NOTIFY_ACK - FW will be checking for it
@@ -576,15 +580,14 @@ static void fw_reset_work_fn(struct work_struct *unused)*/ static void _ish_sync_fw_clock (struct ishtp_device *dev) { -static unsigned long prev_sync; -uint64_t usec; +struct ipc_time_update_msg time = {}; -if (prev_sync &&time_before (jiffies, prev_sync +20 *HZ )) +if (dev->prev_sync &&time_before (jiffies, dev->prev_sync +20 *HZ ))return ; - prev_sync = jiffies; - usec =ktime_to_us (ktime_get_boottime ()); -ipc_send_mng_msg (dev,MNG_SYNC_FW_CLOCK , &usec,sizeof (uint64_t )); + dev->prev_sync = jiffies; +/* The fields of time would be updated while sending message */ +ipc_send_mng_msg (dev,MNG_SYNC_FW_CLOCK , &time,sizeof (time)); }/**
drivers/hid/intel-ish-hid/ishtp/ishtp-dev.h +2 -0
@@ -212,6 +212,8 @@ struct ishtp_device {unsigned int ipc_tx_cnt;unsigned long long ipc_tx_bytes_cnt; +/* Time of the last clock sync */ +unsigned long prev_sync;const struct ishtp_hw_ops *ops;size_t mtu;uint32_t ishtp_msg_hdr;
drivers/hv/vmbus_drv.c +13 -0
@@ -2409,12 +2409,25 @@ void vmbus_free_mmio(resource_size_t start, resource_size_t size)struct resource *iter;mutex_lock (&hyperv_mmio_lock); + +/* +* If all bytes of the MMIO range to be released are within the +* special case fb_mmio shadow region, skip releasing the shadow +* region since no corresponding __request_region() was done +* in vmbus_allocate_mmio(). +*/ +if (fb_mmio && start >= fb_mmio->start && + (start + size -1 <= fb_mmio->end)) + goto skip_shadow_release; +for (iter = hyperv_mmio; iter; iter = iter->sibling) {if ((iter->start >= start + size) || (iter->end <= start))continue ;__release_region (iter, start, size); } + +skip_shadow_release:release_mem_region (start, size);mutex_unlock (&hyperv_mmio_lock);
drivers/i2c/busses/i2c-ali1535.c +11 -1
@@ -490,6 +490,8 @@ MODULE_DEVICE_TABLE(pci, ali1535_ids);static int ali1535_probe (struct pci_dev *dev,const struct pci_device_id *id) { +int ret; +if (ali1535_setup (dev)) {dev_warn (&dev->dev,"ALI1535 not detected, module not inserted.\n" );
@@ -501,7 +503,15 @@ static int ali1535_probe(struct pci_dev *dev, const struct pci_device_id *id)snprintf (ali1535_adapter.name,sizeof (ali1535_adapter.name),"SMBus ALI1535 adapter at %04x" , ali1535_offset); -return i2c_add_adapter (&ali1535_adapter); + ret =i2c_add_adapter (&ali1535_adapter); +if (ret) + goto release_region; + +return 0 ; + +release_region: +release_region (ali1535_smba,ALI1535_SMB_IOSIZE ); +return ret; }static void ali1535_remove (struct pci_dev *dev)
drivers/i2c/busses/i2c-ali15x3.c +11 -1
@@ -473,6 +473,8 @@ MODULE_DEVICE_TABLE (pci, ali15x3_ids);static int ali15x3_probe (struct pci_dev *dev,const struct pci_device_id *id) { +int ret; +if (ali15x3_setup (dev)) {dev_err (&dev->dev,"ALI15X3 not detected, module not inserted.\n" );
@@ -484,7 +486,15 @@ static int ali15x3_probe(struct pci_dev *dev, const struct pci_device_id *id)snprintf (ali15x3_adapter.name,sizeof (ali15x3_adapter.name),"SMBus ALI15X3 adapter at %04x" , ali15x3_smba); -return i2c_add_adapter (&ali15x3_adapter); + ret =i2c_add_adapter (&ali15x3_adapter); +if (ret) + goto release_region; + +return 0 ; + +release_region: +release_region (ali15x3_smba,ALI15X3_SMB_IOSIZE ); +return ret; }static void ali15x3_remove (struct pci_dev *dev)
drivers/i2c/busses/i2c-omap.c +7 -19
@@ -1049,23 +1049,6 @@ static int omap_i2c_transmit_data(struct omap_i2c_dev *omap, u8 num_bytes,return 0 ; } -static irqreturn_t -omap_i2c_isr (int irq,void *dev_id) -{ -struct omap_i2c_dev *omap = dev_id; -irqreturn_t ret =IRQ_HANDLED ; -u16 mask; -u16 stat; - - stat =omap_i2c_read_reg (omap,OMAP_I2C_STAT_REG ); - mask =omap_i2c_read_reg (omap,OMAP_I2C_IE_REG ) & ~OMAP_I2C_STAT_NACK ; - -if (stat & mask) - ret =IRQ_WAKE_THREAD ; - -return ret; -} -static int omap_i2c_xfer_data (struct omap_i2c_dev *omap) {u16 bits;
@@ -1096,8 +1079,13 @@ static int omap_i2c_xfer_data(struct omap_i2c_dev *omap) }if (stat &OMAP_I2C_STAT_NACK ) { - err |=OMAP_I2C_STAT_NACK ; + omap->cmd_err |=OMAP_I2C_STAT_NACK ;omap_i2c_ack_stat (omap,OMAP_I2C_STAT_NACK ); + +if (!(stat & ~OMAP_I2C_STAT_NACK )) { + err = -EAGAIN ; +break ; + } }if (stat &OMAP_I2C_STAT_AL ) {
@@ -1475,7 +1463,7 @@ omap_i2c_probe(struct platform_device *pdev) IRQF_NO_SUSPEND, pdev->name, omap); else r =devm_request_threaded_irq (&pdev->dev, omap->irq, - omap_i2c_isr, omap_i2c_isr_thread, +NULL , omap_i2c_isr_thread,IRQF_NO_SUSPEND |IRQF_ONESHOT , pdev->name, omap);
drivers/i2c/busses/i2c-sis630.c +11 -1
@@ -509,6 +509,8 @@ MODULE_DEVICE_TABLE(pci, sis630_ids);static int sis630_probe (struct pci_dev *dev,const struct pci_device_id *id) { +int ret; +if (sis630_setup (dev)) {dev_err (&dev->dev, "SIS630 compatible bus not detected, "
@@ -522,7 +524,15 @@ static int sis630_probe(struct pci_dev *dev, const struct pci_device_id *id)snprintf (sis630_adapter.name,sizeof (sis630_adapter.name),"SMBus SIS630 adapter at %04x" , smbus_base +SMB_STS ); -return i2c_add_adapter (&sis630_adapter); + ret =i2c_add_adapter (&sis630_adapter); +if (ret) + goto release_region; + +return 0 ; + +release_region: +release_region (smbus_base +SMB_STS ,SIS630_SMB_IOREGION ); +return ret; }static void sis630_remove (struct pci_dev *dev)
drivers/infiniband/hw/bnxt_re/qplib_fp.c +0 -2
@@ -1186,8 +1186,6 @@ static void __modify_flags_from_init_state(struct bnxt_qplib_qp *qp) qp->path_mtu =CMDQ_MODIFY_QP_PATH_MTU_MTU_2048 ; } - qp->modify_flags &= - ~CMDQ_MODIFY_QP_MODIFY_MASK_VLAN_ID ;/* Bono FW require the max_dest_rd_atomic to be >= 1 */ if (qp->max_dest_rd_atomic <1 ) qp->max_dest_rd_atomic =1 ;
drivers/infiniband/hw/bnxt_re/qplib_rcfw.h +2 -1
@@ -220,9 +220,10 @@ int bnxt_qplib_deinit_rcfw(struct bnxt_qplib_rcfw *rcfw);int bnxt_qplib_init_rcfw (struct bnxt_qplib_rcfw *rcfw,struct bnxt_qplib_ctx *ctx,int is_virtfn);void bnxt_qplib_mark_qp_error (void *qp_handle); +static inline u32 map_qp_id_to_tbl_indx (u32 qid,struct bnxt_qplib_rcfw *rcfw) {/* Last index of the qp_tbl is for QP1 ie. qp_tbl_size - 1*/ -return (qid ==1 ) ? rcfw->qp_tbl_size -1 : qid % rcfw->qp_tbl_size -2 ; +return (qid ==1 ) ? rcfw->qp_tbl_size -1 : (qid % (rcfw->qp_tbl_size -2 )); }#endif /* __BNXT_QPLIB_RCFW_H__ */
drivers/infiniband/hw/hns/hns_roce_hem.c +15 -1
@@ -1416,6 +1416,11 @@ static int hem_list_alloc_root_bt(struct hns_roce_dev *hr_dev,return ret; } +/* This is the bottom bt pages number of a 100G MR on 4K OS, assuming +* the bt page size is not expanded by cal_best_bt_pg_sz() +*/ +#define RESCHED_LOOP_CNT_THRESHOLD_ON_4K 12800 +/* construct the base address table and link them by address hop config */ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev, struct hns_roce_hem_list *hem_list,
@@ -1424,6 +1429,7 @@ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev, {const struct hns_roce_buf_region *r;int ofs, end; +int loop;int unit;int ret;int i;
@@ -1441,7 +1447,10 @@ int hns_roce_hem_list_request(struct hns_roce_dev *hr_dev,continue ; end = r->offset + r->count; -for (ofs = r->offset; ofs < end; ofs += unit) { +for (ofs = r->offset, loop =1 ; ofs < end; ofs += unit, loop++) { +if (!(loop %RESCHED_LOOP_CNT_THRESHOLD_ON_4K )) +cond_resched (); + ret =hem_list_alloc_mid_bt (hr_dev, r, unit, ofs, hem_list->mid_bt[i], &hem_list->btm_bt);
@@ -1498,9 +1507,14 @@ void *hns_roce_hem_list_find_mtt(struct hns_roce_dev *hr_dev,struct list_head *head = &hem_list->btm_bt;struct hns_roce_hem_item *hem, *temp_hem;void *cpu_base =NULL ; +int loop =1 ;int nr =0 ;list_for_each_entry_safe (hem, temp_hem, head, sibling) { +if (!(loop %RESCHED_LOOP_CNT_THRESHOLD_ON_4K )) +cond_resched (); + loop++; +if (hem_list_page_is_in_range (hem, offset)) { nr = offset - hem->start; cpu_base = hem->addr + nr *BA_BYTE_LEN ;
drivers/infiniband/hw/hns/hns_roce_main.c +1 -1
@@ -182,7 +182,7 @@ static int hns_roce_query_device(struct ib_device *ib_dev,IB_DEVICE_RC_RNR_NAK_GEN ; props->max_send_sge = hr_dev->caps.max_sq_sg; props->max_recv_sge = hr_dev->caps.max_rq_sg; - props->max_sge_rd =1 ; + props->max_sge_rd = hr_dev->caps.max_sq_sg; props->max_cq = hr_dev->caps.num_cqs; props->max_cqe = hr_dev->caps.max_cqes; props->max_mr = hr_dev->caps.num_mtpts;
drivers/infiniband/hw/hns/hns_roce_qp.c +6 -4
@@ -924,12 +924,14 @@ static int alloc_user_qp_db(struct hns_roce_dev *hr_dev,struct hns_roce_ib_create_qp *ucmd, struct hns_roce_ib_create_qp_resp *resp) { + bool has_sdb = user_qp_has_sdb(hr_dev, init_attr, udata, resp, ucmd);struct hns_roce_ucontext *uctx =rdma_udata_to_drv_context (udata, struct hns_roce_ucontext, ibucontext); +bool has_rdb =user_qp_has_rdb (hr_dev, init_attr, udata, resp);struct ib_device *ibdev = &hr_dev->ib_dev;int ret; -if (user_qp_has_sdb (hr_dev, init_attr, udata, resp, ucmd)) { +if (has_sdb) { ret =hns_roce_db_map_user (uctx, ucmd->sdb_addr, &hr_qp->sdb);if (ret) { ibdev_err(ibdev,
@@ -940,7 +942,7 @@ static int alloc_user_qp_db(struct hns_roce_dev *hr_dev, hr_qp->en_flags |=HNS_ROCE_QP_CAP_SQ_RECORD_DB ; } -if (user_qp_has_rdb (hr_dev, init_attr, udata, resp)) { +if (has_rdb) { ret =hns_roce_db_map_user (uctx, ucmd->db_addr, &hr_qp->rdb);if (ret) { ibdev_err(ibdev,
@@ -954,7 +956,7 @@ static int alloc_user_qp_db(struct hns_roce_dev *hr_dev,return 0 ; err_sdb: -if (hr_qp->en_flags &HNS_ROCE_QP_CAP_SQ_RECORD_DB ) +if (has_sdb)hns_roce_db_unmap_user (uctx, &hr_qp->sdb); err_out:return ret;
@@ -1211,7 +1213,7 @@ static int hns_roce_create_qp_common(struct hns_roce_dev *hr_dev, min(udata->outlen, sizeof(resp)));if (ret) {ibdev_err (ibdev,"copy qp resp failed!\n" ); - goto err_store; + goto err_flow_ctrl; } }
drivers/input/serio/i8042-acpipnpio.h +55 -56
240 lines not on this page · raw message
drivers/leds/leds-mlxreg.c +5 -11
@@ -258,6 +258,7 @@ static int mlxreg_led_probe(struct platform_device *pdev) {struct mlxreg_core_platform_data *led_pdata;struct mlxreg_led_priv_data *priv; +int err; led_pdata =dev_get_platdata (&pdev->dev);if (!led_pdata) {
@@ -269,28 +270,21 @@ static int mlxreg_led_probe(struct platform_device *pdev)if (!priv)return -ENOMEM ; -mutex_init (&priv->access_lock); + err =devm_mutex_init (&pdev->dev, &priv->access_lock); +if (err) +return err; + priv->pdev = pdev; priv->pdata = led_pdata;return mlxreg_led_config (priv); } -static int mlxreg_led_remove (struct platform_device *pdev) -{ -struct mlxreg_led_priv_data *priv =dev_get_drvdata (&pdev->dev); - -mutex_destroy (&priv->access_lock); - -return 0 ; -} -static struct platform_driver mlxreg_led_driver = { .driver = { .name ="leds-mlxreg" , }, .probe = mlxreg_led_probe, - .remove = mlxreg_led_remove, };module_platform_driver (mlxreg_led_driver);
drivers/media/platform/mediatek/vcodec/vdec/vdec_vp8_req_if.c +7 -3
@@ -336,14 +336,18 @@ static int vdec_vp8_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs, src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer); fb = inst->ctx->dev->vdec_pdata->get_cap_buffer (inst->ctx); - dst_buf_info = container_of(fb, struct mtk_video_dec_buf, frame_buffer); +if (!fb) { +mtk_vcodec_err (inst,"fb buffer is NULL" ); +return -ENOMEM ; + } - y_fb_dma = fb ? (u64 )fb->base_y.dma_addr :0 ; + dst_buf_info = container_of(fb, struct mtk_video_dec_buf, frame_buffer); + y_fb_dma = fb->base_y.dma_addr;if (inst->ctx->q_data[MTK_Q_DATA_DST ].fmt->num_planes ==1 ) c_fb_dma = y_fb_dma + inst->ctx->picinfo.buf_w * inst->ctx->picinfo.buf_h;else - c_fb_dma = fb ? (u64 )fb->base_c.dma_addr :0 ; + c_fb_dma = fb->base_c.dma_addr; inst->vsi->dec.bs_dma = (u64 )bs->dma_addr; inst->vsi->dec.bs_sz = bs->size;
drivers/mmc/host/atmel-mci.c +3 -1
@@ -2506,8 +2506,10 @@ static int atmci_probe(struct platform_device *pdev)/* Get MCI capabilities and set operations according to it */ atmci_get_cap (host); ret =atmci_configure_dma (host); -if (ret == -EPROBE_DEFER ) +if (ret == -EPROBE_DEFER ) { +clk_disable_unprepare (host->mck); goto err_dma_probe_defer; + }if (ret ==0 ) { host->prepare_data = &atmci_prepare_data_dma; host->submit_data = &atmci_submit_data_dma;
drivers/mmc/host/sdhci-brcmstb.c +10 -0
@@ -396,8 +396,15 @@ static int sdhci_brcmstb_suspend(struct device *dev)struct sdhci_host *host =dev_get_drvdata (dev);struct sdhci_pltfm_host *pltfm_host =sdhci_priv (host);struct sdhci_brcmstb_priv *priv =sdhci_pltfm_priv (pltfm_host); +int ret;clk_disable_unprepare (priv->base_clk); +if (host->mmc->caps2 &MMC_CAP2_CQE ) { + ret =cqhci_suspend (host->mmc); +if (ret) +return ret; + } +return sdhci_pltfm_suspend (dev); }
@@ -422,6 +429,9 @@ static int sdhci_brcmstb_resume(struct device *dev) ret = clk_set_rate(priv->base_clk, priv->base_freq_hz); } +if (host->mmc->caps2 &MMC_CAP2_CQE ) + ret =cqhci_resume (host->mmc); +return ret; }#endif
drivers/net/bonding/bond_options.c +47 -8
87 lines not on this page · raw message
drivers/net/can/flexcan/flexcan-core.c +15 -3
@@ -2230,14 +2230,19 @@ static int __maybe_unused flexcan_suspend(struct device *device)flexcan_chip_interrupts_disable (dev); + err =flexcan_transceiver_disable (priv); +if (err) +return err; + err =pinctrl_pm_select_sleep_state (device);if (err)return err; }netif_stop_queue (dev);netif_device_detach (dev); + + priv->can.state =CAN_STATE_SLEEPING ; } - priv->can.state =CAN_STATE_SLEEPING ;return 0 ; }
@@ -2248,7 +2253,6 @@ static int __maybe_unused flexcan_resume(struct device *device)struct flexcan_priv *priv =netdev_priv (dev);int err; - priv->can.state =CAN_STATE_ERROR_ACTIVE ;if (netif_running (dev)) {netif_device_attach (dev);netif_start_queue (dev);
@@ -2262,12 +2266,20 @@ static int __maybe_unused flexcan_resume(struct device *device)if (err)return err; - err =flexcan_chip_start (dev); + err =flexcan_transceiver_enable (priv);if (err)return err; + err =flexcan_chip_start (dev); +if (err) { +flexcan_transceiver_disable (priv); +return err; + } +flexcan_chip_interrupts_enable (dev); } + + priv->can.state =CAN_STATE_ERROR_ACTIVE ; }return 0 ;
drivers/net/can/rcar/rcar_canfd.c +11 -17
@@ -772,22 +772,14 @@ static void rcar_canfd_configure_controller(struct rcar_canfd_global *gpriv) }static void rcar_canfd_configure_afl_rules (struct rcar_canfd_global *gpriv, -u32 ch) +u32 ch,u32 rule_entry) { -u32 cfg; -int offset, start, page, num_rules =RCANFD_CHANNEL_NUMRULES ; +int offset, page, num_rules =RCANFD_CHANNEL_NUMRULES ; +u32 rule_entry_index = rule_entry %16 ;u32 ridx = ch +RCANFD_RFFIFO_IDX ; -if (ch ==0 ) { - start =0 ;/* Channel 0 always starts from 0th rule */ - }else { -/* Get number of Channel 0 rules and adjust */ - cfg =rcar_canfd_read (gpriv->base,RCANFD_GAFLCFG (ch)); - start =RCANFD_GAFLCFG_GETRNC (gpriv,0 , cfg); - } -/* Enable write access to entry */ - page =RCANFD_GAFL_PAGENUM (start); + page =RCANFD_GAFL_PAGENUM (rule_entry);rcar_canfd_set_bit (gpriv->base,RCANFD_GAFLECTR , (RCANFD_GAFLECTR_AFLPN (gpriv, page) |RCANFD_GAFLECTR_AFLDAE ));
@@ -803,13 +795,13 @@ static void rcar_canfd_configure_afl_rules(struct rcar_canfd_global *gpriv, offset =RCANFD_C_GAFL_OFFSET ;/* Accept all IDs */ -rcar_canfd_write (gpriv->base,RCANFD_GAFLID (offset, start),0 ); +rcar_canfd_write (gpriv->base,RCANFD_GAFLID (offset, rule_entry_index),0 );/* IDE or RTR is not considered for matching */ -rcar_canfd_write (gpriv->base,RCANFD_GAFLM (offset, start),0 ); +rcar_canfd_write (gpriv->base,RCANFD_GAFLM (offset, rule_entry_index),0 );/* Any data length accepted */ -rcar_canfd_write (gpriv->base,RCANFD_GAFLP0 (offset, start),0 ); +rcar_canfd_write (gpriv->base,RCANFD_GAFLP0 (offset, rule_entry_index),0 );/* Place the msg in corresponding Rx FIFO entry */ -rcar_canfd_set_bit (gpriv->base,RCANFD_GAFLP1 (offset, start), +rcar_canfd_set_bit (gpriv->base,RCANFD_GAFLP1 (offset, rule_entry_index),RCANFD_GAFLP1_GAFLFDP (ridx));/* Disable write access to page */
@@ -1825,6 +1817,7 @@ static int rcar_canfd_probe(struct platform_device *pdev)unsigned long channels_mask =0 ;int err, ch_irq, g_irq;int g_err_irq, g_recc_irq; +u32 rule_entry =0 ;bool fdmode = true;/* CAN FD only mode - default */ enum rcanfd_chip_id chip_id;int max_channels;
@@ -2003,7 +1996,8 @@ static int rcar_canfd_probe(struct platform_device *pdev)rcar_canfd_configure_tx (gpriv, ch);/* Configure receive rules */ -rcar_canfd_configure_afl_rules (gpriv, ch); +rcar_canfd_configure_afl_rules (gpriv, ch, rule_entry); + rule_entry +=RCANFD_CHANNEL_NUMRULES ; }/* Configure common interrupts */
drivers/net/dsa/mv88e6xxx/chip.c +48 -11
94 lines not on this page · raw message
drivers/net/ethernet/broadcom/bnxt/bnxt.c +2 -1
@@ -1994,7 +1994,8 @@ static int bnxt_rx_pkt(struct bnxt *bp, struct bnxt_cp_ring_info *cpr,if (!skb) goto oom_next_rx; }else { - skb =bnxt_xdp_build_skb (bp, skb, agg_bufs, rxr->page_pool, &xdp, rxcmp1); + skb =bnxt_xdp_build_skb (bp, skb, agg_bufs, + rxr->page_pool, &xdp);if (!skb) {/* we should be able to free the old skb here */ bnxt_xdp_buff_frags_free (rxr, &xdp);
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +2 -9
@@ -462,20 +462,13 @@ int bnxt_xdp(struct net_device *dev, struct netdev_bpf *xdp)struct sk_buff *bnxt_xdp_build_skb (struct bnxt *bp,struct sk_buff *skb,u8 num_frags, -struct page_pool *pool,struct xdp_buff *xdp, -struct rx_cmp_ext *rxcmp1) +struct page_pool *pool,struct xdp_buff *xdp) {struct skb_shared_info *sinfo =xdp_get_shared_info_from_buff (xdp);if (!skb)return NULL ; -skb_checksum_none_assert (skb); -if (RX_CMP_L4_CS_OK (rxcmp1)) { -if (bp->dev->features &NETIF_F_RXCSUM ) { - skb->ip_summed =CHECKSUM_UNNECESSARY ; - skb->csum_level =RX_CMP_ENCAP (rxcmp1); - } - } + xdp_update_skb_shared_info(skb, num_frags, sinfo->xdp_frags_size, BNXT_RX_PAGE_SIZE * sinfo->nr_frags,
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h +1 -2
@@ -33,6 +33,5 @@ void bnxt_xdp_buff_frags_free(struct bnxt_rx_ring_info *rxr, struct xdp_buff *xdp);struct sk_buff *bnxt_xdp_build_skb (struct bnxt *bp,struct sk_buff *skb,u8 num_frags,struct page_pool *pool, -struct xdp_buff *xdp, -struct rx_cmp_ext *rxcmp1); +struct xdp_buff *xdp);#endif
drivers/net/ethernet/intel/ice/ice_arfs.c +1 -1
@@ -510,7 +510,7 @@ void ice_init_arfs(struct ice_vsi *vsi)struct hlist_head *arfs_fltr_list;unsigned int i; -if (!vsi || vsi->type !=ICE_VSI_PF ) +if (!vsi || vsi->type !=ICE_VSI_PF ||ice_is_arfs_active (vsi))return ; arfs_fltr_list = kcalloc(ICE_MAX_ARFS_LIST, sizeof(*arfs_fltr_list),
drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c +5 -7
@@ -48,15 +48,10 @@ mlx5_esw_bridge_lag_rep_get(struct net_device *dev, struct mlx5_eswitch *esw)struct list_head *iter;netdev_for_each_lower_dev (dev, lower, iter) { -struct mlx5_core_dev *mdev; -struct mlx5e_priv *priv; -if (!mlx5e_eswitch_rep (lower))continue ; - priv =netdev_priv (lower); - mdev = priv->mdev; -if (mlx5_lag_is_shared_fdb (mdev) &&mlx5_esw_bridge_dev_same_esw (lower, esw)) +if (mlx5_esw_bridge_dev_same_esw (lower, esw))return lower; }
@@ -121,7 +116,7 @@ static bool mlx5_esw_bridge_is_local(struct net_device *dev, struct net_device * priv =netdev_priv (rep); mdev = priv->mdev;if (netif_is_lag_master (dev)) -return mlx5_lag_is_shared_fdb (mdev) &&mlx5_lag_is_master (mdev); +return mlx5_lag_is_master (mdev);return true; }
@@ -436,6 +431,9 @@ static int mlx5_esw_bridge_switchdev_event(struct notifier_block *nb,if (!rep)return NOTIFY_DONE ; +if (netif_is_lag_master (dev) && !mlx5_lag_is_shared_fdb (esw->dev)) +return NOTIFY_DONE ; +switch (event) {case SWITCHDEV_FDB_ADD_TO_BRIDGE : fdb_info = container_of(info,
drivers/net/ethernet/mellanox/mlx5/core/en_main.c +2 -4
@@ -4791,11 +4791,9 @@ static int mlx5e_bridge_getlink(struct sk_buff *skb, u32 pid, u32 seq,struct mlx5e_priv *priv =netdev_priv (dev);struct mlx5_core_dev *mdev = priv->mdev;u8 mode, setting; -int err; - err =mlx5_eswitch_get_vepa (mdev->priv.eswitch, &setting); -if (err) -return err; +if (mlx5_eswitch_get_vepa (mdev->priv.eswitch, &setting)) +return -EOPNOTSUPP ; mode = setting ?BRIDGE_MODE_VEPA :BRIDGE_MODE_VEB ; return ndo_dflt_bridge_getlink(skb, pid, seq, dev, mode,
drivers/net/ethernet/mellanox/mlx5/core/lib/fs_chains.c +5 -0
@@ -196,6 +196,11 @@ mlx5_chains_create_table(struct mlx5_fs_chains *chains, ns =mlx5_get_flow_namespace (chains->dev, chains->ns); } +if (!ns) { +mlx5_core_warn (chains->dev,"Failed to get flow namespace\n" ); +return ERR_PTR (-EOPNOTSUPP ); + } + ft_attr.autogroup.num_reserved_entries =2 ; ft_attr.autogroup.max_num_groups = chains->group_num; ft =mlx5_create_auto_grouped_flow_table (ns, &ft_attr);
drivers/net/ethernet/qlogic/qlcnic/qlcnic_sriov_common.c +6 -2
@@ -454,8 +454,10 @@ static int qlcnic_sriov_set_guest_vlan_mode(struct qlcnic_adapter *adapter, num_vlans = sriov->num_allowed_vlans; sriov->allowed_vlans =kcalloc (num_vlans,sizeof (u16),GFP_KERNEL ); -if (!sriov->allowed_vlans) +if (!sriov->allowed_vlans) { +qlcnic_sriov_free_vlans (adapter);return -ENOMEM ; + } vlans = (u16 *)&cmd->rsp.arg[3 ];for (i =0 ; i < num_vlans; i++)
@@ -2167,8 +2169,10 @@ int qlcnic_sriov_alloc_vlans(struct qlcnic_adapter *adapter) vf = &sriov->vf_info[i]; vf->sriov_vlans =kcalloc (sriov->num_allowed_vlans,sizeof (*vf->sriov_vlans),GFP_KERNEL ); -if (!vf->sriov_vlans) +if (!vf->sriov_vlans) { +qlcnic_sriov_free_vlans (adapter);return -ENOMEM ; + } }return 0 ;
drivers/net/mctp/mctp-i2c.c +5 -0
@@ -543,6 +543,7 @@ static int mctp_i2c_header_create(struct sk_buff *skb, struct net_device *dev,struct mctp_i2c_hdr *hdr;struct mctp_hdr *mhdr;u8 lldst, llsrc; +int rc;if (len >MCTP_I2C_MAXMTU )return -EMSGSIZE ;
@@ -553,6 +554,10 @@ static int mctp_i2c_header_create(struct sk_buff *skb, struct net_device *dev, lldst = *((u8 *)daddr); llsrc = *((u8 *)saddr); + rc =skb_cow_head (skb,sizeof (struct mctp_i2c_hdr )); +if (rc) +return rc; +skb_push (skb,sizeof (struct mctp_i2c_hdr ));skb_reset_mac_header (skb); hdr = (void *)skb_mac_header (skb);
drivers/net/wireless/intel/iwlwifi/mvm/d3.c +8 -1
@@ -1286,7 +1286,9 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw, mvm->net_detect = true; }else { -struct iwl_wowlan_config_cmd wowlan_config_cmd = {}; +struct iwl_wowlan_config_cmd wowlan_config_cmd = { + .offloading_tid =0 , + }; wowlan_config_cmd.sta_id = mvmvif->ap_sta_id;
@@ -1298,6 +1300,11 @@ static int __iwl_mvm_suspend(struct ieee80211_hw *hw, goto out_noreset; } + ret =iwl_mvm_sta_ensure_queue ( + mvm, ap_sta->txq[wowlan_config_cmd.offloading_tid]); +if (ret) + goto out_noreset; + ret =iwl_mvm_get_wowlan_config (mvm, wowlan, &wowlan_config_cmd, vif, mvmvif, ap_sta);if (ret)
drivers/net/wireless/intel/iwlwifi/mvm/sta.c +28 -0
@@ -1419,6 +1419,34 @@ static int iwl_mvm_sta_alloc_queue(struct iwl_mvm *mvm,return ret; } +int iwl_mvm_sta_ensure_queue (struct iwl_mvm *mvm, +struct ieee80211_txq *txq) +{ +struct iwl_mvm_txq *mvmtxq =iwl_mvm_txq_from_mac80211 (txq); +int ret = -EINVAL ; + +lockdep_assert_held (&mvm->mutex); + +if (likely (test_bit (IWL_MVM_TXQ_STATE_READY , &mvmtxq->state)) || + !txq->sta) { +return 0 ; + } + +if (!iwl_mvm_sta_alloc_queue (mvm, txq->sta, txq->ac, txq->tid)) { +set_bit (IWL_MVM_TXQ_STATE_READY , &mvmtxq->state); + ret =0 ; + } + +local_bh_disable (); +spin_lock (&mvm->add_stream_lock); +if (!list_empty (&mvmtxq->list)) +list_del_init (&mvmtxq->list); +spin_unlock (&mvm->add_stream_lock); +local_bh_enable (); + +return ret; +} +void iwl_mvm_add_new_dqa_stream_wk (struct work_struct *wk) { struct iwl_mvm *mvm = container_of(wk, struct iwl_mvm,
drivers/net/wireless/intel/iwlwifi/mvm/sta.h +2 -1
@@ -1,6 +1,6 @@/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ /* -* Copyright (C) 2012-2014, 2018-2021 Intel Corporation +* Copyright (C) 2012-2014, 2018-2024 Intel Corporation * Copyright (C) 2013-2014 Intel Mobile Communications GmbH * Copyright (C) 2015-2016 Intel Deutschland GmbH */
@@ -544,6 +544,7 @@ void iwl_mvm_modify_all_sta_disable_tx(struct iwl_mvm *mvm,struct iwl_mvm_vif *mvmvif, bool disable);void iwl_mvm_csa_client_absent (struct iwl_mvm *mvm,struct ieee80211_vif *vif); +int iwl_mvm_sta_ensure_queue (struct iwl_mvm *mvm,struct ieee80211_txq *txq);void iwl_mvm_add_new_dqa_stream_wk (struct work_struct *wk); int iwl_mvm_add_pasn_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif, struct iwl_mvm_int_sta *sta, u8 *addr, u32 cipher,
drivers/net/wwan/mhi_wwan_mbim.c +1 -1
@@ -209,7 +209,7 @@ static int mbim_rx_verify_nth16(struct mhi_mbim_context *mbim, struct sk_buff *sif (mbim->rx_seq +1 !=le16_to_cpu (nth16->wSequence) && (mbim->rx_seq ||le16_to_cpu (nth16->wSequence)) && !(mbim->rx_seq ==0xffff && !le16_to_cpu (nth16->wSequence))) { -net_err_ratelimited ("sequence number glitch prev=%d curr=%d\n" , +net_dbg_ratelimited ("sequence number glitch prev=%d curr=%d\n" , mbim->rx_seq,le16_to_cpu (nth16->wSequence)); } mbim->rx_seq =le16_to_cpu (nth16->wSequence);
drivers/nvme/host/core.c +0 -2
@@ -501,8 +501,6 @@ bool nvme_change_ctrl_state(struct nvme_ctrl *ctrl,switch (new_state) {case NVME_CTRL_LIVE :switch (old_state) { -case NVME_CTRL_NEW : -case NVME_CTRL_RESETTING :case NVME_CTRL_CONNECTING : changed = true; fallthrough;
drivers/nvme/host/fc.c +1 -2
@@ -3525,8 +3525,7 @@ nvme_fc_init_ctrl(struct device *dev, struct nvmf_ctrl_options *opts,list_add_tail (&ctrl->ctrl_list, &rport->ctrl_list);spin_unlock_irqrestore (&rport->lock, flags); -if (!nvme_change_ctrl_state (&ctrl->ctrl,NVME_CTRL_RESETTING ) || - !nvme_change_ctrl_state (&ctrl->ctrl,NVME_CTRL_CONNECTING )) { +if (!nvme_change_ctrl_state (&ctrl->ctrl,NVME_CTRL_CONNECTING )) {dev_err (ctrl->ctrl.device,"NVME-FC{%d}: failed to init ctrl state\n" , ctrl->cnum); goto fail_ctrl;
drivers/nvme/host/pci.c +2 -0
@@ -3577,6 +3577,8 @@ static const struct pci_device_id nvme_id_table[] = { .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1cc1, 0x5350), /* ADATA XPG GAMMIX S50 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, + { PCI_DEVICE(0x1dbe, 0x5216), /* Acer/INNOGRIT FA100/5216 NVMe SSD */ + .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1dbe, 0x5236), /* ADATA XPG GAMMIX S70 */ .driver_data = NVME_QUIRK_BOGUS_NID, }, { PCI_DEVICE(0x1e49, 0x0021), /* ZHITAI TiPro5000 NVMe SSD */
drivers/nvme/host/tcp.c +43 -0
55 lines not on this page · raw message
drivers/nvme/target/rdma.c +23 -10
@@ -997,6 +997,27 @@ static void nvmet_rdma_handle_command(struct nvmet_rdma_queue *queue,nvmet_req_complete (&cmd->req, status); } +static bool nvmet_rdma_recv_not_live (struct nvmet_rdma_queue *queue, +struct nvmet_rdma_rsp *rsp) +{ +unsigned long flags; +bool ret = true; + +spin_lock_irqsave (&queue->state_lock, flags); +/* +* recheck queue state is not live to prevent a race condition +* with RDMA_CM_EVENT_ESTABLISHED handler. +*/ +if (queue->state ==NVMET_RDMA_Q_LIVE ) + ret = false; +else if (queue->state ==NVMET_RDMA_Q_CONNECTING ) +list_add_tail (&rsp->wait_list, &queue->rsp_wait_list); +else +nvmet_rdma_put_rsp (rsp); +spin_unlock_irqrestore (&queue->state_lock, flags); +return ret; +} +static void nvmet_rdma_recv_done (struct ib_cq *cq,struct ib_wc *wc) { struct nvmet_rdma_cmd *cmd =
@@ -1038,17 +1059,9 @@ static void nvmet_rdma_recv_done(struct ib_cq *cq, struct ib_wc *wc) rsp->req.port = queue->port; rsp->n_rdma =0 ; -if (unlikely (queue->state !=NVMET_RDMA_Q_LIVE )) { -unsigned long flags; - -spin_lock_irqsave (&queue->state_lock, flags); -if (queue->state ==NVMET_RDMA_Q_CONNECTING ) -list_add_tail (&rsp->wait_list, &queue->rsp_wait_list); -else -nvmet_rdma_put_rsp (rsp); -spin_unlock_irqrestore (&queue->state_lock, flags); +if (unlikely (queue->state !=NVMET_RDMA_Q_LIVE ) && +nvmet_rdma_recv_not_live (queue, rsp))return ; - }nvmet_rdma_handle_command (queue, rsp); }
drivers/pinctrl/bcm/pinctrl-bcm281xx.c +1 -1
@@ -971,7 +971,7 @@ static const struct regmap_config bcm281xx_pinctrl_regmap_config = { .reg_bits = 32, .reg_stride = 4, .val_bits = 32, - .max_register = BCM281XX_PIN_VC_CAM3_SDA, + .max_register = BCM281XX_PIN_VC_CAM3_SDA * 4, };static int bcm281xx_pinctrl_get_groups_count (struct pinctrl_dev *pctldev)
drivers/platform/x86/thinkpad_acpi.c +36 -14
144 lines not on this page · raw message
drivers/powercap/powercap_sys.c +1 -2
@@ -626,8 +626,7 @@ struct powercap_control_type *powercap_register_control_type(dev_set_name (&control_type->dev,"%s" , name); result =device_register (&control_type->dev);if (result) { -if (control_type->allocated) -kfree (control_type); +put_device (&control_type->dev);return ERR_PTR (result); }idr_init (&control_type->idr);
drivers/regulator/core.c +11 -1
@@ -2091,6 +2091,10 @@ static int regulator_resolve_supply(struct regulator_dev *rdev)if (have_full_constraints ()) { r = dummy_regulator_rdev; +if (!r) { + ret = -EPROBE_DEFER ; + goto out; + }get_device (&r->dev); }else { dev_err(dev, "Failed to resolve %s-supply for %s\n",
@@ -2108,6 +2112,10 @@ static int regulator_resolve_supply(struct regulator_dev *rdev) goto out; } r = dummy_regulator_rdev; +if (!r) { + ret = -EPROBE_DEFER ; + goto out; + }get_device (&r->dev); }
@@ -2216,8 +2224,10 @@ struct regulator *_regulator_get(struct device *dev, const char *id,* enabled, even if it isn't hooked up, and just * provide a dummy. */ -dev_warn (dev,"supply %s not found, using dummy regulator\n" , id); rdev = dummy_regulator_rdev; +if (!rdev) +return ERR_PTR (-EPROBE_DEFER ); +dev_warn (dev,"supply %s not found, using dummy regulator\n" , id);get_device (&rdev->dev);break ;
drivers/s390/cio/chp.c +2 -1
@@ -661,7 +661,8 @@ static int info_update(void)if (time_after (jiffies, chp_info_expires)) {/* Data is too old, update. */ rc =sclp_chp_read_info (&chp_info); - chp_info_expires = jiffies +CHP_INFO_UPDATE_INTERVAL ; +if (!rc) + chp_info_expires = jiffies +CHP_INFO_UPDATE_INTERVAL ; }mutex_unlock (&info_lock);
drivers/scsi/qla1280.c +1 -1
@@ -2866,7 +2866,7 @@ qla1280_64bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp)dprintk (3 ,"S/G Segment phys_addr=%x %x, len=0x%x\n" ,cpu_to_le32 (upper_32_bits (dma_handle)),cpu_to_le32 (lower_32_bits (dma_handle)), -cpu_to_le32 (sg_dma_len (sg_next (s)))); +cpu_to_le32 (sg_dma_len (s))); remseg--; } dprintk(5, "qla1280_64bit_start_scsi: Scatter/gather "
drivers/scsi/scsi_scan.c +1 -1
@@ -245,7 +245,7 @@ static int scsi_realloc_sdev_budget_map(struct scsi_device *sdev, } ret =sbitmap_init_node (&sdev->budget_map,scsi_device_max_queue_depth (sdev), - new_shift,GFP_KERNEL , + new_shift,GFP_NOIO , sdev->request_queue->node, false, true);if (!ret)sbitmap_resize (&sdev->budget_map, depth);
drivers/soc/imx/soc-imx8m.c +68 -81
273 lines not on this page · raw message
drivers/soc/qcom/pdr_interface.c +1 -7
@@ -74,7 +74,6 @@ static int pdr_locator_new_server(struct qmi_handle *qmi, { struct pdr_handle *pdr = container_of(qmi, struct pdr_handle, locator_hdl); -struct pdr_service *pds;mutex_lock (&pdr->lock);/* Create a local client port for QMI communication */
@@ -86,12 +85,7 @@ static int pdr_locator_new_server(struct qmi_handle *qmi,mutex_unlock (&pdr->lock);/* Service pending lookup requests */ -mutex_lock (&pdr->list_lock); -list_for_each_entry (pds, &pdr->lookups, node) { -if (pds->need_locator_lookup) -schedule_work (&pdr->locator_work); - } -mutex_unlock (&pdr->list_lock); +schedule_work (&pdr->locator_work);return 0 ; }
drivers/thermal/cpufreq_cooling.c +0 -2
@@ -57,8 +57,6 @@ struct time_in_idle {* @max_level: maximum cooling level. One less than total number of valid * cpufreq frequencies. * @em: Reference on the Energy Model of the device -* @cdev: thermal_cooling_device pointer to keep track of the -* registered cooling device. * @policy: cpufreq policy. * @cooling_ops: cpufreq callbacks to thermal cooling device ops * @idle_time: idle time stats
drivers/usb/serial/ftdi_sio.c +14 -0
@@ -1079,6 +1079,20 @@ static const struct usb_device_id id_table_combined[] = { .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },/* GMC devices */ { USB_DEVICE(GMC_VID, GMC_Z216C_PID) }, +/* Altera USB Blaster 3 */ + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6022_PID, 1) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6025_PID, 2) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6026_PID, 2) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6026_PID, 3) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_6029_PID, 2) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602A_PID, 2) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602A_PID, 3) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602C_PID, 1) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602D_PID, 1) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602D_PID, 2) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 1) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 2) }, + { USB_DEVICE_INTERFACE_NUMBER(ALTERA_VID, ALTERA_UB3_602E_PID, 3) }, { } /* Terminating entry */ };
drivers/usb/serial/ftdi_sio_ids.h +13 -0
@@ -1612,3 +1612,16 @@*/ #define GMC_VID 0x1cd7#define GMC_Z216C_PID 0x0217/* GMC Z216C Adapter IR-USB */ + +/* +* Altera USB Blaster 3 (http://www.altera.com). +*/ +#define ALTERA_VID 0x09fb +#define ALTERA_UB3_6022_PID 0x6022 +#define ALTERA_UB3_6025_PID 0x6025 +#define ALTERA_UB3_6026_PID 0x6026 +#define ALTERA_UB3_6029_PID 0x6029 +#define ALTERA_UB3_602A_PID 0x602a +#define ALTERA_UB3_602C_PID 0x602c +#define ALTERA_UB3_602D_PID 0x602d +#define ALTERA_UB3_602E_PID 0x602e
drivers/usb/serial/option.c +32 -16
73 lines not on this page · raw message
drivers/video/fbdev/hyperv_fb.c +1 -1
@@ -1106,7 +1106,7 @@ static void hvfb_putmem(struct hv_device *hdev, struct fb_info *info)if (par->need_docopy) {vfree (par->dio_vp); -iounmap (info->screen_base); +iounmap (par->mmio_vp);vmbus_free_mmio (par->mem->start, screen_fb_size); }else { hvfb_release_phymem(hdev, info->fix.smem_start,
drivers/xen/swiotlb-xen.c +1 -1
@@ -112,7 +112,7 @@ static int is_xen_swiotlb_buffer(struct device *dev, dma_addr_t dma_addr) }#ifdef CONFIG_X86 -int xen_swiotlb_fixup (void *buf,unsigned long nslabs) +int __init xen_swiotlb_fixup (void *buf,unsigned long nslabs) {int rc;unsigned int order =get_order (IO_TLB_SEGSIZE <<IO_TLB_SHIFT );
fs/fuse/dir.c +1 -1
@@ -1445,7 +1445,7 @@ static const char *fuse_get_link(struct dentry *dentry, struct inode *inode, goto out_err;if (fc->cache_symlinks) -return page_get_link (dentry, inode, callback); +return page_get_link_raw (dentry, inode, callback); err = -ECHILD ;if (!dentry)
fs/namei.c +19 -5
@@ -5156,10 +5156,9 @@ const char *vfs_get_link(struct dentry *dentry, struct delayed_call *done)EXPORT_SYMBOL (vfs_get_link);/* get the link contents into pagecache */ -const char *page_get_link (struct dentry *dentry,struct inode *inode, -struct delayed_call *callback) +static char *__page_get_link (struct dentry *dentry,struct inode *inode, +struct delayed_call *callback) { -char *kaddr;struct page *page;struct address_space *mapping = inode->i_mapping;
@@ -5178,8 +5177,23 @@ const char *page_get_link(struct dentry *dentry, struct inode *inode, }set_delayed_call (callback, page_put_link, page);BUG_ON (mapping_gfp_mask (mapping) & __GFP_HIGHMEM); - kaddr =page_address (page); -nd_terminate_link (kaddr, inode->i_size,PAGE_SIZE -1 ); +return page_address (page); +} + +const char *page_get_link_raw (struct dentry *dentry,struct inode *inode, +struct delayed_call *callback) +{ +return __page_get_link (dentry, inode, callback); +} +EXPORT_SYMBOL_GPL (page_get_link_raw); + +const char *page_get_link (struct dentry *dentry,struct inode *inode, +struct delayed_call *callback) +{ +char *kaddr =__page_get_link (dentry, inode, callback); + +if (!IS_ERR (kaddr)) +nd_terminate_link (kaddr, inode->i_size,PAGE_SIZE -1 );return kaddr; }
fs/ntfs3/attrib.c +122 -54
178 lines not on this page · raw message
fs/ntfs3/file.c +33 -118
151 lines not on this page · raw message
fs/ntfs3/super.c +46 -22
68 lines not on this page · raw message
fs/xfs/libxfs/xfs_ag.c +33 -12
45 lines not on this page · raw message
fs/xfs/libxfs/xfs_alloc.c +45 -32
77 lines not on this page · raw message
fs/xfs/libxfs/xfs_bmap.c +58 -63
121 lines not on this page · raw message
fs/xfs/libxfs/xfs_refcount.c +58 -58
116 lines not on this page · raw message
fs/xfs/libxfs/xfs_rtbitmap.h new file +83 -0
83 lines not on this page · raw message
fs/xfs/xfs_bmap_item.c +33 -52
85 lines not on this page · raw message
fs/xfs/xfs_buf.c +40 -4
44 lines not on this page · raw message
fs/xfs/xfs_extfree_item.c +87 -57
144 lines not on this page · raw message
fs/xfs/xfs_refcount_item.c +30 -38
68 lines not on this page · raw message
fs/xfs/xfs_rtalloc.h +0 -73
73 lines not on this page · raw message
include/net/bluetooth/hci_core.h +38 -70
108 lines not on this page · raw message
io_uring/io_uring.c +139 -24
163 lines not on this page · raw message
net/core/lwtunnel.c +53 -12
65 lines not on this page · raw message
net/netfilter/nft_counter.c +46 -44
90 lines not on this page · raw message
scripts/generate_rust_analyzer.py +50 -14
64 lines not on this page · raw message
sound/soc/sh/rcar/src.c +93 -23
116 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.