Linux 6.1.18
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.1.18 kernel.
All users of the 6.1 kernel series must upgrade.
The updated 6.1.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.1.y
and can be browsed at the normal kernel.org git web browser:
https://git.kernel.org/?p=linux/kernel/git/stable/linux-stable.git;a=summary
thanks,
greg k-h
------------
Documentation/ABI/testing/configfs-usb-gadget-uvc | 2 Makefile | 2 arch/arm/boot/dts/spear320-hmi.dts | 2 arch/arm64/include/asm/efi.h | 6 arch/arm64/include/asm/mte.h | 30 arch/arm64/include/asm/pgtable.h | 2 arch/arm64/kernel/cpufeature.c | 4 arch/arm64/kernel/efi.c | 2 arch/arm64/kernel/elfcore.c | 2 arch/arm64/kernel/hibernate.c | 2 arch/arm64/kernel/mte.c | 17 arch/arm64/kvm/guest.c | 4 arch/arm64/kvm/mmu.c | 4 arch/arm64/mm/copypage.c | 6 arch/arm64/mm/fault.c | 2 arch/arm64/mm/mteswap.c | 2 arch/um/drivers/vector_kern.c | 1 arch/um/drivers/virt-pci.c | 26 arch/um/drivers/virtio_uml.c | 18 arch/x86/include/asm/resctrl.h | 12 arch/x86/kernel/cpu/resctrl/rdtgroup.c | 4 arch/x86/kernel/process_32.c | 2 arch/x86/kernel/process_64.c | 2 arch/x86/um/vdso/um_vdso.c | 12 drivers/acpi/device_pm.c | 19 drivers/auxdisplay/hd44780.c | 2 drivers/base/cacheinfo.c | 27 drivers/base/component.c | 2 drivers/base/dd.c | 2 drivers/block/loop.c | 8 drivers/bus/mhi/ep/main.c | 2 drivers/firmware/efi/sysfb_efi.c | 8 drivers/gpu/drm/display/drm_dp_mst_topology.c | 45 drivers/gpu/drm/i915/Kconfig | 6 drivers/gpu/drm/i915/display/intel_display.c | 4 drivers/gpu/drm/i915/display/intel_dp_mst.c | 61 drivers/gpu/drm/i915/display/intel_dp_mst.h | 4 drivers/gpu/drm/i915/display/intel_fbdev.c | 8 drivers/iio/accel/mma9551_core.c | 10 drivers/infiniband/core/cma.c | 17 drivers/infiniband/hw/hfi1/chip.c | 59 drivers/iommu/amd/iommu.c | 12 drivers/iommu/iommu.c | 16 drivers/media/usb/uvc/uvc_ctrl.c | 5 drivers/media/usb/uvc/uvc_driver.c | 90 - drivers/media/usb/uvc/uvc_entity.c | 2 drivers/media/usb/uvc/uvc_status.c | 37 drivers/media/usb/uvc/uvc_v4l2.c | 2 drivers/media/usb/uvc/uvc_video.c | 15 drivers/media/usb/uvc/uvcvideo.h | 4 drivers/memory/renesas-rpc-if.c | 120 + drivers/mfd/arizona-core.c | 2 drivers/misc/mei/bus-fixup.c | 8 drivers/misc/vmw_balloon.c | 2 drivers/mtd/ubi/build.c | 7 drivers/mtd/ubi/fastmap-wl.c | 12 drivers/mtd/ubi/vmt.c | 18 drivers/mtd/ubi/wl.c | 25 drivers/net/dsa/ocelot/felix_vsc9959.c | 2 drivers/net/dsa/ocelot/seville_vsc9953.c | 4 drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c | 2 drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c | 76 - drivers/net/ethernet/mellanox/mlx5/core/ecpf.c | 4 drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c | 25 drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h | 4 drivers/net/ethernet/mellanox/mlx5/core/en_stats.c | 1 drivers/net/ethernet/mellanox/mlx5/core/en_stats.h | 1 drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c | 3 drivers/net/ethernet/mellanox/mlx5/core/lib/geneve.c | 1 drivers/net/ethernet/mellanox/mlx5/core/sriov.c | 4 drivers/net/ethernet/sun/sunhme.c | 6 drivers/net/mdio/mdio-mscc-miim.c | 9 drivers/nfc/st-nci/se.c | 6 drivers/nfc/st21nfca/se.c | 6 drivers/nvme/host/core.c | 35 drivers/nvme/host/fabrics.h | 3 drivers/nvme/host/tcp.c | 6 drivers/pci/controller/pci-loongson.c | 71 drivers/pci/hotplug/pciehp_hpc.c | 2 drivers/pci/pci-acpi.c | 45 drivers/pci/pci.c | 10 drivers/pci/quirks.c | 22 drivers/pci/setup-bus.c | 236 ++- drivers/phy/rockchip/phy-rockchip-typec.c | 3 drivers/ptp/ptp_private.h | 2 drivers/ptp/ptp_vclock.c | 44 drivers/pwm/pwm-sifive.c | 8 drivers/pwm/pwm-stm32-lp.c | 2 drivers/rtc/interface.c | 2 drivers/rtc/rtc-sun6i.c | 16 drivers/scsi/ipr.c | 41 drivers/scsi/mpi3mr/mpi3mr.h | 10 drivers/scsi/mpi3mr/mpi3mr_fw.c | 75 - drivers/scsi/mpi3mr/mpi3mr_transport.c | 2 drivers/soc/mediatek/mt8186-pm-domains.h | 4 drivers/soc/mediatek/mtk-svs.c | 48 drivers/soc/qcom/qcom_stats.c | 10 drivers/soc/xilinx/xlnx_event_manager.c | 4 drivers/soundwire/bus_type.c | 9 drivers/soundwire/cadence_master.c | 43 drivers/soundwire/cadence_master.h | 13 drivers/spi/spi-tegra210-quad.c | 14 drivers/staging/emxx_udc/emxx_udc.c | 7 drivers/staging/pi433/pi433_if.c | 11 drivers/thermal/intel/Kconfig | 3 drivers/thermal/intel/intel_quark_dts_thermal.c | 12 drivers/tty/serial/fsl_lpuart.c | 24 drivers/tty/serial/pch_uart.c | 2 drivers/tty/serial/sc16is7xx.c | 51 drivers/tty/tty_io.c | 8 drivers/tty/vt/vc_screen.c | 4 drivers/usb/chipidea/debug.c | 2 drivers/usb/common/ulpi.c | 14 drivers/usb/core/usb.c | 2 drivers/usb/dwc3/core.h | 2 drivers/usb/dwc3/debug.h | 3 drivers/usb/dwc3/debugfs.c | 19 drivers/usb/dwc3/gadget.c | 4 drivers/usb/gadget/function/uvc_configfs.c | 59 drivers/usb/gadget/udc/bcm63xx_udc.c | 2 drivers/usb/gadget/udc/gr_udc.c | 2 drivers/usb/gadget/udc/lpc32xx_udc.c | 2 drivers/usb/gadget/udc/pxa25x_udc.c | 2 drivers/usb/gadget/udc/pxa27x_udc.c | 2 drivers/usb/host/fotg210-hcd.c | 2 drivers/usb/host/isp116x-hcd.c | 2 drivers/usb/host/isp1362-hcd.c | 2 drivers/usb/host/sl811-hcd.c | 2 drivers/usb/host/uhci-hcd.c | 6 drivers/usb/host/xhci-mvebu.c | 2 drivers/usb/storage/ene_ub6250.c | 2 drivers/vdpa/ifcvf/ifcvf_base.c | 30 drivers/vdpa/ifcvf/ifcvf_base.h | 6 drivers/vdpa/ifcvf/ifcvf_main.c | 139 - drivers/watchdog/at91sam9_wdt.c | 7 drivers/watchdog/pcwd_usb.c | 6 drivers/watchdog/rzg2l_wdt.c | 45 drivers/watchdog/sbsa_gwdt.c | 1 drivers/watchdog/watchdog_dev.c | 2 fs/ext4/ext4.h | 1 fs/ext4/fast_commit.c | 44 fs/ext4/super.c | 30 fs/f2fs/data.c | 24 fs/f2fs/f2fs.h | 8 fs/f2fs/file.c | 74 fs/f2fs/inode.c | 16 fs/f2fs/iostat.c | 6 fs/f2fs/segment.c | 23 fs/f2fs/super.c | 2 fs/f2fs/verity.c | 2 fs/jfs/jfs_dmap.c | 3 fs/ubifs/budget.c | 9 fs/ubifs/dir.c | 9 fs/ubifs/file.c | 31 fs/ubifs/super.c | 17 fs/ubifs/sysfs.c | 2 fs/ubifs/tnc.c | 24 fs/ubifs/ubifs.h | 5 include/acpi/acpi_bus.h | 1 include/drm/display/drm_dp_mst_helper.h | 3 include/linux/bootconfig.h | 2 include/linux/mdio/mdio-mscc-miim.h | 2 include/linux/netfilter.h | 5 include/linux/pci.h | 1 include/linux/pci_ids.h | 2 include/media/v4l2-uvc.h | 8 include/memory/renesas-rpc-if.h | 16 include/net/netns/conntrack.h | 1 include/net/sctp/structs.h | 1 include/net/tc_act/tc_pedit.h | 81 - include/trace/events/f2fs.h | 37 include/uapi/linux/usb/video.h | 30 include/uapi/linux/uvcvideo.h | 2 io_uring/kbuf.c | 2 io_uring/net.c | 16 io_uring/poll.c | 21 io_uring/poll.h | 1 kernel/fail_function.c | 5 kernel/irq/ipi.c | 8 kernel/printk/index.c | 2 kernel/trace/ring_buffer.c | 7 net/9p/trans_rdma.c | 15 net/9p/trans_xen.c | 48 net/bridge/netfilter/ebtables.c | 2 net/core/dev.c | 4 net/ipv4/netfilter/arp_tables.c | 4 net/ipv4/netfilter/ip_tables.c | 7 net/ipv4/tcp_minisocks.c | 7 net/ipv6/netfilter/ip6_tables.c | 7 net/ipv6/netfilter/ip6t_rpfilter.c | 4 net/ipv6/route.c | 11 net/netfilter/core.c | 3 net/netfilter/nf_conntrack_bpf.c | 1 net/netfilter/nf_conntrack_core.c | 25 net/netfilter/nf_conntrack_ecache.c | 2 net/netfilter/nf_conntrack_netlink.c | 8 net/netfilter/nf_tables_api.c | 2 net/netfilter/nfnetlink.c | 9 net/netfilter/xt_length.c | 3 net/nfc/netlink.c | 4 net/sched/Kconfig | 11 net/sched/Makefile | 1 net/sched/act_mpls.c | 66 net/sched/act_pedit.c | 178 +- net/sched/act_sample.c | 11 net/sched/cls_tcindex.c | 741 ---------- net/sctp/stream_sched_prio.c | 52 net/tls/tls_sw.c | 26 sound/soc/apple/mca.c | 31 sound/soc/codecs/Kconfig | 1 sound/soc/codecs/adau7118.c | 19 sound/soc/mediatek/mt8195/mt8195-dai-etdm.c | 3 tools/iio/iio_utils.c | 23 tools/objtool/check.c | 2 tools/testing/selftests/netfilter/rpath.sh | 32 tools/testing/selftests/tc-testing/tc-tests/filters/tcindex.json | 227 --- 216 files changed, 2273 insertions(+), 2153 deletions(-)
Akinobu Mita (1):
nvme-tcp: don't access released socket during error recovery
Alexander Potapenko (1):
fs: f2fs: initialize fsdata in pagecache_write()
Alexander Usyskin (1):
mei: bus-fixup:upon error print return values of send and receive
Alexandre Belloni (1):
rtc: allow rtc_read_alarm without read_alarm callback
Ammar Faizi (1):
x86: um: vdso: Add '%rcx' and '%r11' to the syscall clobber list
Arnd Bergmann (2):
scsi: ipr: Work around fortify-string warning
ASoC: zl38060 add gpiolib dependency
Benjamin Berg (4):
um: virtio_uml: free command if adding to virtqueue failed
um: virtio_uml: mark device as unregistered when breaking it
um: virtio_uml: move device breaking into workqueue
um: virt-pci: properly remove PCI device from bus
Catalin Marinas (1):
arm64: mte: Fix/clarify the PG_mte_tagged semantics
Chao Yu (4):
f2fs: fix to avoid potential deadlock
f2fs: introduce trace_f2fs_replace_atomic_write_block
f2fs: clear atomic_write_task in f2fs_abort_atomic_write()
f2fs: fix to abort atomic write only during do_exist()
Chen Jun (1):
watchdog: Fix kmemleak in watchdog_cdev_register
Christoph Hellwig (2):
f2fs: don't rely on F2FS_MAP_* in f2fs_iomap_begin
nvme: bring back auto-removal of deleted namespaces during sequential scan
Daeho Jeong (2):
f2fs: correct i_size change for atomic writes
f2fs: synchronize atomic write aborts
Dan Carpenter (1):
thermal: intel: quark_dts: fix error pointer dereference
Daniel Scally (2):
usb: uvc: Enumerate valid values for color matching
usb: gadget: uvc: Make bSourceID read/write
Daniel Wagner (1):
nvme-fabrics: show well known discovery name
Darrell Kavanagh (1):
firmware/efi sysfb_efi: Add quirk for Lenovo IdeaPad Duet 3
Dean Luick (1):
IB/hfi1: Update RMT size calculation
Deepak R Varma (1):
octeontx2-pf: Use correct struct reference in test condition
Emil Renner Berthing (1):
pwm: sifive: Always let the first pwm_apply_state succeed
Eric Biggers (1):
ext4: use ext4_fc_tl_mem in fast-commit replay path
Eric Dumazet (2):
net: fix __dev_kfree_skb_any() vs drop monitor
tcp: tcp_check_req() can be called from process context
Fabrice Gasnier (1):
pwm: stm32-lp: fix the check on arr and cmp registers update
Fabrizio Castro (1):
watchdog: rzg2l_wdt: Handle TYPE-B reset for RZ/V2M
Fedor Pchelkin (1):
nfc: fix memory leak of se_io context in nfc_genl_se_io
Florian Westphal (3):
netfilter: conntrack: fix rmmod double-free race
netfilter: ebtables: fix table blob use-after-free
netfilter: ctnetlink: make event listener tracking global
Gaosheng Cui (1):
driver: soc: xilinx: fix memory leak in xlnx_add_cb_for_notify_event()
Geert Uytterhoeven (2):
memory: renesas-rpc-if: Split-off private data from struct rpcif
memory: renesas-rpc-if: Move resource acquisition to .probe()
Geetha sowjanya (1):
octeontx2-pf: Recalculate UDP checksum for ptp 1-step sync packet
George Cherian (1):
watchdog: sbsa_wdog: Make sure the timeout programming is within the limits
George Kennedy (2):
ubi: ensure that VID header offset + VID header size <= alloc, size
vc_screen: modify vcs_size() handling in vcs_read()
Greg Kroah-Hartman (22):
kernel/printk/index.c: fix memory leak with using debugfs_lookup()
USB: fix memory leak with using debugfs_lookup()
staging: pi433: fix memory leak with using debugfs_lookup()
USB: dwc3: fix memory leak with using debugfs_lookup()
USB: chipidea: fix memory leak with using debugfs_lookup()
USB: ULPI: fix memory leak with using debugfs_lookup()
USB: uhci: fix memory leak with using debugfs_lookup()
USB: sl811: fix memory leak with using debugfs_lookup()
USB: fotg210: fix memory leak with using debugfs_lookup()
USB: isp116x: fix memory leak with using debugfs_lookup()
USB: isp1362: fix memory leak with using debugfs_lookup()
USB: gadget: gr_udc: fix memory leak with using debugfs_lookup()
USB: gadget: bcm63xx_udc: fix memory leak with using debugfs_lookup()
USB: gadget: lpc32xx_udc: fix memory leak with using debugfs_lookup()
USB: gadget: pxa25x_udc: fix memory leak with using debugfs_lookup()
USB: gadget: pxa27x_udc: fix memory leak with using debugfs_lookup()
tty: pcn_uart: fix memory leak with using debugfs_lookup()
misc: vmw_balloon: fix memory leak with using debugfs_lookup()
drivers: base: component: fix memory leak with using debugfs_lookup()
drivers: base: dd: fix memory leak with using debugfs_lookup() kernel/fail_function: fix memory leak with using debugfs_lookup() Linux 6.1.18
Guenter Roeck (1):
media: uvcvideo: Handle errors from calls to usb_string
Hangyu Hua (1):
netfilter: ctnetlink: fix possible refcount leak in ctnetlink_create_conntrack()
Harshit Mogalapalli (2):
iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_status_word()
iio: accel: mma9551_core: Prevent uninitialized variable in mma9551_read_config_word()
Huacai Chen (2):
PCI: loongson: Prevent LS7A MRRS increases
PCI: loongson: Add more devices that need MRRS quirk
Imre Deak (6):
drm/display/dp_mst: Add drm_atomic_get_old_mst_topology_state() drm/display/dp_mst: Fix down/up message handling after sink disconnect drm/display/dp_mst: Fix down message handling after a packet reception error drm/display/dp_mst: Fix payload addition on a disconnected sink drm/i915/dp_mst: Add the MST topology state for modesetted CRTCs drm/i915: Fix system suspend without fbdev being initialized
Isaac True (1):
serial: sc16is7xx: setup GPIO controller later in probe
Jakub Kicinski (1):
net: tls: avoid hanging tasks on the tx_lock
Jamal Hadi Salim (1):
net/sched: Retire tcindex classifier
Jens Axboe (1):
io_uring/poll: allow some retries for poll triggering spuriously
Jia-Ju Bai (1):
tracing: Add NULL checks for buffer in ring_buffer_free_read_page()
Jianglei Nie (1):
auxdisplay: hd44780: Fix potential memory leak in hd44780_remove()
Jiapeng Chong (1):
phy: rockchip-typec: Fix unsigned comparison with less than zero
Juergen Gross (2):
9p/xen: fix version parsing
9p/xen: fix connection sequence
Kees Cook (4):
media: uvcvideo: Silence memcpy() run-time false positive warnings
usb: host: xhci: mvebu: Iterate over array indexes instead of using pointer math
USB: ene_usb6250: Allocate enough memory for full object
RDMA/cma: Distinguish between sockaddr_in and sockaddr_in6 by size
Krishna Yarlagadda (2):
spi: tegra210-quad: Fix validate combined sequence
spi: tegra210-quad: Fix iterator outside loop
Krzysztof Kozlowski (1):
ARM: dts: spear320-hmi: correct STMPE GPIO compatible
Lad Prabhakar (1):
watchdog: rzg2l_wdt: Issue a reset before we put the PM clocks
Laurent Pinchart (1):
media: uvcvideo: Remove format descriptions
Li Hua (2):
ubifs: Fix build errors as symbol undefined
watchdog: pcwd_usb: Fix attempting to access uninitialized memory
Li Zetao (3):
ubi: Fix use-after-free when volume resizing failed
ubi: Fix unreferenced object reported by kmemleak in ubi_resize_volume()
ubifs: Fix memory leak in alloc_wbufs()
Liang He (1):
mfd: arizona: Use pm_runtime_resume_and_get() to prevent refcnt leak
Linus Torvalds (1):
x86/resctl: fix scheduler confusion with 'current'
Liu Shixin (1):
ubifs: Fix memory leak in ubifs_sysfs_init()
Liu Shixin via Jfs-discussion (1):
fs/jfs: fix shift exponent db_agl2size negative
Lu Wei (1):
ipv6: Add lwtunnel encap size of all siblings in nexthop calculation
Maher Sanalla (1):
net/mlx5: ECPF, wait for VF pages only after disabling host PFs
Manivannan Sadhasivam (2):
bus: mhi: ep: Fix the debug message for MHI_PKT_TYPE_RESET_CHAN_CMD cmd
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
Maor Dickman (1):
net/mlx5: Geneve, Fix handling of Geneve object id as error code
Marek Vasut (1):
media: uvcvideo: Add GUID for BGRA/X 8:8:8:8
Martin Povišer (3):
ASoC: apple: mca: Fix final status read on SERDES reset
ASoC: apple: mca: Fix SERDES reset sequence
ASoC: apple: mca: Improve handling of unavailable DMA channels
Mengyuan Lou (1):
PCI: Add ACS quirk for Wangxun NICs
Miaoqian Lin (1):
objtool: Fix memory leak in create_static_call_sections()
Mika Westerberg (3):
PCI: Align extra resources for hotplug bridges properly
PCI: Take other bus devices into account when distributing resources
PCI: Distribute available resources for root buses, too
Nuno Sá (1):
ASoC: adau7118: don't disable regulators on device unbind
Pablo Neira Ayuso (1):
netfilter: nf_tables: allow to fetch set elements when table has an owner
Pavel Tikhomirov (1):
netfilter: x_tables: fix percpu counter block leak on error path when creating new netns
Pedro Tammela (4):
net/sched: transition act_pedit to rcu and percpu stats net/sched: act_pedit: fix action bind logic net/sched: act_mpls: fix action bind logic net/sched: act_sample: fix action bind logic
Peter Collingbourne (1):
arm64: Reset KASAN tag in copy_highpage with HW tags only
Phil Sutter (1):
netfilter: ip6t_rpfilter: Fix regression with VRF interfaces
Pierre Gondois (1):
arm64: efi: Make efi_rt_lock a raw_spinlock
Rafael J. Wysocki (1):
PCI/ACPI: Account for _S0W of the target bridge in acpi_pci_bridge_d3()
Randy Dunlap (2):
drm/i915: move a Kconfig symbol to unbreak the menu presentation
thermal: intel: BXT_PMIC: select REGMAP instead of depending on it
Ricardo Ribalda (4):
soc: mediatek: mtk-svs: Enable the IRQ later
media: uvcvideo: Handle cameras with invalid descriptors
media: uvcvideo: Quirk for autosuspend in Logitech B910 and C910
media: uvcvideo: Fix race condition with usb_kill_urb
Richard Fitzgerald (3):
soundwire: bus_type: Avoid lockdep assert in sdw_drv_probe()
soundwire: cadence: Remove wasted space in response_buf
soundwire: cadence: Drain the RX FIFO after an IO timeout
Roger Lu (2):
soc: mediatek: mtk-svs: restore default voltages when svs_init02() fail
soc: mediatek: mtk-svs: reset svs when svs_resume() fail
Roi Dayan (1):
net/mlx5e: Verify flow_source cap before using it
Samuel Holland (1):
rtc: sun6i: Always export the internal oscillator
Sean Anderson (1):
net: sunhme: Fix region request
Sergey Shtylyov (1):
genirq/ipi: Fix NULL pointer deref in irq_data_get_affinity_mask()
Shang XiaoJing (1):
soc: mediatek: mtk-svs: Use pm_runtime_resume_and_get() in svs_init01()
Sherry Sun (1):
tty: serial: fsl_lpuart: disable the CTS when send break signal
Shin'ichiro Kawasaki (1):
scsi: mpi3mr: Use number of bits to manage bitmap sizes
Souradeep Chowdhury (1):
bootconfig: Increase max nodes of bootconfig from 1024 to 8192 for DCC support
Stephen Boyd (1):
soc: qcom: stats: Populate all subsystem debugfs files
Sven Schnelle (1):
tty: fix out-of-bounds access in tty_driver_lookup_tty()
Tinghan Shen (1):
soc: mediatek: mtk-pm-domains: Allow mt8186 ADSP default power on
Tomas Henzl (1):
scsi: mpi3mr: Fix an issue found by KASAN
Trevor Wu (1):
ASoC: mediatek: mt8195: add missing initialization
Vadim Fedorenko (2):
mlx5: fix skb leak while fifo resync and push
mlx5: fix possible ptp queue fifo use-after-free
Vasant Hegde (2):
iommu/amd: Fix error handling for pdev_pri_ats_enable()
iommu: Attach device group to old domain in error path
Vladimir Oltean (2):
net: dsa: seville: ignore mscc-miim read errors from Lynx PCS
net: dsa: felix: fix internal MDIO controller resource length
Wang Jianjian (1):
ext4: don't show commit interval if it is zero
Wojciech Lukowicz (1):
io_uring: fix size calculation when registering buf ring
Xiang Yang (1):
um: vector: Fix memory leak in vector_config
Xin Long (2):
netfilter: xt_length: use skb len to match in length_mt6
sctp: add a refcnt in sctp_stream_priorities to avoid a nested loop
Xinghui Li (1):
io_uring: fix two assignments in if conditions
Yang Yingliang (2):
ubi: Fix possible null-ptr-deref in ubi_free_volume()
usb: gadget: uvc: fix missing mutex_unlock() if kstrtou8() fails
Yangtao Li (2):
f2fs: allow set compression option of files without blocks
f2fs: fix to avoid potential memory corruption in __update_iostat_latency()
Yong-Xuan Wang (1):
cacheinfo: Fix shared_cpu_map to handle shared caches at different levels
Yuan Can (1):
staging: emxx_udc: Add checks for dma_alloc_coherent()
Yulong Zhang (1):
tools/iio/iio_utils:fix memory leak
Zhang Yi (1):
ext4: fix incorrect options show of original mount_opt and extend mount_opt2
Zhengchao Shao (1):
9p/rdma: unmap receive dma buffer in rdma_request()/post_recv()
Zhihao Cheng (12):
ubifs: Rectify space budget for ubifs_symlink() if symlink is encrypted
ubifs: Rectify space budget for ubifs_xrename()
ubifs: Fix wrong dirty space budget for dirty inode
ubifs: do_rename: Fix wrong space budget when target inode's nlink > 1
ubifs: Reserve one leb for each journal head while doing budget
ubifs: Re-statistic cleaned znode count if commit failed
ubifs: dirty_cow_znode: Fix memleak in error handling path
ubifs: ubifs_writepage: Mark page dirty after writing inode failed
ubifs: ubifs_releasepage: Remove ubifs_assert(0) to valid this process
ubi: fastmap: Fix missed fm_anchor PEB in wear-leveling after disabling fastmap
ubi: Fix UAF wear-leveling entry in eraseblk_count_seq_show()
ubi: ubi_wl_put_peb: Fix infinite loop when wear-leveling work failed
Zhong Jinghua (1):
loop: loop_set_status_from_info() check before assignment
Zhu Lingshan (10):
vDPA/ifcvf: decouple hw features manipulators from the adapter vDPA/ifcvf: decouple config space ops from the adapter
vDPA/ifcvf: alloc the mgmt_dev before the adapter
vDPA/ifcvf: decouple vq IRQ releasers from the adapter
vDPA/ifcvf: decouple config IRQ releaser from the adapter
vDPA/ifcvf: decouple vq irq requester from the adapter
vDPA/ifcvf: decouple config/dev IRQ requester and vectors allocator from the adapter vDPA/ifcvf: ifcvf_request_irq works on ifcvf_hw
vDPA/ifcvf: manage ifcvf_hw in the mgmt_dev
vDPA/ifcvf: allocate the adapter in dev_add()
ruanjinjie (1):
watchdog: at91sam9_wdt: use devm_request_irq to avoid missing free_irq() in error path
Íñigo Huguet (1):
ptp: vclock: use mutex to fix "sleep on atomic" bug
Greg Kroah-Hartman
maintainerDocumentation/ABI/testing/configfs-usb-gadget-uvc +1 -1
@@ -52,7 +52,7 @@ Date: Dec 2014 KernelVersion: 4.0 Description: Default output terminal descriptors - All attributes read only: + All attributes read only except bSourceID: ============== ============================================= iTerminal index of string descriptor
Makefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 1 -SUBLEVEL = 17 +SUBLEVEL = 18 EXTRAVERSION = NAME = Hurr durr I'ma ninja sloth
arch/arm/boot/dts/spear320-hmi.dts +1 -1
@@ -241,7 +241,7 @@ stmpe811@41 { irq-trigger = <0x1>; stmpegpio: stmpe-gpio { - compatible = "stmpe,gpio"; + compatible = "st,stmpe-gpio"; reg = <0>; gpio-controller; #gpio-cells = <2>;
arch/arm64/include/asm/efi.h +3 -3
@@ -33,7 +33,7 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md); ({ \efi_virtmap_load (); \__efi_fpsimd_begin (); \ -spin_lock (&efi_rt_lock); \ +raw_spin_lock (&efi_rt_lock); \ })#undef arch_efi_call_virt
@@ -42,12 +42,12 @@ int efi_set_mapping_permissions(struct mm_struct *mm, efi_memory_desc_t *md);#define arch_efi_call_virt_teardown () \ ({ \ - spin_unlock(&efi_rt_lock); \ + raw_spin_unlock(&efi_rt_lock); \ __efi_fpsimd_end(); \ efi_virtmap_unload(); \ }) -extern spinlock_t efi_rt_lock; +extern raw_spinlock_t efi_rt_lock;extern u64 *efi_rt_stack_top;efi_status_t __efi_rt_asm_wrapper (void *,const char *, ...);
arch/arm64/include/asm/mte.h +30 -0
@@ -37,6 +37,29 @@ void mte_free_tag_storage(char *storage);/* track which pages have valid allocation tags */ #define PG_mte_tagged PG_arch_2 +static inline void set_page_mte_tagged (struct page *page) +{ +/* +* Ensure that the tags written prior to this function are visible +* before the page flags update. +*/ +smp_wmb (); +set_bit (PG_mte_tagged, &page->flags); +} + +static inline bool page_mte_tagged (struct page *page) +{ +bool ret =test_bit (PG_mte_tagged, &page->flags); + +/* +* If the page is tagged, ensure ordering with a likely subsequent +* read of the tags. +*/ +if (ret) +smp_rmb (); +return ret; +} +void mte_zero_clear_page_tags (void *addr);void mte_sync_tags (pte_t old_pte,pte_t pte);void mte_copy_page_tags (void *kto,const void *kfrom);
@@ -56,6 +79,13 @@ size_t mte_probe_user_range(const char __user *uaddr, size_t size);/* unused if !CONFIG_ARM64_MTE, silence the compiler */ #define PG_mte_tagged 0 +static inline void set_page_mte_tagged (struct page *page) +{ +} +static inline bool page_mte_tagged (struct page *page) +{ +return false; +}static inline void mte_zero_clear_page_tags (void *addr) { }
arch/arm64/include/asm/pgtable.h +1 -1
@@ -1050,7 +1050,7 @@ static inline void arch_swap_invalidate_area(int type)static inline void arch_swap_restore (swp_entry_t entry,struct folio *folio) {if (system_supports_mte () &&mte_restore_tags (entry, &folio->page)) -set_bit (PG_mte_tagged, &folio->flags); +set_page_mte_tagged (&folio->page); }#endif /* CONFIG_ARM64_MTE */
arch/arm64/kernel/cpufeature.c +3 -1
@@ -2074,8 +2074,10 @@ static void cpu_enable_mte(struct arm64_cpu_capabilities const *cap)* Clear the tags in the zero page. This needs to be done via the * linear map which has the Tagged attribute. */ -if (!test_and_set_bit (PG_mte_tagged, &ZERO_PAGE (0 )->flags)) +if (!page_mte_tagged (ZERO_PAGE (0 ))) {mte_clear_page_tags (lm_alias (empty_zero_page)); +set_page_mte_tagged (ZERO_PAGE (0 )); + }kasan_init_hw_tags_cpu (); }
arch/arm64/kernel/efi.c +1 -1
@@ -146,7 +146,7 @@ asmlinkage efi_status_t efi_handle_corrupted_x18(efi_status_t s, const char *f)return s; } -DEFINE_SPINLOCK (efi_rt_lock); +DEFINE_RAW_SPINLOCK (efi_rt_lock); asmlinkage u64 *efi_rt_stack_top __ro_after_init;
arch/arm64/kernel/elfcore.c +1 -1
@@ -46,7 +46,7 @@ static int mte_dump_tag_range(struct coredump_params *cprm,* Pages mapped in user space as !pte_access_permitted() (e.g. * PROT_EXEC only) may not have the PG_mte_tagged flag set. */ -if (!test_bit (PG_mte_tagged, &page->flags)) { +if (!page_mte_tagged (page)) {put_page (page);dump_skip (cprm,MTE_PAGE_TAG_STORAGE );continue ;
arch/arm64/kernel/hibernate.c +1 -1
@@ -271,7 +271,7 @@ static int swsusp_mte_save_tags(void)if (!page)continue ; -if (!test_bit (PG_mte_tagged, &page->flags)) +if (!page_mte_tagged (page))continue ; ret =save_tags (page, pfn);
arch/arm64/kernel/mte.c +11 -6
@@ -41,8 +41,10 @@ static void mte_sync_page_tags(struct page *page, pte_t old_pte,if (check_swap &&is_swap_pte (old_pte)) {swp_entry_t entry =pte_to_swp_entry (old_pte); -if (!non_swap_entry (entry) &&mte_restore_tags (entry, page)) +if (!non_swap_entry (entry) &&mte_restore_tags (entry, page)) { +set_page_mte_tagged (page);return ; + } }if (!pte_is_tagged)
@@ -52,8 +54,10 @@ static void mte_sync_page_tags(struct page *page, pte_t old_pte,* Test PG_mte_tagged again in case it was racing with another * set_pte_at(). */ -if (!test_and_set_bit (PG_mte_tagged, &page->flags)) +if (!page_mte_tagged (page)) {mte_clear_page_tags (page_address (page)); +set_page_mte_tagged (page); + } }void mte_sync_tags (pte_t old_pte,pte_t pte)
@@ -69,9 +73,11 @@ void mte_sync_tags(pte_t old_pte, pte_t pte)/* if PG_mte_tagged is set, tags have already been initialised */ for (i =0 ; i < nr_pages; i++, page++) { -if (!test_bit (PG_mte_tagged, &page->flags)) +if (!page_mte_tagged (page)) {mte_sync_page_tags (page, old_pte, check_swap, pte_is_tagged); +set_page_mte_tagged (page); + } }/* ensure the tags are visible before the PTE is set */
@@ -96,8 +102,7 @@ int memcmp_pages(struct page *page1, struct page *page2)* pages is tagged, set_pte_at() may zero or change the tags of the * other page via mte_sync_tags(). */ -if (test_bit (PG_mte_tagged, &page1->flags) || -test_bit (PG_mte_tagged, &page2->flags)) +if (page_mte_tagged (page1) ||page_mte_tagged (page2))return addr1 != addr2;return ret;
@@ -454,7 +459,7 @@ static int __access_remote_tags(struct mm_struct *mm, unsigned long addr,put_page (page);break ; } -WARN_ON_ONCE (!test_bit (PG_mte_tagged, &page->flags)); +WARN_ON_ONCE (!page_mte_tagged (page));/* limit access to the end of the page */ offset =offset_in_page (addr);
arch/arm64/kvm/guest.c +2 -2
@@ -1059,7 +1059,7 @@ long kvm_vm_ioctl_mte_copy_tags(struct kvm *kvm, maddr =page_address (page);if (!write) { -if (test_bit (PG_mte_tagged, &page->flags)) +if (page_mte_tagged (page)) num_tags =mte_copy_tags_to_user (tags, maddr,MTE_GRANULES_PER_PAGE );else
@@ -1076,7 +1076,7 @@ long kvm_vm_ioctl_mte_copy_tags(struct kvm *kvm,* completed fully */ if (num_tags ==MTE_GRANULES_PER_PAGE ) -set_bit (PG_mte_tagged, &page->flags); +set_page_mte_tagged (page);kvm_release_pfn_dirty (pfn); }
arch/arm64/kvm/mmu.c +2 -2
@@ -1110,9 +1110,9 @@ static int sanitise_mte_tags(struct kvm *kvm, kvm_pfn_t pfn,return -EFAULT ;for (i =0 ; i < nr_pages; i++, page++) { -if (!test_bit (PG_mte_tagged, &page->flags)) { +if (!page_mte_tagged (page)) {mte_clear_page_tags (page_address (page)); -set_bit (PG_mte_tagged, &page->flags); +set_page_mte_tagged (page); } }
arch/arm64/mm/copypage.c +4 -2
@@ -21,9 +21,11 @@ void copy_highpage(struct page *to, struct page *from)copy_page (kto, kfrom); -if (system_supports_mte () &&test_bit (PG_mte_tagged, &from->flags)) { -set_bit (PG_mte_tagged, &to->flags); +if (system_supports_mte () &&page_mte_tagged (from)) { +if (kasan_hw_tags_enabled ()) +page_kasan_tag_reset (to);mte_copy_page_tags (kto, kfrom); +set_page_mte_tagged (to); } }EXPORT_SYMBOL (copy_highpage);
arch/arm64/mm/fault.c +1 -1
@@ -944,5 +944,5 @@ struct page *alloc_zeroed_user_highpage_movable(struct vm_area_struct *vma,void tag_clear_highpage (struct page *page) {mte_zero_clear_page_tags (page_address (page)); -set_bit (PG_mte_tagged, &page->flags); +set_page_mte_tagged (page); }
arch/arm64/mm/mteswap.c +1 -1
@@ -24,7 +24,7 @@ int mte_save_tags(struct page *page) {void *tag_storage, *ret; -if (!test_bit (PG_mte_tagged, &page->flags)) +if (!page_mte_tagged (page))return 0 ; tag_storage =mte_allocate_tag_storage ();
arch/um/drivers/vector_kern.c +1 -0
@@ -767,6 +767,7 @@ static int vector_config(char *str, char **error_out)if (parsed ==NULL ) { *error_out ="vector_config failed to parse parameters" ; +kfree (params);return -EINVAL ; }
arch/um/drivers/virt-pci.c +20 -6
@@ -132,8 +132,11 @@ static int um_pci_send_cmd(struct um_pci_device *dev, out ?1 :0 , posted ? cmd :HANDLE_NO_FREE (cmd), GFP_ATOMIC); -if (ret) +if (ret) { +if (posted) +kfree (cmd); goto out; + }if (posted) {virtqueue_kick (dev->cmd_vq);
@@ -623,22 +626,33 @@ static void um_pci_virtio_remove(struct virtio_device *vdev)struct um_pci_device *dev = vdev->priv;int i; -/* Stop all virtqueues */ -virtio_reset_device (vdev); - vdev->config->del_vqs (vdev); -device_set_wakeup_enable (&vdev->dev, false);mutex_lock (&um_pci_mtx);for (i =0 ; i <MAX_DEVICES ; i++) {if (um_pci_devices[i].dev != dev)continue ; + um_pci_devices[i].dev =NULL ;irq_free_desc (dev->irq); + +break ; }mutex_unlock (&um_pci_mtx); -um_pci_rescan (); +if (i <MAX_DEVICES ) { +struct pci_dev *pci_dev; + + pci_dev =pci_get_slot (bridge->bus, i); +if (pci_dev) +pci_stop_and_remove_bus_device_locked (pci_dev); + } + +/* Stop all virtqueues */ +virtio_reset_device (vdev); + dev->cmd_vq =NULL ; + dev->irq_vq =NULL ; + vdev->config->del_vqs (vdev);kfree (dev); }
arch/um/drivers/virtio_uml.c +17 -1
@@ -168,7 +168,8 @@ static void vhost_user_check_reset(struct virtio_uml_device *vu_dev,if (!vu_dev->registered)return ; -virtio_break_device (&vu_dev->vdev); + vu_dev->registered =0 ; +schedule_work (&pdata->conn_broken_wk); }
@@ -1136,6 +1137,15 @@ void virtio_uml_set_no_vq_suspend(struct virtio_device *vdev,static void vu_of_conn_broken (struct work_struct *wk) { +struct virtio_uml_platform_data *pdata; +struct virtio_uml_device *vu_dev; + + pdata = container_of(wk, struct virtio_uml_platform_data, conn_broken_wk); + + vu_dev =platform_get_drvdata (pdata->pdev); + +virtio_break_device (&vu_dev->vdev); +/* * We can't remove the device from the devicetree so the only thing we * can do is warn.
@@ -1266,8 +1276,14 @@ static int vu_unregister_cmdline_device(struct device *dev, void *data)static void vu_conn_broken (struct work_struct *wk) {struct virtio_uml_platform_data *pdata; +struct virtio_uml_device *vu_dev; pdata = container_of(wk, struct virtio_uml_platform_data, conn_broken_wk); + + vu_dev =platform_get_drvdata (pdata->pdev); + +virtio_break_device (&vu_dev->vdev); +vu_unregister_cmdline_device (&pdata->pdev->dev,NULL ); }
arch/x86/include/asm/resctrl.h +6 -6
@@ -51,7 +51,7 @@ DECLARE_STATIC_KEY_FALSE(rdt_mon_enable_key);* simple as possible. * Must be called with preemption disabled. */ -static void __resctrl_sched_in (void ) +static inline void __resctrl_sched_in (struct task_struct *tsk) {struct resctrl_pqr_state *state =this_cpu_ptr (&pqr_state);u32 closid = state->default_closid;
@@ -63,13 +63,13 @@ static void __resctrl_sched_in(void)* Else use the closid/rmid assigned to this cpu. */ if (static_branch_likely (&rdt_alloc_enable_key)) { - tmp =READ_ONCE (current->closid); + tmp =READ_ONCE (tsk->closid);if (tmp) closid = tmp; }if (static_branch_likely (&rdt_mon_enable_key)) { - tmp =READ_ONCE (current->rmid); + tmp =READ_ONCE (tsk->rmid);if (tmp) rmid = tmp; }
@@ -90,17 +90,17 @@ static inline unsigned int resctrl_arch_round_mon_val(unsigned int val) return val * scale; } -static inline void resctrl_sched_in (void ) +static inline void resctrl_sched_in (struct task_struct *tsk) {if (static_branch_likely (&rdt_enable_key)) -__resctrl_sched_in (); +__resctrl_sched_in (tsk); }void resctrl_cpu_detect (struct cpuinfo_x86 *c);#else -static inline void resctrl_sched_in (void ) {} +static inline void resctrl_sched_in (struct task_struct *tsk) {}static inline void resctrl_cpu_detect (struct cpuinfo_x86 *c) {}#endif /* CONFIG_X86_CPU_RESCTRL */
arch/x86/kernel/cpu/resctrl/rdtgroup.c +2 -2
@@ -314,7 +314,7 @@ static void update_cpu_closid_rmid(void *info)* executing task might have its own closid selected. Just reuse * the context switch code. */ -resctrl_sched_in (); +resctrl_sched_in (current); }/*
@@ -535,7 +535,7 @@ static void _update_task_closid_rmid(void *task)* Otherwise, the MSR is updated when the task is scheduled in. */ if (task == current) -resctrl_sched_in (); +resctrl_sched_in (task); }static void update_task_closid_rmid (struct task_struct *t)
arch/x86/kernel/process_32.c +1 -1
@@ -212,7 +212,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)switch_fpu_finish ();/* Load the Intel cache allocation PQR MSR. */ -resctrl_sched_in (); +resctrl_sched_in (next_p);return prev_p; }
arch/x86/kernel/process_64.c +1 -1
@@ -656,7 +656,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) }/* Load the Intel cache allocation PQR MSR. */ -resctrl_sched_in (); +resctrl_sched_in (next_p);return prev_p; }
arch/x86/um/vdso/um_vdso.c +8 -4
@@ -17,8 +17,10 @@ int __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts) {long ret; - asm("syscall" :"=a" (ret) : -"0" (__NR_clock_gettime),"D" (clock),"S" (ts) :"memory" ); + asm("syscall" + :"=a" (ret) + :"0" (__NR_clock_gettime),"D" (clock),"S" (ts) + :"rcx" ,"r11" ,"memory" );return ret; }
@@ -29,8 +31,10 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz) {long ret; - asm("syscall" :"=a" (ret) : -"0" (__NR_gettimeofday),"D" (tv),"S" (tz) :"memory" ); + asm("syscall" + :"=a" (ret) + :"0" (__NR_gettimeofday),"D" (tv),"S" (tz) + :"rcx" ,"r11" ,"memory" );return ret; }
drivers/acpi/device_pm.c +19 -0
@@ -484,6 +484,25 @@ void acpi_dev_power_up_children_with_adr(struct acpi_device *adev)acpi_dev_for_each_child (adev, acpi_power_up_if_adr_present,NULL ); } +/** +* acpi_dev_power_state_for_wake - Deepest power state for wakeup signaling +* @adev: ACPI companion of the target device. +* +* Evaluate _S0W for @adev and return the value produced by it or return +* ACPI_STATE_UNKNOWN on errors (including _S0W not present). +*/ +u8 acpi_dev_power_state_for_wake (struct acpi_device *adev) +{ +unsigned long long state; +acpi_status status; + + status =acpi_evaluate_integer (adev->handle,"_S0W" ,NULL , &state); +if (ACPI_FAILURE (status)) +return ACPI_STATE_UNKNOWN ; + +return state; +} +#ifdef CONFIG_PM static DEFINE_MUTEX (acpi_pm_notifier_lock);static DEFINE_MUTEX (acpi_pm_notifier_install_lock);
drivers/auxdisplay/hd44780.c +2 -0
@@ -322,8 +322,10 @@ static int hd44780_probe(struct platform_device *pdev)static int hd44780_remove (struct platform_device *pdev) {struct charlcd *lcd =platform_get_drvdata (pdev); +struct hd44780_common *hdc = lcd->drvdata;charlcd_unregister (lcd); +kfree (hdc->hd44780);kfree (lcd->drvdata);kfree (lcd);
drivers/base/cacheinfo.c +17 -10
@@ -251,7 +251,7 @@ static int cache_shared_cpu_map_setup(unsigned int cpu) {struct cpu_cacheinfo *this_cpu_ci =get_cpu_cacheinfo (cpu);struct cacheinfo *this_leaf, *sib_leaf; -unsigned int index; +unsigned int index, sib_index;int ret =0 ;if (this_cpu_ci->cpu_map_populated)
@@ -279,11 +279,13 @@ static int cache_shared_cpu_map_setup(unsigned int cpu)if (i == cpu || !sib_cpu_ci->info_list)continue ;/* skip if itself or no cacheinfo */ - - sib_leaf =per_cpu_cacheinfo_idx (i, index); -if (cache_leaves_are_shared (this_leaf, sib_leaf)) { -cpumask_set_cpu (cpu, &sib_leaf->shared_cpu_map); -cpumask_set_cpu (i, &this_leaf->shared_cpu_map); +for (sib_index =0 ; sib_index <cache_leaves (i); sib_index++) { + sib_leaf =per_cpu_cacheinfo_idx (i, sib_index); +if (cache_leaves_are_shared (this_leaf, sib_leaf)) { +cpumask_set_cpu (cpu, &sib_leaf->shared_cpu_map); +cpumask_set_cpu (i, &this_leaf->shared_cpu_map); +break ; + } } }/* record the maximum cache line size */
@@ -297,7 +299,7 @@ static int cache_shared_cpu_map_setup(unsigned int cpu)static void cache_shared_cpu_map_remove (unsigned int cpu) {struct cacheinfo *this_leaf, *sib_leaf; -unsigned int sibling, index; +unsigned int sibling, index, sib_index;for (index =0 ; index <cache_leaves (cpu); index++) { this_leaf =per_cpu_cacheinfo_idx (cpu, index);
@@ -308,9 +310,14 @@ static void cache_shared_cpu_map_remove(unsigned int cpu)if (sibling == cpu || !sib_cpu_ci->info_list)continue ;/* skip if itself or no cacheinfo */ - sib_leaf =per_cpu_cacheinfo_idx (sibling, index); -cpumask_clear_cpu (cpu, &sib_leaf->shared_cpu_map); -cpumask_clear_cpu (sibling, &this_leaf->shared_cpu_map); +for (sib_index =0 ; sib_index <cache_leaves (sibling); sib_index++) { + sib_leaf =per_cpu_cacheinfo_idx (sibling, sib_index); +if (cache_leaves_are_shared (this_leaf, sib_leaf)) { +cpumask_clear_cpu (cpu, &sib_leaf->shared_cpu_map); +cpumask_clear_cpu (sibling, &this_leaf->shared_cpu_map); +break ; + } + } }if (of_have_populated_dt ())of_node_put (this_leaf->fw_token);
drivers/base/component.c +1 -1
@@ -125,7 +125,7 @@ static void component_debugfs_add(struct aggregate_device *m)static void component_debugfs_del (struct aggregate_device *m) { -debugfs_remove (debugfs_lookup (dev_name (m->parent), component_debugfs_dir)); +debugfs_lookup_and_remove (dev_name (m->parent), component_debugfs_dir); }#else
drivers/base/dd.c +1 -1
@@ -372,7 +372,7 @@ late_initcall(deferred_probe_initcall); static void __exit deferred_probe_exit(void) { -debugfs_remove_recursive (debugfs_lookup ("devices_deferred" ,NULL )); +debugfs_lookup_and_remove ("devices_deferred" ,NULL ); }__exitcall (deferred_probe_exit);
drivers/block/loop.c +4 -4
@@ -977,13 +977,13 @@ loop_set_status_from_info(struct loop_device *lo,return -EINVAL ; } +/* Avoid assigning overflow values */ +if (info->lo_offset >LLONG_MAX || info->lo_sizelimit >LLONG_MAX ) +return -EOVERFLOW ; + lo->lo_offset = info->lo_offset; lo->lo_sizelimit = info->lo_sizelimit; -/* loff_t vars have been assigned __u64 */ -if (lo->lo_offset <0 || lo->lo_sizelimit <0 ) -return -EOVERFLOW ; -memcpy (lo->lo_file_name, info->lo_file_name,LO_NAME_SIZE ); lo->lo_file_name[LO_NAME_SIZE -1 ] =0 ; lo->lo_flags = info->lo_flags;
drivers/bus/mhi/ep/main.c +1 -1
@@ -219,7 +219,7 @@ static int mhi_ep_process_cmd_ring(struct mhi_ep_ring *ring, struct mhi_ring_elemutex_unlock (&mhi_chan->lock);break ;case MHI_PKT_TYPE_RESET_CHAN_CMD : -dev_dbg (dev,"Received STOP command for channel (%u)\n" , ch_id); +dev_dbg (dev,"Received RESET command for channel (%u)\n" , ch_id);if (!ch_ring->started) {dev_err (dev,"Channel (%u) not opened\n" , ch_id);return -ENODEV ;
drivers/firmware/efi/sysfb_efi.c +8 -0
@@ -264,6 +264,14 @@ static const struct dmi_system_id efifb_dmi_swap_width_height[] __initconst = { "Lenovo ideapad D330-10IGM"), }, }, + { + /* Lenovo IdeaPad Duet 3 10IGL5 with 1200x1920 portrait screen */ + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "LENOVO"), + DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, + "IdeaPad Duet 3 10IGL5"), + }, + }, {}, };
drivers/gpu/drm/display/drm_dp_mst_topology.c +39 -6
88 lines not on this page · raw message
drivers/gpu/drm/i915/Kconfig +3 -3
@@ -107,9 +107,6 @@ config DRM_I915_USERPTR If in doubt, say "Y". -config DRM_I915_GVT - bool - config DRM_I915_GVT_KVMGT tristate "Enable KVM host support Intel GVT-g graphics virtualization" depends on DRM_I915
@@ -160,3 +157,6 @@ menu "drm/i915 Unstable Evolution" depends on DRM_I915 source "drivers/gpu/drm/i915/Kconfig.unstable" endmenu + +config DRM_I915_GVT + bool
drivers/gpu/drm/i915/display/intel_display.c +4 -0
@@ -5969,6 +5969,10 @@ int intel_modeset_all_pipes(struct intel_atomic_state *state)if (ret)return ret; + ret =intel_dp_mst_add_topology_state_for_crtc (state, crtc); +if (ret) +return ret; + ret =intel_atomic_add_affected_planes (state, crtc);if (ret)return ret;
drivers/gpu/drm/i915/display/intel_dp_mst.c +61 -0
64 lines not on this page · raw message
drivers/gpu/drm/i915/display/intel_dp_mst.h +4 -0
@@ -8,6 +8,8 @@#include <linux/types.h> +struct intel_atomic_state ; +struct intel_crtc ;struct intel_crtc_state ;struct intel_digital_port ;struct intel_dp ;
@@ -18,5 +20,7 @@ int intel_dp_mst_encoder_active_links(struct intel_digital_port *dig_port);bool intel_dp_mst_is_master_trans (const struct intel_crtc_state *crtc_state);bool intel_dp_mst_is_slave_trans (const struct intel_crtc_state *crtc_state);bool intel_dp_mst_source_support (struct intel_dp *intel_dp); +int intel_dp_mst_add_topology_state_for_crtc (struct intel_atomic_state *state, +struct intel_crtc *crtc);#endif /* __INTEL_DP_MST_H__ */
drivers/gpu/drm/i915/display/intel_fbdev.c +7 -1
@@ -624,7 +624,13 @@ void intel_fbdev_set_suspend(struct drm_device *dev, int state, bool synchronousstruct intel_fbdev *ifbdev = dev_priv->display.fbdev.fbdev;struct fb_info *info; -if (!ifbdev || !ifbdev->vma) +if (!ifbdev) +return ; + +if (drm_WARN_ON (&dev_priv->drm, !HAS_DISPLAY (dev_priv))) +return ; + +if (!ifbdev->vma) goto set_suspend; info = ifbdev->helper.fbdev;
drivers/iio/accel/mma9551_core.c +8 -2
@@ -296,9 +296,12 @@ int mma9551_read_config_word(struct i2c_client *client, u8 app_id, ret =mma9551_transfer (client, app_id,MMA9551_CMD_READ_CONFIG , reg,NULL ,0 , (u8 *)&v,2 ); +if (ret <0 ) +return ret; + *val =be16_to_cpu (v); -return ret; +return 0 ; }EXPORT_SYMBOL_NS (mma9551_read_config_word,IIO_MMA9551 );
@@ -354,9 +357,12 @@ int mma9551_read_status_word(struct i2c_client *client, u8 app_id, ret =mma9551_transfer (client, app_id,MMA9551_CMD_READ_STATUS , reg,NULL ,0 , (u8 *)&v,2 ); +if (ret <0 ) +return ret; + *val =be16_to_cpu (v); -return ret; +return 0 ; }EXPORT_SYMBOL_NS (mma9551_read_status_word,IIO_MMA9551 );
drivers/infiniband/core/cma.c +12 -5
@@ -479,13 +479,20 @@ static int compare_netdev_and_ip(int ifindex_a, struct sockaddr *sa,if (sa->sa_family != sb->sa_family)return sa->sa_family - sb->sa_family; -if (sa->sa_family ==AF_INET ) -return memcmp ((char *)&((struct sockaddr_in *)sa)->sin_addr, - (char *)&((struct sockaddr_in *)sb)->sin_addr, +if (sa->sa_family ==AF_INET && +__builtin_object_size (sa,0 ) >=sizeof (struct sockaddr_in )) { +return memcmp (&((struct sockaddr_in *)sa)->sin_addr, + &((struct sockaddr_in *)sb)->sin_addr,sizeof (((struct sockaddr_in *)sa)->sin_addr)); + } + +if (sa->sa_family ==AF_INET6 && +__builtin_object_size (sa,0 ) >=sizeof (struct sockaddr_in6 )) { +return ipv6_addr_cmp (&((struct sockaddr_in6 *)sa)->sin6_addr, + &((struct sockaddr_in6 *)sb)->sin6_addr); + } -return ipv6_addr_cmp (&((struct sockaddr_in6 *)sa)->sin6_addr, - &((struct sockaddr_in6 *)sb)->sin6_addr); +return -1 ; }static int cma_add_id_to_tree (struct rdma_id_private *node_id_priv)
drivers/infiniband/hw/hfi1/chip.c +32 -27
96 lines not on this page · raw message
drivers/iommu/amd/iommu.c +7 -5
@@ -1712,27 +1712,29 @@ static int pdev_pri_ats_enable(struct pci_dev *pdev)/* Only allow access to user-accessible pages */ ret =pci_enable_pasid (pdev,0 );if (ret) - goto out_err; +return ret;/* First reset the PRI state of the device */ ret =pci_reset_pri (pdev);if (ret) - goto out_err; + goto out_err_pasid;/* Enable PRI */ /* FIXME: Hardcode number of outstanding requests for now */ ret =pci_enable_pri (pdev,32 );if (ret) - goto out_err; + goto out_err_pasid; ret =pci_enable_ats (pdev,PAGE_SHIFT );if (ret) - goto out_err; + goto out_err_pri;return 0 ; -out_err: +out_err_pri:pci_disable_pri (pdev); + +out_err_pasid:pci_disable_pasid (pdev);return ret;
drivers/iommu/iommu.c +15 -1
@@ -2089,8 +2089,22 @@ static int __iommu_attach_group(struct iommu_domain *domain, ret =__iommu_group_for_each_dev (group, domain, iommu_group_do_attach_device); -if (ret ==0 ) +if (ret ==0 ) { group->domain = domain; + }else { +/* +* To recover from the case when certain device within the +* group fails to attach to the new domain, we need force +* attaching all devices back to the old domain. The old +* domain is compatible for all devices in the group, +* hence the iommu driver should always return success. +*/ +struct iommu_domain *old_domain = group->domain; + + group->domain =NULL ; +WARN (__iommu_group_set_domain (group, old_domain), +"iommu driver failed to attach a compatible domain" ); + }return ret; }
drivers/media/usb/uvc/uvc_ctrl.c +5 -0
@@ -6,6 +6,7 @@* Laurent Pinchart ([email protected]) */ +#include <asm/barrier.h> #include <linux/bitops.h> #include <linux/kernel.h> #include <linux/list.h>
@@ -1509,6 +1510,10 @@ static void uvc_ctrl_status_event_work(struct work_struct *work)uvc_ctrl_status_event (w->chain, w->ctrl, w->data); +/* The barrier is needed to synchronize with uvc_status_stop(). */ +if (smp_load_acquire (&dev->flush_status)) +return ; +/* Resubmit the URB. */ w->urb->interval = dev->int_ep->desc.bInterval; ret =usb_submit_urb (w->urb,GFP_KERNEL );
drivers/media/usb/uvc/uvc_driver.c +39 -51
172 lines not on this page · raw message
drivers/media/usb/uvc/uvc_entity.c +1 -1
@@ -37,7 +37,7 @@ static int uvc_mc_create_links(struct uvc_video_chain *chain,continue ; remote =uvc_entity_by_id (chain->dev, entity->baSourceID[i]); -if (remote ==NULL ) +if (remote ==NULL || remote->num_pads ==0 )return -EINVAL ; source = (UVC_ENTITY_TYPE (remote) ==UVC_TT_STREAMING )
drivers/media/usb/uvc/uvc_status.c +37 -0
@@ -6,6 +6,7 @@* Laurent Pinchart ([email protected]) */ +#include <asm/barrier.h> #include <linux/kernel.h> #include <linux/input.h> #include <linux/slab.h>
@@ -309,5 +310,41 @@ int uvc_status_start(struct uvc_device *dev, gfp_t flags)void uvc_status_stop (struct uvc_device *dev) { +struct uvc_ctrl_work *w = &dev->async_ctrl; + +/* +* Prevent the asynchronous control handler from requeing the URB. The +* barrier is needed so the flush_status change is visible to other +* CPUs running the asynchronous handler before usb_kill_urb() is +* called below. +*/ +smp_store_release (&dev->flush_status, true); + +/* +* Cancel any pending asynchronous work. If any status event was queued, +* process it synchronously. +*/ +if (cancel_work_sync (&w->work)) +uvc_ctrl_status_event (w->chain, w->ctrl, w->data); + +/* Kill the urb. */ usb_kill_urb (dev->int_urb); + +/* +* The URB completion handler may have queued asynchronous work. This +* won't resubmit the URB as flush_status is set, but it needs to be +* cancelled before returning or it could then race with a future +* uvc_status_start() call. +*/ +if (cancel_work_sync (&w->work)) +uvc_ctrl_status_event (w->chain, w->ctrl, w->data); + +/* +* From this point, there are no events on the queue and the status URB +* is dead. No events will be queued until uvc_status_start() is called. +* The barrier is needed to make sure that flush_status is visible to +* uvc_ctrl_status_event_work() when uvc_status_start() will be called +* again. +*/ +smp_store_release (&dev->flush_status, false); }
drivers/media/usb/uvc/uvc_v4l2.c +0 -2
@@ -661,8 +661,6 @@ static int uvc_ioctl_enum_fmt(struct uvc_streaming *stream, fmt->flags =0 ;if (format->flags &UVC_FMT_FLAG_COMPRESSED ) fmt->flags |=V4L2_FMT_FLAG_COMPRESSED ; -strscpy (fmt->description, format->name,sizeof (fmt->description)); - fmt->description[sizeof (fmt->description) -1 ] =0 ; fmt->pixelformat = format->fcc;return 0 ; }
drivers/media/usb/uvc/uvc_video.c +14 -1
@@ -1352,7 +1352,9 @@ static void uvc_video_decode_meta(struct uvc_streaming *stream,if (has_scr)memcpy (stream->clock.last_scr, scr,6 ); -memcpy (&meta->length, mem, length); + meta->length = mem[0 ]; + meta->flags = mem[1 ]; +memcpy (meta->buf, &mem[2 ], length -2 ); meta_buf->bytesused += length +sizeof (meta->ns) +sizeof (meta->sof); uvc_dbg(stream->dev, FRAME,
@@ -1965,6 +1967,17 @@ static int uvc_video_start_transfer(struct uvc_streaming *stream,"Selecting alternate setting %u (%u B/frame bandwidth)\n" , altsetting, best_psize); +/* +* Some devices, namely the Logitech C910 and B910, are unable +* to recover from a USB autosuspend, unless the alternate +* setting of the streaming interface is toggled. +*/ +if (stream->dev->quirks &UVC_QUIRK_WAKE_AUTOSUSPEND ) { +usb_set_interface (stream->dev->udev, intfnum, + altsetting); +usb_set_interface (stream->dev->udev, intfnum,0 ); + } + ret =usb_set_interface (stream->dev->udev, intfnum, altsetting);if (ret <0 )return ret;
drivers/media/usb/uvc/uvcvideo.h +2 -2
@@ -74,6 +74,7 @@#define UVC_QUIRK_RESTORE_CTRLS_ON_INIT 0x00000400#define UVC_QUIRK_FORCE_Y8 0x00000800#define UVC_QUIRK_FORCE_BPP 0x00001000 +#define UVC_QUIRK_WAKE_AUTOSUSPEND 0x00002000/* Format flags */ #define UVC_FMT_FLAG_COMPRESSED 0x00000001
@@ -264,8 +265,6 @@ struct uvc_format {u32 fcc;u32 flags; -char name[32 ]; -unsigned int nframes;struct uvc_frame *frame; };
@@ -559,6 +558,7 @@ struct uvc_device {/* Status Interrupt Endpoint */ struct usb_host_endpoint *int_ep;struct urb *int_urb; +bool flush_status;u8 *status;struct input_dev *input;char input_phys[64 ];
drivers/memory/renesas-rpc-if.c +79 -41
221 lines not on this page · raw message
drivers/mfd/arizona-core.c +1 -1
@@ -45,7 +45,7 @@ int arizona_clk32k_enable(struct arizona *arizona)if (arizona->clk32k_ref ==1 ) {switch (arizona->pdata.clk32k_src) {case ARIZONA_32KZ_MCLK1 : - ret =pm_runtime_get_sync (arizona->dev); + ret =pm_runtime_resume_and_get (arizona->dev);if (ret !=0 ) goto err_ref; ret =clk_prepare_enable (arizona->mclk[ARIZONA_MCLK1 ]);
drivers/misc/mei/bus-fixup.c +4 -4
@@ -151,7 +151,7 @@ static int mei_fwver(struct mei_cl_device *cldev) ret =__mei_cl_send (cldev->cl, (u8 *)&req,sizeof (req),0 ,MEI_CL_IO_TX_BLOCKING );if (ret <0 ) { -dev_err (&cldev->dev,"Could not send ReqFWVersion cmd\n" ); +dev_err (&cldev->dev,"Could not send ReqFWVersion cmd ret = %d\n" , ret);return ret; }
@@ -163,7 +163,7 @@ static int mei_fwver(struct mei_cl_device *cldev)* Should be at least one version block, * error out if nothing found */ -dev_err (&cldev->dev,"Could not read FW version\n" ); +dev_err (&cldev->dev,"Could not read FW version ret = %d\n" , bytes_recv);return -EIO ; }
@@ -376,7 +376,7 @@ static int mei_nfc_if_version(struct mei_cl *cl, ret =__mei_cl_send (cl, (u8 *)&cmd,sizeof (cmd),0 ,MEI_CL_IO_TX_BLOCKING );if (ret <0 ) { -dev_err (bus->dev,"Could not send IF version cmd\n" ); +dev_err (bus->dev,"Could not send IF version cmd ret = %d\n" , ret);return ret; }
@@ -391,7 +391,7 @@ static int mei_nfc_if_version(struct mei_cl *cl, bytes_recv =__mei_cl_recv (cl, (u8 *)reply, if_version_length, &vtag,0 ,0 );if (bytes_recv <0 || (size_t )bytes_recv < if_version_length) { -dev_err (bus->dev,"Could not read IF version\n" ); +dev_err (bus->dev,"Could not read IF version ret = %d\n" , bytes_recv); ret = -EIO ; goto err; }
drivers/misc/vmw_balloon.c +1 -1
@@ -1709,7 +1709,7 @@ static void __init vmballoon_debugfs_init(struct vmballoon *b) static void __exit vmballoon_debugfs_exit(struct vmballoon *b) {static_key_disable (&balloon_stat_enabled.key); -debugfs_remove (debugfs_lookup ("vmmemctl" ,NULL )); +debugfs_lookup_and_remove ("vmmemctl" ,NULL );kfree (b->stats); b->stats =NULL ; }
drivers/mtd/ubi/build.c +7 -0
@@ -468,6 +468,7 @@ static int uif_init(struct ubi_device *ubi) err =ubi_add_volume (ubi, ubi->volumes[i]);if (err) {ubi_err (ubi,"cannot add volume %d" , i); + ubi->volumes[i] =NULL ; goto out_volumes; } }
@@ -663,6 +664,12 @@ static int io_init(struct ubi_device *ubi, int max_beb_per1024) ubi->ec_hdr_alsize =ALIGN (UBI_EC_HDR_SIZE , ubi->hdrs_min_io_size); ubi->vid_hdr_alsize =ALIGN (UBI_VID_HDR_SIZE , ubi->hdrs_min_io_size); +if (ubi->vid_hdr_offset && ((ubi->vid_hdr_offset +UBI_VID_HDR_SIZE ) > + ubi->vid_hdr_alsize)) { +ubi_err (ubi,"VID header offset %d too large." , ubi->vid_hdr_offset); +return -EINVAL ; + } +dbg_gen ("min_io_size %d" , ubi->min_io_size);dbg_gen ("max_write_size %d" , ubi->max_write_size);dbg_gen ("hdrs_min_io_size %d" , ubi->hdrs_min_io_size);
drivers/mtd/ubi/fastmap-wl.c +7 -5
@@ -146,13 +146,15 @@ void ubi_refill_pools(struct ubi_device *ubi)if (ubi->fm_anchor) {wl_tree_add (ubi->fm_anchor, &ubi->free); ubi->free_count++; + ubi->fm_anchor =NULL ; } -/* -* All available PEBs are in ubi->free, now is the time to get -* the best anchor PEBs. -*/ - ubi->fm_anchor =ubi_wl_get_fm_peb (ubi,1 ); +if (!ubi->fm_disabled) +/* +* All available PEBs are in ubi->free, now is the time to get +* the best anchor PEBs. +*/ + ubi->fm_anchor =ubi_wl_get_fm_peb (ubi,1 );for (;;) { enough =0 ;
drivers/mtd/ubi/vmt.c +10 -8
@@ -464,7 +464,7 @@ int ubi_resize_volume(struct ubi_volume_desc *desc, int reserved_pebs)for (i =0 ; i < -pebs; i++) { err =ubi_eba_unmap_leb (ubi, vol, reserved_pebs + i);if (err) - goto out_acc; + goto out_free; }spin_lock (&ubi->volumes_lock); ubi->rsvd_pebs += pebs;
@@ -512,8 +512,10 @@ int ubi_resize_volume(struct ubi_volume_desc *desc, int reserved_pebs) ubi->avail_pebs += pebs;spin_unlock (&ubi->volumes_lock); } +return err; + out_free: -kfree (new_eba_tbl); +ubi_eba_destroy_table (new_eba_tbl);return err; }
@@ -580,6 +582,7 @@ int ubi_add_volume(struct ubi_device *ubi, struct ubi_volume *vol)if (err) {ubi_err (ubi,"cannot add character device for volume %d, error %d" , vol_id, err); +vol_release (&vol->dev);return err; }
@@ -590,15 +593,14 @@ int ubi_add_volume(struct ubi_device *ubi, struct ubi_volume *vol) vol->dev.groups = volume_dev_groups;dev_set_name (&vol->dev,"%s_%d" , ubi->ubi_name, vol->vol_id); err =device_register (&vol->dev); -if (err) - goto out_cdev; +if (err) { +cdev_del (&vol->cdev); +put_device (&vol->dev); +return err; + }self_check_volumes (ubi);return err; - -out_cdev: -cdev_del (&vol->cdev); -return err; }/**
drivers/mtd/ubi/wl.c +22 -3
@@ -890,8 +890,11 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk, err =do_sync_erase (ubi, e1, vol_id, lnum,0 );if (err) { -if (e2) +if (e2) { +spin_lock (&ubi->wl_lock);wl_entry_destroy (ubi, e2); +spin_unlock (&ubi->wl_lock); + } goto out_ro; }
@@ -973,11 +976,11 @@ static int wear_leveling_worker(struct ubi_device *ubi, struct ubi_work *wrk,spin_lock (&ubi->wl_lock); ubi->move_from = ubi->move_to =NULL ; ubi->move_to_put = ubi->wl_scheduled =0 ; +wl_entry_destroy (ubi, e1); +wl_entry_destroy (ubi, e2);spin_unlock (&ubi->wl_lock);ubi_free_vid_buf (vidb); -wl_entry_destroy (ubi, e1); -wl_entry_destroy (ubi, e2); out_ro:ubi_ro_mode (ubi);
@@ -1130,14 +1133,18 @@ static int __erase_worker(struct ubi_device *ubi, struct ubi_work *wl_wrk)/* Re-schedule the LEB for erasure */ err1 =schedule_erase (ubi, e, vol_id, lnum,0 , false);if (err1) { +spin_lock (&ubi->wl_lock);wl_entry_destroy (ubi, e); +spin_unlock (&ubi->wl_lock); err = err1; goto out_ro; }return err; } +spin_lock (&ubi->wl_lock);wl_entry_destroy (ubi, e); +spin_unlock (&ubi->wl_lock);if (err != -EIO )/* * If this is not %-EIO, we have no idea what to do. Scheduling
@@ -1253,6 +1260,18 @@ int ubi_wl_put_peb(struct ubi_device *ubi, int vol_id, int lnum, retry:spin_lock (&ubi->wl_lock); e = ubi->lookuptbl[pnum]; +if (!e) { +/* +* This wl entry has been removed for some errors by other +* process (eg. wear leveling worker), corresponding process +* (except __erase_worker, which cannot concurrent with +* ubi_wl_put_peb) will set ubi ro_mode at the same time, +* just ignore this wl entry. +*/ +spin_unlock (&ubi->wl_lock); +up_read (&ubi->fm_protect); +return 0 ; + }if (e == ubi->move_from) {/* * User is putting the physical eraseblock which was selected to
drivers/net/dsa/ocelot/felix_vsc9959.c +1 -1
@@ -513,7 +513,7 @@ static const char * const vsc9959_resource_names[TARGET_MAX] = {* SGMII/QSGMII MAC PCS can be found. */ static const struct resource vsc9959_imdio_res = -DEFINE_RES_MEM_NAMED (0x8030 ,0x8040 ,"imdio" ); +DEFINE_RES_MEM_NAMED (0x8030 ,0x10 ,"imdio" );static const struct reg_field vsc9959_regfields[REGFIELD_MAX ] = { [ANA_ADVLEARN_VLAN_CHK ] =REG_FIELD (ANA_ADVLEARN ,6 ,6 ),
drivers/net/dsa/ocelot/seville_vsc9953.c +2 -2
@@ -923,8 +923,8 @@ static int vsc9953_mdio_bus_alloc(struct ocelot *ocelot) rc =mscc_miim_setup (dev, &bus,"VSC9953 internal MDIO bus" , ocelot->targets[GCB ], - ocelot->map[GCB ][GCB_MIIM_MII_STATUS ®_MASK ]); - + ocelot->map[GCB ][GCB_MIIM_MII_STATUS ®_MASK ], + true);if (rc) {dev_err (dev,"failed to setup MDIO bus\n" );return rc;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_flows.c +1 -1
@@ -765,7 +765,7 @@ static int otx2_prepare_ipv6_flow(struct ethtool_rx_flow_spec *fsp,/* NPC profile doesn't extract AH/ESP header fields */ if ((ah_esp_mask->spi & ah_esp_hdr->spi) || - (ah_esp_mask->tclass & ah_esp_mask->tclass)) + (ah_esp_mask->tclass & ah_esp_hdr->tclass))return -EOPNOTSUPP ;if (flow_type ==AH_V6_FLOW )
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c +57 -19
132 lines not on this page · raw message
drivers/net/ethernet/mellanox/mlx5/core/ecpf.c +4 -0
@@ -90,4 +90,8 @@ void mlx5_ec_cleanup(struct mlx5_core_dev *dev) err =mlx5_wait_for_pages (dev, &dev->priv.page_counters[MLX5_HOST_PF ]);if (err)mlx5_core_warn (dev,"Timeout reclaiming external host PF pages err(%d)\n" , err); + + err =mlx5_wait_for_pages (dev, &dev->priv.page_counters[MLX5_VF ]); +if (err) +mlx5_core_warn (dev,"Timeout reclaiming external host VFs pages err(%d)\n" , err); }
drivers/net/ethernet/mellanox/mlx5/core/en/ptp.c +22 -3
@@ -86,7 +86,19 @@ static bool mlx5e_ptp_ts_cqe_drop(struct mlx5e_ptpsq *ptpsq, u16 skb_cc, u16 skbreturn (ptpsq->ts_cqe_ctr_mask && (skb_cc != skb_id)); } -static void mlx5e_ptp_skb_fifo_ts_cqe_resync (struct mlx5e_ptpsq *ptpsq,u16 skb_cc,u16 skb_id) +static bool mlx5e_ptp_ts_cqe_ooo (struct mlx5e_ptpsq *ptpsq,u16 skb_id) +{ +u16 skb_cc =PTP_WQE_CTR2IDX (ptpsq->skb_fifo_cc); +u16 skb_pc =PTP_WQE_CTR2IDX (ptpsq->skb_fifo_pc); + +if (PTP_WQE_CTR2IDX (skb_id - skb_cc) >=PTP_WQE_CTR2IDX (skb_pc - skb_cc)) +return true; + +return false; +} + +static void mlx5e_ptp_skb_fifo_ts_cqe_resync (struct mlx5e_ptpsq *ptpsq,u16 skb_cc, +u16 skb_id,int budget) {struct skb_shared_hwtstamps hwts = {};struct sk_buff *skb;
@@ -98,6 +110,7 @@ static void mlx5e_ptp_skb_fifo_ts_cqe_resync(struct mlx5e_ptpsq *ptpsq, u16 skb_ hwts.hwtstamp =mlx5e_skb_cb_get_hwts (skb)->cqe_hwtstamp;skb_tstamp_tx (skb, &hwts); ptpsq->cq_stats->resync_cqe++; +napi_consume_skb (skb, budget); skb_cc =PTP_WQE_CTR2IDX (ptpsq->skb_fifo_cc); } }
@@ -118,8 +131,14 @@ static void mlx5e_ptp_handle_ts_cqe(struct mlx5e_ptpsq *ptpsq, goto out; } -if (mlx5e_ptp_ts_cqe_drop (ptpsq, skb_cc, skb_id)) -mlx5e_ptp_skb_fifo_ts_cqe_resync (ptpsq, skb_cc, skb_id); +if (mlx5e_ptp_ts_cqe_drop (ptpsq, skb_cc, skb_id)) { +if (mlx5e_ptp_ts_cqe_ooo (ptpsq, skb_id)) { +/* already handled by a previous resync */ + ptpsq->cq_stats->ooo_cqe_drop++; +return ; + } +mlx5e_ptp_skb_fifo_ts_cqe_resync (ptpsq, skb_cc, skb_id, budget); + } skb =mlx5e_skb_fifo_pop (&ptpsq->skb_fifo); hwtstamp =mlx5e_cqe_ts_to_ns (sq->ptp_cyc2time, sq->clock,get_cqe_ts (cqe));
drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h +3 -1
@@ -81,7 +81,7 @@ void mlx5e_free_txqsq_descs(struct mlx5e_txqsq *sq);static inline bool mlx5e_skb_fifo_has_room (struct mlx5e_skb_fifo *fifo) { -return (*fifo->pc - *fifo->cc) < fifo->mask; +return (u16)(*fifo->pc - *fifo->cc) < fifo->mask; } static inline bool
@@ -297,6 +297,8 @@ void mlx5e_skb_fifo_push(struct mlx5e_skb_fifo *fifo, struct sk_buff *skb)static inline struct sk_buff *mlx5e_skb_fifo_pop (struct mlx5e_skb_fifo *fifo) { +WARN_ON_ONCE (*fifo->pc == *fifo->cc); +return *mlx5e_skb_fifo_get (fifo, (*fifo->cc)++); }
drivers/net/ethernet/mellanox/mlx5/core/en_stats.c +1 -0
@@ -2121,6 +2121,7 @@ static const struct counter_desc ptp_cq_stats_desc[] = { { MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, abort_abs_diff_ns) }, { MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, resync_cqe) }, { MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, resync_event) }, + { MLX5E_DECLARE_PTP_CQ_STAT(struct mlx5e_ptp_cq_stats, ooo_cqe_drop) }, }; static const struct counter_desc ptp_rq_stats_desc[] = {
drivers/net/ethernet/mellanox/mlx5/core/en_stats.h +1 -0
@@ -459,6 +459,7 @@ struct mlx5e_ptp_cq_stats {u64 abort_abs_diff_ns;u64 resync_cqe;u64 resync_event; +u64 ooo_cqe_drop; };struct mlx5e_stats {
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +2 -1
@@ -1043,7 +1043,8 @@ mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *on_esw, dest.vport.flags |=MLX5_FLOW_DEST_VPORT_VHCA_ID ; flow_act.action =MLX5_FLOW_CONTEXT_ACTION_FWD_DEST ; -if (rep->vport ==MLX5_VPORT_UPLINK ) +if (MLX5_CAP_ESW_FLOWTABLE (on_esw->dev, flow_source) && + rep->vport ==MLX5_VPORT_UPLINK ) spec->flow_context.flow_source =MLX5_FLOW_CONTEXT_FLOW_SOURCE_LOCAL_VPORT ; flow_rule = mlx5_add_flow_rules(on_esw->fdb_table.offloads.slow_fdb,
drivers/net/ethernet/mellanox/mlx5/core/lib/geneve.c +1 -0
@@ -105,6 +105,7 @@ int mlx5_geneve_tlv_option_add(struct mlx5_geneve *geneve, struct geneve_opt *op geneve->opt_type = opt->type; geneve->obj_id = res; geneve->refcount++; + res =0 ; } unlock:
drivers/net/ethernet/mellanox/mlx5/core/sriov.c +4 -0
@@ -147,6 +147,10 @@ mlx5_device_disable_sriov(struct mlx5_core_dev *dev, int num_vfs, bool clear_vf)mlx5_eswitch_disable_sriov (dev->priv.eswitch, clear_vf); +/* For ECPFs, skip waiting for host VF pages until ECPF is destroyed */ +if (mlx5_core_is_ecpf (dev)) +return ; +if (mlx5_wait_for_pages (dev, &dev->priv.page_counters[MLX5_VF ]))mlx5_core_warn (dev,"timeout reclaiming VFs pages\n" ); }
drivers/net/ethernet/sun/sunhme.c +4 -2
@@ -2894,8 +2894,10 @@ static int happy_meal_pci_probe(struct pci_dev *pdev, goto err_out_clear_quattro; } - hpreg_res =devm_request_region (&pdev->dev,pci_resource_start (pdev,0 ), -pci_resource_len (pdev,0 ),DRV_NAME ); + hpreg_res =devm_request_mem_region (&pdev->dev, +pci_resource_start (pdev,0 ), +pci_resource_len (pdev,0 ), +DRV_NAME );if (!hpreg_res) { err = -EBUSY ;dev_err (&pdev->dev,"Cannot obtain PCI resources, aborting.\n" );
drivers/net/mdio/mdio-mscc-miim.c +6 -3
@@ -52,6 +52,7 @@ struct mscc_miim_info {struct mscc_miim_dev {struct regmap *regs;int mii_status_offset; +bool ignore_read_errors;struct regmap *phy_regs;const struct mscc_miim_info *info;struct clk *clk;
@@ -138,7 +139,7 @@ static int mscc_miim_read(struct mii_bus *bus, int mii_id, int regnum) goto out; } -if (val &MSCC_MIIM_DATA_ERROR ) { +if (!miim->ignore_read_errors && !!(val &MSCC_MIIM_DATA_ERROR )) { ret = -EIO ; goto out; }
@@ -218,7 +219,8 @@ static const struct regmap_config mscc_miim_phy_regmap_config = { };int mscc_miim_setup (struct device *dev,struct mii_bus **pbus,const char *name, -struct regmap *mii_regmap,int status_offset) +struct regmap *mii_regmap,int status_offset, +bool ignore_read_errors) {struct mscc_miim_dev *miim;struct mii_bus *bus;
@@ -240,6 +242,7 @@ int mscc_miim_setup(struct device *dev, struct mii_bus **pbus, const char *name, miim->regs = mii_regmap; miim->mii_status_offset = status_offset; + miim->ignore_read_errors = ignore_read_errors; *pbus = bus;
@@ -291,7 +294,7 @@ static int mscc_miim_probe(struct platform_device *pdev)return dev_err_probe (dev,PTR_ERR (phy_regmap),"Unable to create phy register regmap\n" ); - ret =mscc_miim_setup (dev, &bus,"mscc_miim" , mii_regmap,0 ); + ret =mscc_miim_setup (dev, &bus,"mscc_miim" , mii_regmap,0 , false);if (ret <0 ) {dev_err (dev,"Unable to setup the MDIO bus\n" );return ret;
drivers/nfc/st-nci/se.c +6 -0
@@ -672,6 +672,12 @@ int st_nci_se_io(struct nci_dev *ndev, u32 se_idx,ST_NCI_EVT_TRANSMIT_DATA , apdu, apdu_length);default : +/* Need to free cb_context here as at the moment we can't +* clearly indicate to the caller if the callback function +* would be called (and free it) or not. In both cases a +* negative value may be returned to the caller. +*/ +kfree (cb_context);return -ENODEV ; } }
drivers/nfc/st21nfca/se.c +6 -0
@@ -236,6 +236,12 @@ int st21nfca_hci_se_io(struct nfc_hci_dev *hdev, u32 se_idx,ST21NFCA_EVT_TRANSMIT_DATA , apdu, apdu_length);default : +/* Need to free cb_context here as at the moment we can't +* clearly indicate to the caller if the callback function +* would be called (and free it) or not. In both cases a +* negative value may be returned to the caller. +*/ +kfree (cb_context);return -ENODEV ; } }
drivers/nvme/host/core.c +18 -17
@@ -38,6 +38,7 @@ struct nvme_ns_info {bool is_shared;bool is_readonly;bool is_ready; +bool is_removed; };unsigned int admin_timeout =60 ;
@@ -1439,16 +1440,8 @@ static int nvme_identify_ns(struct nvme_ctrl *ctrl, unsigned nsid, error =nvme_submit_sync_cmd (ctrl->admin_q, &c, *id,sizeof (**id));if (error) {dev_warn (ctrl->device,"Identify namespace failed (%d)\n" , error); - goto out_free_id; +kfree (*id); } - - error =NVME_SC_INVALID_NS |NVME_SC_DNR ; -if ((*id)->ncap ==0 )/* namespace not allocated or attached */ - goto out_free_id; -return 0 ; - -out_free_id: -kfree (*id);return error; }
@@ -1462,6 +1455,13 @@ static int nvme_ns_info_from_identify(struct nvme_ctrl *ctrl, ret =nvme_identify_ns (ctrl, info->nsid, &id);if (ret)return ret; + +if (id->ncap ==0 ) { +/* namespace not allocated or attached */ + info->is_removed = true; +return -ENODEV ; + } + info->anagrpid = id->anagrpid; info->is_shared = id->nmic &NVME_NS_NMIC_SHARED ; info->is_readonly = id->nsattr &NVME_NS_ATTR_RO ;
@@ -4388,6 +4388,7 @@ static void nvme_scan_ns(struct nvme_ctrl *ctrl, unsigned nsid) {struct nvme_ns_info info = { .nsid = nsid };struct nvme_ns *ns; +int ret;if (nvme_identify_ns_descs (ctrl, &info))return ;
@@ -4404,19 +4405,19 @@ static void nvme_scan_ns(struct nvme_ctrl *ctrl, unsigned nsid)* set up a namespace. If not fall back to the legacy version. */ if ((ctrl->cap &NVME_CAP_CRMS_CRIMS ) || - (info.ids.csi !=NVME_CSI_NVM && info.ids.csi !=NVME_CSI_ZNS )) { -if (nvme_ns_info_from_id_cs_indep (ctrl, &info)) -return ; - }else { -if (nvme_ns_info_from_identify (ctrl, &info)) -return ; - } + (info.ids.csi !=NVME_CSI_NVM && info.ids.csi !=NVME_CSI_ZNS )) + ret =nvme_ns_info_from_id_cs_indep (ctrl, &info); +else + ret =nvme_ns_info_from_identify (ctrl, &info); + +if (info.is_removed) +nvme_ns_remove_by_nsid (ctrl, nsid);/* * Ignore the namespace if it is not ready. We will get an AEN once it * becomes ready and restart the scan. */ -if (!info.is_ready) +if (ret || !info.is_ready)return ; ns =nvme_find_get_ns (ctrl, nsid);
drivers/nvme/host/fabrics.h +2 -1
@@ -189,7 +189,8 @@ nvmf_ctlr_matches_baseopts(struct nvme_ctrl *ctrl,static inline char *nvmf_ctrl_subsysnqn (struct nvme_ctrl *ctrl) { -if (!ctrl->subsys) +if (!ctrl->subsys || + !strcmp (ctrl->opts->subsysnqn,NVME_DISC_SUBSYS_NAME ))return ctrl->opts->subsysnqn;return ctrl->subsys->subnqn; }
drivers/nvme/host/tcp.c +6 -0
@@ -2488,6 +2488,10 @@ static int nvme_tcp_get_address(struct nvme_ctrl *ctrl, char *buf, int size) len =nvmf_get_address (ctrl, buf, size); +mutex_lock (&queue->queue_lock); + +if (!test_bit (NVME_TCP_Q_LIVE , &queue->flags)) + goto done; ret =kernel_getsockname (queue->sock, (struct sockaddr *)&src_addr);if (ret >0 ) {if (len >0 )
@@ -2495,6 +2499,8 @@ static int nvme_tcp_get_address(struct nvme_ctrl *ctrl, char *buf, int size) len +=scnprintf (buf + len, size - len,"%ssrc_addr=%pISc\n" , (len) ?"," :"" , &src_addr); } +done: +mutex_unlock (&queue->queue_lock);return len; }
drivers/pci/controller/pci-loongson.c +36 -35
93 lines not on this page · raw message
drivers/pci/hotplug/pciehp_hpc.c +2 -0
@@ -1086,6 +1086,8 @@ static void quirk_cmd_compl(struct pci_dev *pdev) }DECLARE_PCI_FIXUP_CLASS_EARLY (PCI_VENDOR_ID_INTEL ,PCI_ANY_ID ,PCI_CLASS_BRIDGE_PCI ,8 , quirk_cmd_compl); +DECLARE_PCI_FIXUP_CLASS_EARLY (PCI_VENDOR_ID_QCOM ,0x010e , +PCI_CLASS_BRIDGE_PCI ,8 , quirk_cmd_compl);DECLARE_PCI_FIXUP_CLASS_EARLY (PCI_VENDOR_ID_QCOM ,0x0110 ,PCI_CLASS_BRIDGE_PCI ,8 , quirk_cmd_compl); DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_QCOM, 0x0400,
drivers/pci/pci-acpi.c +31 -14
77 lines not on this page · raw message
drivers/pci/pci.c +10 -0
@@ -6017,6 +6017,7 @@ int pcie_set_readrq(struct pci_dev *dev, int rq) {u16 v;int ret; +struct pci_host_bridge *bridge =pci_find_host_bridge (dev->bus);if (rq <128 || rq >4096 || !is_power_of_2 (rq))return -EINVAL ;
@@ -6035,6 +6036,15 @@ int pcie_set_readrq(struct pci_dev *dev, int rq) v = (ffs (rq) -8 ) <<12 ; +if (bridge->no_inc_mrrs) { +int max_mrrs =pcie_get_readrq (dev); + +if (rq > max_mrrs) { +pci_info (dev,"can't set Max_Read_Request_Size to %d; max is %d\n" , rq, max_mrrs); +return -EINVAL ; + } + } + ret =pcie_capability_clear_and_set_word (dev,PCI_EXP_DEVCTL ,PCI_EXP_DEVCTL_READRQ , v);
drivers/pci/quirks.c +22 -0
@@ -4835,6 +4835,26 @@ static int pci_quirk_brcm_acs(struct pci_dev *dev, u16 acs_flags) PCI_ACS_SV | PCI_ACS_RR | PCI_ACS_CR | PCI_ACS_UF); } +/* +* Wangxun 10G/1G NICs have no ACS capability, and on multi-function +* devices, peer-to-peer transactions are not be used between the functions. +* So add an ACS quirk for below devices to isolate functions. +* SFxxx 1G NICs(em). +* RP1000/RP2000 10G NICs(sp). +*/ +static int pci_quirk_wangxun_nic_acs (struct pci_dev *dev,u16 acs_flags) +{ +switch (dev->device) { + case 0x0100 ... 0x010F: +case 0x1001 : +case 0x2001 : +return pci_acs_ctrl_enabled (acs_flags, +PCI_ACS_SV |PCI_ACS_RR |PCI_ACS_CR |PCI_ACS_UF ); + } + +return false; +} + static const struct pci_dev_acs_enabled { u16 vendor; u16 device;
@@ -4980,6 +5000,8 @@ static const struct pci_dev_acs_enabled { { PCI_VENDOR_ID_NXP, 0x8d9b, pci_quirk_nxp_rp_acs },/* Zhaoxin Root/Downstream Ports */ { PCI_VENDOR_ID_ZHAOXIN, PCI_ANY_ID, pci_quirk_zhaoxin_pcie_ports_acs }, +/* Wangxun nics */ + { PCI_VENDOR_ID_WANGXUN, PCI_ANY_ID, pci_quirk_wangxun_nic_acs }, { 0 } };
drivers/pci/setup-bus.c +170 -66
301 lines not on this page · raw message
drivers/phy/rockchip/phy-rockchip-typec.c +1 -2
@@ -808,9 +808,8 @@ static int tcphy_get_mode(struct rockchip_typec_phy *tcphy)struct extcon_dev *edev = tcphy->extcon;union extcon_property_value property;unsigned int id; -bool ufp, dp;u8 mode; -int ret; +int ret, ufp, dp;if (!edev)return MODE_DFP_USB ;
drivers/ptp/ptp_private.h +1 -1
@@ -66,7 +66,7 @@ struct ptp_vclock {struct hlist_node vclock_hash_node;struct cyclecounter cc;struct timecounter tc; -spinlock_t lock;/* protects tc/cc */ +struct mutex lock;/* protects tc/cc */ };/*
drivers/ptp/ptp_vclock.c +22 -22
127 lines not on this page · raw message
drivers/pwm/pwm-sifive.c +7 -1
@@ -159,7 +159,13 @@ static int pwm_sifive_apply(struct pwm_chip *chip, struct pwm_device *pwm,mutex_lock (&ddata->lock);if (state->period != ddata->approx_period) { -if (ddata->user_count !=1 ) { +/* +* Don't let a 2nd user change the period underneath the 1st user. +* However if ddate->approx_period == 0 this is the first time we set +* any period, so let whoever gets here first set the period so other +* users who agree on the period won't fail. +*/ +if (ddata->user_count !=1 && ddata->approx_period) {mutex_unlock (&ddata->lock);return -EBUSY ; }
drivers/pwm/pwm-stm32-lp.c +1 -1
@@ -127,7 +127,7 @@ static int stm32_pwm_lp_apply(struct pwm_chip *chip, struct pwm_device *pwm,/* ensure CMP & ARR registers are properly written */ ret =regmap_read_poll_timeout (priv->regmap,STM32_LPTIM_ISR , val, - (val &STM32_LPTIM_CMPOK_ARROK ), + (val &STM32_LPTIM_CMPOK_ARROK ) ==STM32_LPTIM_CMPOK_ARROK ,100 ,1000 );if (ret) {dev_err (priv->chip.dev,"ARR/CMP registers write issue\n" );
drivers/rtc/interface.c +1 -1
@@ -392,7 +392,7 @@ int rtc_read_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm)return err;if (!rtc->ops) { err = -ENODEV ; - }else if (!test_bit (RTC_FEATURE_ALARM , rtc->features) || !rtc->ops->read_alarm) { + }else if (!test_bit (RTC_FEATURE_ALARM , rtc->features)) { err = -EINVAL ; }else {memset (alarm,0 ,sizeof (struct rtc_wkalrm ));
drivers/rtc/rtc-sun6i.c +4 -12
@@ -136,7 +136,6 @@ struct sun6i_rtc_clk_data { unsigned int fixed_prescaler : 16; unsigned int has_prescaler : 1; unsigned int has_out_clk : 1; - unsigned int export_iosc : 1; unsigned int has_losc_en : 1; unsigned int has_auto_swt : 1; };
@@ -271,10 +270,8 @@ static void __init sun6i_rtc_clk_init(struct device_node *node,/* Yes, I know, this is ugly. */ sun6i_rtc = rtc; -/* Only read IOSC name from device tree if it is exported */ -if (rtc->data->export_iosc) -of_property_read_string_index (node,"clock-output-names" ,2 , - &iosc_name); +of_property_read_string_index (node,"clock-output-names" ,2 , + &iosc_name); rtc->int_osc = clk_hw_register_fixed_rate_with_accuracy(NULL, iosc_name,
@@ -315,13 +312,10 @@ static void __init sun6i_rtc_clk_init(struct device_node *node, goto err_register; } - clk_data->num =2 ; + clk_data->num =3 ; clk_data->hws[0 ] = &rtc->hw; clk_data->hws[1 ] =__clk_get_hw (rtc->ext_losc); -if (rtc->data->export_iosc) { - clk_data->hws[2 ] = rtc->int_osc; - clk_data->num =3 ; - } + clk_data->hws[2 ] = rtc->int_osc;of_clk_add_hw_provider (node, of_clk_hw_onecell_get, clk_data);return ;
@@ -361,7 +355,6 @@ static const struct sun6i_rtc_clk_data sun8i_h3_rtc_data = { .fixed_prescaler = 32, .has_prescaler = 1, .has_out_clk = 1, - .export_iosc = 1, };static void __init sun8i_h3_rtc_clk_init (struct device_node *node)
@@ -379,7 +372,6 @@ static const struct sun6i_rtc_clk_data sun50i_h6_rtc_data = { .fixed_prescaler = 32, .has_prescaler = 1, .has_out_clk = 1, - .export_iosc = 1, .has_losc_en = 1, .has_auto_swt = 1, };
drivers/scsi/ipr.c +21 -20
63 lines not on this page · raw message
drivers/scsi/mpi3mr/mpi3mr.h +2 -8
@@ -955,19 +955,16 @@ struct scmd_priv {* @chain_buf_count: Chain buffer count * @chain_buf_pool: Chain buffer pool * @chain_sgl_list: Chain SGL list -* @chain_bitmap_sz: Chain buffer allocator bitmap size * @chain_bitmap: Chain buffer allocator bitmap * @chain_buf_lock: Chain buffer list lock * @bsg_cmds: Command tracker for BSG command * @host_tm_cmds: Command tracker for task management commands * @dev_rmhs_cmds: Command tracker for device removal commands * @evtack_cmds: Command tracker for event ack commands -* @devrem_bitmap_sz: Device removal bitmap size * @devrem_bitmap: Device removal bitmap -* @dev_handle_bitmap_sz: Device handle bitmap size +* @dev_handle_bitmap_bits: Number of bits in device handle bitmap * @removepend_bitmap: Remove pending bitmap * @delayed_rmhs_list: Delayed device removal list -* @evtack_cmds_bitmap_sz: Event Ack bitmap size * @evtack_cmds_bitmap: Event Ack bitmap * @delayed_evtack_cmds_list: Delayed event acknowledgment list * @ts_update_counter: Timestamp update counter
@@ -1128,7 +1125,6 @@ struct mpi3mr_ioc {u32 chain_buf_count;struct dma_pool *chain_buf_pool;struct chain_element *chain_sgl_list; -u16 chain_bitmap_sz;void *chain_bitmap;spinlock_t chain_buf_lock;
@@ -1136,12 +1132,10 @@ struct mpi3mr_ioc {struct mpi3mr_drv_cmd host_tm_cmds;struct mpi3mr_drv_cmd dev_rmhs_cmds[MPI3MR_NUM_DEVRMCMD ];struct mpi3mr_drv_cmd evtack_cmds[MPI3MR_NUM_EVTACKCMD ]; -u16 devrem_bitmap_sz;void *devrem_bitmap; -u16 dev_handle_bitmap_sz; +u16 dev_handle_bitmap_bits;void *removepend_bitmap;struct list_head delayed_rmhs_list; -u16 evtack_cmds_bitmap_sz;void *evtack_cmds_bitmap;struct list_head delayed_evtack_cmds_list;
drivers/scsi/mpi3mr/mpi3mr_fw.c +31 -44
3 lines not on this page · raw message
drivers/soc/mediatek/mt8186-pm-domains.h +1 -3
Lines of this file are not shown. View the raw message.
drivers/soc/mediatek/mtk-svs.c +36 -12
48 lines not on this page · raw message
drivers/soc/xilinx/xlnx_event_manager.c +3 -1
Lines of this file are not shown. View the raw message.
drivers/soundwire/cadence_master.c +27 -16
43 lines not on this page · raw message
drivers/thermal/intel/intel_quark_dts_thermal.c +2 -10
Lines of this file are not shown. View the raw message.
drivers/tty/serial/sc16is7xx.c +26 -25
51 lines not on this page · raw message
drivers/usb/gadget/function/uvc_configfs.c +58 -1
59 lines not on this page · raw message
drivers/vdpa/ifcvf/ifcvf_main.c +59 -80
139 lines not on this page · raw message
drivers/watchdog/rzg2l_wdt.c +39 -6
45 lines not on this page · raw message
fs/ext4/fast_commit.c +26 -18
44 lines not on this page · raw message
fs/f2fs/file.c +48 -26
74 lines not on this page · raw message
include/drm/display/drm_dp_mst_helper.h +3 -0
Lines of this file are not shown. View the raw message.
include/net/tc_act/tc_pedit.h +66 -15
81 lines not on this page · raw message
net/9p/trans_xen.c +31 -17
48 lines not on this page · raw message
net/sched/act_mpls.c +37 -29
66 lines not on this page · raw message
net/sched/act_pedit.c +104 -74
178 lines not on this page · raw message
net/sched/cls_tcindex.c deleted +0 -741
741 lines not on this page · raw message
net/sctp/stream_sched_prio.c +21 -31
52 lines not on this page · raw message
sound/soc/mediatek/mt8195/mt8195-dai-etdm.c +3 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/netfilter/rpath.sh +26 -6
Lines of this file are not shown. View the raw message.
tools/testing/selftests/tc-testing/tc-tests/filters/tcindex.json deleted +0 -227
227 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.