Linux 5.15.166
Greg Kroah-Hartman
maintainerI'm announcing the release of the 5.15.166 kernel.
All users of the 5.15 kernel series must upgrade.
The updated 5.15.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-5.15.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
------------
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/mips/loongson64/reset.c | 38 +- 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/s390/include/asm/uv.h | 5 arch/s390/kernel/early.c | 12 arch/s390/kernel/smp.c | 4 arch/x86/kernel/process.c | 5 drivers/ata/libata-core.c | 3 drivers/atm/idt77252.c | 9 drivers/bluetooth/hci_ldisc.c | 3 drivers/char/xillybus/xillyusb.c | 42 ++ drivers/clocksource/arm_global_timer.c | 11 drivers/dma/dw/core.c | 89 ++++- drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c | 8 drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 3 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 5 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/hid/hid-ids.h | 10 drivers/hid/hid-microsoft.c | 11 drivers/hid/wacom_wac.c | 4 drivers/hwmon/ltc2992.c | 8 drivers/i2c/busses/i2c-riic.c | 2 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/irqchip/irq-gic-v3-its.c | 2 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/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/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/Makefile | 4 drivers/net/dsa/mv88e6xxx/global1_atu.c | 82 ++++ drivers/net/dsa/mv88e6xxx/trace.c | 6 drivers/net/dsa/mv88e6xxx/trace.h | 66 +++ 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 | 4 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_mbx.c | 7 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c | 4 drivers/net/ethernet/i825xx/sun3_82586.c | 2 drivers/net/ethernet/intel/ice/ice_txrx.c | 2 drivers/net/ethernet/intel/igc/igc_base.c | 29 + drivers/net/ethernet/intel/igc/igc_base.h | 2 drivers/net/ethernet/intel/igc/igc_defines.h | 16 drivers/net/ethernet/intel/igc/igc_main.c | 12 drivers/net/ethernet/intel/igc/igc_regs.h | 1 drivers/net/ethernet/intel/igc/igc_tsn.c | 113 +++++- drivers/net/ethernet/intel/igc/igc_tsn.h | 1 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/hw_channel.c | 62 ++- drivers/net/ethernet/microsoft/mana/mana.h | 1 drivers/net/ethernet/microsoft/mana/mana_en.c | 24 - drivers/net/ethernet/xilinx/xilinx_axienet.h | 17 - drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 25 - drivers/net/gtp.c | 5 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c | 6 drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 2 drivers/net/wireless/marvell/mwifiex/cfg80211.c | 32 + drivers/net/wireless/st/cw1200/txrx.c | 2 drivers/nfc/pn533/pn533.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/phy/xilinx/phy-zynqmp.c | 152 ++++++--- drivers/pinctrl/pinctrl-rockchip.c | 2 drivers/pinctrl/pinctrl-single.c | 2 drivers/platform/surface/aggregator/controller.c | 3 drivers/platform/x86/lg-laptop.c | 2 drivers/s390/block/dasd.c | 36 +- drivers/s390/block/dasd_3990_erp.c | 10 drivers/s390/block/dasd_eckd.c | 55 +-- drivers/s390/block/dasd_int.h | 2 drivers/s390/cio/idset.c | 12 drivers/scsi/aacraid/comminit.c | 2 drivers/scsi/lpfc/lpfc_sli.c | 2 drivers/scsi/scsi_transport_spi.c | 4 drivers/soc/qcom/cmd-db.c | 2 drivers/soundwire/stream.c | 8 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/usb/cdns3/cdnsp-gadget.h | 3 drivers/usb/cdns3/cdnsp-ring.c | 30 + drivers/usb/class/cdc-acm.c | 3 drivers/usb/core/sysfs.c | 1 drivers/usb/dwc3/core.c | 21 + drivers/usb/dwc3/dwc3-omap.c | 4 drivers/usb/dwc3/dwc3-st.c | 16 drivers/usb/gadget/udc/fsl_udc_core.c | 2 drivers/usb/host/xhci.c | 8 drivers/usb/serial/option.c | 5 fs/afs/file.c | 8 fs/binfmt_elf_fdpic.c | 2 fs/binfmt_misc.c | 216 ++++++++++--- fs/btrfs/delayed-inode.c | 2 fs/btrfs/free-space-cache.c | 8 fs/btrfs/inode.c | 9 fs/btrfs/qgroup.c | 4 fs/btrfs/send.c | 9 fs/btrfs/tree-checker.c | 69 ++++ fs/ext4/extents.c | 3 fs/ext4/mballoc.c | 3 fs/f2fs/segment.c | 5 fs/file.c | 30 - 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/inode.c | 2 fs/inode.c | 39 ++ fs/lockd/svc.c | 3 fs/nfs/callback.c | 3 fs/nfs/pnfs.c | 8 fs/nfsd/export.c | 32 + fs/nfsd/export.h | 4 fs/nfsd/netns.h | 25 + fs/nfsd/nfs4proc.c | 6 fs/nfsd/nfscache.c | 200 +++++++----- fs/nfsd/nfsctl.c | 24 - fs/nfsd/nfsd.h | 1 fs/nfsd/nfsfh.c | 3 fs/nfsd/nfssvc.c | 24 - fs/nfsd/stats.c | 52 +-- fs/nfsd/stats.h | 85 +---- fs/nfsd/trace.h | 22 + fs/nfsd/vfs.c | 6 fs/ntfs3/bitmap.c | 4 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 include/linux/bitmap.h | 20 + include/linux/blkdev.h | 2 include/linux/cpumask.h | 2 include/linux/fs.h | 5 include/linux/pm.h | 55 ++- include/linux/pm_runtime.h | 14 include/linux/sunrpc/svc.h | 5 include/net/busy_poll.h | 2 include/net/kcm.h | 1 include/scsi/scsi_cmnd.h | 2 kernel/cgroup/cpuset.c | 13 kernel/time/clocksource.c | 42 +- kernel/time/hrtimer.c | 2 lib/math/prime_numbers.c | 2 mm/huge_memory.c | 30 - mm/memcontrol.c | 7 mm/memory.c | 29 - net/bluetooth/bnep/core.c | 3 net/bluetooth/hci_core.c | 19 - net/bluetooth/mgmt.c | 4 net/bluetooth/smp.c | 144 ++++---- net/bridge/br_netfilter_hooks.c | 6 net/core/net-sysfs.c | 2 net/ethtool/ioctl.c | 3 net/ipv6/ip6_output.c | 10 net/ipv6/ip6_tunnel.c | 12 net/ipv6/netfilter/nf_conntrack_reasm.c | 4 net/iucv/iucv.c | 3 net/kcm/kcmsock.c | 4 net/mac80211/agg-tx.c | 6 net/mac80211/driver-ops.c | 3 net/mac80211/sta_info.c | 14 net/mptcp/diag.c | 2 net/mptcp/protocol.c | 2 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/nfnetlink_queue.c | 35 +- net/netfilter/nft_counter.c | 9 net/netlink/af_netlink.c | 13 net/rds/recv.c | 13 net/sched/sch_netem.c | 47 +- net/sunrpc/stats.c | 2 net/sunrpc/svc.c | 36 +- net/wireless/core.h | 8 security/apparmor/policy_unpack_test.c | 6 security/selinux/avc.c | 2 sound/core/timer.c | 2 sound/pci/hda/patch_realtek.c | 1 sound/usb/quirks-table.h | 1 sound/usb/quirks.c | 2 tools/include/linux/align.h | 12 tools/include/linux/bitmap.h | 9 tools/testing/selftests/core/close_range_test.c | 35 ++ tools/testing/selftests/tc-testing/tdc.py | 1 222 files changed, 2387 insertions(+), 1046 deletions(-)
Abhinav Kumar (1):
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
Aleksandr Mishin (1):
nfc: pn533: Add poll mod list filling check
Alex Deucher (2):
drm/amdgpu/jpeg2: properly set atomics vmid field drm/amdkfd: don't allow mapping the MMIO HDP page with large pages
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>
Allison Henderson (1):
net:rds: Fix possible deadlock in rds_message_put
Andreas Gruenbacher (1):
gfs2: setattr_chown: Add missing initialization
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
Bas Nieuwenhuizen (1):
drm/amdgpu: Actually check flags for all context ops.
Ben Hutchings (1):
scsi: aacraid: Fix double-free on probe failure
Ben Whitten (1):
mmc: dw_mmc: allow biu and ciu clocks to defer
Chaotian Jing (1):
scsi: core: Fix the return value of scsi_logical_block_count()
Chen Ridong (1):
cgroup/cpuset: Prevent UAF in proc_cpuset_show()
Chengfeng Ye (2):
staging: ks7010: disable bh on tx_dev_lock
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
Chuck Lever (6):
NFSD: Refactor nfsd_reply_cache_free_locked()
NFSD: Rename nfsd_reply_cache_alloc()
NFSD: Replace nfsd_prune_bucket()
NFSD: Refactor the duplicate reply cache shrinker
NFSD: Rewrite synopsis of nfsd_percpu_counters_init()
NFSD: Fix frame size warning in svc_export_parse()
Claudio Imbrenda (1):
s390/uv: Panic for set and remove shared access UVC errors
Cong Wang (1):
gtp: fix a potential NULL pointer dereference
Cosmin Ratiu (1):
net/mlx5e: Correctly report errors for ethtool rx flows
Dan Carpenter (3):
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
David Lechner (1):
staging: iio: resolver: ad2s1210: fix use before initialization
David Sterba (5):
btrfs: change BUG_ON to assertion when checking for delayed_node root
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()
David Thompson (1):
mlxbf_gige: disable RX filters until RX path initialized
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 (1):
netfilter: flowtable: initialise extack before use
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 (6):
netlink: hold nlk->cb_mutex longer in __netlink_dump_start()
gtp: pull network headers in gtp_dev_xmit()
ipv6: prevent UAF in ip6_send_skb()
ipv6: fix possible UAF in ip6_finish_output2()
ipv6: prevent possible UAF in ip6_xmit()
net: busy-poll: use ktime_get_ns() instead of local_clock()
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 (3):
igc: Fix packet still tx after gate close by reducing i226 MAC retry buffer
igc: Fix reset adapter logics when tx mode change
igc: Fix qbv tx latency by setting gtxoffset
Florian Westphal (1):
netfilter: nf_queue: drop packets with cloned unconfirmed conntracks
Gergo Koteles (1):
platform/x86: lg-laptop: fix %s null argument warning
Greg Kroah-Hartman (2):
Revert "MIPS: Loongson64: reset: Prioritise firmware service" Linux 5.15.166
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
Guenter Roeck (1):
apparmor: fix policy_unpack_test on big endian systems
Haibo Xu (1):
arm64: ACPI: NUMA: initialize all values of acpi_early_node_map to NUMA_NO_NODE
Haiyang Zhang (1):
net: mana: Fix race of mana_hwc_post_rx_wqe and new hwc response
Hannes Reinecke (1):
nvmet-tcp: do not continue for invalid icreq
Hans J. Schultz (1):
net: dsa: mv88e6xxx: read FID when handling ATU violations
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
Huang-Huang Bao (1):
pinctrl: rockchip: correct RK3328 iomux width flag for GPIO2-B pins
Ian Ray (1):
cdc-acm: Add DISABLE_ECHO quirk for GE HealthCare UI Controller
Jamie Bainbridge (1):
ethtool: check device is present when getting link settings
Jan Kara (1):
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 (2):
nfsd: move reply cache initialization into nfsd startup
nfsd: move init of percpu reply_cache_stats counters back to nfsd_init_net
Jesse Zhang (1):
drm/amdgpu: Using uninitialized value *size when calling amdgpu_vce_cs_reloc
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 (2):
wifi: cfg80211: check wiphy mutex is held for wdev mutex
wifi: mac80211: fix BA session teardown race
Josef Bacik (11):
sunrpc: don't change ->sv_stats if it doesn't exist
nfsd: stop setting ->pg_stats for unused stats
sunrpc: pass in the sv_stats struct through svc_create_pooled
sunrpc: remove ->pg_stats from svc_program
sunrpc: use the struct net as the svc proc private
nfsd: rename NFSD_NET_* to NFSD_STATS_*
nfsd: expose /proc/net/sunrpc/nfsd in net namespaces
nfsd: make all of the nfsd stats per-network namespace
nfsd: remove nfsd_stats, make th_cnt a global counter
nfsd: make svc_stat per-network namespace instead of global
btrfs: run delayed iputs when flushing delalloc
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()
Kees Cook (2):
net/sun3_82586: Avoid reading past buffer in debug output
x86: Increase brk randomness entropy for 64-bit systems
Khazhismel Kumykov (1):
dm resume: don't return EINVAL when signalled
Krishna Kurapati (1):
usb: dwc3: core: Skip setting event buffers for host only controllers
Krzysztof Kozlowski (4):
soundwire: stream: fix programming slave ports for non-continous port maps
usb: dwc3: omap: add missing depopulate in probe error path
usb: dwc3: st: fix probed platform device ref count on probe error path
usb: dwc3: st: add missing depopulate in probe error path
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
Lee, Chun-Yi (1):
Bluetooth: hci_ldisc: check HCI_UART_PROTO_READY flag in HCIUARTGETPROTO
Li Nan (1):
md: clean up invalid BUG_ON in md_ioctl
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
Long Li (1):
net: mana: Fix doorbell out of order violation and avoid unnecessary doorbell rings
Luiz Augusto von Dentz (3):
Bluetooth: bnep: Fix out-of-bound access
Bluetooth: hci_core: Fix LE quote calculation
Bluetooth: SMP: Fix assumption of Central always being Initiator
Ma Ke (1):
pinctrl: single: fix potential NULL dereference in pcs_get_function()
Maciej Fijalkowski (1):
ice: fix ICE_LAST_OFFSET formula
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
Mathias Nyman (1):
xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration
Matthieu Baerts (NGI0) (1):
mptcp: sched: check both backup in retrans
Max Filippov (1):
fs: binfmt_elf_efpic: don't use missing interpreter's properties
Maximilian Luz (1):
platform/surface: aggregator: Fix warning when controller is destroyed in probe
Michael Ellerman (1):
powerpc/boot: Only free if realloc() succeeds
Mika Westerberg (1):
thunderbolt: Mark XDomain as unplugged when router is removed
Mike Christie (1):
scsi: spi: Fix sshdr use
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 (2):
igc: Correct the launchtime offset
igc: remove I226 Qbv BaseTime restriction
Mukesh Sisodiya (1):
wifi: iwlwifi: fw: Fix debugfs command sending
NeilBrown (1):
NFS: avoid infinite loop in pnfs_update_layout.
Niklas Cassel (1):
ata: libata-core: Fix null pointer dereference on error
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
Parsa Poorshikhian (1):
ALSA: hda/realtek: Fix noise from speakers on Lenovo IdeaPad 3 15IAU7
Paul Cercueil (3):
PM: core: Remove DEFINE_UNIVERSAL_DEV_PM_OPS() macro
PM: core: Add EXPORT[_GPL]_SIMPLE_DEV_PM_OPS macros
PM: runtime: Add DEFINE_RUNTIME_DEV_PM_OPS() macro
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
Pawel Laszczak (2):
usb: cdnsp: fix incorrect index in cdnsp_get_hw_deq function
usb: cdnsp: fix for Link TRB with TC
Phil Chang (1):
hrtimer: Prevent queuing of hrtimer without a function callback
Philipp Stanner (1):
media: drivers/media/dvb-core: copy user arrays safely
Piyush Mehta (3):
phy: xilinx: add runtime PM support
phy: xilinx: phy-zynqmp: dynamic clock support for power-save
phy: xilinx: phy-zynqmp: Fix SGMII linkup failure on resume
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
Sagi Grimberg (1):
nvmet-rdma: fix possible bad dereference when freeing rsps
Samuel Holland (1):
arm64: Fix KASAN random tag seed initialization
Sascha Hauer (1):
wifi: mwifiex: duplicate static structs used in driver instances
Sean Anderson (3):
net: xilinx: axienet: Always disable promiscuous mode
net: xilinx: axienet: Fix dangling multicast addresses
phy: zynqmp: Enable reference clock correctly
Sebastian Andrzej Siewior (2):
netfilter: nft_counter: Disable BH in nft_counter_offload_stats().
netfilter: nft_counter: Synchronize nft_counter_reset() against reader.
Selvarasu Ganesan (1):
usb: dwc3: core: Prevent USB core invalid event buffer address access
Serge Semin (2):
dmaengine: dw: Add peripheral bus width verification
dmaengine: dw: Add memory bus width verification
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 (1):
ALSA: timer: Relax start tick time check for slave timer elements
Tetsuo Handa (2):
block: use "unsigned long" for blk_validate_block_size().
Input: MT - limit max slots
Thomas Bogendoerfer (1):
ip6_tunnel: Fix broken GRO
Tom Hughes (1):
netfilter: allow ipv6 fragments to arrive on different devices
Uwe Kleine-König (1):
usb: gadget: fsl: Increase size of name buffer for endpoints
Vladimir Oltean (1):
net: dsa: mv88e6xxx: replace ATU violation prints with trace points
Volodymyr Babchuk (1):
soc: qcom: cmd-db: Map shared memory as WC, not WB
Wolfram Sang (1):
i2c: riic: avoid potential division by zero
Yue Haibing (1):
mlxbf_gige: Remove two unused function declarations
ZHANG Yuntian (1):
USB: serial: option: add MeiG Smart SRM825L
Zhen Lei (1):
selinux: fix potential counting error in avc_add_xperms_decision()
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):
usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes()
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 5 PATCHLEVEL = 15 -SUBLEVEL = 165 +SUBLEVEL = 166 EXTRAVERSION = NAME = Trick or Treat
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
@@ -364,9 +364,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 (); }static u64 __init of_get_cpu_mpidr (struct device_node *dn)
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"
@@ -203,6 +204,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
@@ -324,4 +324,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
@@ -1782,12 +1782,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/mips/loongson64/reset.c +22 -16
@@ -11,7 +11,6 @@#include <linux/init.h> #include <linux/kexec.h> #include <linux/pm.h> -#include <linux/reboot.h> #include <linux/slab.h> #include <asm/bootinfo.h>
@@ -22,21 +21,36 @@#include <loongson.h> #include <boot_param.h> -static int firmware_restart (struct sys_off_data *unusedd) +static void loongson_restart (char *command) {void (*fw_restart)(void ) = (void *)loongson_sysconf.restart_addr;fw_restart (); -return NOTIFY_DONE ; +while (1 ) { +if (cpu_wait) +cpu_wait (); + } } -static int firmware_poweroff (struct sys_off_data *unused) +static void loongson_poweroff (void ) {void (*fw_poweroff)(void ) = (void *)loongson_sysconf.poweroff_addr;fw_poweroff (); -return NOTIFY_DONE ; +while (1 ) { +if (cpu_wait) +cpu_wait (); + } +} + +static void loongson_halt (void ) +{ +pr_notice ("\n\n** You can safely turn off the power now **\n\n" ); +while (1 ) { +if (cpu_wait) +cpu_wait (); + } }#ifdef CONFIG_KEXEC
@@ -140,17 +154,9 @@ static void loongson_crash_shutdown(struct pt_regs *regs)static int __init mips_reboot_setup (void ) { -if (loongson_sysconf.restart_addr) { -register_sys_off_handler (SYS_OFF_MODE_RESTART , -SYS_OFF_PRIO_FIRMWARE , - firmware_restart,NULL ); - } - -if (loongson_sysconf.poweroff_addr) { -register_sys_off_handler (SYS_OFF_MODE_POWER_OFF , -SYS_OFF_PRIO_FIRMWARE , - firmware_poweroff,NULL ); - } + _machine_restart = loongson_restart; + _machine_halt = loongson_halt; + pm_power_off = loongson_poweroff;#ifdef CONFIG_KEXEC kexec_argv =kmalloc (KEXEC_ARGV_SIZE ,GFP_KERNEL );
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
@@ -518,7 +518,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)
@@ -553,7 +553,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
@@ -114,8 +114,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
@@ -235,6 +235,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/s390/include/asm/uv.h +4 -1
@@ -312,7 +312,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
@@ -250,15 +250,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 )
@@ -311,7 +305,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
@@ -1003,12 +1003,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
@@ -937,7 +937,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 ); }/*
drivers/ata/libata-core.c +3 -0
@@ -5391,6 +5391,9 @@ static void ata_host_release(struct kref *kref)for (i =0 ; i < host->n_ports; i++) {struct ata_port *ap = host->ports[i]; +if (!ap) +continue ; +kfree (ap->pmp_link);kfree (ap->slave_link);kfree (ap);
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
@@ -768,7 +768,8 @@ static int hci_uart_tty_ioctl(struct tty_struct *tty, struct file *file,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/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/dma/dw/core.c +82 -7
131 lines not on this page · raw message
drivers/gpu/drm/amd/amdgpu/amdgpu_ctx.c +8 -0
@@ -413,16 +413,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 ;default :
drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +2 -1
@@ -733,7 +733,8 @@ int amdgpu_vce_ring_parse_cs(struct amdgpu_cs_parser *p, uint32_t ib_idx)uint32_t created =0 ;uint32_t allocated =0 ;uint32_t tmp, handle =0 ; -uint32_t *size = &tmp; +uint32_t dummy =0xffffffff ; +uint32_t *size = &dummy;unsigned idx;int i, r =0 ;
drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c +2 -2
@@ -557,11 +557,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 +4 -1
@@ -1290,7 +1290,7 @@ static int kfd_ioctl_alloc_memory_of_gpu(struct file *filep, goto err_unlock; } offset =amdgpu_amdkfd_get_mmio_remap_phys_addr (dev->kgd); -if (!offset) { +if (!offset || (PAGE_SIZE >4096 )) { err = -ENOMEM ; goto err_unlock; }
@@ -2029,6 +2029,9 @@ static int kfd_mmio_mmap(struct kfd_dev *dev, struct kfd_process *process,if (vma->vm_end - vma->vm_start !=PAGE_SIZE )return -EINVAL ; +if (PAGE_SIZE >4096 ) +return -EINVAL ; + address =amdgpu_amdkfd_get_mmio_remap_phys_addr (dev->kgd); vma->vm_flags |= VM_IO | VM_DONTCOPY | VM_DONTEXPAND | VM_NORESERVE |
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
@@ -32,24 +32,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
@@ -906,6 +906,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
@@ -1237,6 +1237,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);drm_dp_dpcd_write (ctrl->aux,DP_MAIN_LINK_CHANNEL_CODING_SET , &encoding,1 );
drivers/hid/hid-ids.h +9 -1
@@ -894,7 +894,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
@@ -1924,12 +1924,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
@@ -912,8 +912,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/i2c/busses/i2c-riic.c +1 -1
@@ -319,7 +319,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/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
@@ -13182,15 +13182,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
@@ -45,6 +45,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/irqchip/irq-gic-v3-its.c +0 -2
@@ -4491,8 +4491,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/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
@@ -1151,8 +1151,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
@@ -2255,7 +2255,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 ; }
@@ -2280,7 +2280,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
@@ -7589,11 +7589,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/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/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
@@ -43,6 +43,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
@@ -3111,13 +3111,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);
@@ -3125,6 +3125,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
@@ -3246,6 +3246,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) {
@@ -3257,6 +3261,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
@@ -575,7 +575,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 ();
@@ -592,34 +591,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
@@ -893,7 +893,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/Makefile +4 -0
@@ -15,3 +15,7 @@ mv88e6xxx-objs += port_hidden.o mv88e6xxx-$(CONFIG_NET_DSA_MV88E6XXX_PTP) += ptp.o mv88e6xxx-objs += serdes.o mv88e6xxx-objs += smi.o +mv88e6xxx-objs += trace.o + +# for tracing framework to find trace.h +CFLAGS_trace.o := -I$(src)
drivers/net/dsa/mv88e6xxx/global1_atu.c +67 -15
129 lines not on this page · raw message
drivers/net/dsa/mv88e6xxx/trace.c new file +6 -0
@@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* Copyright 2022 NXP +*/ + +#define CREATE_TRACE_POINTS +#include "trace.h"
drivers/net/dsa/mv88e6xxx/trace.h new file +66 -0
66 lines not on this page · raw message
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
@@ -2585,13 +2585,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
@@ -5504,6 +5504,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 +2 -2
@@ -11636,8 +11636,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
@@ -1066,10 +1066,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/hns3vf/hclgevf_main.c +2 -2
@@ -2217,8 +2217,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
@@ -987,7 +987,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_txrx.c +1 -1
@@ -765,7 +765,7 @@ ice_can_reuse_rx_page(struct ice_rx_buf *rx_buf, int rx_buf_pgcnt)return false;#else #define ICE_LAST_OFFSET \ - (SKB_WITH_OVERHEAD(PAGE_SIZE) - ICE_RXBUF_2048) + (SKB_WITH_OVERHEAD(PAGE_SIZE) - ICE_RXBUF_3072)if (rx_buf->page_offset >ICE_LAST_OFFSET )return false;#endif /* PAGE_SIZE < 8192) */
drivers/net/ethernet/intel/igc/igc_base.c +29 -0
@@ -402,6 +402,35 @@ void igc_rx_fifo_flush_base(struct igc_hw *hw)rd32 (IGC_MPC ); } +bool igc_is_device_id_i225 (struct igc_hw *hw) +{ +switch (hw->device_id) { +case IGC_DEV_ID_I225_LM : +case IGC_DEV_ID_I225_V : +case IGC_DEV_ID_I225_I : +case IGC_DEV_ID_I225_K : +case IGC_DEV_ID_I225_K2 : +case IGC_DEV_ID_I225_LMVP : +case IGC_DEV_ID_I225_IT : +return true; +default : +return false; + } +} + +bool igc_is_device_id_i226 (struct igc_hw *hw) +{ +switch (hw->device_id) { +case IGC_DEV_ID_I226_LM : +case IGC_DEV_ID_I226_V : +case IGC_DEV_ID_I226_K : +case IGC_DEV_ID_I226_IT : +return true; +default : +return false; + } +} +static struct igc_mac_operations igc_mac_ops_base = { .init_hw = igc_init_hw_base, .check_for_link = igc_check_for_copper_link,
drivers/net/ethernet/intel/igc/igc_base.h +2 -0
@@ -7,6 +7,8 @@/* forward declaration */ void igc_rx_fifo_flush_base (struct igc_hw *hw);void igc_power_down_phy_copper_base (struct igc_hw *hw); +bool igc_is_device_id_i225 (struct igc_hw *hw); +bool igc_is_device_id_i226 (struct igc_hw *hw);/* Transmit Descriptor - Advanced */ union igc_adv_tx_desc {
drivers/net/ethernet/intel/igc/igc_defines.h +16 -0
@@ -405,6 +405,21 @@#define IGC_DTXMXPKTSZ_TSN 0x19/* 1600 bytes of max TX DMA packet size */ #define IGC_DTXMXPKTSZ_DEFAULT 0x98/* 9728-byte Jumbo frames */ +/* Retry Buffer Control */ +#define IGC_RETX_CTL 0x041C +#define IGC_RETX_CTL_WATERMARK_MASK 0xF +#define IGC_RETX_CTL_QBVFULLTH_SHIFT 8/* QBV Retry Buffer Full Threshold */ +#define IGC_RETX_CTL_QBVFULLEN 0x1000/* Enable QBV Retry Buffer Full Threshold */ + +/* Transmit Scheduling Latency */ +/* Latency between transmission scheduling (LaunchTime) and the time +* the packet is transmitted to the network in nanosecond. +*/ +#define IGC_TXOFFSET_SPEED_10 0x000034BC +#define IGC_TXOFFSET_SPEED_100 0x00000578 +#define IGC_TXOFFSET_SPEED_1000 0x0000012C +#define IGC_TXOFFSET_SPEED_2500 0x00000578 +/* Time Sync Interrupt Causes */ #define IGC_TSICR_SYS_WRAP BIT(0)/* SYSTIM Wrap around. */ #define IGC_TSICR_TXTS BIT(1)/* Transmit Timestamp. */
@@ -518,6 +533,7 @@/* Transmit Scheduling */ #define IGC_TQAVCTRL_TRANSMIT_MODE_TSN 0x00000001#define IGC_TQAVCTRL_ENHANCED_QAV 0x00000008 +#define IGC_TQAVCTRL_FUTSCDDIS 0x00000080#define IGC_TXQCTL_QUEUE_MODE_LAUNCHT 0x00000001#define IGC_TXQCTL_STRICT_CYCLE 0x00000002
drivers/net/ethernet/intel/igc/igc_main.c +11 -1
@@ -5532,6 +5532,13 @@ static void igc_watchdog_task(struct work_struct *work)break ; } +/* Once the launch time has been set on the wire, there +* is a delay before the link speed can be determined +* based on link-up activity. Write into the register +* as soon as we know the correct link speed. +*/ +igc_tsn_adjust_txtime_offset (adapter); +if (adapter->link_speed !=SPEED_1000 ) goto no_wait;
@@ -5984,6 +5991,7 @@ static bool validate_schedule(struct igc_adapter *adapter, const struct tc_taprio_qopt_offload *qopt) {int queue_uses[IGC_MAX_TX_QUEUES ] = { }; +struct igc_hw *hw = &adapter->hw;struct timespec64 now;size_t n;
@@ -5996,8 +6004,10 @@ static bool validate_schedule(struct igc_adapter *adapter,* in the future, it will hold all the packets until that * time, causing a lot of TX Hangs, so to avoid that, we * reject schedules that would start in the future. +* Note: Limitation above is no longer in i226. */ -if (!is_base_time_past (qopt->base_time, &now)) +if (!is_base_time_past (qopt->base_time, &now) && +igc_is_device_id_i225 (hw))return false;for (n =0 ; n < qopt->num_entries; n++) {
drivers/net/ethernet/intel/igc/igc_regs.h +1 -0
@@ -227,6 +227,7 @@/* Transmit Scheduling Registers */ #define IGC_TQAVCTRL 0x3570#define IGC_TXQCTL (_n) (0x3344 + 0x4 * (_n)) +#define IGC_GTXOFFSET 0x3310#define IGC_BASET_L 0x3314#define IGC_BASET_H 0x3318#define IGC_QBVCYCLET 0x331C
drivers/net/ethernet/intel/igc/igc_tsn.c +99 -14
169 lines not on this page · raw message
drivers/net/ethernet/intel/igc/igc_tsn.h +1 -0
@@ -6,5 +6,6 @@int igc_tsn_offload_apply (struct igc_adapter *adapter);int igc_tsn_reset (struct igc_adapter *adapter); +void igc_tsn_adjust_txtime_offset (struct igc_adapter *adapter);#endif /* _IGC_BASE_H */
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c +1 -1
@@ -727,7 +727,7 @@ mlx5e_ethtool_flow_replace(struct mlx5e_priv *priv,if (num_tuples <=0 ) {netdev_warn (priv->netdev,"%s: flow is not valid %d\n" , __func__, num_tuples); -return num_tuples; +return num_tuples <0 ? num_tuples : -EINVAL ; } eth_ft =get_flow_table (priv, fs, num_tuples);
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige.h +7 -2
@@ -39,6 +39,7 @@*/ #define MLXBF_GIGE_BCAST_MAC_FILTER_IDX 0#define MLXBF_GIGE_LOCAL_MAC_FILTER_IDX 1 +#define MLXBF_GIGE_MAX_FILTER_IDX 3/* Define for broadcast MAC literal */ #define BCAST_MAC_ADDR 0xFFFFFFFFFFFF
@@ -151,9 +152,13 @@ enum mlxbf_gige_res {int mlxbf_gige_mdio_probe (struct platform_device *pdev,struct mlxbf_gige *priv);void mlxbf_gige_mdio_remove (struct mlxbf_gige *priv); -irqreturn_t mlxbf_gige_mdio_handle_phy_interrupt (int irq,void *dev_id); -void mlxbf_gige_mdio_enable_phy_int (struct mlxbf_gige *priv); +void mlxbf_gige_enable_multicast_rx (struct mlxbf_gige *priv); +void mlxbf_gige_disable_multicast_rx (struct mlxbf_gige *priv); +void mlxbf_gige_enable_mac_rx_filter (struct mlxbf_gige *priv, +unsigned int index); +void mlxbf_gige_disable_mac_rx_filter (struct mlxbf_gige *priv, +unsigned int index);void mlxbf_gige_set_mac_rx_filter (struct mlxbf_gige *priv,unsigned int index,u64 dmac); void mlxbf_gige_get_mac_rx_filter(struct mlxbf_gige *priv,
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_main.c +10 -0
@@ -170,6 +170,10 @@ static int mlxbf_gige_open(struct net_device *netdev)if (err) goto napi_deinit; +mlxbf_gige_enable_mac_rx_filter (priv,MLXBF_GIGE_BCAST_MAC_FILTER_IDX ); +mlxbf_gige_enable_mac_rx_filter (priv,MLXBF_GIGE_LOCAL_MAC_FILTER_IDX ); +mlxbf_gige_enable_multicast_rx (priv); +/* Set bits in INT_EN that we care about */ int_en =MLXBF_GIGE_INT_EN_HW_ACCESS_ERROR | MLXBF_GIGE_INT_EN_TX_CHECKSUM_INPUTS |
@@ -295,6 +299,7 @@ static int mlxbf_gige_probe(struct platform_device *pdev)void __iomem *plu_base;void __iomem *base;int addr, phy_irq; +unsigned int i;int err; base =devm_platform_ioremap_resource (pdev,MLXBF_GIGE_RES_MAC );
@@ -337,6 +342,11 @@ static int mlxbf_gige_probe(struct platform_device *pdev) priv->rx_q_entries =MLXBF_GIGE_DEFAULT_RXQ_SZ ; priv->tx_q_entries =MLXBF_GIGE_DEFAULT_TXQ_SZ ; +for (i =0 ; i <=MLXBF_GIGE_MAX_FILTER_IDX ; i++) +mlxbf_gige_disable_mac_rx_filter (priv, i); +mlxbf_gige_disable_multicast_rx (priv); +mlxbf_gige_disable_promisc (priv); +/* Write initial MAC address to hardware */ mlxbf_gige_initial_mac (priv);
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_regs.h +2 -0
@@ -59,6 +59,8 @@#define MLXBF_GIGE_TX_STATUS_DATA_FIFO_FULL BIT(1)#define MLXBF_GIGE_RX_MAC_FILTER_DMAC_RANGE_START 0x0520#define MLXBF_GIGE_RX_MAC_FILTER_DMAC_RANGE_END 0x0528 +#define MLXBF_GIGE_RX_MAC_FILTER_GENERAL 0x0530 +#define MLXBF_GIGE_RX_MAC_FILTER_EN_MULTICAST BIT(1)#define MLXBF_GIGE_RX_MAC_FILTER_COUNT_DISC 0x0540#define MLXBF_GIGE_RX_MAC_FILTER_COUNT_DISC_EN BIT(0)#define MLXBF_GIGE_RX_MAC_FILTER_COUNT_PASS 0x0548
drivers/net/ethernet/mellanox/mlxbf_gige/mlxbf_gige_rx.c +44 -6
65 lines not on this page · raw message
drivers/net/ethernet/microsoft/mana/hw_channel.c +34 -28
93 lines not on this page · raw message
drivers/net/ethernet/microsoft/mana/mana.h +1 -0
@@ -252,6 +252,7 @@ struct mana_cq {/* NAPI data */ struct napi_struct napi;int work_done; +int work_done_since_doorbell;int budget; };
drivers/net/ethernet/microsoft/mana/mana_en.c +15 -9
@@ -1074,7 +1074,6 @@ static void mana_poll_rx_cq(struct mana_cq *cq)static int mana_cq_handler (void *context,struct gdma_queue *gdma_queue) {struct mana_cq *cq = context; -u8 arm_bit;int w;WARN_ON_ONCE (cq->gdma_cq != gdma_queue);
@@ -1085,16 +1084,23 @@ static int mana_cq_handler(void *context, struct gdma_queue *gdma_queue)mana_poll_tx_cq (cq); w = cq->work_done; - -if (w < cq->budget && -napi_complete_done (&cq->napi, w)) { - arm_bit =SET_ARM_BIT ; - }else { - arm_bit =0 ; + cq->work_done_since_doorbell += w; + +if (w < cq->budget) { +mana_gd_ring_cq (gdma_queue,SET_ARM_BIT ); + cq->work_done_since_doorbell =0 ; +napi_complete_done (&cq->napi, w); + }else if (cq->work_done_since_doorbell > + cq->gdma_cq->queue_size /COMP_ENTRY_SIZE *4 ) { +/* MANA hardware requires at least one doorbell ring every 8 +* wraparounds of CQ even if there is no need to arm the CQ. +* This driver rings the doorbell as soon as we have exceeded +* 4 wraparounds. +*/ +mana_gd_ring_cq (gdma_queue,0 ); + cq->work_done_since_doorbell =0 ; } -mana_gd_ring_cq (gdma_queue, arm_bit); -return w; }
drivers/net/ethernet/xilinx/xilinx_axienet.h +9 -8
@@ -159,16 +159,17 @@#define XAE_RCW1_OFFSET 0x00000404/* Rx Configuration Word 1 */ #define XAE_TC_OFFSET 0x00000408/* Tx Configuration */ #define XAE_FCC_OFFSET 0x0000040C/* Flow Control Configuration */ -#define XAE_EMMC_OFFSET 0x00000410/* EMAC mode configuration */ -#define XAE_PHYC_OFFSET 0x00000414/* RGMII/SGMII configuration */ +#define XAE_EMMC_OFFSET 0x00000410/* MAC speed configuration */ +#define XAE_PHYC_OFFSET 0x00000414/* RX Max Frame Configuration */ #define XAE_ID_OFFSET 0x000004F8/* Identification register */ -#define XAE_MDIO_MC_OFFSET 0x00000500/* MII Management Config */ -#define XAE_MDIO_MCR_OFFSET 0x00000504/* MII Management Control */ -#define XAE_MDIO_MWD_OFFSET 0x00000508/* MII Management Write Data */ -#define XAE_MDIO_MRD_OFFSET 0x0000050C/* MII Management Read Data */ +#define XAE_MDIO_MC_OFFSET 0x00000500/* MDIO Setup */ +#define XAE_MDIO_MCR_OFFSET 0x00000504/* MDIO Control */ +#define XAE_MDIO_MWD_OFFSET 0x00000508/* MDIO Write Data */ +#define XAE_MDIO_MRD_OFFSET 0x0000050C/* MDIO Read Data */ #define XAE_UAW0_OFFSET 0x00000700/* Unicast address word 0 */ #define XAE_UAW1_OFFSET 0x00000704/* Unicast address word 1 */ -#define XAE_FMI_OFFSET 0x00000708/* Filter Mask Index */ +#define XAE_FMI_OFFSET 0x00000708/* Frame Filter Control */ +#define XAE_FFE_OFFSET 0x0000070C/* Frame Filter Enable */ #define XAE_AF0_OFFSET 0x00000710/* Address Filter 0 */ #define XAE_AF1_OFFSET 0x00000714/* Address Filter 1 */
@@ -307,7 +308,7 @@*/ #define XAE_UAW1_UNICASTADDR_MASK 0x0000FFFF -/* Bit masks for Axi Ethernet FMI register */ +/* Bit masks for Axi Ethernet FMC register */ #define XAE_FMI_PM_MASK 0x80000000/* Promis. mode enable */ #define XAE_FMI_IND_MASK 0x00000003/* Index Mask */
drivers/net/ethernet/xilinx/xilinx_axienet_main.c +13 -12
@@ -409,7 +409,7 @@ static int netdev_set_mac_address(struct net_device *ndev, void *p)*/ static void axienet_set_multicast_list (struct net_device *ndev) { -int i; +int i =0 ;u32 reg, af0reg, af1reg;struct axienet_local *lp =netdev_priv (ndev);
@@ -427,7 +427,10 @@ static void axienet_set_multicast_list(struct net_device *ndev) }else if (!netdev_mc_empty (ndev)) {struct netdev_hw_addr *ha; - i =0 ; + reg =axienet_ior (lp,XAE_FMI_OFFSET ); + reg &= ~XAE_FMI_PM_MASK ; +axienet_iow (lp,XAE_FMI_OFFSET , reg); +netdev_for_each_mc_addr (ha, ndev) {if (i >=XAE_MULTICAST_CAM_TABLE_NUM )break ;
@@ -446,6 +449,7 @@ static void axienet_set_multicast_list(struct net_device *ndev)axienet_iow (lp,XAE_FMI_OFFSET , reg);axienet_iow (lp,XAE_AF0_OFFSET , af0reg);axienet_iow (lp,XAE_AF1_OFFSET , af1reg); +axienet_iow (lp,XAE_FFE_OFFSET ,1 ); i++; } }else {
@@ -453,18 +457,15 @@ static void axienet_set_multicast_list(struct net_device *ndev) reg &= ~XAE_FMI_PM_MASK ;axienet_iow (lp,XAE_FMI_OFFSET , reg); - -for (i =0 ; i <XAE_MULTICAST_CAM_TABLE_NUM ; i++) { - reg =axienet_ior (lp,XAE_FMI_OFFSET ) &0xFFFFFF00 ; - reg |= i; - -axienet_iow (lp,XAE_FMI_OFFSET , reg); -axienet_iow (lp,XAE_AF0_OFFSET ,0 ); -axienet_iow (lp,XAE_AF1_OFFSET ,0 ); - } -dev_info (&ndev->dev,"Promiscuous mode disabled.\n" ); } + +for (; i <XAE_MULTICAST_CAM_TABLE_NUM ; i++) { + reg =axienet_ior (lp,XAE_FMI_OFFSET ) &0xFFFFFF00 ; + reg |= i; +axienet_iow (lp,XAE_FMI_OFFSET , reg); +axienet_iow (lp,XAE_FFE_OFFSET ,0 ); + } }/**
drivers/net/gtp.c +4 -1
@@ -572,6 +572,9 @@ static netdev_tx_t gtp_dev_xmit(struct sk_buff *skb, struct net_device *dev)if (skb_cow_head (skb, dev->needed_headroom)) goto tx_err; +if (!pskb_inet_may_pull (skb)) + goto tx_err; +skb_reset_inner_headers (skb);/* PDP context lookups in gtp_build_skb_*() need rcu read-side lock. */
@@ -814,7 +817,7 @@ static struct sock *gtp_encap_enable_socket(int fd, int type, sock =sockfd_lookup (fd, &err);if (!sock) {pr_debug ("gtp socket fd=%d not found\n" , fd); -return NULL ; +return ERR_PTR (err); } sk = sock->sk;
drivers/net/wireless/intel/iwlwifi/fw/debugfs.c +5 -1
@@ -163,7 +163,11 @@ static int iwl_dbgfs_enabled_severities_write(struct iwl_fw_runtime *fwrt, event_cfg.enabled_severities =cpu_to_le32 (enabled_severities); - ret =iwl_trans_send_cmd (fwrt->trans, &hcmd); +if (fwrt->ops && fwrt->ops->send_hcmd) + ret = fwrt->ops->send_hcmd (fwrt->ops_ctx, &hcmd); +else + ret = -EPERM ; +IWL_INFO (fwrt,"sent host event cfg with enabled_severities: %u, ret: %d\n" , enabled_severities, ret);
drivers/net/wireless/intel/iwlwifi/mvm/scan.c +1 -1
@@ -3068,7 +3068,7 @@ int iwl_mvm_scan_stop(struct iwl_mvm *mvm, int type, bool notify)if (!(mvm->scan_status & type))return 0 ; -if (iwl_mvm_is_radio_killed (mvm)) { +if (!test_bit (STATUS_DEVICE_ENABLED , &mvm->trans->status)) { ret =0 ; goto out; }
drivers/net/wireless/marvell/mwifiex/cfg80211.c +26 -6
@@ -4328,11 +4328,27 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)if (ISSUPP_ADHOC_ENABLED (adapter->fw_cap_info)) wiphy->interface_modes |=BIT (NL80211_IFTYPE_ADHOC ); - wiphy->bands[NL80211_BAND_2GHZ ] = &mwifiex_band_2ghz; -if (adapter->config_bands &BAND_A ) - wiphy->bands[NL80211_BAND_5GHZ ] = &mwifiex_band_5ghz; -else + wiphy->bands[NL80211_BAND_2GHZ ] =devm_kmemdup (adapter->dev, + &mwifiex_band_2ghz, +sizeof (mwifiex_band_2ghz), +GFP_KERNEL ); +if (!wiphy->bands[NL80211_BAND_2GHZ ]) { + ret = -ENOMEM ; + goto err; + } + +if (adapter->config_bands &BAND_A ) { + wiphy->bands[NL80211_BAND_5GHZ ] =devm_kmemdup (adapter->dev, + &mwifiex_band_5ghz, +sizeof (mwifiex_band_5ghz), +GFP_KERNEL ); +if (!wiphy->bands[NL80211_BAND_5GHZ ]) { + ret = -ENOMEM ; + goto err; + } + }else { wiphy->bands[NL80211_BAND_5GHZ ] =NULL ; + }if (adapter->drcs_enabled &&ISSUPP_DRCS_ENABLED (adapter->fw_cap_info)) wiphy->iface_combinations = &mwifiex_iface_comb_ap_sta_drcs;
@@ -4425,8 +4441,7 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter)if (ret <0 ) {mwifiex_dbg (adapter,ERROR ,"%s: wiphy_register failed: %d\n" , __func__, ret); -wiphy_free (wiphy); -return ret; + goto err; }if (!adapter->regd) {
@@ -4468,4 +4483,9 @@ int mwifiex_register_cfg80211(struct mwifiex_adapter *adapter) adapter->wiphy = wiphy;return ret; + +err: +wiphy_free (wiphy); + +return ret; }
drivers/net/wireless/st/cw1200/txrx.c +1 -1
@@ -1170,7 +1170,7 @@ void cw1200_rx_cb(struct cw1200_common *priv,size_t ies_len = skb->len - (ies - (u8 *)(skb->data)); tim_ie =cfg80211_find_ie (WLAN_EID_TIM , ies, ies_len); -if (tim_ie) { +if (tim_ie && tim_ie[1 ] >=sizeof (struct ieee80211_tim_ie )) {struct ieee80211_tim_ie *tim = (struct ieee80211_tim_ie *)&tim_ie[2 ];
drivers/nfc/pn533/pn533.c +5 -0
@@ -1725,6 +1725,11 @@ static int pn533_start_poll(struct nfc_dev *nfc_dev, }pn533_poll_create_mod_list (dev, im_protocols, tm_protocols); +if (!dev->poll_mod_count) { +nfc_err (dev->dev, +"Poll mod list is empty\n" ); +return -EINVAL ; + }/* Do not always start polling from the same modulation */ get_random_bytes (&rand_mod,sizeof (rand_mod));
drivers/nvme/target/rdma.c +4 -12
@@ -472,12 +472,8 @@ nvmet_rdma_alloc_rsps(struct nvmet_rdma_queue *queue)return 0 ; out_free: -while (--i >=0 ) { -struct nvmet_rdma_rsp *rsp = &queue->rsps[i]; - -list_del (&rsp->free_list); -nvmet_rdma_free_rsp (ndev, rsp); - } +while (--i >=0 ) +nvmet_rdma_free_rsp (ndev, &queue->rsps[i]);kfree (queue->rsps); out:return ret;
@@ -488,12 +484,8 @@ static void nvmet_rdma_free_rsps(struct nvmet_rdma_queue *queue)struct nvmet_rdma_device *ndev = queue->dev;int i, nr_rsps = queue->recv_queue_size *2 ; -for (i =0 ; i < nr_rsps; i++) { -struct nvmet_rdma_rsp *rsp = &queue->rsps[i]; - -list_del (&rsp->free_list); -nvmet_rdma_free_rsp (ndev, rsp); - } +for (i =0 ; i < nr_rsps; i++) +nvmet_rdma_free_rsp (ndev, &queue->rsps[i]);kfree (queue->rsps); }
drivers/nvme/target/tcp.c +1 -0
@@ -858,6 +858,7 @@ static int nvmet_tcp_handle_icreq(struct nvmet_tcp_queue *queue)pr_err ("bad nvme-tcp pdu length (%d)\n" ,le32_to_cpu (icreq->hdr.plen));nvmet_tcp_fatal_error (queue); +return -EPROTO ; }if (icreq->pfv !=NVME_TCP_PFV_1_0 ) {
drivers/nvme/target/trace.c +3 -3
@@ -211,7 +211,7 @@ const char *nvmet_trace_disk_name(struct trace_seq *p, char *name)return ret; } -const char *nvmet_trace_ctrl_name (struct trace_seq *p,struct nvmet_ctrl *ctrl) +const char *nvmet_trace_ctrl_id (struct trace_seq *p,u16 ctrl_id) {const char *ret =trace_seq_buffer_ptr (p);
@@ -224,8 +224,8 @@ const char *nvmet_trace_ctrl_name(struct trace_seq *p, struct nvmet_ctrl *ctrl)* If we can know the extra data of the connect command in this stage, * we can update this print statement later. */ -if (ctrl) -trace_seq_printf (p,"%d" , ctrl->cntlid); +if (ctrl_id) +trace_seq_printf (p,"%d" , ctrl_id);else trace_seq_printf (p,"_" );trace_seq_putc (p,0 );
drivers/nvme/target/trace.h +17 -11
@@ -32,18 +32,24 @@ const char *nvmet_trace_parse_fabrics_cmd(struct trace_seq *p, u8 fctype, nvmet_trace_parse_nvm_cmd(p, opcode, cdw10) : \ nvmet_trace_parse_admin_cmd(p, opcode, cdw10))) -const char *nvmet_trace_ctrl_name (struct trace_seq *p,struct nvmet_ctrl *ctrl); -#define __print_ctrl_name (ctrl) \ - nvmet_trace_ctrl_name(p, ctrl) +const char *nvmet_trace_ctrl_id (struct trace_seq *p,u16 ctrl_id); +#define __print_ctrl_id (ctrl_id) \ + nvmet_trace_ctrl_id(p, ctrl_id)const char *nvmet_trace_disk_name (struct trace_seq *p,char *name);#define __print_disk_name (name) \ nvmet_trace_disk_name(p, name)#ifndef TRACE_HEADER_MULTI_READ -static inline struct nvmet_ctrl *nvmet_req_to_ctrl (struct nvmet_req *req) +static inline u16 nvmet_req_to_ctrl_id (struct nvmet_req *req) { -return req->sq->ctrl; +/* +* The queue and controller pointers are not valid until an association +* has been established. +*/ +if (!req->sq || !req->sq->ctrl) +return 0 ; +return req->sq->ctrl->cntlid; }static inline void __assign_req_name (char *name,struct nvmet_req *req)
@@ -62,7 +68,7 @@ TRACE_EVENT(nvmet_req_init, TP_ARGS(req, cmd),TP_STRUCT__entry (__field (struct nvme_command *,cmd ) - __field(struct nvmet_ctrl *, ctrl) +__field (u16, ctrl_id)__array (char, disk,DISK_NAME_LEN )__field (int, qid) __field(u16, cid)
@@ -75,7 +81,7 @@ TRACE_EVENT(nvmet_req_init, ), TP_fast_assign( __entry->cmd = cmd; - __entry->ctrl =nvmet_req_to_ctrl (req); + __entry->ctrl_id =nvmet_req_to_ctrl_id (req);__assign_req_name (__entry->disk, req); __entry->qid = req->sq->qid; __entry->cid = cmd->common.command_id;
@@ -89,7 +95,7 @@ TRACE_EVENT(nvmet_req_init, ), TP_printk("nvmet%s: %sqid=%d, cmdid=%u, nsid=%u, flags=%#x, " "meta=%#llx, cmd=(%s, %s)", - __print_ctrl_name(__entry->ctrl), + __print_ctrl_id(__entry->ctrl_id), __print_disk_name(__entry->disk), __entry->qid, __entry->cid, __entry->nsid, __entry->flags, __entry->metadata,
@@ -103,7 +109,7 @@ TRACE_EVENT(nvmet_req_complete, TP_PROTO(struct nvmet_req *req), TP_ARGS(req), TP_STRUCT__entry( - __field(struct nvmet_ctrl *, ctrl) + __field(u16, ctrl_id) __array(char, disk, DISK_NAME_LEN) __field(int, qid) __field(int, cid)
@@ -111,7 +117,7 @@ TRACE_EVENT(nvmet_req_complete,__field (u16, status) ),TP_fast_assign ( - __entry->ctrl = nvmet_req_to_ctrl(req); + __entry->ctrl_id = nvmet_req_to_ctrl_id(req); __entry->qid = req->cq->qid; __entry->cid = req->cqe->command_id; __entry->result =le64_to_cpu (req->cqe->result.u64);
@@ -119,7 +125,7 @@ TRACE_EVENT(nvmet_req_complete,__assign_req_name (__entry->disk, req); ),TP_printk ("nvmet%s: %sqid=%d, cmdid=%u, res=%#llx, status=%#x" , -__print_ctrl_name (__entry->ctrl), +__print_ctrl_id (__entry->ctrl_id),__print_disk_name (__entry->disk), __entry->qid, __entry->cid, __entry->result, __entry->status)
drivers/phy/xilinx/phy-zynqmp.c +100 -52
300 lines not on this page · raw message
drivers/pinctrl/pinctrl-rockchip.c +1 -1
@@ -3218,7 +3218,7 @@ static struct rockchip_pin_bank rk3328_pin_banks[] = {PIN_BANK_IOMUX_FLAGS (0 ,32 ,"gpio0" ,0 ,0 ,0 ,0 ),PIN_BANK_IOMUX_FLAGS (1 ,32 ,"gpio1" ,0 ,0 ,0 ,0 ),PIN_BANK_IOMUX_FLAGS (2 ,32 ,"gpio2" ,0 , -0 , +IOMUX_WIDTH_2BIT ,IOMUX_WIDTH_3BIT ,0 ), PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3",
drivers/pinctrl/pinctrl-single.c +2 -0
@@ -350,6 +350,8 @@ static int pcs_get_function(struct pinctrl_dev *pctldev, unsigned pin,return -ENOTSUPP ; fselector = setting->func; function =pinmux_generic_get_function (pctldev, fselector); +if (!function) +return -EINVAL ; *func = function->data;if (!(*func)) { dev_err(pcs->dev, "%s could not find function%i\n",
drivers/platform/surface/aggregator/controller.c +2 -1
@@ -1354,7 +1354,8 @@ void ssam_controller_destroy(struct ssam_controller *ctrl)if (ctrl->state ==SSAM_CONTROLLER_UNINITIALIZED )return ; -WARN_ON (ctrl->state !=SSAM_CONTROLLER_STOPPED ); +WARN_ON (ctrl->state !=SSAM_CONTROLLER_STOPPED && + ctrl->state !=SSAM_CONTROLLER_INITIALIZED );/* * Note: New events could still have been received after the previous
drivers/platform/x86/lg-laptop.c +1 -1
@@ -665,7 +665,7 @@ static int acpi_add(struct acpi_device *device)default : year =2019 ; } -pr_info ("product: %s year: %d\n" , product, year); +pr_info ("product: %s year: %d\n" , product ?:"unknown" , year);if (year >=2019 ) battery_limit_use_wmbb =1 ;
drivers/s390/block/dasd.c +23 -13
@@ -1622,9 +1622,15 @@ static int dasd_ese_needs_format(struct dasd_block *block, struct irb *irb)if (!sense)return 0 ;
Lines of this file are not shown. View the raw message.
drivers/s390/block/dasd_eckd.c +24 -31
55 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/tree-checker.c +69 -0
69 lines not on this page · raw message
fs/nfsd/nfscache.c +119 -81
200 lines not on this page · raw message
fs/nfsd/stats.c +21 -31
52 lines not on this page · raw message
fs/nfsd/stats.h +32 -53
85 lines not on this page · raw message
include/linux/pm.h +40 -15
55 lines not on this page · raw message
kernel/time/clocksource.c +20 -22
42 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/sched/sch_netem.c +29 -18
47 lines not on this page · 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/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.