Linux 6.1.107
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.107 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/bpf/map_lpm_trie.rst | 181 ++++++ Documentation/filesystems/gfs2-glocks.rst | 3 Makefile | 2 arch/arm64/kernel/acpi_numa.c | 2 arch/arm64/kernel/setup.c | 3 arch/arm64/kernel/smp.c | 2 arch/arm64/kvm/sys_regs.c | 6 arch/arm64/kvm/vgic/vgic.h | 7 arch/mips/kernel/cpu-probe.c | 4 arch/openrisc/kernel/setup.c | 6 arch/parisc/kernel/irq.c | 4 arch/powerpc/boot/simple_alloc.c | 7 arch/powerpc/sysdev/xics/icp-native.c | 2 arch/riscv/mm/init.c | 4 arch/s390/include/asm/uv.h | 5 arch/s390/kernel/early.c | 12 arch/s390/kernel/smp.c | 4 arch/x86/kernel/process.c | 5 arch/x86/kvm/lapic.c | 8 block/blk-mq-tag.c | 5 drivers/atm/idt77252.c | 9 drivers/bluetooth/hci_ldisc.c | 3 drivers/char/xillybus/xillyusb.c | 42 + drivers/clk/visconti/pll.c | 6 drivers/clocksource/arm_global_timer.c | 11 drivers/firmware/cirrus/cs_dsp.c | 7 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 40 + drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c | 3 drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 53 - drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h | 1 drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c | 6 drivers/gpu/drm/amd/amdgpu/imu_v11_0.c | 2 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 22 drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c | 2 drivers/gpu/drm/bridge/tc358768.c | 213 ++++++- drivers/gpu/drm/lima/lima_gp.c | 12 drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h | 14 drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c | 3 drivers/gpu/drm/msm/dp/dp_ctrl.c | 2 drivers/gpu/drm/msm/dp/dp_panel.c | 19 drivers/gpu/drm/msm/msm_gem_shrinker.c | 2 drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 5 drivers/gpu/drm/tegra/gem.c | 2 drivers/hid/hid-ids.h | 10 drivers/hid/hid-microsoft.c | 11 drivers/hid/wacom_wac.c | 4 drivers/hwmon/ltc2992.c | 8 drivers/hwmon/pc87360.c | 6 drivers/i2c/busses/i2c-qcom-geni.c | 4 drivers/i2c/busses/i2c-riic.c | 2 drivers/i2c/busses/i2c-tegra.c | 41 - drivers/i3c/master/mipi-i3c-hci/dma.c | 5 drivers/infiniband/hw/hfi1/chip.c | 5 drivers/infiniband/ulp/rtrs/rtrs.c | 2 drivers/input/input-mt.c | 3 drivers/input/serio/i8042-acpipnpio.h | 20 drivers/input/serio/i8042.c | 10 drivers/irqchip/irq-gic-v3-its.c | 2 drivers/irqchip/irq-renesas-rzg2l.c | 5 drivers/md/dm-clone-metadata.c | 5 drivers/md/dm-ioctl.c | 22 drivers/md/dm.c | 4 drivers/md/md.c | 5 drivers/md/persistent-data/dm-space-map-metadata.c | 4 drivers/md/raid5-cache.c | 47 - drivers/media/dvb-core/dvb_frontend.c | 12 drivers/media/pci/cx23885/cx23885-video.c | 8 drivers/media/pci/solo6x10/solo6x10-offsets.h | 10 drivers/media/platform/qcom/venus/pm_helpers.c | 2 drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c | 2 drivers/media/radio/radio-isa.c | 2 drivers/memory/stm32-fmc2-ebi.c | 122 ++-- drivers/memory/tegra/tegra186.c | 3 drivers/mmc/core/mmc_test.c | 9 drivers/mmc/host/dw_mmc.c | 8 drivers/net/bonding/bond_main.c | 21 drivers/net/bonding/bond_options.c | 2 drivers/net/dsa/mv88e6xxx/global1_atu.c | 3 drivers/net/dsa/ocelot/felix.c | 11 drivers/net/dsa/vitesse-vsc73xx-core.c | 69 +- drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c | 3 drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c | 28 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c | 3 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 4 drivers/net/ethernet/i825xx/sun3_82586.c | 2 drivers/net/ethernet/intel/ice/ice_base.c | 4 drivers/net/ethernet/intel/ice/ice_lib.c | 8 drivers/net/ethernet/intel/ice/ice_main.c | 10 drivers/net/ethernet/intel/ice/ice_txrx.c | 117 +-- drivers/net/ethernet/intel/ice/ice_txrx.h | 6 drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 1 drivers/net/ethernet/intel/igc/igc_defines.h | 15 drivers/net/ethernet/intel/igc/igc_main.c | 7 drivers/net/ethernet/intel/igc/igc_regs.h | 1 drivers/net/ethernet/intel/igc/igc_tsn.c | 64 ++ drivers/net/ethernet/intel/igc/igc_tsn.h | 1 drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c | 23 drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c | 2 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c | 2 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h | 9 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c | 10 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h | 2 drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c | 50 + drivers/net/ethernet/microsoft/mana/mana.h | 1 drivers/net/ethernet/microsoft/mana/mana_en.c | 24 drivers/net/ethernet/mscc/ocelot.c | 91 ++- drivers/net/ethernet/mscc/ocelot_fdma.c | 3 drivers/net/ethernet/mscc/ocelot_vsc7514.c | 4 drivers/net/ethernet/xilinx/xilinx_axienet.h | 17 drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 25 drivers/net/gtp.c | 3 drivers/net/ppp/pppoe.c | 23 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c | 6 drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 2 drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c | 2 drivers/net/wireless/st/cw1200/txrx.c | 2 drivers/nvme/host/core.c | 5 drivers/nvme/target/rdma.c | 16 drivers/nvme/target/tcp.c | 1 drivers/nvme/target/trace.c | 6 drivers/nvme/target/trace.h | 28 drivers/platform/surface/aggregator/controller.c | 3 drivers/platform/x86/lg-laptop.c | 2 drivers/rtc/rtc-nct3018y.c | 6 drivers/s390/block/dasd.c | 36 - drivers/s390/block/dasd_3990_erp.c | 10 drivers/s390/block/dasd_diag.c | 1 drivers/s390/block/dasd_eckd.c | 56 - drivers/s390/block/dasd_int.h | 2 drivers/s390/cio/idset.c | 12 drivers/scsi/lpfc/lpfc_sli.c | 2 drivers/scsi/scsi_transport_spi.c | 4 drivers/soc/imx/imx93-pd.c | 5 drivers/ssb/main.c | 2 drivers/staging/iio/resolver/ad2s1210.c | 7 drivers/staging/ks7010/ks7010_sdio.c | 4 drivers/thunderbolt/switch.c | 1 drivers/tty/serial/atmel_serial.c | 2 drivers/usb/dwc3/core.c | 13 drivers/usb/gadget/udc/fsl_udc_core.c | 2 drivers/usb/host/xhci.c | 8 drivers/video/fbdev/offb.c | 3 fs/9p/xattr.c | 8 fs/afs/file.c | 8 fs/binfmt_elf_fdpic.c | 2 fs/binfmt_misc.c | 216 +++++-- fs/btrfs/delayed-inode.c | 4 fs/btrfs/disk-io.c | 2 fs/btrfs/extent_io.c | 4 fs/btrfs/free-space-cache.c | 22 fs/btrfs/inode.c | 11 fs/btrfs/ioctl.c | 2 fs/btrfs/qgroup.c | 2 fs/btrfs/reflink.c | 6 fs/btrfs/send.c | 63 +- fs/btrfs/super.c | 2 fs/btrfs/tests/extent-io-tests.c | 28 fs/btrfs/tree-checker.c | 69 ++ fs/erofs/decompressor.c | 8 fs/ext4/extents.c | 3 fs/ext4/mballoc.c | 3 fs/ext4/super.c | 23 fs/ext4/xattr.c | 158 ++--- fs/f2fs/segment.c | 5 fs/file.c | 30 - fs/fscache/cookie.c | 4 fs/fuse/cuse.c | 3 fs/fuse/dev.c | 6 fs/fuse/fuse_i.h | 1 fs/fuse/inode.c | 15 fs/fuse/virtio_fs.c | 10 fs/gfs2/glock.c | 27 fs/gfs2/glock.h | 9 fs/gfs2/glops.c | 66 -- fs/gfs2/incore.h | 2 fs/gfs2/inode.c | 2 fs/gfs2/lock_dlm.c | 5 fs/gfs2/log.c | 2 fs/gfs2/ops_fstype.c | 13 fs/gfs2/recovery.c | 28 fs/gfs2/super.c | 197 ++++-- fs/gfs2/super.h | 1 fs/gfs2/sys.c | 2 fs/gfs2/util.c | 55 - fs/gfs2/util.h | 5 fs/inode.c | 39 + fs/jbd2/journal.c | 9 fs/jfs/jfs_dmap.c | 2 fs/jfs/jfs_dtree.c | 2 fs/kernfs/file.c | 8 fs/nfs/pnfs.c | 8 fs/nfsd/nfs4proc.c | 4 fs/nfsd/nfs4state.c | 2 fs/nfsd/nfsctl.c | 32 - fs/nfsd/nfsd.h | 3 fs/nfsd/nfssvc.c | 85 -- fs/nfsd/vfs.c | 6 fs/nilfs2/btree.c | 1 fs/nilfs2/dat.c | 11 fs/nilfs2/direct.c | 1 fs/ntfs3/bitmap.c | 4 fs/ntfs3/frecord.c | 75 ++ fs/ntfs3/fsntfs.c | 2 fs/ntfs3/index.c | 11 fs/ntfs3/ntfs_fs.h | 4 fs/ntfs3/super.c | 2 fs/quota/dquot.c | 5 fs/quota/quota_tree.c | 128 +++- fs/quota/quota_v2.c | 15 fs/reiserfs/stree.c | 2 fs/smb/server/smb2pdu.c | 3 fs/squashfs/block.c | 2 fs/squashfs/file.c | 3 fs/squashfs/file_direct.c | 6 fs/udf/namei.c | 1 include/linux/bitmap.h | 20 include/linux/bpf_verifier.h | 23 include/linux/cpumask.h | 2 include/linux/dsa/ocelot.h | 47 + include/linux/fs.h | 5 include/linux/if_vlan.h | 21 include/linux/jbd2.h | 8 include/linux/pid.h | 2 include/linux/sched/signal.h | 2 include/linux/slab.h | 5 include/linux/sunrpc/svc.h | 13 include/linux/udp.h | 2 include/linux/virtio_net.h | 35 - include/net/cfg80211.h | 40 + include/net/inet_timewait_sock.h | 2 include/net/kcm.h | 1 include/net/tcp.h | 2 include/scsi/scsi_cmnd.h | 2 include/soc/mscc/ocelot.h | 12 include/trace/events/huge_memory.h | 3 include/uapi/linux/bpf.h | 19 init/Kconfig | 7 kernel/bpf/Makefile | 3 kernel/bpf/log.c | 82 ++ kernel/bpf/lpm_trie.c | 33 - kernel/bpf/verifier.c | 69 -- kernel/cgroup/cgroup.c | 4 kernel/pid.c | 7 kernel/pid_namespace.c | 2 kernel/rcu/rcu.h | 7 kernel/rcu/srcutiny.c | 1 kernel/rcu/srcutree.c | 1 kernel/rcu/tasks.h | 1 kernel/rcu/tiny.c | 1 kernel/rcu/tree.c | 3 kernel/time/clocksource.c | 42 - kernel/time/hrtimer.c | 5 kernel/time/posix-timers.c | 31 - lib/math/prime_numbers.c | 2 mm/huge_memory.c | 30 - mm/khugepaged.c | 20 mm/memcontrol.c | 7 mm/memory-failure.c | 20 mm/memory.c | 29 mm/slab_common.c | 41 - mm/util.c | 4 mm/vmalloc.c | 11 net/bluetooth/bnep/core.c | 3 net/bluetooth/hci_conn.c | 11 net/bluetooth/hci_core.c | 24 net/bluetooth/mgmt.c | 4 net/bluetooth/rfcomm/sock.c | 14 net/bluetooth/smp.c | 144 ++-- net/bridge/br_netfilter_hooks.c | 6 net/core/filter.c | 8 net/core/skbuff.c | 8 net/dccp/ipv4.c | 2 net/dccp/ipv6.c | 6 net/dsa/tag_ocelot.c | 37 - net/ipv4/fou.c | 2 net/ipv4/inet_timewait_sock.c | 16 net/ipv4/tcp_ipv4.c | 16 net/ipv4/tcp_minisocks.c | 7 net/ipv4/tcp_offload.c | 3 net/ipv4/udp_offload.c | 18 net/ipv6/ip6_output.c | 10 net/ipv6/ip6_tunnel.c | 12 net/ipv6/netfilter/nf_conntrack_reasm.c | 4 net/ipv6/tcp_ipv6.c | 6 net/iucv/iucv.c | 3 net/kcm/kcmsock.c | 4 net/mac80211/agg-tx.c | 6 net/mac80211/debugfs_netdev.c | 3 net/mac80211/driver-ops.c | 3 net/mac80211/ieee80211_i.h | 1 net/mac80211/iface.c | 27 net/mac80211/rx.c | 387 ++++++------- net/mac80211/sta_info.c | 17 net/mac80211/sta_info.h | 3 net/mctp/test/route-test.c | 2 net/mptcp/diag.c | 2 net/mptcp/pm_netlink.c | 31 - net/netfilter/nf_flow_table_inet.c | 3 net/netfilter/nf_flow_table_ip.c | 3 net/netfilter/nf_flow_table_offload.c | 2 net/netfilter/nf_tables_api.c | 209 ++++--- net/netfilter/nfnetlink_queue.c | 35 + net/netfilter/nft_counter.c | 9 net/netlink/af_netlink.c | 13 net/rds/recv.c | 13 net/sched/sch_generic.c | 11 net/sched/sch_netem.c | 47 - net/sctp/inqueue.c | 14 net/wireless/core.h | 8 net/wireless/util.c | 195 ++++-- samples/bpf/map_perf_test_user.c | 2 samples/bpf/xdp_router_ipv4_user.c | 2 scripts/rust_is_available.sh | 41 + security/selinux/avc.c | 2 sound/core/timer.c | 2 sound/pci/hda/patch_realtek.c | 1 sound/soc/sof/ipc4.c | 9 sound/usb/mixer.c | 7 sound/usb/quirks-table.h | 1 sound/usb/quirks.c | 2 tools/include/linux/align.h | 12 tools/include/linux/bitmap.h | 9 tools/include/linux/mm.h | 5 tools/include/uapi/linux/bpf.h | 19 tools/testing/selftests/bpf/progs/map_ptr_kern.c | 2 tools/testing/selftests/bpf/test_lpm_map.c | 18 tools/testing/selftests/core/close_range_test.c | 35 + tools/testing/selftests/net/net_helper.sh | 25 tools/testing/selftests/net/udpgro.sh | 57 + tools/testing/selftests/net/udpgro_bench.sh | 5 tools/testing/selftests/net/udpgro_frglist.sh | 5 tools/testing/selftests/net/udpgso.c | 2 tools/testing/selftests/tc-testing/tdc.py | 1 tools/tracing/rtla/src/osnoise_top.c | 11 340 files changed, 4069 insertions(+), 2057 deletions(-)
Abdulrasaq Lawani (1):
fbdev: offb: replace of_node_put with __free(device_node)
Abhinav Kumar (2):
drm/msm/dp: fix the max supported bpp logic drm/msm/dp: reset the link phy params before link training
Adrian Hunter (1):
clocksource: Make watchdog and suspend-timing multiplication overflow safe
Al Viro (4):
fix bitmap corruption on close_range() with CLOSE_RANGE_UNSHARE memcg_write_event_control(): fix a user-triggerable oops
afs: fix __afs_break_callback() / afs_drop_open_mmap() race
fuse: fix UAF in rcu pathwalks
Alex Deucher (1):
drm/amdgpu/jpeg2: properly set atomics vmid field
Alex Hung (2):
drm/amd/display: Validate hw_points_num before using it Revert "drm/amd/display: Validate hw_points_num before using it"
Alexander Gordeev (1):
s390/iucv: fix receive buffer virtual vs physical address confusion
Alexander Lobakin (5):
fs/ntfs3: add prefix to bitmap_size() and use BITS_TO_U64() s390/cio: rename bitmap_size() -> idset_bitmap_size()
btrfs: rename bitmap_set_bits() -> btrfs_bitmap_set_bits()
bitmap: introduce generic optimized bitmap_size()
tools: move alignment-related macros to new <linux/align.h>
Alexandre Belloni (1):
rtc: nct3018y: fix possible NULL dereference
Alexei Starovoitov (1):
bpf: Avoid kfree_rcu() under lock in bpf_lpm_trie.
Allison Henderson (1):
net:rds: Fix possible deadlock in rds_message_put
Andi Shyti (1):
i2c: qcom-geni: Add missing geni_icc_disable in geni_i2c_runtime_resume
Andreas Gruenbacher (12):
gfs2: Rename remaining "transaction" glock references
gfs2: Rename the {freeze,thaw}_super callbacks
gfs2: Rename gfs2_freeze_lock{ => _shared }
gfs2: Rename SDF_{FS_FROZEN => FREEZE_INITIATOR}
gfs2: Rework freeze / thaw logic
gfs2: Stop using gfs2_make_fs_ro for withdraw
gfs2: setattr_chown: Add missing initialization
gfs2: Refcounting fix in gfs2_thaw_super
gfs2: Fix another freeze/thaw hang
gfs2: don't withdraw if init_threads() got interrupted
gfs2: Remove LM_FLAG_PRIORITY flag
gfs2: Remove freeze_go_demote_ok
Andrew Melnychenko (1):
udp: allow header check for dodgy GSO_UDP_L4 packets.
Andrii Nakryiko (2):
bpf: Split off basic BPF verifier log into separate file
bpf: drop unnecessary user-triggerable WARN_ONCE in verifierl log
Andy Yan (1):
drm/rockchip: vop2: clear afbc en and transform bit for cluster window at linear mode
Antoniu Miclaus (1):
hwmon: (ltc2992) Avoid division by zero
Ashish Mhetre (1):
memory: tegra: Skip SID programming if SID registers aren't set
Aurelien Jarno (1):
media: solo6x10: replace max(a, min(b, c)) by clamp(b, a, c)
Baokun Li (2):
ext4: do not trim the group with corrupted block bitmap
ext4: set the type of max_zeroout to unsigned int to avoid overflow
Bard Liao (1):
ASoC: SOF: ipc4: check return value of snd_sof_ipc_msg_data
Bas Nieuwenhuizen (1):
drm/amdgpu: Actually check flags for all context ops.
Ben Whitten (1):
mmc: dw_mmc: allow biu and ciu clocks to defer
Bharat Bhushan (1):
octeontx2-af: Fix CPT AF register offset calculation
Biju Das (1):
irqchip/renesas-rzg2l: Do not set TIEN and TINT source at the same time
Boyuan Zhang (2):
drm/amdgpu/vcn: identify unified queue in sw init drm/amdgpu/vcn: not pause dpg for unified queue
Breno Leitao (1):
i2c: tegra: Do not mark ACPI devices as irq safe
Candice Li (1):
drm/amdgpu: Validate TA binary size
Chaotian Jing (1):
scsi: core: Fix the return value of scsi_logical_block_count()
Chengfeng Ye (3):
staging: ks7010: disable bh on tx_dev_lock
media: s5p-mfc: Fix potential deadlock on condlock IB/hfi1: Fix potential deadlock on &irq_src_lock and &dd->uctxt_lock
Christian Brauner (1):
binfmt_misc: cleanup on filesystem umount
Christophe Kerello (1):
memory: stm32-fmc2-ebi: check regmap_read return value
Claudio Imbrenda (1):
s390/uv: Panic for set and remove shared access UVC errors
Cosmin Ratiu (1):
net/mlx5e: Correctly report errors for ethtool rx flows
Costa Shulyupin (1):
hrtimer: Select housekeeping CPU during migration
Dan Carpenter (4):
rtla/osnoise: Prevent NULL dereference in error handling
atm: idt77252: prevent use after free in dequeue_rx()
dpaa2-switch: Fix error checking in dpaa2_switch_seed_bp()
mmc: mmc_test: Fix NULL dereference on allocation failure
Daniel Wagner (1):
nvmet-trace: avoid dereferencing pointer too early
Dave Kleikamp (1):
Revert "jfs: fix shift-out-of-bounds in dbJoin"
David Lechner (1):
staging: iio: resolver: ad2s1210: fix use before initialization
David Sterba (8):
btrfs: delayed-inode: drop pointless BUG_ON in __btrfs_remove_delayed_item()
btrfs: change BUG_ON to assertion when checking for delayed_node root
btrfs: tests: allocate dummy fs_info and root in test_find_delalloc()
btrfs: handle invalid root reference found in may_destroy_subvol()
btrfs: send: handle unexpected data in header buffer in begin_cmd()
btrfs: change BUG_ON to assertion in tree_move_down()
btrfs: delete pointless BUG_ON check on quota root in btrfs_qgroup_account_extent()
btrfs: replace sb::s_blocksize by fs_info::sectorsize
David Thompson (1):
mlxbf_gige: disable RX filters until RX path initialized
Dmitry Antipov (1):
net: sctp: fix skb leak in sctp_inq_free()
Dmitry Baryshkov (2):
drm/msm/dpu: don't play tricks with debug macros drm/msm/dpu: cleanup FB if dpu_format_populate_layout fails
Donald Hunter (2):
docs/bpf: Document BPF_MAP_TYPE_LPM_TRIE map
netfilter: flowtable: initialise extack before use
Dragos Tatulea (1):
net/mlx5e: Take state lock during tx timeout reporter
Edward Adam Davis (2):
reiserfs: fix uninit-value in comp_keys
jfs: fix null ptr deref in dtInsertEntry
Eli Billauer (3):
char: xillybus: Don't destroy workqueue from work item running on it
char: xillybus: Refine workqueue handling
char: xillybus: Check USB endpoints when probing device
Eric Dumazet (8):
netlink: hold nlk->cb_mutex longer in __netlink_dump_start()
gtp: pull network headers in gtp_dev_xmit() tcp/dccp: bypass empty buckets in inet_twsk_purge() tcp/dccp: do not care about families in inet_twsk_purge()
ipv6: prevent UAF in ip6_send_skb()
ipv6: fix possible UAF in ip6_finish_output2()
ipv6: prevent possible UAF in ip6_xmit()
tcp: do not export tcp_twsk_purge()
Erico Nunes (1):
drm/lima: set gp bus_stop bit before hard reset
Eugene Syromiatnikov (1):
mptcp: correct MPTCP_SUBFLOW_ATTR_SSN_OFFSET reserved size
Faizal Rahim (1):
igc: Fix packet still tx after gate close by reducing i226 MAC retry buffer
Felix Fietkau (14):
wifi: mac80211: fix and simplify unencrypted drop check for mesh
wifi: cfg80211: move A-MSDU check in ieee80211_data_to_8023_exthdr
wifi: cfg80211: factor out bridge tunnel / RFC1042 header check
wifi: mac80211: remove mesh forwarding congestion check
wifi: mac80211: fix receiving A-MSDU frames on mesh interfaces
wifi: mac80211: add a workaround for receiving non-standard mesh A-MSDU
wifi: mac80211: fix mesh path discovery based on unicast packets
wifi: mac80211: fix mesh forwarding
wifi: mac80211: fix flow dissection for forwarded packets
wifi: mac80211: fix receiving mesh packets in forwarding=0 networks
wifi: mac80211: drop bogus static keywords in A-MSDU rx
wifi: mac80211: fix potential null pointer dereference
wifi: cfg80211: fix receiving mesh packets without RFC1042 header
udp: fix receiving fraglist GSO packets
Filipe Manana (1):
btrfs: send: allow cloning non-aligned extent if it ends at i_size
Florian Westphal (2):
netfilter: nf_queue: drop packets with cloned unconfirmed conntracks
tcp: prevent concurrent execution of tcp_sk_exit_batch
Gao Xiang (1):
erofs: avoid debugging output for (de)compressed data
Gavrilov Ilia (1):
pppoe: Fix memory leak in pppoe_sendmsg()
Gergo Koteles (1):
platform/x86: lg-laptop: fix %s null argument warning
Greg Kroah-Hartman (2):
Revert "usb: gadget: uvc: cleanup request when not in correct state" Linux 6.1.107
Griffin Kroah-Hartman (1):
Bluetooth: MGMT: Add error handling to pair_device()
Guanrui Huang (1):
irqchip/gic-v3-its: Remove BUG_ON in its_vpe_irq_domain_alloc
Gustavo A. R. Silva (1):
clk: visconti: Add bounds-checking coverage for struct visconti_pll_provider
Haibo Xu (1):
arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE
Hailong Liu (1):
mm/vmalloc: fix page mapping if vm_area_alloc_pages() with high order fallback to order 0
Hangbin Liu (1):
selftests: udpgro: report error when receive failed
Hannes Reinecke (1):
nvmet-tcp: do not continue for invalid icreq
Hans Verkuil (3):
media: radio-isa: use dev_name to fill in bus_info
media: qcom: venus: fix incorrect return value
media: pci: cx23885: check cx23885_vdev_init() return
Heiko Carstens (1):
s390/smp,mcck: fix early IPI handling
Helge Deller (1):
parisc: Use irq_enter_rcu() to fix warning at kernel/context_tracking.c:367
Ivan Orlov (2):
9P FS: Fix wild-memory-access write in v9fs_get_acl
mm: khugepaged: fix kernel BUG in hpage_collapse_scan_file()
Jakub Kicinski (1):
net: don't dump stack on queue timeout
Jan Höppner (1):
Revert "s390/dasd: Establish DMA alignment"
Jan Kara (5):
quota: Detect loops in quota tree
ext4: fold quota accounting into ext4_xattr_inode_lookup_create()
ext4: do not create EA inode under buffer lock
udf: Fix bogus checksum computation in udf_rename()
quota: Remove BUG_ON from dqget()
Jann Horn (1):
fuse: Initialize beyond-EOF page contents before setting uptodate
Jarkko Nikula (2):
i3c: mipi-i3c-hci: Remove BUG() when Ring Abort request times out
i3c: mipi-i3c-hci: Do not unmap region not mapped for transfer
Jason Gerecke (1):
HID: wacom: Defer calculation of resolution until resolution_code is known
Javier Carrasco (1):
hwmon: (ltc2992) Fix memory leak in ltc2992_parse_dt()
Jeff Johnson (1):
wifi: cw1200: Avoid processing an invalid TIM IE
Jeff Layton (1):
nfsd: drop the nfsd_put helper
Jeremy Kerr (1):
net: mctp: test: Use correct skb for route input check
Jesse Brandeburg (1):
ice: fix W=1 headers mismatch
Jesse Zhang (1):
drm/amdgpu: fix dereference null return value for the function amdgpu_vm_pt_parent
Jian Shen (1):
net: hns3: add checking for vf id of mailbox
Jiaxun Yang (1):
MIPS: Loongson64: Set timer mode in cpu-probe
Jie Wang (2):
net: hns3: fix wrong use of semaphore up
net: hns3: fix a deadlock problem when config TC during resetting
Johannes Berg (6):
wifi: mac80211: take wiphy lock for MAC addr change
wifi: mac80211: fix change_address deadlock during unregister
wifi: cfg80211: check A-MSDU format more carefully
wifi: cfg80211: check wiphy mutex is held for wdev mutex
wifi: mac80211: fix BA session teardown race
wifi: mac80211: add documentation for amsdu_mesh_control
Joseph Huang (1):
net: dsa: mv88e6xxx: Fix out-of-bound access
Juan José Arboleda (1):
ALSA: usb-audio: Support Yamaha P-125 quirk entry
Justin Tee (1):
scsi: lpfc: Initialize status local variable in lpfc_sli4_repost_sgl_list()
Kamalesh Babulal (1):
cgroup: Avoid extra dereference in css_populate_dir()
Kees Cook (5):
pid: Replace struct pid 1-element array with flex-array
bpf: Replace bpf_lpm_trie_key 0-length array with flexible array
hwmon: (pc87360) Bounds check data->innr usage net/sun3_82586: Avoid reading past buffer in debug output
x86: Increase brk randomness entropy for 64-bit systems
Keith Busch (1):
nvme: clear caller pointer on identify failure
Khazhismel Kumykov (1):
dm resume: don't return EINVAL when signalled
Konstantin Komarov (1):
fs/ntfs3: Do copy_to_user out of run_lock
Krishna Kurapati (1):
usb: dwc3: core: Skip setting event buffers for host only controllers
Kuniyuki Iwashima (1):
kcm: Serialise kcm_sendmsg() for the same socket.
Kunwu Chan (1):
powerpc/xics: Check return value of kasprintf in icp_native_map_one_cpu
Lang Yu (1):
drm/amdkfd: reserve the BO before validating it
Lee Jones (1):
drm/amd/amdgpu/imu_v11_0: Increase buffer size to ensure all possible values can be stored
Lee, Chun-Yi (1):
Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO
Leon Hwang (1):
bpf: Fix updating attached freplace prog in prog_array map
Li Lingfeng (1):
block: Fix lockdep warning in blk_mq_mark_tag_wait
Li Nan (1):
md: clean up invalid BUG_ON in md_ioctl
Li RongQing (1):
KVM: x86: fire timer when it is migrated and expired, and in oneshot mode
Li Zhong (1):
ext4: check the return value of ext4_xattr_inode_dec_ref()
Li zeming (1):
powerpc/boot: Handle allocation failure in simple_realloc()
Lianqin Hu (1):
ALSA: usb-audio: Add delay quirk for VIVO USB-C-XE710 HEADSET
Lizhi Xu (1):
squashfs: squashfs_read_data need to check if the length is 0
Long Li (1):
net: mana: Fix doorbell out of order violation and avoid unnecessary doorbell rings
Lucas Karpinski (1):
selftests/net: synchronize udpgro tests' tx and rx connection
Luiz Augusto von Dentz (4):
Bluetooth: RFCOMM: Fix not validating setsockopt user input
Bluetooth: bnep: Fix out-of-bound access
Bluetooth: hci_core: Fix LE quote calculation
Bluetooth: SMP: Fix assumption of Central always being Initiator
Maciej Fijalkowski (6):
ice: Prepare legacy-rx for upcoming XDP multi-buffer support
ice: Add xdp_buff to ice_rx_ring struct
ice: Store page count inside ice_rx_buf
ice: Pull out next_to_clean bump out of ice_put_rx_buf()
ice: fix page reuse when PAGE_SIZE is over 8k
ice: fix ICE_LAST_OFFSET formula
Manas Ghandat (1):
jfs: fix shift-out-of-bounds in dbJoin
Marc Zyngier (1):
KVM: arm64: Make ICC_*SGI*_EL1 undef in the absence of a vGICv3
Martin Blumenstingl (1):
clocksource/drivers/arm_global_timer: Guard against division by zero
Masahiro Yamada (2):
rust: suppress error messages from CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
rust: fix the default format for CONFIG_{RUSTC,BINDGEN}_VERSION_TEXT
Mathias Nyman (1):
xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration
Mathieu Othacehe (1):
tty: atmel_serial: use the correct RTS flag.
Matthieu Baerts (NGI0) (4):
mptcp: pm: re-using ID of unused removed ADD_ADDR
mptcp: pm: re-using ID of unused removed subflows
mptcp: pm: re-using ID of unused flushed subflows
mptcp: pm: only decrement add_addr_accepted for MPJ req
Max Filippov (1):
fs: binfmt_elf_efpic: don't use missing interpreter's properties
Max Kellermann (1):
fs/netfs/fscache_cookie: add missing "n_accesses" check
Maximilian Luz (1):
platform/surface: aggregator: Fix warning when controller is destroyed in probe
Michael Ellerman (1):
powerpc/boot: Only free if realloc() succeeds
Michael Grzeschik (1):
usb: gadget: uvc: cleanup request when not in correct state
Michał Mirosław (2):
i2c: tegra: allow DVC support to be compiled out
i2c: tegra: allow VI support to be compiled out
Miguel Ojeda (3):
kbuild: rust_is_available: normalize version matching
kbuild: rust_is_available: handle failures calling $RUSTC/$BINDGEN
rust: work around bindgen 0.69.0 issue
Mika Westerberg (1):
thunderbolt: Mark XDomain as unplugged when router is removed
Mike Christie (1):
scsi: spi: Fix sshdr use
Mikko Perttunen (1):
drm/tegra: Zero-initialize iosys_map
Mikulas Patocka (2):
dm persistent data: fix memory allocation failure dm suspend: return -ERESTARTSYS instead of -EINTR
Miri Korenblit (1):
wifi: iwlwifi: abort scan when rfkill on but device enabled
Muhammad Husaini Zulkifli (1):
igc: Correct the launchtime offset
Mukesh Sisodiya (1):
wifi: iwlwifi: fw: Fix debugfs command sending
Nam Cao (1):
riscv: change XIP's kernel_map.size to be size of the entire kernel
Namjae Jeon (1):
ksmbd: the buffer of smb2 query dir response has at least 1 byte
Naohiro Aota (1):
btrfs: zoned: properly take lock to read/update block group's zoned variables
Neel Natu (1):
kernfs: fix false-positive WARN(nr_mmapped) in kernfs_drain_open_files
NeilBrown (6):
NFS: avoid infinite loop in pnfs_update_layout.
nfsd: Simplify code around svc_exit_thread() call in nfsd()
nfsd: separate nfsd_last_thread() from nfsd_put()
NFSD: simplify error paths in nfsd_svc()
nfsd: call nfsd_last_thread() before final nfsd_put()
nfsd: don't call locks_release_private() twice concurrently
Nikolay Aleksandrov (4):
bonding: fix bond_ipsec_offload_ok return type
bonding: fix null pointer deref in bond_ipsec_offload_ok
bonding: fix xfrm real_dev null pointer dereference
bonding: fix xfrm state handling when clearing active slave
Nikolay Kuratov (1):
cxgb4: add forgotten u64 ivlan cast before shift
Oreoluwa Babatunde (1):
openrisc: Call setup_memory() earlier in the init sequence
Pablo Neira Ayuso (1):
netfilter: flowtable: validate vlan header
Paolo Abeni (1):
selftests: net: more strict check in net_helper
Parsa Poorshikhian (1):
ALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7
Paul E. McKenney (1):
rcu: Eliminate rcu_gp_slow_unregister() false positive
Pawel Dembicki (3):
net: dsa: vsc73xx: pass value in phy_write operation
net: dsa: vsc73xx: use read_poll_timeout instead delay loop
net: dsa: vsc73xx: check busy flag in MDIO operations
Pei Li (1):
jfs: Fix shift-out-of-bounds in dbDiscardAG
Peiyang Wang (1):
net: hns3: use the user's cfg after reset
Peng Fan (1):
pmdomain: imx: wait SSAR when i.MX93 power domain on
Phil Chang (1):
hrtimer: Prevent queuing of hrtimer without a function callback
Phil Sutter (9):
netfilter: nf_tables: Audit log dump reset after the fact
netfilter: nf_tables: Drop pointless memset in nf_tables_dump_obj
netfilter: nf_tables: Unconditionally allocate nft_obj_filter
netfilter: nf_tables: A better name for nft_obj_filter
netfilter: nf_tables: Carry s_idx in nft_obj_dump_ctx
netfilter: nf_tables: nft_obj_filter fits into cb->ctx
netfilter: nf_tables: Carry reset boolean in nft_obj_dump_ctx
netfilter: nf_tables: Introduce nf_tables_getobj_single
netfilter: nf_tables: Add locking for NFT_MSG_GETOBJ_RESET requests
Philip Yang (1):
drm/amdkfd: Move dma unmapping after TLB flush
Philipp Stanner (1):
media: drivers/media/dvb-core: copy user arrays safely
Phillip Lougher (1):
Squashfs: fix variable overflow triggered by sysbot
Qu Wenruo (1):
btrfs: tree-checker: add dev extent item checks
Radhey Shyam Pandey (1):
net: axienet: Fix register defines comment description
Rand Deeb (1):
ssb: Fix division by zero issue in ssb_calc_clock_rate
Richard Fitzgerald (1):
firmware: cirrus: cs_dsp: Initialize debugfs_root to invalid
Rob Clark (1):
drm/msm: Reduce fallout of fence signaling vs reclaim hangs
Rodrigo Siqueira (1):
drm/amd/display: Adjust cursor position
Ryusuke Konishi (1):
nilfs2: prevent WARNING in nilfs_dat_commit_end()
Sagi Grimberg (1):
nvmet-rdma: fix possible bad dereference when freeing rsps
Samuel Holland (1):
arm64: Fix KASAN random tag seed initialization
Sean Anderson (2):
net: xilinx: axienet: Always disable promiscuous mode
net: xilinx: axienet: Fix dangling multicast addresses
Sebastian Andrzej Siewior (2):
netfilter: nft_counter: Disable BH in nft_counter_offload_stats().
netfilter: nft_counter: Synchronize nft_counter_reset() against reader.
Siarhei Vishniakou (1):
HID: microsoft: Add rumble support to latest xbox controllers
Simon Horman (1):
tc-testing: don't access non-existent variable on exception
Stefan Haberland (1):
s390/dasd: fix error recovery leading to data corruption on ESE devices
Stefan Hajnoczi (1):
virtiofs: forbid newlines in tags
Stephen Hemminger (1):
netem: fix return value if duplicate enqueue fails
Takashi Iwai (2):
ALSA: usb: Fix UBSAN warning in parse_audio_unit()
ALSA: timer: Relax start tick time check for slave timer elements
Tetsuo Handa (2):
nilfs2: initialize "struct nilfs_binfo_dat"->bi_pad field
Input: MT - limit max slots
Theodore Ts'o (1):
ext4, jbd2: add an optimized bmap for the journal inode
Thomas Bogendoerfer (1):
ip6_tunnel: Fix broken GRO
Thomas Gleixner (1):
posix-timers: Ensure timer ID search-loop limit is valid
Tom Hughes (1):
netfilter: allow ipv6 fragments to arrive on different devices
Tomi Valkeinen (1):
drm/bridge: tc358768: Attempt to fix DSI horizontal timings
Trond Myklebust (1):
nfsd: Fix a regression in nfsd_setattr()
Uwe Kleine-König (1):
usb: gadget: fsl: Increase size of name buffer for endpoints
Vladimir Oltean (5):
net: dsa: tag_ocelot: do not rely on skb_mac_header() for VLAN xmit
net: dsa: tag_ocelot: call only the relevant portion of __skb_vlan_pop() on TX
net: mscc: ocelot: use ocelot_xmit_get_vlan_info() also for FDMA and register injection
net: mscc: ocelot: fix QoS class for injected packets with "ocelot-8021q"
net: mscc: ocelot: serialize access to the injection/extraction groups
Waiman Long (1):
mm/memory-failure: use raw_spinlock_t in struct memory_failure_cpu
Werner Sembach (2):
Input: i8042 - add forcenorestore quirk to leave controller untouched even on s3
Input: i8042 - use new forcenorestore quirk to replace old buggy quirk combination
Willem de Bruijn (3):
fou: remove warn in gue_gro_receive on unsupported protocol
net: more strict VIRTIO_NET_HDR_GSO_UDP_L4 validation
net: drop bad gso csum_start and offset in virtio_net_hdr
Wolfram Sang (1):
i2c: riic: avoid potential division by zero
Yajun Deng (1):
net: sched: Print msecs when transmit queue time out
Yan Zhai (1):
gso: fix dodgy bit handling for GSO_UDP_L4
Ying Hsu (1):
Bluetooth: Fix hci_link_tx_to RCU lock usage
Yu Kuai (1):
md/raid5-cache: use READ_ONCE/WRITE_ONCE for 'conf->log'
Yue Haibing (1):
mlxbf_gige: Remove two unused function declarations
Yuri Benditovich (1):
net: change maximum number of UDP segments to 128
Zhen Lei (3):
selinux: fix potential counting error in avc_add_xperms_decision()
mm: Remove kmem_valid_obj()
rcu: Dump memory object info if callback function is invalid
Zhiguo Niu (1):
f2fs: fix to do sanity check in update_sit_entry
Zhihao Cheng (1):
vfs: Don't evict inode under the inode lru traversing context
Zhu Yanjun (1):
RDMA/rtrs: Fix the problem of variable not initialized fully
Zi Yan (2):
mm/numa: no task_numa_fault() call if PMD is changed mm/numa: no task_numa_fault() call if PTE is changed
Zijun Hu (1):
Bluetooth: hci_conn: Check non NULL function before calling for HFP offload
yunshui (1):
bpf, net: Use DEV_STAT_INC()
Greg Kroah-Hartman
maintainerDocumentation/bpf/map_lpm_trie.rst new file +181 -0
@@ -0,0 +1,181 @@ +.. SPDX-License-Identifier: GPL-2.0-only +.. Copyright (C) 2022 Red Hat, Inc. + +===================== +BPF_MAP_TYPE_LPM_TRIE +===================== + +.. note:: + - ``BPF_MAP_TYPE_LPM_TRIE`` was introduced in kernel version 4.11 + +``BPF_MAP_TYPE_LPM_TRIE`` provides a longest prefix match algorithm that +can be used to match IP addresses to a stored set of prefixes. +Internally, data is stored in an unbalanced trie of nodes that uses +``prefixlen,data`` pairs as its keys. The ``data`` is interpreted in +network byte order, i.e. big endian, so ``data[0]`` stores the most +significant byte. + +LPM tries may be created with a maximum prefix length that is a multiple +of 8, in the range from 8 to 2048. The key used for lookup and update +operations is a ``struct bpf_lpm_trie_key_u8``, extended by +``max_prefixlen/8`` bytes. + +- For IPv4 addresses the data length is 4 bytes +- For IPv6 addresses the data length is 16 bytes + +The value type stored in the LPM trie can be any user defined type. + +.. note:: + When creating a map of type ``BPF_MAP_TYPE_LPM_TRIE`` you must set the + ``BPF_F_NO_PREALLOC`` flag. + +Usage +===== + +Kernel BPF +---------- + +.. c:function:: + void *bpf_map_lookup_elem(struct bpf_map *map, const void *key) + +The longest prefix entry for a given data value can be found using the +``bpf_map_lookup_elem()`` helper. This helper returns a pointer to the +value associated with the longest matching ``key``, or ``NULL`` if no +entry was found. + +The ``key`` should have ``prefixlen`` set to ``max_prefixlen`` when +performing longest prefix lookups. For example, when searching for the +longest prefix match for an IPv4 address, ``prefixlen`` should be set to +``32``. + +.. c:function:: + long bpf_map_update_elem(struct bpf_map *map, const void *key, const void *value, u64 flags) + +Prefix entries can be added or updated using the ``bpf_map_update_elem()`` +helper. This helper replaces existing elements atomically. + +``bpf_map_update_elem()`` returns ``0`` on success, or negative error in +case of failure. + + .. note:: + The flags parameter must be one of BPF_ANY, BPF_NOEXIST or BPF_EXIST, + but the value is ignored, giving BPF_ANY semantics. + +.. c:function:: + long bpf_map_delete_elem(struct bpf_map *map, const void *key) + +Prefix entries can be deleted using the ``bpf_map_delete_elem()`` +helper. This helper will return 0 on success, or negative error in case +of failure. + +Userspace +--------- + +Access from userspace uses libbpf APIs with the same names as above, with +the map identified by ``fd``. + +.. c:function:: + int bpf_map_get_next_key (int fd, const void *cur_key, void *next_key) + +A userspace program can iterate through the entries in an LPM trie using +libbpf's ``bpf_map_get_next_key()`` function. The first key can be +fetched by calling ``bpf_map_get_next_key()`` with ``cur_key`` set to +``NULL``. Subsequent calls will fetch the next key that follows the +current key. ``bpf_map_get_next_key()`` returns ``0`` on success, +``-ENOENT`` if ``cur_key`` is the last key in the trie, or negative +error in case of failure. + +``bpf_map_get_next_key()`` will iterate through the LPM trie elements +from leftmost leaf first. This means that iteration will return more +specific keys before less specific ones. + +Examples +======== + +Please see ``tools/testing/selftests/bpf/test_lpm_map.c`` for examples +of LPM trie usage from userspace. The code snippets below demonstrate +API usage. + +Kernel BPF +---------- + +The following BPF code snippet shows how to declare a new LPM trie for IPv4 +address prefixes: + +.. code-block:: c + + #include <linux/bpf.h> + #include <bpf/bpf_helpers.h> + + struct ipv4_lpm_key { + __u32 prefixlen; + __u32 data; + }; + + struct { + __uint(type, BPF_MAP_TYPE_LPM_TRIE); + __type(key, struct ipv4_lpm_key); + __type(value, __u32); + __uint(map_flags, BPF_F_NO_PREALLOC); + __uint(max_entries, 255); + } ipv4_lpm_map SEC(".maps"); + +The following BPF code snippet shows how to lookup by IPv4 address: + +.. code-block:: c + + void *lookup(__u32 ipaddr) + { + struct ipv4_lpm_key key = { + .prefixlen = 32, + .data = ipaddr + }; + + return bpf_map_lookup_elem(&ipv4_lpm_map, &key); + } + +Userspace +--------- + +The following snippet shows how to insert an IPv4 prefix entry into an +LPM trie: + +.. code-block:: c + + int add_prefix_entry(int lpm_fd, __u32 addr, __u32 prefixlen, struct value *value) + { + struct ipv4_lpm_key ipv4_key = { + .prefixlen = prefixlen, + .data = addr + }; + return bpf_map_update_elem(lpm_fd, &ipv4_key, value, BPF_ANY); + } + +The following snippet shows a userspace program walking through the entries +of an LPM trie: + + +.. code-block:: c + + #include <bpf/libbpf.h> + #include <bpf/bpf.h> + + void iterate_lpm_trie(int map_fd) + { + struct ipv4_lpm_key *cur_key = NULL; + struct ipv4_lpm_key next_key; + struct value value; + int err; + + for (;;) { + err = bpf_map_get_next_key(map_fd, cur_key, &next_key); + if (err) + break; + + bpf_map_lookup_elem(map_fd, &next_key, &value); + + /* Use key and value here */ + + cur_key = &next_key; + } + }
Documentation/filesystems/gfs2-glocks.rst +1 -2
@@ -20,8 +20,7 @@ The gl_holders list contains all the queued lock requests (not just the holders) associated with the glock. If there are any held locks, then they will be contiguous entries at the head of the list. Locks are granted in strictly the order that they -are queued, except for those marked LM_FLAG_PRIORITY which are -used only during recovery, and even then only for journal locks. +are queued. There are three lock states that users of the glock layer can request, namely shared (SH), deferred (DF) and exclusive (EX). Those translate
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 106 +SUBLEVEL = 107 EXTRAVERSION = NAME = Curry Ramen
arch/arm64/kernel/acpi_numa.c +1 -1
@@ -27,7 +27,7 @@#include <asm/numa.h> -static int acpi_early_node_map[NR_CPUS ]__initdata = {NUMA_NO_NODE }; +static int acpi_early_node_map[NR_CPUS ]__initdata = { [0 ...NR_CPUS -1 ] =NUMA_NO_NODE };int __init acpi_numa_get_nid (unsigned int cpu) {
arch/arm64/kernel/setup.c +0 -3
@@ -360,9 +360,6 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)smp_init_cpus ();smp_build_mpidr_hash (); -/* Init percpu seeds for random tags after cpus are set up. */ -kasan_init_sw_tags (); -#ifdef CONFIG_ARM64_SW_TTBR0_PAN /* * Make sure init_thread_info.ttbr0 always generates translation
arch/arm64/kernel/smp.c +2 -0
@@ -464,6 +464,8 @@ void __init smp_prepare_boot_cpu(void)init_gic_priority_masking ();kasan_init_hw_tags (); +/* Init percpu seeds for random tags after cpus are set up. */ +kasan_init_sw_tags (); }/*
arch/arm64/kvm/sys_regs.c +6 -0
@@ -30,6 +30,7 @@#include <trace/events/kvm.h> #include "sys_regs.h" +#include "vgic/vgic.h" #include "trace.h"
@@ -200,6 +201,11 @@ static bool access_gic_sgi(struct kvm_vcpu *vcpu, {bool g1; +if (!kvm_has_gicv3 (vcpu->kvm)) { +kvm_inject_undefined (vcpu); +return false; + } +if (!p->is_write)return read_from_write_only (vcpu, p, r);
arch/arm64/kvm/vgic/vgic.h +7 -0
@@ -334,4 +334,11 @@ void vgic_v4_configure_vsgis(struct kvm *kvm);void vgic_v4_get_vlpi_state (struct vgic_irq *irq,bool *val);int vgic_v4_request_vpe_irq (struct kvm_vcpu *vcpu,int irq); +static inline bool kvm_has_gicv3 (struct kvm *kvm) +{ +return (static_branch_unlikely (&kvm_vgic_global_state.gicv3_cpuif) && +irqchip_in_kernel (kvm) && + kvm->arch.vgic.vgic_model ==KVM_DEV_TYPE_ARM_VGIC_V3 ); +} +#endif
arch/mips/kernel/cpu-probe.c +4 -0
@@ -1723,12 +1723,16 @@ static inline void cpu_probe_loongson(struct cpuinfo_mips *c, unsigned int cpu) c->ases |= (MIPS_ASE_LOONGSON_MMI |MIPS_ASE_LOONGSON_CAM |MIPS_ASE_LOONGSON_EXT |MIPS_ASE_LOONGSON_EXT2 ); c->ases &= ~MIPS_ASE_VZ ;/* VZ of Loongson-3A2000/3000 is incomplete */ +change_c0_config6 (LOONGSON_CONF6_EXTIMER |LOONGSON_CONF6_INTIMER , +LOONGSON_CONF6_INTIMER );break ;case PRID_IMP_LOONGSON_64G : __cpu_name[cpu] ="ICT Loongson-3" ;set_elf_platform (cpu,"loongson3a" );set_isa (c,MIPS_CPU_ISA_M64R2 );decode_cpucfg (c); +change_c0_config6 (LOONGSON_CONF6_EXTIMER |LOONGSON_CONF6_INTIMER , +LOONGSON_CONF6_INTIMER );break ;default :panic ("Unknown Loongson Processor ID!" );
arch/openrisc/kernel/setup.c +3 -3
@@ -270,6 +270,9 @@ void calibrate_delay(void)void __init setup_arch (char **cmdline_p) { +/* setup memblock allocator */ +setup_memory (); +unflatten_and_copy_device_tree ();setup_cpuinfo ();
@@ -293,9 +296,6 @@ void __init setup_arch(char **cmdline_p) }#endif -/* setup memblock allocator */ -setup_memory (); -/* paging_init() sets up the MMU and marks all pages as reserved */ paging_init ();
arch/parisc/kernel/irq.c +2 -2
@@ -501,7 +501,7 @@ void do_cpu_irq_mask(struct pt_regs *regs) old_regs =set_irq_regs (regs);local_irq_disable (); -irq_enter (); +irq_enter_rcu (); eirr_val =mfctl (23 ) & cpu_eiem &per_cpu (local_ack_eiem, cpu);if (!eirr_val)
@@ -536,7 +536,7 @@ void do_cpu_irq_mask(struct pt_regs *regs)#endif /* CONFIG_IRQSTACKS */ out: -irq_exit (); +irq_exit_rcu ();set_irq_regs (old_regs);return ;
arch/powerpc/boot/simple_alloc.c +5 -2
@@ -112,8 +112,11 @@ static void *simple_realloc(void *ptr, unsigned long size)return ptr; new =simple_malloc (size); -memcpy (new, ptr, p->size); -simple_free (ptr); +if (new) { +memcpy (new, ptr, p->size); +simple_free (ptr); + } +return new; }
arch/powerpc/sysdev/xics/icp-native.c +2 -0
@@ -236,6 +236,8 @@ static int __init icp_native_map_one_cpu(int hw_id, unsigned long addr, rname =kasprintf (GFP_KERNEL ,"CPU %d [0x%x] Interrupt Presentation" , cpu, hw_id); +if (!rname) +return -ENOMEM ;if (!request_mem_region (addr, size, rname)) {pr_warn ("icp_native: Could not reserve ICP MMIO for CPU %d, interrupt server #0x%x\n" , cpu, hw_id);
arch/riscv/mm/init.c +2 -2
@@ -816,7 +816,7 @@ static void __init create_kernel_page_table(pgd_t *pgdir, PMD_SIZE, PAGE_KERNEL_EXEC);/* Map the data in RAM */ - end_va = kernel_map.virt_addr +XIP_OFFSET + kernel_map.size; + end_va = kernel_map.virt_addr + kernel_map.size;for (va = kernel_map.virt_addr +XIP_OFFSET ; va < end_va; va +=PMD_SIZE ) create_pgd_mapping(pgdir, va, kernel_map.phys_addr + (va - (kernel_map.virt_addr + XIP_OFFSET)),
@@ -947,7 +947,7 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa) phys_ram_base =CONFIG_PHYS_RAM_BASE ; kernel_map.phys_addr = (uintptr_t )CONFIG_PHYS_RAM_BASE ; - kernel_map.size = (uintptr_t )(&_end) - (uintptr_t )(&_sdata); + kernel_map.size = (uintptr_t )(&_end) - (uintptr_t )(&_start); kernel_map.va_kernel_xip_pa_offset = kernel_map.virt_addr - kernel_map.xiprom;#else
arch/s390/include/asm/uv.h +4 -1
@@ -387,7 +387,10 @@ static inline int share(unsigned long addr, u16 cmd)if (!uv_call (0 , (u64)&uvcb))return 0 ; -return -EINVAL ; +pr_err ("%s UVC failed (rc: 0x%x, rrc: 0x%x), possible hypervisor bug.\n" , + uvcb.header.cmd ==UVC_CMD_SET_SHARED_ACCESS ?"Share" :"Unshare" , + uvcb.header.rc, uvcb.header.rrc); +panic ("System security cannot be guaranteed unless the system panics now.\n" ); }/*
arch/s390/kernel/early.c +3 -9
@@ -237,15 +237,9 @@ static inline void save_vector_registers(void)#endif } -static inline void setup_control_registers (void ) +static inline void setup_low_address_protection (void ) { -unsigned long reg; - -__ctl_store (reg,0 ,0 ); - reg |=CR0_LOW_ADDRESS_PROTECTION ; - reg |=CR0_EMERGENCY_SIGNAL_SUBMASK ; - reg |=CR0_EXTERNAL_CALL_SUBMASK ; -__ctl_load (reg,0 ,0 ); +__ctl_set_bit (0 ,28 ); }static inline void setup_access_registers (void )
@@ -304,7 +298,7 @@ void __init startup_init(void)save_vector_registers ();setup_topology ();sclp_early_detect (); -setup_control_registers (); +setup_low_address_protection ();setup_access_registers ();lockdep_on (); }
arch/s390/kernel/smp.c +2 -2
@@ -1007,12 +1007,12 @@ void __init smp_fill_possible_mask(void)void __init smp_prepare_cpus (unsigned int max_cpus) { -/* request the 0x1201 emergency signal external interrupt */ if (register_external_irq (EXT_IRQ_EMERGENCY_SIG , do_ext_call_interrupt))panic ("Couldn't request external interrupt 0x1201" ); -/* request the 0x1202 external call external interrupt */ +ctl_set_bit (0 ,14 );if (register_external_irq (EXT_IRQ_EXTERNAL_CALL , do_ext_call_interrupt))panic ("Couldn't request external interrupt 0x1202" ); +ctl_set_bit (0 ,13 ); }void __init smp_prepare_boot_cpu (void )
arch/x86/kernel/process.c +4 -1
@@ -991,7 +991,10 @@ unsigned long arch_align_stack(unsigned long sp)unsigned long arch_randomize_brk (struct mm_struct *mm) { -return randomize_page (mm->brk,0x02000000 ); +if (mmap_is_ia32 ()) +return randomize_page (mm->brk,SZ_32M ); + +return randomize_page (mm->brk,SZ_1G ); }/*
arch/x86/kvm/lapic.c +6 -2
@@ -1843,8 +1843,12 @@ static bool set_target_expiration(struct kvm_lapic *apic, u32 count_reg)if (unlikely (count_reg !=APIC_TMICT )) { deadline =tmict_to_ns (apic,kvm_lapic_get_reg (apic, count_reg)); -if (unlikely (deadline <=0 )) - deadline = apic->lapic_timer.period; +if (unlikely (deadline <=0 )) { +if (apic_lvtt_period (apic)) + deadline = apic->lapic_timer.period; +else + deadline =0 ; + }else if (unlikely (deadline > apic->lapic_timer.period)) {pr_info_ratelimited ( "kvm: vcpu %i: requested lapic timer restore with "
block/blk-mq-tag.c +3 -2
@@ -40,6 +40,7 @@ static void blk_mq_update_wake_batch(struct blk_mq_tags *tags,void __blk_mq_tag_busy (struct blk_mq_hw_ctx *hctx) {unsigned int users; +unsigned long flags;struct blk_mq_tags *tags = hctx->tags;/*
@@ -58,11 +59,11 @@ void __blk_mq_tag_busy(struct blk_mq_hw_ctx *hctx)return ; } -spin_lock_irq (&tags->lock); +spin_lock_irqsave (&tags->lock, flags); users = tags->active_queues +1 ;WRITE_ONCE (tags->active_queues, users);blk_mq_update_wake_batch (tags, users); -spin_unlock_irq (&tags->lock); +spin_unlock_irqrestore (&tags->lock, flags); }/*
drivers/atm/idt77252.c +5 -4
@@ -1118,8 +1118,8 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe) rpp->len += skb->len;if (stat &SAR_RSQE_EPDU ) { +unsigned int len, truesize;unsigned char *l1l2; -unsigned int len; l1l2 = (unsigned char *) ((unsigned long ) skb->data + skb->len -6 );
@@ -1189,14 +1189,15 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)ATM_SKB (skb)->vcc = vcc;__net_timestamp (skb); + truesize = skb->truesize; vcc->push (vcc, skb);atomic_inc (&vcc->stats->rx); -if (skb->truesize >SAR_FB_SIZE_3 ) +if (truesize >SAR_FB_SIZE_3 )add_rx_skb (card,3 ,SAR_FB_SIZE_3 ,1 ); -else if (skb->truesize >SAR_FB_SIZE_2 ) +else if (truesize >SAR_FB_SIZE_2 )add_rx_skb (card,2 ,SAR_FB_SIZE_2 ,1 ); -else if (skb->truesize >SAR_FB_SIZE_1 ) +else if (truesize >SAR_FB_SIZE_1 )add_rx_skb (card,1 ,SAR_FB_SIZE_1 ,1 );else add_rx_skb (card,0 ,SAR_FB_SIZE_0 ,1 );
drivers/bluetooth/hci_ldisc.c +2 -1
@@ -770,7 +770,8 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, unsigned int cmd,break ;case HCIUARTGETPROTO : -if (test_bit (HCI_UART_PROTO_SET , &hu->flags)) +if (test_bit (HCI_UART_PROTO_SET , &hu->flags) && +test_bit (HCI_UART_PROTO_READY , &hu->flags)) err = hu->proto->id;else err = -EUNATCH ;
drivers/char/xillybus/xillyusb.c +34 -8
116 lines not on this page · raw message
drivers/clk/visconti/pll.c +3 -3
@@ -329,12 +329,12 @@ struct visconti_pll_provider * __init visconti_init_pll(struct device_node *np,if (!ctx)return ERR_PTR (-ENOMEM ); -for (i =0 ; i < nr_plls; ++i) - ctx->clk_data.hws[i] =ERR_PTR (-ENOENT ); - ctx->node = np; ctx->reg_base = base; ctx->clk_data.num = nr_plls; +for (i =0 ; i < nr_plls; ++i) + ctx->clk_data.hws[i] =ERR_PTR (-ENOENT ); +return ctx; }
drivers/clocksource/arm_global_timer.c +5 -6
@@ -290,18 +290,17 @@ static int gt_clk_rate_change_cb(struct notifier_block *nb,switch (event) {case PRE_RATE_CHANGE : { -int psv; +unsigned long psv; - psv =DIV_ROUND_CLOSEST (ndata->new_rate, - gt_target_rate); - -if (abs (gt_target_rate - (ndata->new_rate / psv)) >MAX_F_ERR ) + psv =DIV_ROUND_CLOSEST (ndata->new_rate, gt_target_rate); +if (!psv || +abs (gt_target_rate - (ndata->new_rate / psv)) >MAX_F_ERR )return NOTIFY_BAD ; psv--;/* prescaler within legal range? */ -if (psv <0 || psv >GT_CONTROL_PRESCALER_MAX ) +if (psv >GT_CONTROL_PRESCALER_MAX )return NOTIFY_BAD ;/*
drivers/firmware/cirrus/cs_dsp.c +6 -1
@@ -490,7 +490,7 @@ void cs_dsp_cleanup_debugfs(struct cs_dsp *dsp) {cs_dsp_debugfs_clear (dsp);debugfs_remove_recursive (dsp->debugfs_root); - dsp->debugfs_root =NULL ; + dsp->debugfs_root =ERR_PTR (-ENODEV ); }EXPORT_SYMBOL_GPL (cs_dsp_cleanup_debugfs);#else
@@ -2300,6 +2300,11 @@ static int cs_dsp_common_init(struct cs_dsp *dsp)mutex_init (&dsp->pwr_lock); +#ifdef CONFIG_DEBUG_FS +/* Ensure this is invalid if client never provides a debugfs root */ + dsp->debugfs_root =ERR_PTR (-ENODEV ); +#endif +return 0 ; }
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h +1 -0
@@ -286,6 +286,7 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(struct amdgpu_device *adev, struct kgd_mem *mem, void *drm_priv);int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu (struct amdgpu_device *adev,struct kgd_mem *mem,void *drm_priv); +int amdgpu_amdkfd_gpuvm_dmaunmap_mem (struct kgd_mem *mem,void *drm_priv);int amdgpu_amdkfd_gpuvm_sync_memory (struct amdgpu_device *adev,struct kgd_mem *mem,bool intr); int amdgpu_amdkfd_gpuvm_map_gtt_bo_to_kernel(struct kgd_mem *mem,
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +36 -4
@@ -719,7 +719,7 @@ kfd_mem_dmaunmap_sg_bo(struct kgd_mem *mem,enum dma_data_direction dir;if (unlikely (!ttm->sg)) { -pr_err ("SG Table of BO is UNEXPECTEDLY NULL" ); +pr_debug ("SG Table of BO is NULL" );return ; }
@@ -1226,8 +1226,6 @@ static void unmap_bo_from_gpuvm(struct kgd_mem *mem,amdgpu_vm_clear_freed (adev, vm, &bo_va->last_pt_update);amdgpu_sync_fence (sync, bo_va->last_pt_update); - -kfd_mem_dmaunmap_attachment (mem, entry); } static int update_gpuvm_pte(struct kgd_mem *mem,
@@ -1282,6 +1280,7 @@ static int map_bo_to_gpuvm(struct kgd_mem *mem, update_gpuvm_pte_failed:unmap_bo_from_gpuvm (mem, entry, sync); +kfd_mem_dmaunmap_attachment (mem, entry);return ret; }
@@ -1852,8 +1851,10 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu( mem->va + bo_size * (1 + mem->aql_queue));/* Remove from VM internal data structures */ -list_for_each_entry_safe (entry, tmp, &mem->attachments, list) +list_for_each_entry_safe (entry, tmp, &mem->attachments, list) { +kfd_mem_dmaunmap_attachment (mem, entry);kfd_mem_detach (entry); + } ret =unreserve_bo_and_vms (&ctx, false, false);
@@ -2024,6 +2025,37 @@ int amdgpu_amdkfd_gpuvm_map_memory_to_gpu(return ret; } +int amdgpu_amdkfd_gpuvm_dmaunmap_mem (struct kgd_mem *mem,void *drm_priv) +{ +struct kfd_mem_attachment *entry; +struct amdgpu_vm *vm; +int ret; + + vm =drm_priv_to_vm (drm_priv); + +mutex_lock (&mem->lock); + + ret =amdgpu_bo_reserve (mem->bo, true); +if (ret) + goto out; + +list_for_each_entry (entry, &mem->attachments, list) { +if (entry->bo_va->base.vm != vm) +continue ; +if (entry->bo_va->base.bo->tbo.ttm && + !entry->bo_va->base.bo->tbo.ttm->sg) +continue ; + +kfd_mem_dmaunmap_attachment (mem, entry); + } + +amdgpu_bo_unreserve (mem->bo); +out: +mutex_unlock (&mem->lock); + +return ret; +} +int amdgpu_amdkfd_gpuvm_unmap_memory_from_gpu (struct amdgpu_device *adev,struct kgd_mem *mem,void *drm_priv) {
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +8 -0
@@ -656,16 +656,24 @@ int amdgpu_ctx_ioctl(struct drm_device *dev, void *data,switch (args->in.op) {case AMDGPU_CTX_OP_ALLOC_CTX : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_alloc (adev, fpriv, filp, priority, &id); args->out.alloc.ctx_id = id;break ;case AMDGPU_CTX_OP_FREE_CTX : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_free (fpriv, id);break ;case AMDGPU_CTX_OP_QUERY_STATE : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_query (adev, fpriv, id, &args->out);break ;case AMDGPU_CTX_OP_QUERY_STATE2 : +if (args->in.flags) +return -EINVAL ; r =amdgpu_ctx_query2 (adev, fpriv, id, &args->out);break ;case AMDGPU_CTX_OP_GET_STABLE_PSTATE :
drivers/gpu/drm/amd/amdgpu/amdgpu_psp_ta.c +3 -0
@@ -148,6 +148,9 @@ static ssize_t ta_if_load_debugfs_write(struct file *fp, const char *buf, size_tif (ret)return -EINVAL ; +if (ta_bin_len >PSP_1_MEG ) +return -EINVAL ; + copy_pos +=sizeof (uint32_t ); ta_bin =kzalloc (ta_bin_len,GFP_KERNEL );
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +26 -27
156 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.h +1 -0
@@ -271,6 +271,7 @@ struct amdgpu_vcn {struct ras_common_if *ras_if;struct amdgpu_vcn_ras *ras; +bool using_unified_queue; };struct amdgpu_fw_shared_rb_ptrs_struct {
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c +5 -1
@@ -754,11 +754,15 @@ int amdgpu_vm_pde_update(struct amdgpu_vm_update_params *params, struct amdgpu_vm_bo_base *entry) {struct amdgpu_vm_bo_base *parent =amdgpu_vm_pt_parent (entry); -struct amdgpu_bo *bo = parent->bo, *pbo; +struct amdgpu_bo *bo, *pbo;struct amdgpu_vm *vm = params->vm;uint64_t pde, pt, flags;unsigned int level; +if (WARN_ON (!parent)) +return -EINVAL ; + + bo = parent->bo;for (level =0 , pbo = bo->parent; pbo; ++level) pbo = pbo->parent;
drivers/gpu/drm/amd/amdgpu/imu_v11_0.c +1 -1
@@ -38,7 +38,7 @@ MODULE_FIRMWARE("amdgpu/gc_11_0_3_imu.bin");static int imu_v11_0_init_microcode (struct amdgpu_device *adev) { -char fw_name[40 ]; +char fw_name[45 ];char ucode_prefix[30 ];int err;const struct imu_firmware_header_v1_0 *imu_hdr;
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +2 -2
@@ -541,11 +541,11 @@ void jpeg_v2_0_dec_ring_emit_ib(struct amdgpu_ring *ring,amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JRBC_IB_VMID_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 )); -amdgpu_ring_write (ring, (vmid | (vmid <<4 ))); +amdgpu_ring_write (ring, (vmid | (vmid <<4 ) | (vmid <<8 )));amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JPEG_VMID_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 )); -amdgpu_ring_write (ring, (vmid | (vmid <<4 ))); +amdgpu_ring_write (ring, (vmid | (vmid <<4 ) | (vmid <<8 )));amdgpu_ring_write (ring,PACKETJ (mmUVD_LMI_JRBC_IB_64BIT_BAR_LOW_INTERNAL_OFFSET,0 ,0 ,PACKETJ_TYPE0 ));
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +14 -8
@@ -1400,17 +1400,23 @@ static int kfd_ioctl_unmap_memory_from_gpu(struct file *filep, goto sync_memory_failed; } } -mutex_unlock (&p->mutex); -if (flush_tlb) { -/* Flush TLBs after waiting for the page table updates to complete */ -for (i =0 ; i < args->n_devices; i++) { - peer_pdd =kfd_process_device_data_by_id (p, devices_arr[i]); -if (WARN_ON_ONCE (!peer_pdd)) -continue ; +/* Flush TLBs after waiting for the page table updates to complete */ +for (i =0 ; i < args->n_devices; i++) { + peer_pdd =kfd_process_device_data_by_id (p, devices_arr[i]); +if (WARN_ON_ONCE (!peer_pdd)) +continue ; +if (flush_tlb)kfd_flush_tlb (peer_pdd,TLB_FLUSH_HEAVYWEIGHT ); - } + +/* Remove dma mapping after tlb flush to avoid IO_PAGE_FAULT */ + err =amdgpu_amdkfd_gpuvm_dmaunmap_mem (mem, peer_pdd->drm_priv); +if (err) + goto sync_memory_failed; } + +mutex_unlock (&p->mutex); +kfree (devices_arr);return 0 ;
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c +1 -1
@@ -3633,7 +3633,7 @@ void dcn10_set_cursor_position(struct pipe_ctx *pipe_ctx) (int)hubp->curs_attr.width || pos_cpy.x <= (int)hubp->curs_attr.width + pipe_ctx->plane_state->src_rect.x) { - pos_cpy.x =2 * viewport_width - temp_x; + pos_cpy.x = temp_x + viewport_width; } } }else {
drivers/gpu/drm/bridge/tc358768.c +185 -28
290 lines not on this page · raw message
drivers/gpu/drm/lima/lima_gp.c +12 -0
@@ -166,6 +166,11 @@ static void lima_gp_task_run(struct lima_sched_pipe *pipe,gp_write (LIMA_GP_CMD , cmd); } +static int lima_gp_bus_stop_poll (struct lima_ip *ip) +{ +return !!(gp_read (LIMA_GP_STATUS ) &LIMA_GP_STATUS_BUS_STOPPED ); +} +static int lima_gp_hard_reset_poll (struct lima_ip *ip) {gp_write (LIMA_GP_PERF_CNT_0_LIMIT ,0xC01A0000 );
@@ -179,6 +184,13 @@ static int lima_gp_hard_reset(struct lima_ip *ip)gp_write (LIMA_GP_PERF_CNT_0_LIMIT ,0xC0FFE000 );gp_write (LIMA_GP_INT_MASK ,0 ); + +gp_write (LIMA_GP_CMD ,LIMA_GP_CMD_STOP_BUS ); + ret =lima_poll_timeout (ip, lima_gp_bus_stop_poll,10 ,100 ); +if (ret) { +dev_err (dev->dev,"%s bus stop timeout\n" ,lima_ip_name (ip)); +return ret; + }gp_write (LIMA_GP_CMD ,LIMA_GP_CMD_RESET ); ret =lima_poll_timeout (ip, lima_gp_hard_reset_poll,10 ,100 );if (ret) {
drivers/gpu/drm/msm/disp/dpu1/dpu_kms.h +2 -12
@@ -31,24 +31,14 @@* @fmt: Pointer to format string */ #define DPU_DEBUG (fmt, ...) \ - do { \ - if (drm_debug_enabled(DRM_UT_KMS)) \ - DRM_DEBUG(fmt, ##__VA_ARGS__); \ - else \ - pr_debug(fmt, ##__VA_ARGS__); \ - } while (0) + DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)/** * DPU_DEBUG_DRIVER - macro for hardware driver logging * @fmt: Pointer to format string */ #define DPU_DEBUG_DRIVER (fmt, ...) \ - do { \ - if (drm_debug_enabled(DRM_UT_DRIVER)) \ - DRM_ERROR(fmt, ##__VA_ARGS__); \ - else \ - pr_debug(fmt, ##__VA_ARGS__); \ - } while (0) + DRM_DEBUG_DRIVER(fmt, ##__VA_ARGS__)#define DPU_ERROR (fmt, ...) pr_err("[dpu error]" fmt, ##__VA_ARGS__)#define DPU_ERROR_RATELIMITED (fmt, ...) pr_err_ratelimited("[dpu error]" fmt, ##__VA_ARGS__)
drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c +3 -0
@@ -889,6 +889,9 @@ static int dpu_plane_prepare_fb(struct drm_plane *plane, new_state->fb, &layout);if (ret) {DPU_ERROR_PLANE (pdpu,"failed to get format layout, %d\n" , ret); +if (pstate->aspace) +msm_framebuffer_cleanup (new_state->fb, pstate->aspace, + pstate->needs_dirtyfb);return ret; }
drivers/gpu/drm/msm/dp/dp_ctrl.c +2 -0
@@ -1248,6 +1248,8 @@ static int dp_ctrl_link_train(struct dp_ctrl_private *ctrl, link_info.rate = ctrl->link->link_params.rate; link_info.capabilities =DP_LINK_CAP_ENHANCED_FRAMING ; +dp_link_reset_phy_params_vx_px (ctrl->link); +dp_aux_link_configure (ctrl->aux, &link_info);if (drm_dp_max_downspread (dpcd))
drivers/gpu/drm/msm/dp/dp_panel.c +10 -9
@@ -113,22 +113,22 @@ static int dp_panel_read_dpcd(struct dp_panel *dp_panel)static u32 dp_panel_get_supported_bpp (struct dp_panel *dp_panel,u32 mode_edid_bpp,u32 mode_pclk_khz) { -struct dp_link_info *link_info; +const struct dp_link_info *link_info;const u32 max_supported_bpp =30 , min_supported_bpp =18 ; -u32 bpp =0 , data_rate_khz =0 ; +u32 bpp, data_rate_khz; - bpp =min_t (u32, mode_edid_bpp, max_supported_bpp); + bpp =min (mode_edid_bpp, max_supported_bpp); link_info = &dp_panel->link_info; data_rate_khz = link_info->num_lanes * link_info->rate *8 ; -while (bpp > min_supported_bpp) { +do {if (mode_pclk_khz * bpp <= data_rate_khz) -break ; +return bpp; bpp -=6 ; - } + }while (bpp > min_supported_bpp); -return bpp; +return min_supported_bpp; } static int dp_panel_update_modes(struct drm_connector *connector,
@@ -421,8 +421,9 @@ int dp_panel_init_panel_info(struct dp_panel *dp_panel) drm_mode->clock);drm_dbg_dp (panel->drm_dev,"bpp = %d\n" , dp_panel->dp_mode.bpp); - dp_panel->dp_mode.bpp =max_t (u32,18 , -min_t (u32, dp_panel->dp_mode.bpp,30 )); + dp_panel->dp_mode.bpp =dp_panel_get_mode_bpp (dp_panel, dp_panel->dp_mode.bpp, + dp_panel->dp_mode.drm_mode.clock); +drm_dbg_dp (panel->drm_dev,"updated bpp = %d\n" , dp_panel->dp_mode.bpp);
drivers/gpu/drm/msm/msm_gem_shrinker.c +1 -1
@@ -76,7 +76,7 @@ static bool wait_for_idle(struct drm_gem_object *obj) {enum dma_resv_usage usage =dma_resv_usage_rw (true); -return dma_resv_wait_timeout (obj->resv, usage, false,1000 ) >0 ; +return dma_resv_wait_timeout (obj->resv, usage, false,10 ) >0 ; } static bool
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +5 -0
@@ -1258,6 +1258,11 @@ static void vop2_plane_atomic_update(struct drm_plane *plane,vop2_win_write (win,VOP2_WIN_AFBC_ROTATE_270 , rotate_270);vop2_win_write (win,VOP2_WIN_AFBC_ROTATE_90 , rotate_90); }else { +if (vop2_cluster_window (win)) { +vop2_win_write (win,VOP2_WIN_AFBC_ENABLE ,0 ); +vop2_win_write (win,VOP2_WIN_AFBC_TRANSFORM_OFFSET ,0 ); + } +vop2_win_write (win,VOP2_WIN_YRGB_VIR ,DIV_ROUND_UP (fb->pitches[0 ],4 )); }
drivers/gpu/drm/tegra/gem.c +1 -1
@@ -175,7 +175,7 @@ static void tegra_bo_unpin(struct host1x_bo_mapping *map)static void *tegra_bo_mmap (struct host1x_bo *bo) {struct tegra_bo *obj =host1x_to_tegra_bo (bo); -struct iosys_map map; +struct iosys_map map = {0 };int ret;if (obj->vaddr) {
drivers/hid/hid-ids.h +9 -1
@@ -924,7 +924,15 @@#define USB_DEVICE_ID_MS_TYPE_COVER_2 0x07a9#define USB_DEVICE_ID_MS_POWER_COVER 0x07da#define USB_DEVICE_ID_MS_SURFACE3_COVER 0x07de -#define USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER 0x02fd +/* +* For a description of the Xbox controller models, refer to: +* https://en.wikipedia.org/wiki/Xbox_Wireless_Controller#Summary +*/ +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708 0x02fd +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708_BLE 0x0b20 +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1914 0x0b13 +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797 0x0b05 +#define USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797_BLE 0x0b22#define USB_DEVICE_ID_MS_PIXART_MOUSE 0x00cb#define USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS 0x02e0#define USB_DEVICE_ID_MS_MOUSE_0783 0x0783
drivers/hid/hid-microsoft.c +10 -1
@@ -446,7 +446,16 @@ static const struct hid_device_id ms_devices[] = { .driver_data = MS_PRESENTER }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, 0x091B), .driver_data = MS_SURFACE_DIAL }, - { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_ONE_S_CONTROLLER), + + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1708_BLE), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1914), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797), + .driver_data = MS_QUIRK_FF }, + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_XBOX_CONTROLLER_MODEL_1797_BLE), .driver_data = MS_QUIRK_FF }, { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_8BITDO_SN30_PRO_PLUS), .driver_data = MS_QUIRK_FF },
drivers/hid/wacom_wac.c +3 -1
@@ -1921,12 +1921,14 @@ static void wacom_map_usage(struct input_dev *input, struct hid_usage *usage,int fmax = field->logical_maximum;unsigned int equivalent_usage =wacom_equivalent_usage (usage->hid);int resolution_code = code; -int resolution =hidinput_calc_abs_res (field, resolution_code); +int resolution;if (equivalent_usage ==HID_DG_TWIST ) { resolution_code =ABS_RZ ; } + resolution =hidinput_calc_abs_res (field, resolution_code); +if (equivalent_usage ==HID_GD_X ) { fmin += features->offset_left; fmax -= features->offset_right;
drivers/hwmon/ltc2992.c +7 -1
@@ -875,8 +875,14 @@ static int ltc2992_parse_dt(struct ltc2992_state *st) } ret =fwnode_property_read_u32 (child,"shunt-resistor-micro-ohms" , &val); -if (!ret) +if (!ret) { +if (!val) { +fwnode_handle_put (child); +return dev_err_probe (&st->client->dev, -EINVAL , +"shunt resistor value cannot be zero\n" ); + } st->r_sense_uohm[addr] = val; + } }return 0 ;
drivers/hwmon/pc87360.c +5 -1
@@ -323,7 +323,11 @@ static struct pc87360_data *pc87360_update_device(struct device *dev) }/* Voltages */ -for (i =0 ; i < data->innr; i++) { +/* +* The min() below does not have any practical meaning and is +* only needed to silence a warning observed with gcc 12+. +*/ +for (i =0 ; i <min (data->innr,ARRAY_SIZE (data->in)); i++) { data->in_status[i] =pc87360_read_value (data,LD_IN , i,PC87365_REG_IN_STATUS );/* Clear bits */
drivers/i2c/busses/i2c-qcom-geni.c +3 -1
@@ -990,8 +990,10 @@ static int __maybe_unused geni_i2c_runtime_resume(struct device *dev)return ret; ret =clk_prepare_enable (gi2c->core_clk); -if (ret) +if (ret) { +geni_icc_disable (&gi2c->se);return ret; + } ret =geni_se_resources_on (&gi2c->se);if (ret) {
drivers/i2c/busses/i2c-riic.c +1 -1
@@ -314,7 +314,7 @@ static int riic_init_hw(struct riic_dev *riic, struct i2c_timings *t)* frequency with only 62 clock ticks max (31 high, 31 low). * Aim for a duty of 60% LOW, 40% HIGH. */ - total_ticks =DIV_ROUND_UP (rate, t->bus_freq_hz); + total_ticks =DIV_ROUND_UP (rate, t->bus_freq_hz ?:1 );for (cks =0 ; cks <7 ; cks++) {/*
drivers/i2c/busses/i2c-tegra.c +25 -16
142 lines not on this page · raw message
drivers/i3c/master/mipi-i3c-hci/dma.c +3 -2
@@ -345,6 +345,8 @@ static void hci_dma_unmap_xfer(struct i3c_hci *hci,for (i =0 ; i < n; i++) { xfer = xfer_list + i; +if (!xfer->data) +continue ;dma_unmap_single (&hci->master.dev, xfer->data_dma, xfer->data_len, xfer->rnw ?DMA_FROM_DEVICE :DMA_TO_DEVICE );
@@ -450,10 +452,9 @@ static bool hci_dma_dequeue_xfer(struct i3c_hci *hci,/* * We're deep in it if ever this condition is ever met. * Hardware might still be writing to memory, etc. -* Better suspend the world than risking silent corruption. */ dev_crit (&hci->master.dev,"unable to abort the ring\n" ); -BUG (); +WARN_ON (1 ); }for (i =0 ; i < n; i++) {
drivers/infiniband/hw/hfi1/chip.c +3 -2
@@ -13183,15 +13183,16 @@ static void read_mod_write(struct hfi1_devdata *dd, u16 src, u64 bits, {u64 reg;u16 idx = src /BITS_PER_REGISTER ; +unsigned long flags; -spin_lock (&dd->irq_src_lock); +spin_lock_irqsave (&dd->irq_src_lock, flags); reg =read_csr (dd,CCE_INT_MASK + (8 * idx));if (set) reg |= bits;else reg &= ~bits;write_csr (dd,CCE_INT_MASK + (8 * idx), reg); -spin_unlock (&dd->irq_src_lock); +spin_unlock_irqrestore (&dd->irq_src_lock, flags); }/**
drivers/infiniband/ulp/rtrs/rtrs.c +1 -1
@@ -255,7 +255,7 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,static int create_qp (struct rtrs_con *con,struct ib_pd *pd,u32 max_send_wr,u32 max_recv_wr,u32 max_sge) { -struct ib_qp_init_attr init_attr = {NULL }; +struct ib_qp_init_attr init_attr = {};struct rdma_cm_id *cm_id = con->cm_id;int ret;
drivers/input/input-mt.c +3 -0
@@ -46,6 +46,9 @@ int input_mt_init_slots(struct input_dev *dev, unsigned int num_slots,return 0 ;if (mt)return mt->num_slots != num_slots ? -EINVAL :0 ; +/* Arbitrary limit for avoiding too large memory allocation. */ +if (num_slots >1024 ) +return -EINVAL ; mt =kzalloc (struct_size (mt, slots, num_slots),GFP_KERNEL );if (!mt)
drivers/input/serio/i8042-acpipnpio.h +8 -12
@@ -83,6 +83,7 @@ static inline void i8042_write_command(int val)#define SERIO_QUIRK_KBDRESET BIT(12)#define SERIO_QUIRK_DRITEK BIT(13)#define SERIO_QUIRK_NOPNP BIT(14) +#define SERIO_QUIRK_FORCENORESTORE BIT(15)/* Quirk table for different mainboards. Options similar or identical to i8042 * module parameters.
@@ -1149,18 +1150,10 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = { SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP) }, { -/* -* Setting SERIO_QUIRK_NOMUX or SERIO_QUIRK_RESET_ALWAYS makes -* the keyboard very laggy for ~5 seconds after boot and -* sometimes also after resume. -* However both are required for the keyboard to not fail -* completely sometimes after boot or resume. -*/ .matches = { DMI_MATCH(DMI_BOARD_NAME, "N150CU"), }, - .driver_data = (void *)(SERIO_QUIRK_NOMUX |SERIO_QUIRK_RESET_ALWAYS | -SERIO_QUIRK_NOLOOP |SERIO_QUIRK_NOPNP ) + .driver_data = (void *)(SERIO_QUIRK_FORCENORESTORE ) }, { .matches = {
@@ -1685,6 +1678,8 @@ static void __init i8042_check_quirks(void)if (quirks &SERIO_QUIRK_NOPNP ) i8042_nopnp = true;#endif +if (quirks &SERIO_QUIRK_FORCENORESTORE ) + i8042_forcenorestore = true; }#else static inline void i8042_check_quirks (void ) {}
@@ -1718,7 +1713,7 @@ static int __init i8042_platform_init(void)i8042_check_quirks (); - pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s\n", + pr_debug("Active quirks (empty means none):%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n", i8042_nokbd ? " nokbd" : "", i8042_noaux ? " noaux" : "", i8042_nomux ? " nomux" : "",
@@ -1738,10 +1733,11 @@ static int __init i8042_platform_init(void) "",#endif #ifdef CONFIG_PNP - i8042_nopnp ? " nopnp" : ""); + i8042_nopnp ?" nopnp" :"" , #else - ""); +"" , #endif + i8042_forcenorestore ? " forcenorestore" : ""); retval =i8042_pnp_init ();if (retval)
drivers/input/serio/i8042.c +7 -3
@@ -115,6 +115,10 @@ module_param_named(nopnp, i8042_nopnp, bool, 0);MODULE_PARM_DESC (nopnp,"Do not use PNP to detect controller settings" );#endif +static bool i8042_forcenorestore; +module_param_named (forcenorestore, i8042_forcenorestore, bool,0 ); +MODULE_PARM_DESC (forcenorestore,"Force no restore on s3 resume, copying s2idle behaviour" ); +#define DEBUG #ifdef DEBUG static bool i8042_debug;
@@ -1232,7 +1236,7 @@ static int i8042_pm_suspend(struct device *dev) {int i; -if (pm_suspend_via_firmware ()) +if (!i8042_forcenorestore &&pm_suspend_via_firmware ())i8042_controller_reset (true);/* Set up serio interrupts for system wakeup. */
@@ -1248,7 +1252,7 @@ static int i8042_pm_suspend(struct device *dev)static int i8042_pm_resume_noirq (struct device *dev) { -if (!pm_resume_via_firmware ()) +if (i8042_forcenorestore || !pm_resume_via_firmware ())i8042_interrupt (0 ,NULL );return 0 ;
@@ -1271,7 +1275,7 @@ static int i8042_pm_resume(struct device *dev)* not restore the controller state to whatever it had been at boot * time, so we do not need to do anything. */ -if (!pm_suspend_via_firmware ()) +if (i8042_forcenorestore || !pm_suspend_via_firmware ())return 0 ;/*
drivers/irqchip/irq-gic-v3-its.c +0 -2
@@ -4476,8 +4476,6 @@ static int its_vpe_irq_domain_alloc(struct irq_domain *domain, unsigned int virqstruct page *vprop_page;int base, nr_ids, i, err =0 ; -BUG_ON (!vm); - bitmap =its_lpi_alloc (roundup_pow_of_two (nr_irqs), &base, &nr_ids);if (!bitmap)return -ENOMEM ;
drivers/irqchip/irq-renesas-rzg2l.c +2 -3
@@ -132,7 +132,7 @@ static void rzg2l_irqc_irq_disable(struct irq_data *d)raw_spin_lock (&priv->lock); reg =readl_relaxed (priv->base +TSSR (tssr_index)); - reg &= ~(TSSEL_MASK <<TSSEL_SHIFT (tssr_offset)); + reg &= ~(TIEN <<TSSEL_SHIFT (tssr_offset));writel_relaxed (reg, priv->base +TSSR (tssr_index));raw_spin_unlock (&priv->lock); }
@@ -145,7 +145,6 @@ static void rzg2l_irqc_irq_enable(struct irq_data *d)if (hw_irq >=IRQC_TINT_START && hw_irq <IRQC_NUM_IRQ ) {struct rzg2l_irqc_priv *priv =irq_data_to_priv (d); -unsigned long tint = (uintptr_t )d->chip_data;u32 offset = hw_irq -IRQC_TINT_START ;u32 tssr_offset =TSSR_OFFSET (offset);u8 tssr_index =TSSR_INDEX (offset);
@@ -153,7 +152,7 @@ static void rzg2l_irqc_irq_enable(struct irq_data *d)raw_spin_lock (&priv->lock); reg =readl_relaxed (priv->base +TSSR (tssr_index)); - reg |= (TIEN | tint) <<TSSEL_SHIFT (tssr_offset); + reg |=TIEN <<TSSEL_SHIFT (tssr_offset);writel_relaxed (reg, priv->base +TSSR (tssr_index));raw_spin_unlock (&priv->lock); }
drivers/md/dm-clone-metadata.c +0 -5
@@ -465,11 +465,6 @@ static void __destroy_persistent_data_structures(struct dm_clone_metadata *cmd)/*---------------------------------------------------------------------------*/ -static size_t bitmap_size (unsigned long nr_bits) -{ -return BITS_TO_LONGS (nr_bits) *sizeof (long ); -} -static int __dirty_map_init (struct dirty_map *dmap,unsigned long nr_words,unsigned long nr_regions) {
drivers/md/dm-ioctl.c +20 -2
@@ -1156,8 +1156,26 @@ static int do_resume(struct dm_ioctl *param) suspend_flags &= ~DM_SUSPEND_LOCKFS_FLAG ;if (param->flags &DM_NOFLUSH_FLAG ) suspend_flags |=DM_SUSPEND_NOFLUSH_FLAG ; -if (!dm_suspended_md (md)) -dm_suspend (md, suspend_flags); +if (!dm_suspended_md (md)) { + r =dm_suspend (md, suspend_flags); +if (r) { +down_write (&_hash_lock); + hc =dm_get_mdptr (md); +if (hc && !hc->new_map) { + hc->new_map = new_map; + new_map =NULL ; + }else { + r = -ENXIO ; + } +up_write (&_hash_lock); +if (new_map) { +dm_sync_table (md); +dm_table_destroy (new_map); + } +dm_put (md); +return r; + } + } old_size =dm_get_size (md); old_map =dm_swap_table (md, new_map);
drivers/md/dm.c +2 -2
@@ -2511,7 +2511,7 @@ static int dm_wait_for_bios_completion(struct mapped_device *md, unsigned int tabreak ;if (signal_pending_state (task_state, current)) { - r = -EINTR ; + r = -ERESTARTSYS ;break ; }
@@ -2536,7 +2536,7 @@ static int dm_wait_for_completion(struct mapped_device *md, unsigned int task_stbreak ;if (signal_pending_state (task_state, current)) { - r = -EINTR ; + r = -ERESTARTSYS ;break ; }
drivers/md/md.c +0 -5
@@ -7614,11 +7614,6 @@ static int md_ioctl(struct block_device *bdev, fmode_t mode, mddev = bdev->bd_disk->private_data; -if (!mddev) { -BUG (); - goto out; - } -/* Some actions do not requires the mutex */ switch (cmd) {case GET_ARRAY_INFO :
drivers/md/persistent-data/dm-space-map-metadata.c +2 -2
@@ -274,7 +274,7 @@ static void sm_metadata_destroy(struct dm_space_map *sm) { struct sm_metadata *smm = container_of(sm, struct sm_metadata, sm); -kfree (smm); +kvfree (smm); }static int sm_metadata_get_nr_blocks (struct dm_space_map *sm,dm_block_t *count)
@@ -768,7 +768,7 @@ struct dm_space_map *dm_sm_metadata_init(void) {struct sm_metadata *smm; - smm =kmalloc (sizeof (*smm),GFP_KERNEL ); + smm =kvmalloc (sizeof (*smm),GFP_KERNEL );if (!smm)return ERR_PTR (-ENOMEM );
drivers/md/raid5-cache.c +25 -22
178 lines not on this page · raw message
drivers/media/dvb-core/dvb_frontend.c +8 -4
@@ -2160,7 +2160,8 @@ static int dvb_frontend_handle_compat_ioctl(struct file *file, unsigned int cmd,if (!tvps->num || (tvps->num >DTV_IOCTL_MAX_MSGS ))return -EINVAL ; - tvp =memdup_user (compat_ptr (tvps->props), tvps->num *sizeof (*tvp)); + tvp =memdup_array_user (compat_ptr (tvps->props), + tvps->num,sizeof (*tvp));if (IS_ERR (tvp))return PTR_ERR (tvp);
@@ -2191,7 +2192,8 @@ static int dvb_frontend_handle_compat_ioctl(struct file *file, unsigned int cmd,if (!tvps->num || (tvps->num >DTV_IOCTL_MAX_MSGS ))return -EINVAL ; - tvp =memdup_user (compat_ptr (tvps->props), tvps->num *sizeof (*tvp)); + tvp =memdup_array_user (compat_ptr (tvps->props), + tvps->num,sizeof (*tvp));if (IS_ERR (tvp))return PTR_ERR (tvp);
@@ -2368,7 +2370,8 @@ static int dvb_get_property(struct dvb_frontend *fe, struct file *file,if (!tvps->num || tvps->num >DTV_IOCTL_MAX_MSGS )return -EINVAL ; - tvp =memdup_user ((void __user *)tvps->props, tvps->num *sizeof (*tvp)); + tvp =memdup_array_user ((void __user *)tvps->props, + tvps->num,sizeof (*tvp));if (IS_ERR (tvp))return PTR_ERR (tvp);
@@ -2446,7 +2449,8 @@ static int dvb_frontend_handle_ioctl(struct file *file,if (!tvps->num || (tvps->num >DTV_IOCTL_MAX_MSGS ))return -EINVAL ; - tvp =memdup_user ((void __user *)tvps->props, tvps->num *sizeof (*tvp)); + tvp =memdup_array_user ((void __user *)tvps->props, + tvps->num,sizeof (*tvp));if (IS_ERR (tvp))return PTR_ERR (tvp);
drivers/media/pci/cx23885/cx23885-video.c +8 -0
@@ -1354,6 +1354,10 @@ int cx23885_video_register(struct cx23885_dev *dev)/* register Video device */ dev->video_dev =cx23885_vdev_init (dev, dev->pci, &cx23885_video_template,"video" ); +if (!dev->video_dev) { + err = -ENOMEM ; + goto fail_unreg; + } dev->video_dev->queue = &dev->vb2_vidq; dev->video_dev->device_caps =V4L2_CAP_READWRITE |V4L2_CAP_STREAMING |V4L2_CAP_AUDIO |V4L2_CAP_VIDEO_CAPTURE ;
@@ -1382,6 +1386,10 @@ int cx23885_video_register(struct cx23885_dev *dev)/* register VBI device */ dev->vbi_dev =cx23885_vdev_init (dev, dev->pci, &cx23885_vbi_template,"vbi" ); +if (!dev->vbi_dev) { + err = -ENOMEM ; + goto fail_unreg; + } dev->vbi_dev->queue = &dev->vb2_vbiq; dev->vbi_dev->device_caps =V4L2_CAP_READWRITE |V4L2_CAP_STREAMING |V4L2_CAP_AUDIO |V4L2_CAP_VBI_CAPTURE ;
drivers/media/pci/solo6x10/solo6x10-offsets.h +5 -5
@@ -57,16 +57,16 @@#define SOLO_MP4E_EXT_ADDR (__solo) \ (SOLO_EREF_EXT_ADDR(__solo) + SOLO_EREF_EXT_AREA(__solo))#define SOLO_MP4E_EXT_SIZE (__solo) \ - max((__solo->nr_chans * 0x00080000), \ - min(((__solo->sdram_size - SOLO_MP4E_EXT_ADDR(__solo)) - \ - __SOLO_JPEG_MIN_SIZE(__solo)), 0x00ff0000)) + clamp(__solo->sdram_size - SOLO_MP4E_EXT_ADDR(__solo) - \ + __SOLO_JPEG_MIN_SIZE(__solo), \ + __solo->nr_chans * 0x00080000, 0x00ff0000)#define __SOLO_JPEG_MIN_SIZE (__solo) (__solo->nr_chans * 0x00080000)#define SOLO_JPEG_EXT_ADDR (__solo) \ (SOLO_MP4E_EXT_ADDR(__solo) + SOLO_MP4E_EXT_SIZE(__solo))#define SOLO_JPEG_EXT_SIZE (__solo) \ - max(__SOLO_JPEG_MIN_SIZE(__solo), \ - min((__solo->sdram_size - SOLO_JPEG_EXT_ADDR(__solo)), 0x00ff0000)) + clamp(__solo->sdram_size - SOLO_JPEG_EXT_ADDR(__solo), \ + __SOLO_JPEG_MIN_SIZE(__solo), 0x00ff0000)#define SOLO_SDRAM_END (__solo) \ (SOLO_JPEG_EXT_ADDR(__solo) + SOLO_JPEG_EXT_SIZE(__solo))
drivers/media/platform/qcom/venus/pm_helpers.c +1 -1
@@ -870,7 +870,7 @@ static int vcodec_domains_get(struct venus_core *core) pd =dev_pm_domain_attach_by_name (dev, res->vcodec_pmdomains[i]);if (IS_ERR_OR_NULL (pd)) -return PTR_ERR (pd) ? : -ENODATA ; +return pd ?PTR_ERR (pd) : -ENODATA ; core->pmdomains[i] = pd; }
drivers/media/platform/samsung/s5p-mfc/s5p_mfc_enc.c +1 -1
@@ -1297,7 +1297,7 @@ static int enc_post_frame_start(struct s5p_mfc_ctx *ctx)if (ctx->state ==MFCINST_FINISHING && ctx->ref_queue_cnt ==0 ) src_ready = false;if (!src_ready || ctx->dst_queue_cnt ==0 ) -clear_work_bit (ctx); +clear_work_bit_irqsave (ctx);return 0 ; }
drivers/media/radio/radio-isa.c +1 -1
@@ -36,7 +36,7 @@ static int radio_isa_querycap(struct file *file, void *priv,strscpy (v->driver, isa->drv->driver.driver.name,sizeof (v->driver));strscpy (v->card, isa->drv->card,sizeof (v->card)); -snprintf (v->bus_info,sizeof (v->bus_info),"ISA:%s" , isa->v4l2_dev.name); +snprintf (v->bus_info,sizeof (v->bus_info),"ISA:%s" ,dev_name (isa->v4l2_dev.dev));return 0 ; }
drivers/memory/stm32-fmc2-ebi.c +88 -34
242 lines not on this page · raw message
drivers/memory/tegra/tegra186.c +3 -0
@@ -74,6 +74,9 @@ static void tegra186_mc_client_sid_override(struct tegra_mc *mc, {u32 value, old; +if (client->regs.sid.security ==0 && client->regs.sid.override ==0 ) +return ; + value =readl (mc->regs + client->regs.sid.security);if ((value &MC_SID_STREAMID_SECURITY_OVERRIDE ) ==0 ) {/*
drivers/mmc/core/mmc_test.c +5 -4
@@ -3109,13 +3109,13 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf, test->buffer =kzalloc (BUFFER_SIZE ,GFP_KERNEL );#ifdef CONFIG_HIGHMEM test->highmem =alloc_pages (GFP_KERNEL | __GFP_HIGHMEM,BUFFER_ORDER ); +if (!test->highmem) { + count = -ENOMEM ; + goto free_test_buffer; + }#endif -#ifdef CONFIG_HIGHMEM -if (test->buffer && test->highmem) { -#else if (test->buffer) { -#endif mutex_lock (&mmc_test_lock);mmc_test_run (test, testcase);mutex_unlock (&mmc_test_lock);
@@ -3123,6 +3123,7 @@ static ssize_t mtf_test_write(struct file *file, const char __user *buf,#ifdef CONFIG_HIGHMEM __free_pages (test->highmem,BUFFER_ORDER ); +free_test_buffer:#endif kfree (test->buffer);kfree (test);
drivers/mmc/host/dw_mmc.c +8 -0
@@ -3295,6 +3295,10 @@ int dw_mci_probe(struct dw_mci *host) host->biu_clk =devm_clk_get (host->dev,"biu" );if (IS_ERR (host->biu_clk)) {dev_dbg (host->dev,"biu clock not available\n" ); + ret =PTR_ERR (host->biu_clk); +if (ret == -EPROBE_DEFER ) +return ret; + }else { ret =clk_prepare_enable (host->biu_clk);if (ret) {
@@ -3306,6 +3310,10 @@ int dw_mci_probe(struct dw_mci *host) host->ciu_clk =devm_clk_get (host->dev,"ciu" );if (IS_ERR (host->ciu_clk)) {dev_dbg (host->dev,"ciu clock not available\n" ); + ret =PTR_ERR (host->ciu_clk); +if (ret == -EPROBE_DEFER ) + goto err_clk_biu; + host->bus_hz = host->pdata->bus_hz; }else { ret =clk_prepare_enable (host->ciu_clk);
drivers/net/bonding/bond_main.c +8 -13
@@ -578,7 +578,6 @@ static void bond_ipsec_del_sa_all(struct bonding *bond) }else { slave->dev->xfrmdev_ops->xdo_dev_state_delete (ipsec->xs); } - ipsec->xs->xso.real_dev =NULL ; }spin_unlock_bh (&bond->ipsec_lock);rcu_read_unlock ();
@@ -595,34 +594,30 @@ static bool bond_ipsec_offload_ok(struct sk_buff *skb, struct xfrm_state *xs)struct net_device *real_dev;struct slave *curr_active;struct bonding *bond; -int err; +bool ok = false; bond =netdev_priv (bond_dev);rcu_read_lock (); curr_active =rcu_dereference (bond->curr_active_slave); +if (!curr_active) + goto out; real_dev = curr_active->dev; -if (BOND_MODE (bond) !=BOND_MODE_ACTIVEBACKUP ) { - err = false; +if (BOND_MODE (bond) !=BOND_MODE_ACTIVEBACKUP ) goto out; - } -if (!xs->xso.real_dev) { - err = false; +if (!xs->xso.real_dev) goto out; - }if (!real_dev->xfrmdev_ops || !real_dev->xfrmdev_ops->xdo_dev_offload_ok || -netif_is_bond_master (real_dev)) { - err = false; +netif_is_bond_master (real_dev)) goto out; - } - err = real_dev->xfrmdev_ops->xdo_dev_offload_ok (skb, xs); + ok = real_dev->xfrmdev_ops->xdo_dev_offload_ok (skb, xs); out:rcu_read_unlock (); -return err; +return ok; }static const struct xfrmdev_ops bond_xfrmdev_ops = {
drivers/net/bonding/bond_options.c +1 -1
@@ -932,7 +932,7 @@ static int bond_option_active_slave_set(struct bonding *bond,/* check to see if we are clearing active */ if (!slave_dev) {netdev_dbg (bond->dev,"Clearing current active slave\n" ); -RCU_INIT_POINTER (bond->curr_active_slave,NULL ); +bond_change_active_slave (bond,NULL );bond_select_active_slave (bond); }else {struct slave *old_active =rtnl_dereference (bond->curr_active_slave);
drivers/net/dsa/mv88e6xxx/global1_atu.c +2 -1
@@ -453,7 +453,8 @@ static irqreturn_t mv88e6xxx_g1_atu_prob_irq_thread_fn(int irq, void *dev_id)trace_mv88e6xxx_atu_full_violation (chip->dev, spid, entry.portvec, entry.mac, fid); - chip->ports[spid].atu_full_violation++; +if (spid <ARRAY_SIZE (chip->ports)) + chip->ports[spid].atu_full_violation++; }mv88e6xxx_reg_unlock (chip);
drivers/net/dsa/ocelot/felix.c +11 -0
@@ -528,7 +528,9 @@ static int felix_tag_8021q_setup(struct dsa_switch *ds)* so we need to be careful that there are no extra frames to be * dequeued over MMIO, since we would never know to discard them. */ +ocelot_lock_xtr_grp_bh (ocelot,0 );ocelot_drain_cpu_queue (ocelot,0 ); +ocelot_unlock_xtr_grp_bh (ocelot,0 );return 0 ; }
@@ -1493,6 +1495,8 @@ static void felix_port_deferred_xmit(struct kthread_work *work)int port = xmit_work->dp->index;int retries =10 ; +ocelot_lock_inj_grp (ocelot,0 ); + do { if (ocelot_can_inject(ocelot, 0)) break;
@@ -1501,6 +1505,7 @@ static void felix_port_deferred_xmit(struct kthread_work *work) }while (--retries);if (!retries) { +ocelot_unlock_inj_grp (ocelot,0 );dev_err (ocelot->dev,"port %d failed to inject skb\n" , port);ocelot_port_purge_txtstamp_skb (ocelot, port, skb);
@@ -1510,6 +1515,8 @@ static void felix_port_deferred_xmit(struct kthread_work *work)ocelot_port_inject_frame (ocelot, port,0 , rew_op, skb); +ocelot_unlock_inj_grp (ocelot,0 ); +consume_skb (skb);kfree (xmit_work); }
@@ -1658,6 +1665,8 @@ static bool felix_check_xtr_pkt(struct ocelot *ocelot)if (!felix->info->quirk_no_xtr_irq)return false; +ocelot_lock_xtr_grp (ocelot, grp); +while (ocelot_read (ocelot,QS_XTR_DATA_PRESENT ) &BIT (grp)) {struct sk_buff *skb;unsigned int type;
@@ -1694,6 +1703,8 @@ static bool felix_check_xtr_pkt(struct ocelot *ocelot)ocelot_drain_cpu_queue (ocelot,0 ); } +ocelot_unlock_xtr_grp (ocelot, grp); +return true; }
drivers/net/dsa/vitesse-vsc73xx-core.c +53 -16
134 lines not on this page · raw message
drivers/net/ethernet/chelsio/cxgb4/cxgb4_filter.c +2 -1
@@ -1244,7 +1244,8 @@ static u64 hash_filter_ntuple(struct ch_filter_specification *fs,* in the Compressed Filter Tuple. */ if (tp->vlan_shift >=0 && fs->mask.ivlan) - ntuple |= (FT_VLAN_VLD_F | fs->val.ivlan) << tp->vlan_shift; + ntuple |= (u64)(FT_VLAN_VLD_F | + fs->val.ivlan) << tp->vlan_shift;if (tp->port_shift >=0 && fs->mask.iport) ntuple |= (u64 )fs->val.iport << tp->port_shift;
drivers/net/ethernet/freescale/dpaa2/dpaa2-switch.c +4 -3
@@ -2583,13 +2583,14 @@ static int dpaa2_switch_refill_bp(struct ethsw_core *ethsw)static int dpaa2_switch_seed_bp (struct ethsw_core *ethsw) { -int *count, i; +int *count, ret, i;for (i =0 ; i <DPAA2_ETHSW_NUM_BUFS ; i +=BUFS_PER_CMD ) { + ret =dpaa2_switch_add_bufs (ethsw, ethsw->bpid); count = ðsw->buf_count; - *count +=dpaa2_switch_add_bufs (ethsw, ethsw->bpid); + *count += ret; -if (unlikely (*count <BUFS_PER_CMD )) +if (unlikely (ret <BUFS_PER_CMD ))return -ENOMEM ; }
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c +3 -0
@@ -5728,6 +5728,9 @@ static int hns3_reset_notify_uninit_enet(struct hnae3_handle *handle)struct net_device *netdev = handle->kinfo.netdev;struct hns3_nic_priv *priv =netdev_priv (netdev); +if (!test_bit (HNS3_NIC_STATE_DOWN , &priv->state)) +hns3_nic_net_stop (netdev); +if (!test_and_clear_bit (HNS3_NIC_STATE_INITED , &priv->state)) {netdev_warn (netdev,"already uninitialized\n" );return 0 ;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +20 -8
@@ -2696,8 +2696,17 @@ static int hclge_cfg_mac_speed_dup_h(struct hnae3_handle *handle, int speed, {struct hclge_vport *vport =hclge_get_vport (handle);struct hclge_dev *hdev = vport->back; +int ret; + + ret =hclge_cfg_mac_speed_dup (hdev, speed, duplex, lane_num); + +if (ret) +return ret; -return hclge_cfg_mac_speed_dup (hdev, speed, duplex, lane_num); + hdev->hw.mac.req_speed = speed; + hdev->hw.mac.req_duplex = duplex; + +return 0 ; }static int hclge_set_autoneg_en (struct hclge_dev *hdev,bool enable)
@@ -2999,17 +3008,20 @@ static int hclge_mac_init(struct hclge_dev *hdev)if (!test_bit (HCLGE_STATE_RST_HANDLING , &hdev->state)) hdev->hw.mac.duplex =HCLGE_MAC_FULL ; - ret =hclge_cfg_mac_speed_dup_hw (hdev, hdev->hw.mac.speed, - hdev->hw.mac.duplex, hdev->hw.mac.lane_num); -if (ret) -return ret; -if (hdev->hw.mac.support_autoneg) { ret =hclge_set_autoneg_en (hdev, hdev->hw.mac.autoneg);if (ret)return ret; } +if (!hdev->hw.mac.autoneg) { + ret =hclge_cfg_mac_speed_dup_hw (hdev, hdev->hw.mac.req_speed, + hdev->hw.mac.req_duplex, + hdev->hw.mac.lane_num); +if (ret) +return ret; + } + mac->link =0 ;if (mac->user_fec_mode &BIT (HNAE3_FEC_USER_DEF )) {
@@ -11538,8 +11550,8 @@ static void hclge_reset_done(struct hnae3_ae_dev *ae_dev)dev_err (&hdev->pdev->dev,"fail to rebuild, ret=%d\n" , ret); hdev->reset_type =HNAE3_NONE_RESET ; -clear_bit (HCLGE_STATE_RST_HANDLING , &hdev->state); -up (&hdev->reset_sem); +if (test_and_clear_bit (HCLGE_STATE_RST_HANDLING , &hdev->state)) +up (&hdev->reset_sem); }static void hclge_clear_resetting_state (struct hclge_dev *hdev)
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c +4 -3
@@ -1124,10 +1124,11 @@ void hclge_mbx_handler(struct hclge_dev *hdev) req = (struct hclge_mbx_vf_to_pf_cmd *)desc->data; flag =le16_to_cpu (crq->desc[crq->next_to_use].flag); -if (unlikely (!hnae3_get_bit (flag,HCLGE_CMDQ_RX_OUTVLD_B ))) { +if (unlikely (!hnae3_get_bit (flag,HCLGE_CMDQ_RX_OUTVLD_B ) || + req->mbx_src_vfid > hdev->num_req_vfs)) {dev_warn (&hdev->pdev->dev, -"dropped invalid mailbox message, code = %u\n" , - req->msg.code); +"dropped invalid mailbox message, code = %u, vfid = %u\n" , + req->msg.code, req->mbx_src_vfid);/* dropping/not processing this invalid message */ crq->desc[crq->next_to_use].flag =0 ;
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mdio.c +3 -0
@@ -191,6 +191,9 @@ static void hclge_mac_adjust_link(struct net_device *netdev)if (ret)netdev_err (netdev,"failed to adjust link.\n" ); + hdev->hw.mac.req_speed = (u32 )speed; + hdev->hw.mac.req_duplex = (u8 )duplex; + ret =hclge_cfg_flowctrl (hdev);if (ret)netdev_err (netdev,"failed to configure flow control.\n" );
drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c +2 -2
@@ -1764,8 +1764,8 @@ static void hclgevf_reset_done(struct hnae3_ae_dev *ae_dev) ret); hdev->reset_type =HNAE3_NONE_RESET ; -clear_bit (HCLGEVF_STATE_RST_HANDLING , &hdev->state); -up (&hdev->reset_sem); +if (test_and_clear_bit (HCLGEVF_STATE_RST_HANDLING , &hdev->state)) +up (&hdev->reset_sem); }static u32 hclgevf_get_fw_version (struct hnae3_handle *handle)
drivers/net/ethernet/i825xx/sun3_82586.c +1 -1
@@ -986,7 +986,7 @@ static void sun3_82586_timeout(struct net_device *dev, unsigned int txqueue) {#ifdef DEBUG printk ("%s: xmitter timed out, try to restart! stat: %02x\n" ,dev->name,p->scb->cus); -printk ("%s: command-stats: %04x %04x\n" ,dev->name,swab16 (p->xmit_cmds[0 ]->cmd_status),swab16 (p->xmit_cmds[1 ]->cmd_status)); +printk ("%s: command-stats: %04x\n" , dev->name,swab16 (p->xmit_cmds[0 ]->cmd_status));printk ("%s: check, whether you set the right interrupt number!\n" ,dev->name);#endif sun3_82586_close (dev);
drivers/net/ethernet/intel/ice/ice_base.c +1 -3
@@ -355,9 +355,6 @@ static unsigned int ice_rx_offset(struct ice_rx_ring *rx_ring) {if (ice_ring_uses_build_skb (rx_ring))return ICE_SKB_PAD ; -else if (ice_is_xdp_ena_vsi (rx_ring->vsi)) -return XDP_PACKET_HEADROOM ; -return 0 ; }
@@ -537,6 +534,7 @@ int ice_vsi_cfg_rxq(struct ice_rx_ring *ring) } } +xdp_init_buff (&ring->xdp,ice_rx_pg_size (ring) /2 , &ring->xdp_rxq); err =ice_setup_rx_ctx (ring);if (err) { dev_err(dev, "ice_setup_rx_ctx failed for RxQ %d, err %d\n",
drivers/net/ethernet/intel/ice/ice_lib.c +2 -6
@@ -1818,8 +1818,8 @@ void ice_update_eth_stats(struct ice_vsi *vsi)void ice_vsi_cfg_frame_size (struct ice_vsi *vsi) {if (!vsi->netdev ||test_bit (ICE_FLAG_LEGACY_RX , vsi->back->flags)) { - vsi->max_frame =ICE_AQ_SET_MAC_FRAME_SIZE_MAX ; - vsi->rx_buf_len =ICE_RXBUF_2048 ; + vsi->max_frame =ICE_MAX_FRAME_LEGACY_RX ; + vsi->rx_buf_len =ICE_RXBUF_1664 ;#if (PAGE_SIZE <8192 ) } else if (!ICE_2K_TOO_SMALL_WITH_PADDING && (vsi->netdev->mtu <=ETH_DATA_LEN )) {
@@ -1828,11 +1828,7 @@ void ice_vsi_cfg_frame_size(struct ice_vsi *vsi)#endif }else { vsi->max_frame =ICE_AQ_SET_MAC_FRAME_SIZE_MAX ; -#if (PAGE_SIZE <8192 ) vsi->rx_buf_len =ICE_RXBUF_3072 ; -#else - vsi->rx_buf_len =ICE_RXBUF_2048 ; -#endif } }
drivers/net/ethernet/intel/ice/ice_main.c +8 -2
@@ -7328,8 +7328,8 @@ static void ice_rebuild(struct ice_pf *pf, enum ice_reset_req reset_type)*/ static int ice_max_xdp_frame_size (struct ice_vsi *vsi) { -if (PAGE_SIZE >=8192 ||test_bit (ICE_FLAG_LEGACY_RX , vsi->back->flags)) -return ICE_RXBUF_2048 -XDP_PACKET_HEADROOM ; +if (test_bit (ICE_FLAG_LEGACY_RX , vsi->back->flags)) +return ICE_RXBUF_1664 ;else return ICE_RXBUF_3072 ; }
@@ -7362,6 +7362,12 @@ static int ice_change_mtu(struct net_device *netdev, int new_mtu) frame_size - ICE_ETH_PKT_HDR_PAD);return -EINVAL ; } + }else if (test_bit (ICE_FLAG_LEGACY_RX , pf->flags)) { +if (new_mtu +ICE_ETH_PKT_HDR_PAD >ICE_MAX_FRAME_LEGACY_RX ) { +netdev_err (netdev,"Too big MTU for legacy-rx; Max is %d\n" , +ICE_MAX_FRAME_LEGACY_RX -ICE_ETH_PKT_HDR_PAD ); +return -EINVAL ; + } }/* if a reset is in progress, wait for some time for it to complete */
drivers/net/ethernet/intel/ice/ice_txrx.c +54 -63
81 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_txrx.h +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/ice/ice_txrx_lib.c +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_defines.h +15 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_main.c +7 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_regs.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/intel/igc/igc_tsn.c +64 -0
64 lines not on this page · raw message
drivers/net/ethernet/intel/igc/igc_tsn.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/marvell/octeontx2/af/rvu_cpt.c +11 -12
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h +7 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c +10 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h +2 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c +44 -6
50 lines not on this page · raw message
drivers/net/ethernet/microsoft/mana/mana.h +1 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/microsoft/mana/mana_en.c +15 -9
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mscc/ocelot.c +84 -7
91 lines not on this page · raw message
drivers/net/ethernet/mscc/ocelot_fdma.c +1 -2
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/mscc/ocelot_vsc7514.c +4 -0
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet.h +9 -8
Lines of this file are not shown. View the raw message.
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +13 -12
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/fw/debugfs.c +5 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/intel/iwlwifi/mvm/scan.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/net/wireless/marvell/mwifiex/11n_rxreorder.c +1 -1
Lines of this file are not shown. View the raw message.
drivers/platform/surface/aggregator/controller.c +2 -1
Lines of this file are not shown. View the raw message.
drivers/s390/block/dasd_eckd.c +24 -32
56 lines not on this page · raw message
drivers/staging/iio/resolver/ad2s1210.c +4 -3
Lines of this file are not shown. View the raw message.
fs/binfmt_misc.c +168 -48
216 lines not on this page · raw message
fs/btrfs/send.c +47 -16
63 lines not on this page · raw message
fs/btrfs/tree-checker.c +69 -0
69 lines not on this page · raw message
fs/ext4/xattr.c +75 -83
158 lines not on this page · raw message
fs/gfs2/glops.c +20 -46
66 lines not on this page · raw message
fs/gfs2/super.c +146 -51
197 lines not on this page · raw message
fs/gfs2/util.c +29 -26
55 lines not on this page · raw message
fs/nfsd/nfssvc.c +21 -64
85 lines not on this page · raw message
fs/ntfs3/frecord.c +72 -3
75 lines not on this page · raw message
fs/quota/quota_tree.c +96 -32
128 lines not on this page · raw message
include/linux/dsa/ocelot.h +47 -0
47 lines not on this page · raw message
kernel/bpf/log.c new file +82 -0
82 lines not on this page · raw message
kernel/bpf/verifier.c +0 -69
69 lines not on this page · raw message
kernel/time/clocksource.c +20 -22
42 lines not on this page · raw message
mm/slab_common.c +11 -30
41 lines not on this page · raw message
net/bluetooth/smp.c +72 -72
144 lines not on this page · raw message
net/ipv6/netfilter/nf_conntrack_reasm.c +4 -0
Lines of this file are not shown. View the raw message.
net/mac80211/rx.c +207 -180
387 lines not on this page · raw message
net/netfilter/nf_tables_api.c +126 -83
209 lines not on this page · raw message
net/sched/sch_netem.c +29 -18
47 lines not on this page · raw message
net/wireless/util.c +135 -60
195 lines not on this page · raw message
scripts/rust_is_available.sh +35 -6
41 lines not on this page · raw message
tools/testing/selftests/bpf/progs/map_ptr_kern.c +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/bpf/test_lpm_map.c +9 -9
Lines of this file are not shown. View the raw message.
tools/testing/selftests/core/close_range_test.c +35 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/net_helper.sh new file +25 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro.sh +33 -24
57 lines not on this page · raw message
tools/testing/selftests/net/udpgro_bench.sh +3 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/udpgro_frglist.sh +3 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/tc-testing/tdc.py +0 -1
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.