Linux 6.11.4
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.11.4 kernel.
All users of the 6.11 kernel series must upgrade.
The updated 6.11.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.11.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/loongarch/pci/acpi.c | 1 arch/riscv/include/asm/sparsemem.h | 2 arch/riscv/include/asm/string.h | 2 arch/riscv/kernel/elf_kexec.c | 6 arch/riscv/kernel/entry.S | 4 arch/riscv/kernel/riscv_ksyms.c | 3 arch/riscv/lib/Makefile | 2 arch/riscv/lib/strcmp.S | 1 arch/riscv/lib/strlen.S | 1 arch/riscv/lib/strncmp.S | 1 arch/riscv/purgatory/Makefile | 2 arch/s390/include/asm/facility.h | 6 arch/s390/include/asm/io.h | 2 arch/s390/kernel/early.c | 17 arch/s390/kernel/perf_cpum_sf.c | 12 arch/s390/mm/cmm.c | 18 arch/x86/kernel/amd_nb.c | 3 arch/x86/net/bpf_jit_comp.c | 54 arch/x86/xen/enlighten_pv.c | 4 drivers/acpi/resource.c | 29 drivers/ata/libata-eh.c | 18 drivers/base/bus.c | 8 drivers/base/power/common.c | 25 drivers/block/zram/zram_drv.c | 7 drivers/bluetooth/btusb.c | 20 drivers/char/virtio_console.c | 18 drivers/clk/bcm/clk-bcm53573-ilp.c | 2 drivers/clk/imx/clk-imx7d.c | 4 drivers/comedi/drivers/ni_routing/tools/convert_c_to_py.c | 5 drivers/dax/device.c | 2 drivers/gpio/gpio-aspeed.c | 4 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 4 drivers/gpu/drm/amd/amdkfd/kfd_process.c | 7 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 7 drivers/gpu/drm/amd/display/dc/core/dc.c | 47 drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h | 26 drivers/gpu/drm/drm_fbdev_dma.c | 3 drivers/gpu/drm/i915/display/intel_hdcp.c | 10 drivers/gpu/drm/nouveau/dispnv04/crtc.c | 2 drivers/gpu/drm/nouveau/nouveau_abi16.c | 2 drivers/gpu/drm/nouveau/nouveau_bo.c | 2 drivers/gpu/drm/nouveau/nouveau_chan.c | 21 drivers/gpu/drm/nouveau/nouveau_chan.h | 3 drivers/gpu/drm/nouveau/nouveau_dmem.c | 2 drivers/gpu/drm/nouveau/nouveau_drm.c | 4 drivers/gpu/drm/v3d/v3d_perfmon.c | 9 drivers/gpu/drm/vc4/vc4_perfmon.c | 7 drivers/gpu/drm/xe/xe_bb.c | 3 drivers/gpu/drm/xe/xe_debugfs.c | 2 drivers/gpu/drm/xe/xe_gt.c | 4 drivers/gpu/drm/xe/xe_guc_ct.c | 44 drivers/gpu/drm/xe/xe_guc_submit.c | 9 drivers/hid/amd-sfh-hid/amd_sfh_client.c | 14 drivers/hid/hid-ids.h | 3 drivers/hid/hid-multitouch.c | 8 drivers/hid/hid-plantronics.c | 23 drivers/hid/intel-ish-hid/ishtp-fw-loader.c | 2 drivers/hid/wacom_wac.c | 2 drivers/hwmon/Kconfig | 5 drivers/hwmon/intel-m10-bmc-hwmon.c | 2 drivers/hwmon/k10temp.c | 1 drivers/i2c/busses/i2c-i801.c | 9 drivers/i3c/master/i3c-master-cdns.c | 1 drivers/infiniband/core/mad.c | 14 drivers/infiniband/hw/mlx5/odp.c | 25 drivers/infiniband/ulp/rtrs/rtrs-srv.c | 13 drivers/md/dm-vdo/dedupe.c | 3 drivers/media/common/videobuf2/videobuf2-core.c | 8 drivers/mfd/intel-lpss-pci.c | 39 drivers/mfd/intel_soc_pmic_chtwc.c | 1 drivers/mmc/host/mvsdio.c | 71 drivers/mmc/host/sdhci-of-dwcmshc.c | 8 drivers/net/dsa/b53/b53_common.c | 17 drivers/net/dsa/lan9303-core.c | 29 drivers/net/dsa/sja1105/sja1105_main.c | 1 drivers/net/ethernet/adi/adin1110.c | 4 drivers/net/ethernet/freescale/fec_main.c | 6 drivers/net/ethernet/ibm/emac/mal.c | 4 drivers/net/ethernet/intel/e1000e/hw.h | 4 drivers/net/ethernet/intel/e1000e/netdev.c | 4 drivers/net/ethernet/intel/i40e/i40e_main.c | 1 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 2 drivers/net/ethernet/intel/ice/ice_ddp.c | 58 drivers/net/ethernet/intel/ice/ice_ddp.h | 4 drivers/net/ethernet/intel/ice/ice_dpll.c | 6 drivers/net/ethernet/intel/ice/ice_eswitch_br.c | 5 drivers/net/ethernet/intel/ice/ice_eswitch_br.h | 1 drivers/net/ethernet/intel/ice/ice_main.c | 39 drivers/net/ethernet/intel/ice/ice_sriov.c | 19 drivers/net/ethernet/intel/ice/ice_switch.c | 2 drivers/net/ethernet/intel/ice/ice_tc_lib.c | 11 drivers/net/ethernet/intel/ice/ice_vf_lib.c | 9 drivers/net/ethernet/intel/ice/ice_vf_lib_private.h | 1 drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.c | 57 drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.h | 1 drivers/net/ethernet/intel/idpf/idpf_virtchnl.c | 9 drivers/net/ethernet/intel/igb/igb_main.c | 4 drivers/net/ethernet/sfc/efx_channels.c | 3 drivers/net/ethernet/sfc/siena/efx_channels.c | 3 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 drivers/net/ethernet/ti/icssg/icssg_config.c | 2 drivers/net/ethernet/ti/icssg/icssg_prueth.c | 1 drivers/net/ethernet/ti/icssg/icssg_prueth.h | 2 drivers/net/netconsole.c | 8 drivers/net/phy/aquantia/aquantia_main.c | 51 drivers/net/phy/bcm84881.c | 4 drivers/net/phy/dp83869.c | 1 drivers/net/phy/phy_device.c | 5 drivers/net/phy/realtek.c | 24 drivers/net/ppp/ppp_async.c | 2 drivers/net/pse-pd/pse_core.c | 11 drivers/net/slip/slhc.c | 57 drivers/net/vxlan/vxlan_core.c | 6 drivers/net/vxlan/vxlan_private.h | 2 drivers/net/vxlan/vxlan_vnifilter.c | 19 drivers/ntb/hw/mscc/ntb_hw_switchtec.c | 1 drivers/nvdimm/nd_virtio.c | 9 drivers/opp/core.c | 4 drivers/pci/controller/dwc/pcie-designware.c | 2 drivers/pci/controller/dwc/pcie-designware.h | 2 drivers/pci/controller/dwc/pcie-qcom.c | 72 drivers/pci/endpoint/pci-epc-core.c | 14 drivers/pci/pci.c | 14 drivers/pci/probe.c | 2 drivers/pci/quirks.c | 8 drivers/pci/remove.c | 2 drivers/powercap/intel_rapl_tpmi.c | 19 drivers/remoteproc/imx_rproc.c | 13 drivers/scsi/fnic/fnic_main.c | 2 drivers/scsi/lpfc/lpfc_ct.c | 22 drivers/scsi/lpfc/lpfc_disc.h | 7 drivers/scsi/lpfc/lpfc_els.c | 132 drivers/scsi/lpfc/lpfc_vport.c | 43 drivers/scsi/wd33c93.c | 2 drivers/soundwire/cadence_master.c | 39 drivers/soundwire/cadence_master.h | 5 drivers/soundwire/intel.h | 2 drivers/soundwire/intel_auxdevice.c | 1 drivers/soundwire/intel_bus_common.c | 27 drivers/staging/vme_user/vme_fake.c | 6 drivers/staging/vme_user/vme_tsi148.c | 6 drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c | 2 drivers/thermal/thermal_core.c | 5 drivers/thermal/thermal_core.h | 3 drivers/thermal/thermal_netlink.c | 9 drivers/tty/serial/serial_core.c | 16 drivers/ufs/core/ufshcd.c | 5 drivers/usb/chipidea/udc.c | 8 drivers/usb/dwc2/platform.c | 26 drivers/usb/dwc3/core.c | 30 drivers/usb/dwc3/core.h | 4 drivers/usb/dwc3/gadget.c | 11 drivers/usb/gadget/function/uvc_v4l2.c | 12 drivers/usb/gadget/udc/core.c | 1 drivers/usb/host/xhci-dbgcap.c | 133 drivers/usb/host/xhci-dbgcap.h | 2 drivers/usb/host/xhci-pci.c | 5 drivers/usb/host/xhci-plat.c | 6 drivers/usb/misc/yurex.c | 19 drivers/usb/storage/unusual_devs.h | 11 drivers/usb/typec/tipd/core.c | 3 drivers/vdpa/octeon_ep/octep_vdpa_hw.c | 12 drivers/video/fbdev/core/fbcon.c | 2 drivers/video/fbdev/sis/sis_main.c | 2 fs/btrfs/extent-tree.c | 26 fs/btrfs/free-space-cache.c | 4 fs/btrfs/free-space-cache.h | 6 fs/btrfs/volumes.h | 6 fs/btrfs/zoned.c | 2 fs/ext4/super.c | 9 fs/ext4/xattr.c | 4 fs/nfs/callback_xdr.c | 2 fs/nfs/client.c | 1 fs/nfs/nfs42proc.c | 2 fs/nfs/nfs4state.c | 2 fs/nfsd/filecache.c | 4 fs/nfsd/nfs4state.c | 1 fs/nfsd/nfssvc.c | 6 fs/ntfs3/file.c | 40 fs/ntfs3/frecord.c | 21 fs/ntfs3/fslog.c | 19 fs/ntfs3/namei.c | 4 fs/ntfs3/super.c | 3 fs/proc/kcore.c | 36 fs/smb/client/smb2ops.c | 47 fs/smb/client/smb2pdu.c | 6 fs/unicode/mkutf8data.c | 70 fs/unicode/utf8data.c_shipped | 6703 ++++------ include/linux/bpf.h | 1 include/linux/nfs_fs_sb.h | 1 include/linux/pci-epc.h | 2 include/linux/pci.h | 2 include/linux/pci_ids.h | 3 include/net/mctp.h | 2 include/net/rtnetlink.h | 17 include/net/sch_generic.h | 1 include/net/sock.h | 2 io_uring/io_uring.c | 15 io_uring/rw.c | 19 kernel/bpf/arraymap.c | 3 kernel/bpf/core.c | 21 kernel/bpf/hashtab.c | 3 kernel/bpf/syscall.c | 19 kernel/kthread.c | 2 kernel/rcu/tree_nocb.h | 8 mm/secretmem.c | 4 net/bluetooth/hci_conn.c | 3 net/bluetooth/rfcomm/sock.c | 2 net/bridge/br_netfilter_hooks.c | 5 net/bridge/br_netlink.c | 6 net/bridge/br_private.h | 5 net/bridge/br_vlan.c | 19 net/core/dst.c | 17 net/core/rtnetlink.c | 29 net/dsa/user.c | 11 net/ipv4/netfilter/nf_reject_ipv4.c | 10 net/ipv4/netfilter/nft_fib_ipv4.c | 4 net/ipv4/tcp_input.c | 42 net/ipv6/netfilter/nf_reject_ipv6.c | 5 net/ipv6/netfilter/nft_fib_ipv6.c | 5 net/mctp/af_mctp.c | 6 net/mctp/device.c | 30 net/mctp/neigh.c | 31 net/mctp/route.c | 33 net/mpls/af_mpls.c | 32 net/mptcp/mib.c | 2 net/mptcp/mib.h | 2 net/mptcp/pm_netlink.c | 3 net/mptcp/protocol.c | 24 net/mptcp/subflow.c | 6 net/netfilter/nf_nat_core.c | 120 net/netfilter/xt_CHECKSUM.c | 33 net/netfilter/xt_CLASSIFY.c | 16 net/netfilter/xt_CONNSECMARK.c | 36 net/netfilter/xt_CT.c | 106 net/netfilter/xt_IDLETIMER.c | 59 net/netfilter/xt_LED.c | 39 net/netfilter/xt_NFLOG.c | 36 net/netfilter/xt_RATEEST.c | 39 net/netfilter/xt_SECMARK.c | 27 net/netfilter/xt_TRACE.c | 35 net/netfilter/xt_addrtype.c | 15 net/netfilter/xt_cluster.c | 33 net/netfilter/xt_connbytes.c | 4 net/netfilter/xt_connlimit.c | 39 net/netfilter/xt_connmark.c | 28 net/netfilter/xt_mark.c | 42 net/netlink/af_netlink.c | 3 net/phonet/pn_netlink.c | 28 net/rxrpc/sendmsg.c | 10 net/sched/sch_api.c | 7 net/sctp/socket.c | 18 net/smc/smc_inet.c | 11 net/socket.c | 7 sound/pci/hda/hda_intel.c | 2 tools/build/feature/Makefile | 5 tools/iio/iio_generic_buffer.c | 4 tools/perf/Makefile.config | 7 tools/perf/util/vdso.c | 4 tools/testing/ktest/ktest.pl | 2 tools/testing/selftests/bpf/progs/verifier_int_ptr.c | 5 tools/testing/selftests/mm/hmm-tests.c | 2 tools/testing/selftests/net/forwarding/no_forwarding.sh | 2 tools/testing/selftests/rseq/rseq.c | 110 tools/testing/selftests/rseq/rseq.h | 10 266 files changed, 5943 insertions(+), 4521 deletions(-)
Abhishek Chauhan (2):
net: phy: aquantia: AQR115c fix up PMA capabilities
net: phy: aquantia: remove usage of phy_set_max_speed
Abhishek Tamboli (1):
usb: gadget: uvc: Fix ERR_PTR dereference in uvc_v4l2.c
Aleksandr Loktionov (1):
i40e: Fix macvlan leak by synchronizing access to mac_filter_hash
Alex Deucher (1):
drm/amdgpu: partially revert powerplay __counted_by changes
Alex Hung (1):
drm/amd/display: Check null pointer before dereferencing se
Alex Williamson (1):
PCI: Mark Creative Labs EMU20k2 INTx masking as broken
Alexander Gordeev (1):
fs/proc/kcore.c: allow translation of physical memory addresses
Anastasia Kovaleva (1):
net: Fix an unsafe loop on the list
Anatolij Gustschin (1):
net: dsa: lan9303: ensure chip reset and wait for READY status
Andrey Shumilin (1):
fbdev: sisfb: Fix strbuf array overflow
Andrey Skvortsov (1):
zram: don't free statically defined names
Andy Roulin (1):
netfilter: br_netfilter: fix panic with metadata_dst skb
Arkadiusz Kubalewski (1):
ice: disallow DPLL_PIN_STATE_SELECTABLE for dpll output pins
Avri Altman (1):
scsi: ufs: Use pre-calculated offsets in ufshcd_init_lrb()
Basavaraj Natikar (1):
HID: amd_sfh: Switch to device-managed dmam_alloc_coherent()
Ben Skeggs (1):
drm/nouveau: pass cli to nouveau_channel_new() instead of drm+device
Billy Tsai (2):
gpio: aspeed: Add the flush write to ensure the write complete.
gpio: aspeed: Use devm_clk api to manage clock source
Breno Leitao (1):
net: netconsole: fix wrong warning
Christian Marangi (1):
net: phy: Remove LED entry from LEDs list on unregister
Christophe JAILLET (2):
net: phy: bcm84881: Fix some error handling paths
net: ethernet: adi: adin1110: Fix some error handling path in adin1110_read_fifo()
Chuck Lever (1):
NFSD: Mark filecache "down" if init fails
D. Wythe (1):
net/smc: fix lacks of icsk_syn_mss with IPPROTO_SMC
Dan Carpenter (2):
SUNRPC: Fix integer overflow in decode_rc_list()
OPP: fix error code in dev_pm_opp_set_config()
Daniel Borkmann (1):
selftests/bpf: Fix ARG_PTR_TO_LONG {half-,}uninitialized test
Daniel Jordan (1):
ktest.pl: Avoid false positives with grub2 skip regex
Daniel Palmer (1):
scsi: wd33c93: Don't use stale scsi_pointer value
Dave Ertman (1):
ice: fix VLAN replay after reset
David Howells (1):
rxrpc: Fix uninitialised variable in rxrpc_send_data()
Diogo Jahchan Koike (1):
ntfs3: Change to non-blocking allocation in ntfs_d_hash
Donet Tom (1):
selftests/mm: fix incorrect buffer->mirror size in hmm2 double_map test
Enzo Matsumiya (1):
smb: client: fix UAF in async decryption
Eric Dumazet (4):
net/sched: accept TCA_STAB only for root qdisc
net: do not delay dst_entries_add() in dst_release()
ppp: fix ppp_async_encode() illegal access
slip: make slhc_remember() more robust against malicious packets
Filipe Manana (1):
btrfs: zoned: fix missing RCU locking in error message when loading zone info
Florian Westphal (3):
netfilter: nf_nat: don't try nat source port reallocation for reverse dir clash
netfilter: xtables: avoid NFPROTO_UNSPEC where needed
netfilter: fib: check correct rtable in vrf setups
Frank Li (1):
usb: host: xhci-plat: Parse xhci-missing_cas_quirk and apply quirk
Frederic Weisbecker (2):
rcu/nocb: Fix rcuog wake-up from offline softirq
kthread: unpark only parked kthread
Gabriel Krisman Bertazi (1):
unicode: Don't special case ignorable code points
Gerald Schaefer (1):
s390/mm: Add cond_resched() to cmm_alloc/free_pages()
Greg Kroah-Hartman (1):
Linux 6.11.4
Guenter Roeck (1):
hwmon: (tmp513) Add missing dependency on REGMAP_I2C
Gui-Dong Han (2):
ice: Fix improper handling of refcount in ice_dpll_init_rclk_pins()
ice: Fix improper handling of refcount in ice_sriov_set_msix_vec_count()
Hamza Mahfooz (1):
drm/amd/display: fix hibernate entry for DCN35+
Hans de Goede (4):
i2c: i801: Use a different adapter-name for IDF adapters
mfd: intel_soc_pmic_chtwc: Make Lenovo Yoga Tab 3 X90F DMI match less strict
ACPI: resource: Make Asus ExpertBook B2402 matches cover more models
ACPI: resource: Make Asus ExpertBook B2502 matches cover more models
He Lugang (1):
HID: multitouch: Add support for lenovo Y9000P Touchpad
Heiko Carstens (2):
s390/facility: Disable compile time optimization for decompressor code s390/traps: Handle early warnings gracefully
Heiner Kallweit (1):
net: phy: realtek: Fix MMD access on RTL8126A-integrated PHY
Hou Tao (1):
bpf: Call the missed btf_record_free() when map creation fails
Ian Rogers (1):
perf vdso: Missed put on 32-bit dsos
Icenowy Zheng (1):
usb: storage: ignore bogus device raised by JieLi BR21 USB sound chip
Ignat Korchagin (1):
net: explicitly clear the sk pointer, when pf->create fails
Ilpo Järvinen (2):
mfd: intel-lpss: Add Intel Arrow Lake-H LPSS PCI IDs
mfd: intel-lpss: Add Intel Panther Lake LPSS PCI IDs
Ingo van Lil (1):
net: phy: dp83869: fix memory corruption when enabling fiber
Jakub Kicinski (1):
Revert "net: stmmac: set PP_FLAG_DMA_SYNC_DEV only if XDP is enabled"
Jan Kara (1):
ext4: don't set SB_RDONLY after filesystem errors
Jani Nikula (1):
drm/i915/hdcp: fix connector refcounting
Janne Grunau (1):
drm/fbdev-dma: Only cleanup deferred I/O if necessary
Jason Gerecke (1):
HID: wacom: Hardcode (non-inverted) AES pens as BTN_TOOL_PEN
Javier Carrasco (4):
hwmon: (mc34vr500) Add missing dependency on REGMAP_I2C
hwmon: (adm9240) Add missing dependency on REGMAP_I2C
hwmon: (adt7470) Add missing dependency on REGMAP_I2C
hwmon: (ltc2991) Add missing dependency on REGMAP_I2C
Jens Axboe (2):
io_uring: check if we need to reschedule during overflow flush io_uring/rw: fix cflags posting for single issue multishot read
Jiri Slaby (SUSE) (1):
serial: protect uart_port_dtr_rts() in uart_shutdown() too
Jisheng Zhang (1):
riscv: avoid Imbalance in RAS
John Keeping (1):
usb: gadget: core: force synchronous registration
Jonas Gorski (5):
net: dsa: b53: fix jumbo frame mtu check
net: dsa: b53: fix max MTU for 1g switches
net: dsa: b53: fix max MTU for BCM5325/BCM5365
net: dsa: b53: allow lower MTUs on BCM5325/5365
net: dsa: b53: fix jumbo frames on 10/100 ports
Jose Alberto Reguero (1):
usb: xhci: Fix problem with xhci resume from suspend
Joshua Hay (1):
idpf: use actual mbx receive payload length
Josip Pavic (1):
drm/amd/display: Clear update flags after update has been applied
José Roberto de Souza (1):
drm/xe/oa: Fix overflow in oa batch buffer
Juergen Gross (1):
x86/xen: mark boot CPU of PV guest in MSR_IA32_APICBASE
Justin Tee (3):
scsi: lpfc: Add ELS_RSP cmd to the list of WQEs to flush in lpfc_els_flush_cmd()
scsi: lpfc: Ensure DA_ID handling completion before deleting an NPIV instance
scsi: lpfc: Revise TRACE_EVENT log flag severities from KERN_ERR to KERN_WARNING
Kacper Ludwinski (1):
selftests: net: no_forwarding: fix VID for $swp2 in one_bridge_two_pvids() test
Kaixin Wang (2):
i3c: master: cdns: Fix use after free vulnerability in cdns_i3c_master Driver Due to Race Condition
ntb: ntb_hw_switchtec: Fix use after free vulnerability in switchtec_ntb_remove due to race condition
Ken Raeburn (1):
dm vdo: don't refer to dedupe_context after releasing it
Konstantin Komarov (5):
fs/ntfs3: Do not call file_modified if collapse range failed fs/ntfs3: Optimize large writes into sparse file fs/ntfs3: Fix sparse warning for bigendian fs/ntfs3: Fix sparse warning in ni_fiemap fs/ntfs3: Refactor enum_rstbl to suppress static checker
Kory Maincent (1):
net: pse-pd: Fix enabled status mismatch
Krzysztof Kozlowski (1):
clk: bcm: bcm53573: fix OF node leak in init
Kun(llfl) (1):
device-dax: correct pgoff align in dax_set_mapping()
Kuniyuki Iwashima (6):
rtnetlink: Add bulk registration helpers for rtnetlink message handlers.
vxlan: Handle error of rtnl_register_module().
bridge: Handle error of rtnl_register_module().
mctp: Handle error of rtnl_register_module().
mpls: Handle error of rtnl_register_module().
phonet: Handle error of rtnl_register_module().
Lang Yu (1):
drm/amdkfd: Fix an eviction fence leak
Linus Walleij (1):
Revert "mmc: mvsdio: Use sg_miter for PIO"
Luca Stefani (2):
btrfs: split remaining space to discard in chunks
btrfs: add cancellation points to trim loops
Luiz Augusto von Dentz (3):
Bluetooth: RFCOMM: FIX possible deadlock in rfcomm_sk_state_change
Bluetooth: btusb: Don't fail external suspend requests
Bluetooth: hci_conn: Fix UAF in hci_enhanced_setup_sync
MD Danish Anwar (1):
net: ti: icssg-prueth: Fix race condition for VLAN table access
Manivannan Sadhasivam (2):
PCI: endpoint: Assign PCI domain number for endpoint controllers
PCI: Pass domain number to pci_bus_release_domain_nr() explicitly
Marcin Szycik (3):
ice: Fix entering Safe Mode
ice: Fix netif_is_ice() in Safe Mode
ice: Fix increasing MSI-X on VF
Martin Wilck (1):
scsi: fnic: Move flush_work initialization out of if block
Mathias Nyman (1):
xhci: dbc: Fix STALL transfer event handling
Mathieu Desnoyers (1):
selftests/rseq: Fix mm_cid test failure
Matt Roper (1):
drm/xe: Make wedged_mode debugfs writable
Matthew Auld (3):
drm/xe/guc_submit: fix xa_store() error checking drm/xe/ct: prevent UAF in send_recv() drm/xe/ct: fix xa_store() error checking
Matthieu Baerts (NGI0) (2):
mptcp: fallback when MPTCP opts are dropped after 1st data
mptcp: pm: do not remove closing subflows
Maíra Canal (2):
drm/v3d: Stop the active perfmon before being destroyed drm/vc4: Stop the active perfmon before being destroyed
Md Haris Iqbal (1):
RDMA/rtrs-srv: Avoid null pointer deref during path establishment
Michael Guralnik (1):
RDMA/mlx5: Enforce umem boundaries for explicit ODP page faults
Michael S. Tsirkin (1):
virtio_console: fix misc probe bugs
Michal Swiatkowski (2):
ice: set correct dst VSI in only LAN filters
ice: clear port vlan config during reset
Michal Wilczynski (1):
mmc: sdhci-of-dwcmshc: Prevent stale command interrupt handling
Mohamed Khalfella (1):
igb: Do not bring the device up after non-fatal error
Neal Cardwell (3):
tcp: fix to allow timestamp undo if no retransmits were sent
tcp: fix tcp_enter_recovery() to zero retrans_stamp when it's safe
tcp: fix TFO SYN_RECV to not zero retrans_stamp with retransmits out
NeilBrown (1):
nfsd: nfsd_destroy_serv() must call svc_destroy() even if nfsd_startup_net() failed
Niklas Cassel (1):
ata: libata: avoid superfluous disk spin down + spin up during hibernation
Olga Kornievskaia (1):
nfsd: fix possible badness in FREE_STATEID
Oliver Neukum (1):
Revert "usb: yurex: Replace snprintf() with the safer scnprintf() variant"
Palmer Dabbelt (1):
RISC-V: Don't have MAX_PHYSMEM_BITS exceed phys_addr_t
Paolo Abeni (1):
mptcp: handle consistently DSS corruption
Patrick Roy (1):
secretmem: disable memfd_secret() if arch cannot set direct map
Peng Fan (2):
remoteproc: imx_rproc: Use imx specific hook for find_loaded_rsc_table
clk: imx: Remove CLK_SET_PARENT_GATE for DRAM mux for i.MX7D
Peter Colberg (1):
hwmon: intel-m10-bmc-hwmon: relabel Columbiaville to CVL Die Temperature
Philip Chen (1):
virtio_pmem: Check device status before requesting flush
Pierre-Louis Bossart (2):
soundwire: intel_bus_common: enable interrupts before exiting reset
soundwire: cadence: re-check Peripheral status with delayed_work
Prudhvi Yarlagadda (1):
PCI: qcom: Disable mirroring of DBI and iATU register space in BAR region
Przemek Kitszel (1):
ice: fix memleak in ice_init_tx_topology()
Qianqiang Liu (1):
fbcon: Fix a NULL pointer dereference issue in fbcon_putcs
Rafael J. Wysocki (2):
thermal: core: Reference count the zone in thermal_zone_get_by_id()
thermal: core: Free tzp copy along with the thermal zone
Riyan Dhiman (1):
staging: vme_user: added bound check to geoid
Rosen Penev (2):
net: ibm: emac: mal: fix wrong goto
net: ibm: emac: mal: add dcr_unmap to _remove
Roy Luo (1):
usb: dwc3: re-enable runtime PM after failed resume
Ruffalo Lavoisier (1):
comedi: ni_routing: tools: Check when the file could not be opened
Samuel Holland (1):
riscv: Omit optimized string routines when using KASAN
Saravanan Vajravel (1):
RDMA/mad: Improve handling of timed out WRs of mad agent
Sebastian Andrzej Siewior (1):
sfc: Don't invoke xdp_do_flush() from netpoll.
Selvarasu Ganesan (1):
usb: dwc3: core: Stop processing of pending events if controller is halted
Sergey Senozhatsky (1):
zram: free secondary algorithms names
Shawn Shao (1):
usb: dwc2: Adjust the timing of USB Driver Interrupt Registration in the Crashkernel Scenario
Shyam Sundar S K (1):
x86/amd_nb: Add new PCI IDs for AMD family 1Ah model 60h
Simon Horman (1):
netfilter: nf_reject: Fix build warning when CONFIG_BRIDGE_NETFILTER=n
Srujana Challa (1):
vdpa/octeon_ep: Fix format specifier for pointers in debug messages
Subramanian Ananthanarayanan (1):
PCI: Add ACS quirk for Qualcomm SA8775P
SurajSonawane2415 (1):
hid: intel-ish-hid: Fix uninitialized variable 'rv' in ish_fw_xfer_direct_dma
Tao Chen (1):
bpf: Check percpu map value size first
Thomas Richter (1):
s390/cpum_sf: Remove WARN_ON_ONCE statements
Ulf Hansson (1):
PM: domains: Fix alloc/free in dev_pm_domain_attach|detach_list()
Vinay Belgaumkar (1):
drm/xe: Restore GT freq on GSC load error
Vitaly Lifshits (1):
e1000e: change I219 (19) devices to ADP
Vladimir Oltean (2):
net: dsa: sja1105: fix reception from VLAN-unaware bridges
net: dsa: refuse cross-chip mirroring operations
Wade Wang (1):
HID: plantronics: Workaround for an unexcepted opposite volume key
Wadim Egorov (1):
usb: typec: tipd: Free IRQ only if it was requested before
WangYuli (1):
PCI: Add function 0 DMA alias quirk for Glenfly Arise chip
Wei Fang (1):
net: fec: don't save PTP state if PTP is unsupported
Wentao Guan (1):
LoongArch: Fix memleak in pci_acpi_scan_root()
Wojciech Drewek (1):
ice: Flush FDB entries before reset
Wojciech Gładysz (1):
ext4: nested locking for xattr inode
Xin Long (1):
sctp: ensure sk_state is set to CLOSED if hashing fails in sctp_listen_start
Xu Kuohai (1):
bpf: Prevent tail call between progs attached to different hooks
Xu Yang (1):
usb: chipidea: udc: enable suspend interrupt after usb reset
Yang Jihong (2):
perf build: Fix static compilation error when libdw is not installed perf build: Fix build feature-dwarf_getlocations fail for old libdw
Yanjun Zhang (1):
NFSv4: Prevent NULL-pointer dereference in nfs42_complete_copies()
Ying Sun (1):
riscv/kexec_file: Fix relocation type R_RISCV_ADD16 and R_RISCV_SUB16 unknown
Yonatan Maman (2):
nouveau/dmem: Fix privileged error in copy engine channel nouveau/dmem: Fix vulnerability in migrate_to_ram upon copy error
Yonghong Song (1):
bpf, x64: Fix a jit convergence issue
Yunke Cao (1):
media: videobuf2-core: clear memory related fields in __vb2_plane_dmabuf_put()
Zhang Rui (3):
thermal: intel: int340x: processor: Fix warning during module unload
powercap: intel_rapl_tpmi: Ignore minor version change
powercap: intel_rapl_tpmi: Fix bogus register reading
Zhu Jun (1):
tools/iio: Add memory allocation failure check for trigger_name
Zijun Hu (2):
driver core: bus: Fix double free in driver API bus_register() driver core: bus: Return -EIO instead of 0 when show/store invalid bus attribute
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 11 -SUBLEVEL = 3 +SUBLEVEL = 4 EXTRAVERSION = NAME = Baby Opossum Posse
arch/loongarch/pci/acpi.c +1 -0
@@ -225,6 +225,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)if (bus) {memcpy (bus->sysdata, info->cfg,sizeof (struct pci_config_window ));kfree (info); +kfree (root_ops); }else {struct pci_bus *child;
arch/riscv/include/asm/sparsemem.h +1 -1
@@ -7,7 +7,7 @@#ifdef CONFIG_64BIT #define MAX_PHYSMEM_BITS 56#else -#define MAX_PHYSMEM_BITS 34 +#define MAX_PHYSMEM_BITS 32#endif /* CONFIG_64BIT */ #define SECTION_SIZE_BITS 27#endif /* CONFIG_SPARSEMEM */
arch/riscv/include/asm/string.h +2 -0
@@ -19,6 +19,7 @@ extern asmlinkage void *__memcpy(void *, const void *, size_t); extern asmlinkage void *memmove(void *, const void *, size_t); extern asmlinkage void *__memmove(void *, const void *, size_t); +#if !(defined(CONFIG_KASAN_GENERIC ) || defined(CONFIG_KASAN_SW_TAGS ))#define __HAVE_ARCH_STRCMP extern asmlinkage int strcmp(const char *cs, const char *ct);
@@ -27,6 +28,7 @@ extern asmlinkage __kernel_size_t strlen(const char *);#define __HAVE_ARCH_STRNCMP extern asmlinkage int strncmp(const char *cs, const char *ct, size_t count); +#endif /* For those files which don't want to check by kasan. */ #if defined(CONFIG_KASAN ) && !defined(__SANITIZE_ADDRESS__)
arch/riscv/kernel/elf_kexec.c +6 -0
@@ -451,6 +451,12 @@ int arch_kexec_apply_relocations_add(struct purgatory_info *pi, *(u32 *)loc =CLEAN_IMM (CJTYPE , *(u32 *)loc) |ENCODE_CJTYPE_IMM (val - addr);break ; +case R_RISCV_ADD16 : + *(u16 *)loc += val; +break ; +case R_RISCV_SUB16 : + *(u16 *)loc -= val; +break ;case R_RISCV_ADD32 : *(u32 *)loc += val;break ;
arch/riscv/kernel/entry.S +2 -2
@@ -239,8 +239,8 @@ SYM_CODE_START(ret_from_fork) jalr s0 1: move a0, sp /* pt_regs */ - la ra, ret_from_exception - tail syscall_exit_to_user_mode + call syscall_exit_to_user_mode + j ret_from_exception SYM_CODE_END(ret_from_fork) #ifdef CONFIG_IRQ_STACKS
arch/riscv/kernel/riscv_ksyms.c +0 -3
@@ -12,9 +12,6 @@EXPORT_SYMBOL (memset);EXPORT_SYMBOL (memcpy);EXPORT_SYMBOL (memmove); -EXPORT_SYMBOL (strcmp); -EXPORT_SYMBOL (strlen); -EXPORT_SYMBOL (strncmp);EXPORT_SYMBOL (__memset);EXPORT_SYMBOL (__memcpy);EXPORT_SYMBOL (__memmove);
arch/riscv/lib/Makefile +2 -0
@@ -3,9 +3,11 @@ lib-y += delay.o lib-y += memcpy.o lib-y += memset.o lib-y += memmove.o +ifeq ($(CONFIG_KASAN_GENERIC)$(CONFIG_KASAN_SW_TAGS),) lib-y += strcmp.o lib-y += strlen.o lib-y += strncmp.o +endif lib-y += csum.o ifeq ($(CONFIG_MMU), y) lib-$(CONFIG_RISCV_ISA_V) += uaccess_vector.o
arch/riscv/lib/strcmp.S +1 -0
@@ -120,3 +120,4 @@ strcmp_zbb: .option pop #endif SYM_FUNC_END(strcmp) +EXPORT_SYMBOL(strcmp)
arch/riscv/lib/strlen.S +1 -0
@@ -131,3 +131,4 @@ strlen_zbb: #endif SYM_FUNC_END(strlen) SYM_FUNC_ALIAS(__pi_strlen, strlen) +EXPORT_SYMBOL(strlen)
arch/riscv/lib/strncmp.S +1 -0
@@ -136,3 +136,4 @@ strncmp_zbb: .option pop #endif SYM_FUNC_END(strncmp) +EXPORT_SYMBOL(strncmp)
arch/riscv/purgatory/Makefile +2 -0
@@ -1,7 +1,9 @@ # SPDX-License-Identifier: GPL-2.0 purgatory-y := purgatory.o sha256.o entry.o string.o ctype.o memcpy.o memset.o +ifeq ($(CONFIG_KASAN_GENERIC)$(CONFIG_KASAN_SW_TAGS),) purgatory-y += strcmp.o strlen.o strncmp.o +endif targets += $(purgatory-y) PURGATORY_OBJS = $(addprefix $(obj)/,$(purgatory-y))
arch/s390/include/asm/facility.h +4 -2
@@ -59,8 +59,10 @@ static inline int test_facility(unsigned long nr)unsigned long facilities_als[] = {FACILITIES_ALS };if (__builtin_constant_p (nr) && nr <sizeof (facilities_als) *8 ) { -if (__test_facility (nr, &facilities_als)) -return 1 ; +if (__test_facility (nr, &facilities_als)) { +if (!__is_defined (__DECOMPRESSOR)) +return 1 ; + } }return __test_facility (nr, &stfle_fac_list); }
arch/s390/include/asm/io.h +2 -0
@@ -16,8 +16,10 @@#include <asm/pci_io.h> #define xlate_dev_mem_ptr xlate_dev_mem_ptr +#define kc_xlate_dev_mem_ptr xlate_dev_mem_ptrvoid *xlate_dev_mem_ptr (phys_addr_t phys);#define unxlate_dev_mem_ptr unxlate_dev_mem_ptr +#define kc_unxlate_dev_mem_ptr unxlate_dev_mem_ptrvoid unxlate_dev_mem_ptr (phys_addr_t phys,void *addr);#define IO_SPACE_LIMIT 0
arch/s390/kernel/early.c +15 -2
@@ -177,8 +177,21 @@ static __init void setup_topology(void)void __do_early_pgm_check (struct pt_regs *regs) { -if (!fixup_exception (regs)) -disabled_wait (); +struct lowcore *lc =get_lowcore (); +unsigned long ip; + + regs->int_code = lc->pgm_int_code; + regs->int_parm_long = lc->trans_exc_code; + ip =__rewind_psw (regs->psw, regs->int_code >>16 ); + +/* Monitor Event? Might be a warning */ +if ((regs->int_code &PGM_INT_CODE_MASK ) ==0x40 ) { +if (report_bug (ip, regs) ==BUG_TRAP_TYPE_WARN ) +return ; + } +if (fixup_exception (regs)) +return ; +disabled_wait (); } static noinline __init void setup_lowcore_early(void)
arch/s390/kernel/perf_cpum_sf.c +4 -8
@@ -1463,7 +1463,7 @@ static int aux_output_begin(struct perf_output_handle *handle,unsigned long range, i, range_scan, idx, head, base, offset;struct hws_trailer_entry *te; -if (WARN_ON_ONCE (handle->head & ~PAGE_MASK )) +if (handle->head & ~PAGE_MASK )return -EINVAL ; aux->head = handle->head >>PAGE_SHIFT ;
@@ -1642,7 +1642,7 @@ static void hw_collect_aux(struct cpu_hw_sf *cpuhw)unsigned long num_sdb; aux =perf_get_aux (handle); -if (WARN_ON_ONCE (!aux)) +if (!aux)return ;/* Inform user space new data arrived */
@@ -1661,7 +1661,7 @@ static void hw_collect_aux(struct cpu_hw_sf *cpuhw) num_sdb);break ; } -if (WARN_ON_ONCE (!aux)) +if (!aux)return ;/* Update head and alert_mark to new position */
@@ -1896,12 +1896,8 @@ static void cpumsf_pmu_start(struct perf_event *event, int flags) {struct cpu_hw_sf *cpuhw =this_cpu_ptr (&cpu_hw_sf); -if (WARN_ON_ONCE (!(event->hw.state &PERF_HES_STOPPED ))) +if (!(event->hw.state &PERF_HES_STOPPED ))return ; - -if (flags &PERF_EF_RELOAD ) -WARN_ON_ONCE (!(event->hw.state &PERF_HES_UPTODATE )); -perf_pmu_disable (event->pmu); event->hw.state =0 ; cpuhw->lsctl.cs =1 ;
arch/s390/mm/cmm.c +17 -1
@@ -95,11 +95,12 @@ static long cmm_alloc_pages(long nr, long *counter, (*counter)++;spin_unlock (&cmm_lock); nr--; +cond_resched (); }return nr; } -static long cmm_free_pages (long nr,long *counter,struct cmm_page_array **list) +static long __cmm_free_pages (long nr,long *counter,struct cmm_page_array **list) {struct cmm_page_array *pa;unsigned long addr;
@@ -123,6 +124,21 @@ static long cmm_free_pages(long nr, long *counter, struct cmm_page_array **list)return nr; } +static long cmm_free_pages (long nr,long *counter,struct cmm_page_array **list) +{ +long inc =0 ; + +while (nr) { + inc =min (256L , nr); + nr -= inc; + inc =__cmm_free_pages (inc, counter, list); +if (inc) +break ; +cond_resched (); + } +return nr + inc; +} +static int cmm_oom_notify (struct notifier_block *self,unsigned long dummy,void *parm) {
arch/x86/kernel/amd_nb.c +3 -0
@@ -26,6 +26,7 @@#define PCI_DEVICE_ID_AMD_19H_M70H_ROOT 0x14e8#define PCI_DEVICE_ID_AMD_1AH_M00H_ROOT 0x153a#define PCI_DEVICE_ID_AMD_1AH_M20H_ROOT 0x1507 +#define PCI_DEVICE_ID_AMD_1AH_M60H_ROOT 0x1122#define PCI_DEVICE_ID_AMD_MI200_ROOT 0x14bb#define PCI_DEVICE_ID_AMD_MI300_ROOT 0x14f8
@@ -63,6 +64,7 @@ static const struct pci_device_id amd_root_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M70H_ROOT) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_ROOT) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_ROOT) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_ROOT) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_ROOT) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_ROOT) }, {}
@@ -95,6 +97,7 @@ static const struct pci_device_id amd_nb_misc_ids[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F3) }, + { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_1AH_M70H_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI200_DF_F3) }, { PCI_DEVICE(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_MI300_DF_F3) },
arch/x86/net/bpf_jit_comp.c +52 -2
72 lines not on this page · raw message
arch/x86/xen/enlighten_pv.c +4 -0
@@ -1032,6 +1032,10 @@ static u64 xen_do_read_msr(unsigned int msr, int *err)switch (msr) {case MSR_IA32_APICBASE : val &= ~X2APIC_ENABLE ; +if (smp_processor_id () ==0 ) + val |=MSR_IA32_APICBASE_BSP ; +else + val &= ~MSR_IA32_APICBASE_BSP ;break ; }return val;
drivers/acpi/resource.c +4 -25
@@ -483,38 +483,17 @@ static const struct dmi_system_id irq1_level_low_skip_override[] = { }, }, { -/* Asus ExpertBook B2402CBA */ +/* Asus ExpertBook B2402 (B2402CBA / B2402FBA / B2402CVA / B2402FVA) */ .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "B2402CBA"), + DMI_MATCH(DMI_BOARD_NAME, "B2402"), }, }, { -/* Asus ExpertBook B2402FBA */ +/* Asus ExpertBook B2502 (B2502CBA / B2502FBA / B2502CVA / B2502FVA) */ .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "B2402FBA"), - }, - }, - { -/* Asus ExpertBook B2502 */ - .matches = { -DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "B2502CBA"), - }, - }, - { -/* Asus ExpertBook B2502FBA */ - .matches = { -DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "B2502FBA"), - }, - }, - { -/* Asus ExpertBook B2502CVA */ - .matches = { -DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_BOARD_NAME, "B2502CVA"), + DMI_MATCH(DMI_BOARD_NAME, "B2502"), }, }, {
drivers/ata/libata-eh.c +14 -4
@@ -4059,10 +4059,20 @@ static void ata_eh_handle_port_suspend(struct ata_port *ap)WARN_ON (ap->pflags &ATA_PFLAG_SUSPENDED ); -/* Set all devices attached to the port in standby mode */ -ata_for_each_link (link, ap,HOST_FIRST ) { -ata_for_each_dev (dev, link,ENABLED ) -ata_dev_power_set_standby (dev); +/* +* We will reach this point for all of the PM events: +* PM_EVENT_SUSPEND (if runtime pm, PM_EVENT_AUTO will also be set) +* PM_EVENT_FREEZE, and PM_EVENT_HIBERNATE. +* +* We do not want to perform disk spin down for PM_EVENT_FREEZE. +* (Spin down will be performed by the subsequent PM_EVENT_HIBERNATE.) +*/ +if (!(ap->pm_mesg.event &PM_EVENT_FREEZE )) { +/* Set all devices attached to the port in standby mode */ +ata_for_each_link (link, ap,HOST_FIRST ) { +ata_for_each_dev (dev, link,ENABLED ) +ata_dev_power_set_standby (dev); + } }/*
drivers/base/bus.c +6 -2
@@ -152,7 +152,8 @@ static ssize_t bus_attr_show(struct kobject *kobj, struct attribute *attr, {struct bus_attribute *bus_attr =to_bus_attr (attr);struct subsys_private *subsys_priv =to_subsys_private (kobj); -ssize_t ret =0 ; +/* return -EIO for reading a bus attribute without show() */ +ssize_t ret = -EIO ;if (bus_attr->show) ret = bus_attr->show (subsys_priv->bus, buf);
@@ -164,7 +165,8 @@ static ssize_t bus_attr_store(struct kobject *kobj, struct attribute *attr, {struct bus_attribute *bus_attr =to_bus_attr (attr);struct subsys_private *subsys_priv =to_subsys_private (kobj); -ssize_t ret =0 ; +/* return -EIO for writing a bus attribute without store() */ +ssize_t ret = -EIO ;if (bus_attr->store) ret = bus_attr->store (subsys_priv->bus, buf, count);
@@ -920,6 +922,8 @@ int bus_register(const struct bus_type *bus)bus_remove_file (bus, &bus_attr_uevent); bus_uevent_fail:kset_unregister (&priv->subsys); +/* Above kset_unregister() will kfree @priv */ + priv =NULL ; out:kfree (priv);return retval;
drivers/base/power/common.c +15 -10
@@ -195,6 +195,7 @@ int dev_pm_domain_attach_list(struct device *dev,struct device *pd_dev =NULL ;int ret, i, num_pds =0 ;bool by_id = true; +size_t size;u32 pd_flags = data ? data->pd_flags :0 ;u32 link_flags = pd_flags &PD_FLAG_NO_DEV_LINK ?0 :DL_FLAG_STATELESS |DL_FLAG_PM_RUNTIME ;
@@ -217,19 +218,17 @@ int dev_pm_domain_attach_list(struct device *dev,if (num_pds <=0 )return 0 ; - pds =devm_kzalloc (dev,sizeof (*pds),GFP_KERNEL ); + pds =kzalloc (sizeof (*pds),GFP_KERNEL );if (!pds)return -ENOMEM ; - pds->pd_devs =devm_kcalloc (dev, num_pds,sizeof (*pds->pd_devs), -GFP_KERNEL ); -if (!pds->pd_devs) -return -ENOMEM ; - - pds->pd_links =devm_kcalloc (dev, num_pds,sizeof (*pds->pd_links), -GFP_KERNEL ); -if (!pds->pd_links) -return -ENOMEM ; + size =sizeof (*pds->pd_devs) +sizeof (*pds->pd_links); + pds->pd_devs =kcalloc (num_pds, size,GFP_KERNEL ); +if (!pds->pd_devs) { + ret = -ENOMEM ; + goto free_pds; + } + pds->pd_links = (void *)(pds->pd_devs + num_pds);if (link_flags && pd_flags &PD_FLAG_DEV_LINK_ON ) link_flags |=DL_FLAG_RPM_ACTIVE ;
@@ -272,6 +271,9 @@ int dev_pm_domain_attach_list(struct device *dev,device_link_del (pds->pd_links[i]);dev_pm_domain_detach (pds->pd_devs[i], true); } +kfree (pds->pd_devs); +free_pds: +kfree (pds);return ret; }EXPORT_SYMBOL_GPL (dev_pm_domain_attach_list);
@@ -318,6 +320,9 @@ void dev_pm_domain_detach_list(struct dev_pm_domain_list *list)device_link_del (list->pd_links[i]);dev_pm_domain_detach (list->pd_devs[i], true); } + +kfree (list->pd_devs); +kfree (list); }EXPORT_SYMBOL_GPL (dev_pm_domain_detach_list);
drivers/block/zram/zram_drv.c +7 -0
@@ -1989,6 +1989,13 @@ static void zram_destroy_comps(struct zram *zram)zcomp_destroy (comp); zram->num_active_comps--; } + +for (prio =ZRAM_PRIMARY_COMP ; prio <ZRAM_MAX_COMPS ; prio++) { +/* Do not free statically defined compression algorithms */ +if (zram->comp_algs[prio] != default_compressor) +kfree (zram->comp_algs[prio]); + zram->comp_algs[prio] =NULL ; + } }static void zram_reset_device (struct zram *zram)
drivers/bluetooth/btusb.c +18 -2
@@ -4092,16 +4092,29 @@ static void btusb_disconnect(struct usb_interface *intf)static int btusb_suspend (struct usb_interface *intf,pm_message_t message) {struct btusb_data *data =usb_get_intfdata (intf); +int err;BT_DBG ("intf %p" , intf); -/* Don't suspend if there are connections */ -if (hci_conn_count (data->hdev)) +/* Don't auto-suspend if there are connections; external suspend calls +* shall never fail. +*/ +if (PMSG_IS_AUTO (message) &&hci_conn_count (data->hdev))return -EBUSY ;if (data->suspend_count++)return 0 ; +/* Notify Host stack to suspend; this has to be done before stopping +* the traffic since the hci_suspend_dev itself may generate some +* traffic. +*/ + err =hci_suspend_dev (data->hdev); +if (err) { + data->suspend_count--; +return err; + } +spin_lock_irq (&data->txlock);if (!(PMSG_IS_AUTO (message) && data->tx_in_flight)) {set_bit (BTUSB_SUSPENDING , &data->flags);
@@ -4109,6 +4122,7 @@ static int btusb_suspend(struct usb_interface *intf, pm_message_t message) }else {spin_unlock_irq (&data->txlock); data->suspend_count--; +hci_resume_dev (data->hdev);return -EBUSY ; }
@@ -4229,6 +4243,8 @@ static int btusb_resume(struct usb_interface *intf)spin_unlock_irq (&data->txlock);schedule_work (&data->work); +hci_resume_dev (data->hdev); +return 0 ; failed:
drivers/char/virtio_console.c +10 -8
@@ -2007,25 +2007,27 @@ static int virtcons_probe(struct virtio_device *vdev) multiport = true; } - err =init_vqs (portdev); -if (err <0 ) { -dev_err (&vdev->dev,"Error %d initializing vqs\n" , err); - goto free_chrdev; - } -spin_lock_init (&portdev->ports_lock);INIT_LIST_HEAD (&portdev->ports);INIT_LIST_HEAD (&portdev->list); -virtio_device_ready (portdev->vdev); -INIT_WORK (&portdev->config_work, &config_work_handler);INIT_WORK (&portdev->control_work, &control_work_handler);if (multiport) {spin_lock_init (&portdev->c_ivq_lock);spin_lock_init (&portdev->c_ovq_lock); + } + err =init_vqs (portdev); +if (err <0 ) { +dev_err (&vdev->dev,"Error %d initializing vqs\n" , err); + goto free_chrdev; + } + +virtio_device_ready (portdev->vdev); + +if (multiport) { err =fill_queue (portdev->c_ivq, &portdev->c_ivq_lock);if (err <0 ) { dev_err(&vdev->dev,
drivers/clk/bcm/clk-bcm53573-ilp.c +1 -1
@@ -112,7 +112,7 @@ static void bcm53573_ilp_init(struct device_node *np) goto err_free_ilp; } - ilp->regmap =syscon_node_to_regmap (of_get_parent (np)); + ilp->regmap =syscon_node_to_regmap (np->parent);if (IS_ERR (ilp->regmap)) { err =PTR_ERR (ilp->regmap); goto err_free_ilp;
drivers/clk/imx/clk-imx7d.c +2 -2
@@ -498,9 +498,9 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node) hws[IMX7D_ENET_AXI_ROOT_SRC ] =imx_clk_hw_mux2_flags ("enet_axi_src" , base +0x8900 ,24 ,3 , enet_axi_sel,ARRAY_SIZE (enet_axi_sel),CLK_SET_PARENT_GATE ); hws[IMX7D_NAND_USDHC_BUS_ROOT_SRC ] =imx_clk_hw_mux2_flags ("nand_usdhc_src" , base +0x8980 ,24 ,3 , nand_usdhc_bus_sel,ARRAY_SIZE (nand_usdhc_bus_sel),CLK_SET_PARENT_GATE ); hws[IMX7D_DRAM_PHYM_ROOT_SRC ] =imx_clk_hw_mux2_flags ("dram_phym_src" , base +0x9800 ,24 ,1 , dram_phym_sel,ARRAY_SIZE (dram_phym_sel),CLK_SET_PARENT_GATE ); - hws[IMX7D_DRAM_ROOT_SRC ] =imx_clk_hw_mux2_flags ("dram_src" , base +0x9880 ,24 ,1 , dram_sel,ARRAY_SIZE (dram_sel),CLK_SET_PARENT_GATE ); + hws[IMX7D_DRAM_ROOT_SRC ] =imx_clk_hw_mux2 ("dram_src" , base +0x9880 ,24 ,1 , dram_sel,ARRAY_SIZE (dram_sel)); hws[IMX7D_DRAM_PHYM_ALT_ROOT_SRC ] =imx_clk_hw_mux2_flags ("dram_phym_alt_src" , base +0xa000 ,24 ,3 , dram_phym_alt_sel,ARRAY_SIZE (dram_phym_alt_sel),CLK_SET_PARENT_GATE ); - hws[IMX7D_DRAM_ALT_ROOT_SRC ] =imx_clk_hw_mux2_flags ("dram_alt_src" , base +0xa080 ,24 ,3 , dram_alt_sel,ARRAY_SIZE (dram_alt_sel),CLK_SET_PARENT_GATE ); + hws[IMX7D_DRAM_ALT_ROOT_SRC ] =imx_clk_hw_mux2 ("dram_alt_src" , base +0xa080 ,24 ,3 , dram_alt_sel,ARRAY_SIZE (dram_alt_sel)); hws[IMX7D_USB_HSIC_ROOT_SRC ] =imx_clk_hw_mux2_flags ("usb_hsic_src" , base +0xa100 ,24 ,3 , usb_hsic_sel,ARRAY_SIZE (usb_hsic_sel),CLK_SET_PARENT_GATE ); hws[IMX7D_PCIE_CTRL_ROOT_SRC ] =imx_clk_hw_mux2_flags ("pcie_ctrl_src" , base +0xa180 ,24 ,3 , pcie_ctrl_sel,ARRAY_SIZE (pcie_ctrl_sel),CLK_SET_PARENT_GATE ); hws[IMX7D_PCIE_PHY_ROOT_SRC ] =imx_clk_hw_mux2_flags ("pcie_phy_src" , base +0xa200 ,24 ,3 , pcie_phy_sel,ARRAY_SIZE (pcie_phy_sel),CLK_SET_PARENT_GATE );
drivers/comedi/drivers/ni_routing/tools/convert_c_to_py.c +5 -0
@@ -140,6 +140,11 @@ int main(void) {FILE *fp =fopen ("ni_values.py" ,"w" ); +if (fp ==NULL ) { +fprintf (stderr,"Could not open file!" ); +return -1 ; + } +/* write route register values */ fprintf (fp,"ni_route_values = {\n" );for (int i =0 ; ni_all_route_values[i]; ++i)
drivers/dax/device.c +1 -1
@@ -86,7 +86,7 @@ static void dax_set_mapping(struct vm_fault *vmf, pfn_t pfn, nr_pages =1 ; pgoff =linear_page_index (vmf->vma, -ALIGN (vmf->address, fault_size)); +ALIGN_DOWN (vmf->address, fault_size));for (i =0 ; i < nr_pages; i++) {struct page *page =pfn_to_page (pfn_t_to_pfn (pfn) + i);
drivers/gpio/gpio-aspeed.c +3 -1
@@ -406,6 +406,8 @@ static void __aspeed_gpio_set(struct gpio_chip *gc, unsigned int offset, gpio->dcache[GPIO_BANK (offset)] = reg;iowrite32 (reg, addr); +/* Flush write */ +ioread32 (addr); } static void aspeed_gpio_set(struct gpio_chip *gc, unsigned int offset,
@@ -1191,7 +1193,7 @@ static int __init aspeed_gpio_probe(struct platform_device *pdev)if (!gpio_id)return -EINVAL ; - gpio->clk =of_clk_get (pdev->dev.of_node,0 ); + gpio->clk =devm_clk_get_enabled (&pdev->dev,NULL );if (IS_ERR (gpio->clk)) {dev_warn (&pdev->dev,"Failed to get clock from devicetree, debouncing disabled\n" );
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c +2 -2
@@ -1438,8 +1438,8 @@ static int init_kfd_vm(struct amdgpu_vm *vm, void **process_info,list_add_tail (&vm->vm_list_node, &(vm->process_info->vm_list_head)); vm->process_info->n_vms++; - - *ef =dma_fence_get (&vm->process_info->eviction_fence->base); +if (ef) + *ef =dma_fence_get (&vm->process_info->eviction_fence->base);mutex_unlock (&vm->process_info->lock);return 0 ;
drivers/gpu/drm/amd/amdkfd/kfd_process.c +5 -2
@@ -1676,12 +1676,15 @@ int kfd_process_device_init_vm(struct kfd_process_device *pdd, ret =amdgpu_amdkfd_gpuvm_acquire_process_vm (dev->adev, avm, &p->kgd_process_info, - &ef); + p->ef ?NULL : &ef);if (ret) {dev_err (dev->adev->dev,"Failed to create process VM object\n" );return ret; } -RCU_INIT_POINTER (p->ef, ef); + +if (!p->ef) +RCU_INIT_POINTER (p->ef, ef); + pdd->drm_priv = drm_file->private_data; ret =kfd_process_device_reserve_ib_mem (pdd);
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 -3
@@ -2950,10 +2950,11 @@ static int dm_suspend(void *handle)hpd_rx_irq_work_suspend (dm); -if (adev->dm.dc->caps.ips_support) -dc_allow_idle_optimizations (adev->dm.dc, true); -dc_set_power_state (dm->dc,DC_ACPI_CM_POWER_STATE_D3 ); + +if (dm->dc->caps.ips_support && adev->in_s0ix) +dc_allow_idle_optimizations (dm->dc, true); +dc_dmub_srv_set_power_state (dm->dc->ctx->dmub_srv,DC_ACPI_CM_POWER_STATE_D3 );return 0 ;
drivers/gpu/drm/amd/display/dc/core/dc.c +35 -12
86 lines not on this page · raw message
drivers/gpu/drm/amd/pm/powerplay/inc/hwmgr.h +13 -13
@@ -60,7 +60,7 @@ struct vi_dpm_level {struct vi_dpm_table {uint32_t count; - struct vi_dpm_level dpm_level[] __counted_by(count); +struct vi_dpm_level dpm_level[]; };#define PCIE_PERF_REQ_REMOVE_REGISTRY 0
@@ -91,7 +91,7 @@ struct phm_set_power_state_input {struct phm_clock_array {uint32_t count; - uint32_t values[] __counted_by(count); +uint32_t values[]; };struct phm_clock_voltage_dependency_record {
@@ -123,7 +123,7 @@ struct phm_acpclock_voltage_dependency_record {struct phm_clock_voltage_dependency_table {uint32_t count; - struct phm_clock_voltage_dependency_record entries[] __counted_by(count); +struct phm_clock_voltage_dependency_record entries[]; };struct phm_phase_shedding_limits_record {
@@ -140,7 +140,7 @@ struct phm_uvd_clock_voltage_dependency_record {struct phm_uvd_clock_voltage_dependency_table {uint8_t count; - struct phm_uvd_clock_voltage_dependency_record entries[] __counted_by(count); +struct phm_uvd_clock_voltage_dependency_record entries[]; };struct phm_acp_clock_voltage_dependency_record {
@@ -150,7 +150,7 @@ struct phm_acp_clock_voltage_dependency_record {struct phm_acp_clock_voltage_dependency_table {uint32_t count; - struct phm_acp_clock_voltage_dependency_record entries[] __counted_by(count); +struct phm_acp_clock_voltage_dependency_record entries[]; };struct phm_vce_clock_voltage_dependency_record {
@@ -161,32 +161,32 @@ struct phm_vce_clock_voltage_dependency_record {struct phm_phase_shedding_limits_table {uint32_t count; - struct phm_phase_shedding_limits_record entries[] __counted_by(count); +struct phm_phase_shedding_limits_record entries[]; };struct phm_vceclock_voltage_dependency_table {uint8_t count; - struct phm_vceclock_voltage_dependency_record entries[] __counted_by(count); +struct phm_vceclock_voltage_dependency_record entries[]; };struct phm_uvdclock_voltage_dependency_table {uint8_t count; - struct phm_uvdclock_voltage_dependency_record entries[] __counted_by(count); +struct phm_uvdclock_voltage_dependency_record entries[]; };struct phm_samuclock_voltage_dependency_table {uint8_t count; - struct phm_samuclock_voltage_dependency_record entries[] __counted_by(count); +struct phm_samuclock_voltage_dependency_record entries[]; };struct phm_acpclock_voltage_dependency_table {uint32_t count; - struct phm_acpclock_voltage_dependency_record entries[] __counted_by(count); +struct phm_acpclock_voltage_dependency_record entries[]; };struct phm_vce_clock_voltage_dependency_table {uint8_t count; - struct phm_vce_clock_voltage_dependency_record entries[] __counted_by(count); +struct phm_vce_clock_voltage_dependency_record entries[]; };
@@ -393,7 +393,7 @@ union phm_cac_leakage_record {struct phm_cac_leakage_table {uint32_t count; - union phm_cac_leakage_record entries[] __counted_by(count); +union phm_cac_leakage_record entries[]; };struct phm_samu_clock_voltage_dependency_record {
@@ -404,7 +404,7 @@ struct phm_samu_clock_voltage_dependency_record {struct phm_samu_clock_voltage_dependency_table {uint8_t count; - struct phm_samu_clock_voltage_dependency_record entries[] __counted_by(count); +struct phm_samu_clock_voltage_dependency_record entries[]; };struct phm_cac_tdp_table {
drivers/gpu/drm/drm_fbdev_dma.c +2 -1
@@ -50,7 +50,8 @@ static void drm_fbdev_dma_fb_destroy(struct fb_info *info)if (!fb_helper->dev)return ; -fb_deferred_io_cleanup (info); +if (info->fbdefio) +fb_deferred_io_cleanup (info);drm_fb_helper_fini (fb_helper);drm_client_buffer_vunmap (fb_helper->buffer);
drivers/gpu/drm/i915/display/intel_hdcp.c +7 -3
@@ -1089,7 +1089,8 @@ static void intel_hdcp_update_value(struct intel_connector *connector, hdcp->value = value;if (update_property) {drm_connector_get (&connector->base); -queue_work (i915->unordered_wq, &hdcp->prop_work); +if (!queue_work (i915->unordered_wq, &hdcp->prop_work)) +drm_connector_put (&connector->base); } }
@@ -2517,7 +2518,8 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,mutex_lock (&hdcp->mutex); hdcp->value =DRM_MODE_CONTENT_PROTECTION_DESIRED ;drm_connector_get (&connector->base); -queue_work (i915->unordered_wq, &hdcp->prop_work); +if (!queue_work (i915->unordered_wq, &hdcp->prop_work)) +drm_connector_put (&connector->base);mutex_unlock (&hdcp->mutex); }
@@ -2534,7 +2536,9 @@ void intel_hdcp_update_pipe(struct intel_atomic_state *state,*/ if (!desired_and_not_enabled && !content_protection_type_changed) {drm_connector_get (&connector->base); -queue_work (i915->unordered_wq, &hdcp->prop_work); +if (!queue_work (i915->unordered_wq, &hdcp->prop_work)) +drm_connector_put (&connector->base); + } }
drivers/gpu/drm/nouveau/dispnv04/crtc.c +1 -1
@@ -1157,7 +1157,7 @@ nv04_crtc_page_flip(struct drm_crtc *crtc, struct drm_framebuffer *fb, chan = drm->channel;if (!chan)return -ENODEV ; - cli = (void *)chan->user.client; + cli = chan->cli; push = chan->chan.push; s =kzalloc (sizeof (*s),GFP_KERNEL );
drivers/gpu/drm/nouveau/nouveau_abi16.c +1 -1
@@ -356,7 +356,7 @@ nouveau_abi16_ioctl_channel_alloc(ABI16_IOCTL_ARGS)list_add (&chan->head, &abi16->channels);/* create channel object and initialise dma and fence management */ - ret =nouveau_channel_new (drm, device, false, runm, init->fb_ctxdma_handle, + ret =nouveau_channel_new (cli, false, runm, init->fb_ctxdma_handle, init->tt_ctxdma_handle, &chan->chan);if (ret) goto done;
drivers/gpu/drm/nouveau/nouveau_bo.c +1 -1
@@ -859,7 +859,7 @@ nouveau_bo_move_m2mf(struct ttm_buffer_object *bo, int evict, {struct nouveau_drm *drm =nouveau_bdev (bo->bdev);struct nouveau_channel *chan = drm->ttm.chan; -struct nouveau_cli *cli = (void *)chan->user.client; +struct nouveau_cli *cli = chan->cli;struct nouveau_fence *fence;int ret;
drivers/gpu/drm/nouveau/nouveau_chan.c +11 -10
@@ -52,7 +52,7 @@ static int nouveau_channel_killed(struct nvif_event *event, void *repv, u32 repc) { struct nouveau_channel *chan = container_of(event, typeof(*chan), kill); -struct nouveau_cli *cli = (void *)chan->user.client; +struct nouveau_cli *cli = chan->cli;NV_PRINTK (warn, cli,"channel %d killed!\n" , chan->chid);
@@ -66,7 +66,7 @@ int nouveau_channel_idle(struct nouveau_channel *chan) {if (likely (chan && chan->fence && !atomic_read (&chan->killed))) { -struct nouveau_cli *cli = (void *)chan->user.client; +struct nouveau_cli *cli = chan->cli;struct nouveau_fence *fence =NULL ;int ret;
@@ -142,10 +142,11 @@ nouveau_channel_wait(struct nvif_push *push, u32 size) }static int -nouveau_channel_prep (struct nouveau_drm *drm,struct nvif_device *device, +nouveau_channel_prep (struct nouveau_cli *cli,u32 size,struct nouveau_channel **pchan) { -struct nouveau_cli *cli = (void *)device->object.client; +struct nouveau_drm *drm = cli->drm; +struct nvif_device *device = &cli->device;struct nv_dma_v0 args = {};struct nouveau_channel *chan;u32 target;
@@ -155,6 +156,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device,if (!chan)return -ENOMEM ; + chan->cli = cli; chan->device = device; chan->drm = drm; chan->vmm =nouveau_cli_vmm (cli);
@@ -254,7 +256,7 @@ nouveau_channel_prep(struct nouveau_drm *drm, struct nvif_device *device, }static int -nouveau_channel_ctor (struct nouveau_drm *drm,struct nvif_device *device,bool priv,u64 runm, +nouveau_channel_ctor (struct nouveau_cli *cli,bool priv,u64 runm,struct nouveau_channel **pchan) {const struct nvif_mclass hosts[] = {
@@ -279,7 +281,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool pstruct nvif_chan_v0 chan;char name[TASK_COMM_LEN +16 ]; } args; -struct nouveau_cli *cli = (void *)device->object.client; +struct nvif_device *device = &cli->device;struct nouveau_channel *chan;const u64 plength =0x10000 ;const u64 ioffset = plength;
@@ -298,7 +300,7 @@ nouveau_channel_ctor(struct nouveau_drm *drm, struct nvif_device *device, bool p size = ioffset + ilength;/* allocate dma push buffer */ - ret =nouveau_channel_prep (drm, device, size, &chan); + ret =nouveau_channel_prep (cli, size, &chan); *pchan = chan;if (ret)return ret;
@@ -493,13 +495,12 @@ nouveau_channel_init(struct nouveau_channel *chan, u32 vram, u32 gart) }int -nouveau_channel_new (struct nouveau_drm *drm,struct nvif_device *device, +nouveau_channel_new (struct nouveau_cli *cli,bool priv,u64 runm,u32 vram,u32 gart,struct nouveau_channel **pchan) { -struct nouveau_cli *cli = (void *)device->object.client;int ret; - ret =nouveau_channel_ctor (drm, device, priv, runm, pchan); + ret =nouveau_channel_ctor (cli, priv, runm, pchan);if (ret) {NV_PRINTK (dbg, cli,"channel create, %d\n" , ret);return ret;
drivers/gpu/drm/nouveau/nouveau_chan.h +2 -1
@@ -12,6 +12,7 @@ struct nouveau_channel {struct nvif_push *push; } chan; +struct nouveau_cli *cli;struct nvif_device *device;struct nouveau_drm *drm;struct nouveau_vmm *vmm;
@@ -62,7 +63,7 @@ struct nouveau_channel {int nouveau_channels_init (struct nouveau_drm *);void nouveau_channels_fini (struct nouveau_drm *); -int nouveau_channel_new (struct nouveau_drm *,struct nvif_device *,bool priv,u64 runm, +int nouveau_channel_new (struct nouveau_cli *,bool priv,u64 runm,u32 vram,u32 gart,struct nouveau_channel **);void nouveau_channel_del (struct nouveau_channel **);int nouveau_channel_idle (struct nouveau_channel *);
drivers/gpu/drm/nouveau/nouveau_dmem.c +1 -1
@@ -193,7 +193,7 @@ static vm_fault_t nouveau_dmem_migrate_to_ram(struct vm_fault *vmf)if (!spage || !(src &MIGRATE_PFN_MIGRATE )) goto done; - dpage =alloc_page_vma (GFP_HIGHUSER , vmf->vma, vmf->address); + dpage =alloc_page_vma (GFP_HIGHUSER | __GFP_ZERO, vmf->vma, vmf->address);if (!dpage) goto done;
drivers/gpu/drm/nouveau/nouveau_drm.c +2 -2
@@ -356,7 +356,7 @@ nouveau_accel_ce_init(struct nouveau_drm *drm)return ; } - ret =nouveau_channel_new (drm, device, false, runm, NvDmaFB, NvDmaTT, &drm->cechan); + ret =nouveau_channel_new (&drm->client, true, runm, NvDmaFB, NvDmaTT, &drm->cechan);if (ret)NV_ERROR (drm,"failed to create ce channel, %d\n" , ret); }
@@ -384,7 +384,7 @@ nouveau_accel_gr_init(struct nouveau_drm *drm)return ; } - ret =nouveau_channel_new (drm, device, false, runm, NvDmaFB, NvDmaTT, &drm->channel); + ret =nouveau_channel_new (&drm->client, false, runm, NvDmaFB, NvDmaTT, &drm->channel);if (ret) {NV_ERROR (drm,"failed to create kernel channel, %d\n" , ret);nouveau_accel_gr_fini (drm);
drivers/gpu/drm/v3d/v3d_perfmon.c +8 -1
@@ -289,6 +289,11 @@ void v3d_perfmon_open_file(struct v3d_file_priv *v3d_priv)static int v3d_perfmon_idr_del (int id,void *elem,void *data) {struct v3d_perfmon *perfmon = elem; +struct v3d_dev *v3d = (struct v3d_dev *)data; + +/* If the active perfmon is being destroyed, stop it first */ +if (perfmon == v3d->active_perfmon) +v3d_perfmon_stop (v3d, perfmon, false);v3d_perfmon_put (perfmon);
@@ -297,8 +302,10 @@ static int v3d_perfmon_idr_del(int id, void *elem, void *data)void v3d_perfmon_close_file (struct v3d_file_priv *v3d_priv) { +struct v3d_dev *v3d = v3d_priv->v3d; +mutex_lock (&v3d_priv->perfmon.lock); -idr_for_each (&v3d_priv->perfmon.idr, v3d_perfmon_idr_del,NULL ); +idr_for_each (&v3d_priv->perfmon.idr, v3d_perfmon_idr_del, v3d);idr_destroy (&v3d_priv->perfmon.idr);mutex_unlock (&v3d_priv->perfmon.lock);mutex_destroy (&v3d_priv->perfmon.lock);
drivers/gpu/drm/vc4/vc4_perfmon.c +6 -1
@@ -116,6 +116,11 @@ void vc4_perfmon_open_file(struct vc4_file *vc4file)static int vc4_perfmon_idr_del (int id,void *elem,void *data) {struct vc4_perfmon *perfmon = elem; +struct vc4_dev *vc4 = (struct vc4_dev *)data; + +/* If the active perfmon is being destroyed, stop it first */ +if (perfmon == vc4->active_perfmon) +vc4_perfmon_stop (vc4, perfmon, false);vc4_perfmon_put (perfmon);
@@ -130,7 +135,7 @@ void vc4_perfmon_close_file(struct vc4_file *vc4file)return ;mutex_lock (&vc4file->perfmon.lock); -idr_for_each (&vc4file->perfmon.idr, vc4_perfmon_idr_del,NULL ); +idr_for_each (&vc4file->perfmon.idr, vc4_perfmon_idr_del, vc4);idr_destroy (&vc4file->perfmon.idr);mutex_unlock (&vc4file->perfmon.lock);mutex_destroy (&vc4file->perfmon.lock);
drivers/gpu/drm/xe/xe_bb.c +2 -1
@@ -65,7 +65,8 @@ __xe_bb_create_job(struct xe_exec_queue *q, struct xe_bb *bb, u64 *addr) {u32 size =drm_suballoc_size (bb->bo); - bb->cs[bb->len++] =MI_BATCH_BUFFER_END ; +if (bb->len ==0 || bb->cs[bb->len -1 ] !=MI_BATCH_BUFFER_END ) + bb->cs[bb->len++] =MI_BATCH_BUFFER_END ;xe_gt_assert (q->gt, bb->len *4 +bb_prefetch (q->gt) <= size);
drivers/gpu/drm/xe/xe_debugfs.c +1 -1
@@ -190,7 +190,7 @@ void xe_debugfs_register(struct xe_device *xe)debugfs_create_file ("forcewake_all" ,0400 , root, xe, &forcewake_all_fops); -debugfs_create_file ("wedged_mode" ,0400 , root, xe, +debugfs_create_file ("wedged_mode" ,0600 , root, xe, &wedged_mode_fops);for (mem_type =XE_PL_VRAM0 ; mem_type <=XE_PL_VRAM1 ; ++mem_type) {
drivers/gpu/drm/xe/xe_gt.c +3 -1
@@ -874,7 +874,9 @@ int xe_gt_sanitize_freq(struct xe_gt *gt)int ret =0 ;if ((!xe_uc_fw_is_available (>->uc.gsc.fw) || -xe_uc_fw_is_loaded (>->uc.gsc.fw)) &&XE_WA (gt,22019338487 )) +xe_uc_fw_is_loaded (>->uc.gsc.fw) || +xe_uc_fw_is_in_error_state (>->uc.gsc.fw)) && +XE_WA (gt,22019338487 )) ret =xe_guc_pc_restore_stashed_freq (>->uc.guc.pc);return ret;
drivers/gpu/drm/xe/xe_guc_ct.c +26 -18
79 lines not on this page · raw message
drivers/gpu/drm/xe/xe_guc_submit.c +3 -6
@@ -393,7 +393,6 @@ static void __release_guc_id(struct xe_guc *guc, struct xe_exec_queue *q, u32 xastatic int alloc_guc_id (struct xe_guc *guc,struct xe_exec_queue *q) {int ret; -void *ptr;int i;/*
@@ -413,12 +412,10 @@ static int alloc_guc_id(struct xe_guc *guc, struct xe_exec_queue *q) q->guc->id = ret;for (i =0 ; i < q->width; ++i) { - ptr =xa_store (&guc->submission_state.exec_queue_lookup, - q->guc->id + i, q,GFP_NOWAIT ); -if (IS_ERR (ptr)) { - ret =PTR_ERR (ptr); + ret =xa_err (xa_store (&guc->submission_state.exec_queue_lookup, + q->guc->id + i, q,GFP_NOWAIT )); +if (ret) goto err_release; - } }return 0 ;
drivers/hid/amd-sfh-hid/amd_sfh_client.c +3 -11
@@ -236,9 +236,9 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata) cl_data->in_data = in_data;for (i =0 ; i < cl_data->num_hid_devices; i++) { - in_data->sensor_virt_addr[i] =dma_alloc_coherent (dev,sizeof (int ) *8 , - &cl_data->sensor_dma_addr[i], -GFP_KERNEL ); + in_data->sensor_virt_addr[i] =dmam_alloc_coherent (dev,sizeof (int ) *8 , + &cl_data->sensor_dma_addr[i], +GFP_KERNEL );if (!in_data->sensor_virt_addr[i]) { rc = -ENOMEM ; goto cleanup;
@@ -331,7 +331,6 @@ int amd_sfh_hid_client_init(struct amd_mp2_dev *privdata)int amd_sfh_hid_client_deinit (struct amd_mp2_dev *privdata) {struct amdtp_cl_data *cl_data = privdata->cl_data; -struct amd_input_data *in_data = cl_data->in_data;int i, status;for (i =0 ; i < cl_data->num_hid_devices; i++) {
@@ -351,12 +350,5 @@ int amd_sfh_hid_client_deinit(struct amd_mp2_dev *privdata)cancel_delayed_work_sync (&cl_data->work_buffer);amdtp_hid_remove (cl_data); -for (i =0 ; i < cl_data->num_hid_devices; i++) { -if (in_data->sensor_virt_addr[i]) { -dma_free_coherent (&privdata->pdev->dev,8 *sizeof (int ), - in_data->sensor_virt_addr[i], - cl_data->sensor_dma_addr[i]); - } - }return 0 ; }
drivers/hid/hid-ids.h +3 -0
@@ -505,6 +505,7 @@#define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100#define I2C_VENDOR_ID_GOODIX 0x27c6 +#define I2C_DEVICE_ID_GOODIX_01E0 0x01e0#define I2C_DEVICE_ID_GOODIX_01E8 0x01e8#define I2C_DEVICE_ID_GOODIX_01E9 0x01e9#define I2C_DEVICE_ID_GOODIX_01F0 0x01f0
@@ -1035,6 +1036,8 @@#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058 +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c +#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e#define USB_VENDOR_ID_PANASONIC 0x04da#define USB_DEVICE_ID_PANABOARD_UBT780 0x1044
drivers/hid/hid-multitouch.c +6 -2
@@ -1446,7 +1446,8 @@ static __u8 *mt_report_fixup(struct hid_device *hdev, __u8 *rdesc, {if (hdev->vendor ==I2C_VENDOR_ID_GOODIX && (hdev->product ==I2C_DEVICE_ID_GOODIX_01E8 || - hdev->product ==I2C_DEVICE_ID_GOODIX_01E9 )) { + hdev->product ==I2C_DEVICE_ID_GOODIX_01E9 || + hdev->product ==I2C_DEVICE_ID_GOODIX_01E0 )) {if (rdesc[607 ] ==0x15 ) { rdesc[607 ] =0x25 ; dev_info(
@@ -2065,7 +2066,10 @@ static const struct hid_device_id mt_devices[] = { I2C_DEVICE_ID_GOODIX_01E8) }, { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,HID_DEVICE (BUS_I2C ,HID_GROUP_ANY ,I2C_VENDOR_ID_GOODIX , - I2C_DEVICE_ID_GOODIX_01E8) }, + I2C_DEVICE_ID_GOODIX_01E9) }, + { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU, +HID_DEVICE (BUS_I2C ,HID_GROUP_ANY ,I2C_VENDOR_ID_GOODIX , + I2C_DEVICE_ID_GOODIX_01E0) }, /* GoodTouch panels */ { .driver_data = MT_CLS_NSMU,
drivers/hid/hid-plantronics.c +23 -0
@@ -38,8 +38,10 @@ (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER)#define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0) +#define PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS BIT(1)#define PLT_DOUBLE_KEY_TIMEOUT 5/* ms */ +#define PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT 220/* ms */ struct plt_drv_data {unsigned long device_type;
@@ -137,6 +139,21 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field, drv_data->last_volume_key_ts = cur_ts; } +if (drv_data->quirks &PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS ) { +unsigned long prev_ts, cur_ts; + +/* Usages are filtered in plantronics_usages. */ + +if (!value)/* Handle key presses only. */ +return 0 ; + + prev_ts = drv_data->last_volume_key_ts; + cur_ts = jiffies; +if (jiffies_to_msecs (cur_ts - prev_ts) <=PLT_FOLLOWED_OPPOSITE_KEY_TIMEOUT ) +return 1 ;/* Ignore the followed opposite volume key. */ + + drv_data->last_volume_key_ts = cur_ts; + }return 0 ; }
@@ -210,6 +227,12 @@ static const struct hid_device_id plantronics_devices[] = { {HID_USB_DEVICE (USB_VENDOR_ID_PLANTRONICS , USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES), .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, + USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES), + .driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, + USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES), + .driver_data = PLT_QUIRK_FOLLOWED_OPPOSITE_VOLUME_KEYS }, { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) }, { } };
drivers/hid/intel-ish-hid/ishtp-fw-loader.c +1 -1
@@ -635,7 +635,7 @@ static int ish_fw_xfer_direct_dma(struct ishtp_cl_data *client_data,const struct firmware *fw, const struct shim_fw_info fw_info) { - int rv; + int rv = 0;void *dma_buf;dma_addr_t dma_buf_phy;u32 fragment_offset, fragment_size, payload_max_size;
drivers/hid/wacom_wac.c +2 -0
@@ -2501,6 +2501,8 @@ static void wacom_wac_pen_report(struct hid_device *hdev,/* Going into range select tool */ if (wacom_wac->hid_data.invert_state) wacom_wac->tool[0 ] =BTN_TOOL_RUBBER ; +else if (wacom_wac->features.quirks &WACOM_QUIRK_AESPEN ) + wacom_wac->tool[0 ] =BTN_TOOL_PEN ;else if (wacom_wac->id[0 ]) wacom_wac->tool[0 ] =wacom_intuos_get_tool_type (wacom_wac->id[0 ]);else
drivers/hwmon/Kconfig +5 -0
@@ -162,6 +162,7 @@ config SENSORS_ADM9240 tristate "Analog Devices ADM9240 and compatibles" depends on I2C select HWMON_VID + select REGMAP_I2C help If you say yes here you get support for Analog Devices ADM9240, Dallas DS1780, National Semiconductor LM81 sensor chips.
@@ -223,6 +224,7 @@ config SENSORS_ADT7462 config SENSORS_ADT7470 tristate "Analog Devices ADT7470" depends on I2C + select REGMAP_I2C help If you say yes here you get support for the Analog Devices ADT7470 temperature monitoring chips.
@@ -999,6 +1001,7 @@ config SENSORS_LTC2990 config SENSORS_LTC2991 tristate "Analog Devices LTC2991" depends on I2C + select REGMAP_I2C help If you say yes here you get support for Analog Devices LTC2991 Octal I2C Voltage, Current, and Temperature Monitor. The LTC2991
@@ -1275,6 +1278,7 @@ config SENSORS_MAX31790 config SENSORS_MC34VR500 tristate "NXP MC34VR500 hardware monitoring driver" depends on I2C + select REGMAP_I2C help If you say yes here you get support for the temperature and input voltage sensors of the NXP MC34VR500.
@@ -2288,6 +2292,7 @@ config SENSORS_TMP464 config SENSORS_TMP513 tristate "Texas Instruments TMP513 and compatibles" depends on I2C + select REGMAP_I2C help If you say yes here you get support for Texas Instruments TMP512, and TMP513 temperature and power supply sensor chips.
drivers/hwmon/intel-m10-bmc-hwmon.c +1 -1
@@ -358,7 +358,7 @@ static const struct m10bmc_sdata n6000bmc_temp_tbl[] = { { 0x4f0, 0x4f4, 0x4f8, 0x52c, 0x0, 500, "Board Top Near FPGA Temperature" }, { 0x4fc, 0x500, 0x504, 0x52c, 0x0, 500, "Board Bottom Near CVL Temperature" }, { 0x508, 0x50c, 0x510, 0x52c, 0x0, 500, "Board Top East Near VRs Temperature" }, - { 0x514, 0x518, 0x51c, 0x52c, 0x0, 500, "Columbiaville Die Temperature" }, + { 0x514, 0x518, 0x51c, 0x52c, 0x0, 500, "CVL Die Temperature" }, { 0x520, 0x524, 0x528, 0x52c, 0x0, 500, "Board Rear Side Temperature" }, { 0x530, 0x534, 0x538, 0x52c, 0x0, 500, "Board Front Side Temperature" }, { 0x53c, 0x540, 0x544, 0x0, 0x0, 500, "QSFP1 Case Temperature" },
drivers/hwmon/k10temp.c +1 -0
@@ -548,6 +548,7 @@ static const struct pci_device_id k10temp_id_table[] = { { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_19H_M78H_DF_F3) }, { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_1AH_M00H_DF_F3) }, { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_1AH_M20H_DF_F3) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_1AH_M60H_DF_F3) }, { PCI_VDEVICE(HYGON, PCI_DEVICE_ID_AMD_17H_DF_F3) }, {} };
drivers/i2c/busses/i2c-i801.c +8 -1
@@ -1763,8 +1763,15 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)i801_add_tco (priv); +/* +* adapter.name is used by platform code to find the main I801 adapter +* to instantiante i2c_clients, do not change. +*/ snprintf (priv->adapter.name,sizeof (priv->adapter.name), -"SMBus I801 adapter at %04lx" , priv->smba); +"SMBus %s adapter at %04lx" , + (priv->features &FEATURE_IDF ) ?"I801 IDF" :"I801" , + priv->smba); + err =i2c_add_adapter (&priv->adapter);if (err) {platform_device_unregister (priv->tco_pdev);
drivers/i3c/master/i3c-master-cdns.c +1 -0
@@ -1666,6 +1666,7 @@ static void cdns_i3c_master_remove(struct platform_device *pdev) {struct cdns_i3c_master *master =platform_get_drvdata (pdev); +cancel_work_sync (&master->hj_work);i3c_master_unregister (&master->base);clk_disable_unprepare (master->sysclk);
drivers/infiniband/core/mad.c +8 -6
@@ -2616,14 +2616,16 @@ static int retry_send(struct ib_mad_send_wr_private *mad_send_wr)static void timeout_sends (struct work_struct *work) { +struct ib_mad_send_wr_private *mad_send_wr, *n;struct ib_mad_agent_private *mad_agent_priv; -struct ib_mad_send_wr_private *mad_send_wr;struct ib_mad_send_wc mad_send_wc; +struct list_head local_list;unsigned long flags, delay; mad_agent_priv = container_of(work, struct ib_mad_agent_private, timed_work.work); mad_send_wc.vendor_err =0 ; +INIT_LIST_HEAD (&local_list);spin_lock_irqsave (&mad_agent_priv->lock, flags);while (!list_empty (&mad_agent_priv->wait_list)) {
@@ -2641,13 +2643,16 @@ static void timeout_sends(struct work_struct *work)break ; } -list_del (&mad_send_wr->agent_list); +list_del_init (&mad_send_wr->agent_list);if (mad_send_wr->status ==IB_WC_SUCCESS && !retry_send (mad_send_wr))continue ; -spin_unlock_irqrestore (&mad_agent_priv->lock, flags); +list_add_tail (&mad_send_wr->agent_list, &local_list); + } +spin_unlock_irqrestore (&mad_agent_priv->lock, flags); +list_for_each_entry_safe (mad_send_wr, n, &local_list, agent_list) {if (mad_send_wr->status ==IB_WC_SUCCESS ) mad_send_wc.status =IB_WC_RESP_TIMEOUT_ERR ;else
@@ -2655,11 +2660,8 @@ static void timeout_sends(struct work_struct *work) mad_send_wc.send_buf = &mad_send_wr->send_buf; mad_agent_priv->agent.send_handler (&mad_agent_priv->agent, &mad_send_wc); -deref_mad_agent (mad_agent_priv); -spin_lock_irqsave (&mad_agent_priv->lock, flags); } -spin_unlock_irqrestore (&mad_agent_priv->lock, flags); }/*
drivers/infiniband/hw/mlx5/odp.c +16 -9
@@ -733,24 +733,31 @@ static int pagefault_dmabuf_mr(struct mlx5_ib_mr *mr, size_t bcnt,* >0: Number of pages mapped */ static int pagefault_mr (struct mlx5_ib_mr *mr,u64 io_virt,size_t bcnt, -u32 *bytes_mapped,u32 flags) +u32 *bytes_mapped,u32 flags,bool permissive_fault) {struct ib_umem_odp *odp =to_ib_umem_odp (mr->umem); -if (unlikely (io_virt < mr->ibmr.iova)) +if (unlikely (io_virt < mr->ibmr.iova) && !permissive_fault)return -EFAULT ;if (mr->umem->is_dmabuf)return pagefault_dmabuf_mr (mr, bcnt, bytes_mapped, flags);if (!odp->is_implicit_odp) { +u64 offset = io_virt < mr->ibmr.iova ?0 : io_virt - mr->ibmr.iova;u64 user_va; -if (check_add_overflow (io_virt - mr->ibmr.iova, - (u64 )odp->umem.address, &user_va)) +if (check_add_overflow (offset, (u64 )odp->umem.address, + &user_va))return -EFAULT ; -if (unlikely (user_va >=ib_umem_end (odp) || -ib_umem_end (odp) - user_va < bcnt)) + +if (permissive_fault) { +if (user_va <ib_umem_start (odp)) + user_va =ib_umem_start (odp); +if ((user_va + bcnt) >ib_umem_end (odp)) + bcnt =ib_umem_end (odp) - user_va; + }else if (unlikely (user_va >=ib_umem_end (odp) || +ib_umem_end (odp) - user_va < bcnt))return -EFAULT ;return pagefault_real_mr (mr, odp, user_va, bcnt, bytes_mapped, flags);
@@ -857,7 +864,7 @@ static int pagefault_single_data_segment(struct mlx5_ib_dev *dev,case MLX5_MKEY_MR : mr = container_of(mmkey, struct mlx5_ib_mr, mmkey); - ret =pagefault_mr (mr, io_virt, bcnt, bytes_mapped,0 ); + ret =pagefault_mr (mr, io_virt, bcnt, bytes_mapped,0 , false);if (ret <0 ) goto end;
@@ -1710,7 +1717,7 @@ static void mlx5_ib_prefetch_mr_work(struct work_struct *w)for (i =0 ; i < work->num_sge; ++i) { ret =pagefault_mr (work->frags[i].mr, work->frags[i].io_virt, work->frags[i].length, &bytes_mapped, - work->pf_flags); + work->pf_flags, false);if (ret <=0 )continue ;mlx5_update_odp_stats (work->frags[i].mr, prefetch, ret);
@@ -1761,7 +1768,7 @@ static int mlx5_ib_prefetch_sg_list(struct ib_pd *pd,if (IS_ERR (mr))return PTR_ERR (mr); ret =pagefault_mr (mr, sg_list[i].addr, sg_list[i].length, - &bytes_mapped, pf_flags); + &bytes_mapped, pf_flags, false);if (ret <0 ) {mlx5r_deref_odp_mkey (&mr->mmkey);return ret;
drivers/infiniband/ulp/rtrs/rtrs-srv.c +11 -2
@@ -931,12 +931,11 @@ static void rtrs_srv_info_req_done(struct ib_cq *cq, struct ib_wc *wc)if (err) goto close; -out:rtrs_iu_free (iu, srv_path->s.dev->ib_dev,1 );return ; close: +rtrs_iu_free (iu, srv_path->s.dev->ib_dev,1 );close_path (srv_path); - goto out; }static int post_recv_info_req (struct rtrs_srv_con *con)
@@ -987,6 +986,16 @@ static int post_recv_path(struct rtrs_srv_path *srv_path) q_size =SERVICE_CON_QUEUE_DEPTH ; else q_size = srv->queue_depth; +if (srv_path->state !=RTRS_SRV_CONNECTING ) { +rtrs_err (s,"Path state invalid. state %s\n" , +rtrs_srv_state_str (srv_path->state)); +return -EIO ; + } + +if (!srv_path->s.con[cid]) { +rtrs_err (s,"Conn not set for %d\n" , cid); +return -EIO ; + } err =post_recv_io (to_srv_con (srv_path->s.con[cid]), q_size);if (err) {
drivers/md/dm-vdo/dedupe.c +3 -0
@@ -729,6 +729,7 @@ static void process_update_result(struct data_vio *agent) !change_context_state(context, DEDUPE_CONTEXT_COMPLETE, DEDUPE_CONTEXT_IDLE)) return; + agent->dedupe_context =NULL ;release_context (context); }
@@ -1648,6 +1649,7 @@ static void process_query_result(struct data_vio *agent)if (change_context_state (context,DEDUPE_CONTEXT_COMPLETE ,DEDUPE_CONTEXT_IDLE )) { agent->is_duplicate =decode_uds_advice (context); + agent->dedupe_context =NULL ;release_context (context); } }
@@ -2321,6 +2323,7 @@ static void timeout_index_operations_callback(struct vdo_completion *completion)* send its requestor on its way. */ list_del_init (&context->list_entry); + context->requestor->dedupe_context =NULL ;continue_data_vio (context->requestor); timed_out++; }
drivers/media/common/videobuf2/videobuf2-core.c +4 -4
@@ -311,6 +311,10 @@ static void __vb2_plane_dmabuf_put(struct vb2_buffer *vb, struct vb2_plane *p) p->mem_priv =NULL ; p->dbuf =NULL ; p->dbuf_mapped =0 ; + p->bytesused =0 ; + p->length =0 ; + p->m.fd =0 ; + p->data_offset =0 ; }/*
@@ -1420,10 +1424,6 @@ static int __prepare_dmabuf(struct vb2_buffer *vb)/* Release previously acquired memory if present */ __vb2_plane_dmabuf_put (vb, &vb->planes[plane]); - vb->planes[plane].bytesused =0 ; - vb->planes[plane].length =0 ; - vb->planes[plane].m.fd =0 ; - vb->planes[plane].data_offset =0 ;/* Acquire each plane's memory */ mem_priv = call_ptr_memop(attach_dmabuf,
drivers/mfd/intel-lpss-pci.c +39 -0
@@ -424,6 +424,19 @@ static const struct pci_device_id intel_lpss_pci_ids[] = { { PCI_VDEVICE(INTEL, 0x5ac4), (kernel_ulong_t)&bxt_spi_info }, { PCI_VDEVICE(INTEL, 0x5ac6), (kernel_ulong_t)&bxt_spi_info }, { PCI_VDEVICE(INTEL, 0x5aee), (kernel_ulong_t)&bxt_uart_info }, +/* ARL-H */ + { PCI_VDEVICE(INTEL, 0x7725), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x7726), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x7727), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0x7730), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0x7746), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0x7750), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x7751), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x7752), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0x7778), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x7779), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x777a), (kernel_ulong_t)&bxt_i2c_info }, + { PCI_VDEVICE(INTEL, 0x777b), (kernel_ulong_t)&bxt_i2c_info },/* RPL-S */ { PCI_VDEVICE(INTEL, 0x7a28), (kernel_ulong_t)&bxt_uart_info }, { PCI_VDEVICE(INTEL, 0x7a29), (kernel_ulong_t)&bxt_uart_info },
@@ -594,6 +607,32 @@ static const struct pci_device_id intel_lpss_pci_ids[] = { { PCI_VDEVICE(INTEL, 0xa879), (kernel_ulong_t)&ehl_i2c_info }, { PCI_VDEVICE(INTEL, 0xa87a), (kernel_ulong_t)&ehl_i2c_info }, { PCI_VDEVICE(INTEL, 0xa87b), (kernel_ulong_t)&ehl_i2c_info }, +/* PTL-H */ + { PCI_VDEVICE(INTEL, 0xe325), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0xe326), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0xe327), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0xe330), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0xe346), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0xe350), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe351), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe352), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0xe378), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe379), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe37a), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe37b), (kernel_ulong_t)&ehl_i2c_info }, +/* PTL-P */ + { PCI_VDEVICE(INTEL, 0xe425), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0xe426), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0xe427), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0xe430), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0xe446), (kernel_ulong_t)&tgl_spi_info }, + { PCI_VDEVICE(INTEL, 0xe450), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe451), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe452), (kernel_ulong_t)&bxt_uart_info }, + { PCI_VDEVICE(INTEL, 0xe478), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe479), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe47a), (kernel_ulong_t)&ehl_i2c_info }, + { PCI_VDEVICE(INTEL, 0xe47b), (kernel_ulong_t)&ehl_i2c_info }, { } };MODULE_DEVICE_TABLE (pci, intel_lpss_pci_ids);
drivers/mfd/intel_soc_pmic_chtwc.c +0 -1
@@ -178,7 +178,6 @@ static const struct dmi_system_id cht_wc_model_dmi_ids[] = { .driver_data = (void *)(long)INTEL_CHT_WC_LENOVO_YT3_X90, .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Intel Corporation" ), -DMI_MATCH (DMI_PRODUCT_NAME ,"CHERRYVIEW D1 PLATFORM" ), DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), }, },
drivers/mmc/host/mvsdio.c +18 -53
164 lines not on this page · raw message
drivers/mmc/host/sdhci-of-dwcmshc.c +8 -0
@@ -746,6 +746,14 @@ static void th1520_sdhci_reset(struct sdhci_host *host, u8 mask)sdhci_reset (host, mask); +/* The T-Head 1520 SoC does not comply with the SDHCI specification +* regarding the "Software Reset for CMD line should clear 'Command +* Complete' in the Normal Interrupt Status Register." Clear the bit +* here to compensate for this quirk. +*/ +if (mask &SDHCI_RESET_CMD ) +sdhci_writel (host,SDHCI_INT_RESPONSE ,SDHCI_INT_STATUS ); +if (priv->flags &FLAG_IO_FIXED_1V8 ) { ctrl_2 =sdhci_readw (host,SDHCI_HOST_CONTROL2 );if (!(ctrl_2 &SDHCI_CTRL_VDD_180 )) {
drivers/net/dsa/b53/b53_common.c +13 -4
@@ -27,6 +27,7 @@#include <linux/phylink.h> #include <linux/etherdevice.h> #include <linux/if_bridge.h> +#include <linux/if_vlan.h> #include <net/dsa.h> #include "b53_regs.h"
@@ -224,6 +225,9 @@ static const struct b53_mib_desc b53_mibs_58xx[] = {#define B53_MIBS_58XX_SIZE ARRAY_SIZE(b53_mibs_58xx) +#define B53_MAX_MTU_25 (1536 - ETH_HLEN - VLAN_HLEN - ETH_FCS_LEN) +#define B53_MAX_MTU (9720 - ETH_HLEN - VLAN_HLEN - ETH_FCS_LEN) +static int b53_do_vlan_op (struct b53_device *dev,u8 op) {unsigned int i;
@@ -2254,20 +2258,25 @@ static int b53_change_mtu(struct dsa_switch *ds, int port, int mtu)bool allow_10_100;if (is5325 (dev) ||is5365 (dev)) -return -EOPNOTSUPP ; +return 0 ;if (!dsa_is_cpu_port (ds, port))return 0 ; - enable_jumbo = (mtu >=JMS_MIN_SIZE ); - allow_10_100 = (dev->chip_id ==BCM583XX_DEVICE_ID ); + enable_jumbo = (mtu >ETH_DATA_LEN ); + allow_10_100 = !is63xx (dev);return b53_set_jumbo (dev, enable_jumbo, allow_10_100); }static int b53_get_max_mtu (struct dsa_switch *ds,int port) { -return JMS_MAX_SIZE ; +struct b53_device *dev = ds->priv; + +if (is5325 (dev) ||is5365 (dev)) +return B53_MAX_MTU_25 ; + +return B53_MAX_MTU ; }static const struct phylink_mac_ops b53_phylink_mac_ops = {
drivers/net/dsa/lan9303-core.c +29 -0
@@ -6,6 +6,7 @@#include <linux/module.h> #include <linux/gpio/consumer.h> #include <linux/regmap.h> +#include <linux/iopoll.h> #include <linux/mutex.h> #include <linux/mii.h> #include <linux/of.h>
@@ -839,6 +840,8 @@ static void lan9303_handle_reset(struct lan9303 *chip)if (!chip->reset_gpio)return ; +gpiod_set_value_cansleep (chip->reset_gpio,1 ); +if (chip->reset_duration !=0 )msleep (chip->reset_duration);
@@ -864,8 +867,34 @@ static int lan9303_disable_processing(struct lan9303 *chip)static int lan9303_check_device (struct lan9303 *chip) {int ret; +int err;u32 reg; +/* In I2C-managed configurations this polling loop will clash with +* switch's reading of EEPROM right after reset and this behaviour is +* not configurable. While lan9303_read() already has quite long retry +* timeout, seems not all cases are being detected as arbitration error. +* +* According to datasheet, EEPROM loader has 30ms timeout (in case of +* missing EEPROM). +* +* Loading of the largest supported EEPROM is expected to take at least +* 5.9s. +*/ + err =read_poll_timeout (lan9303_read, ret, + !ret && reg &LAN9303_HW_CFG_READY , +20000 ,6000000 , false, + chip->regmap,LAN9303_HW_CFG , ®); +if (ret) { +dev_err (chip->dev,"failed to read HW_CFG reg: %pe\n" , +ERR_PTR (ret)); +return ret; + } +if (err) { +dev_err (chip->dev,"HW_CFG not ready: 0x%08x\n" , reg); +return err; + } + ret =lan9303_read (chip->regmap,LAN9303_CHIP_REV , ®);if (ret) { dev_err(chip->dev, "failed to read chip revision register: %d\n",
drivers/net/dsa/sja1105/sja1105_main.c +0 -1
@@ -3164,7 +3164,6 @@ static int sja1105_setup(struct dsa_switch *ds)* TPID is ETH_P_SJA1105, and the VLAN ID is the port pvid. */ ds->vlan_filtering_is_global = true; - ds->untag_bridge_pvid = true; ds->fdb_isolation = true; ds->max_num_bridges =DSA_TAG_8021Q_MAX_NUM_BRIDGES ;
drivers/net/ethernet/adi/adin1110.c +2 -2
@@ -318,11 +318,11 @@ static int adin1110_read_fifo(struct adin1110_port_priv *port_priv)* from the ADIN1110 frame header. */ if (frame_size <ADIN1110_FRAME_HEADER_LEN +ADIN1110_FEC_LEN ) -return ret; +return -EINVAL ; round_len =adin1110_round_len (frame_size);if (round_len <0 ) -return ret; +return -EINVAL ; frame_size_no_fcs = frame_size -ADIN1110_FRAME_HEADER_LEN -ADIN1110_FEC_LEN ;memset (priv->data,0 ,ADIN1110_RD_HEADER_LEN );
drivers/net/ethernet/freescale/fec_main.c +4 -2
@@ -1077,7 +1077,8 @@ fec_restart(struct net_device *ndev)u32 rcntl =OPT_FRAME_SIZE |0x04 ;u32 ecntl =FEC_ECR_ETHEREN ; -fec_ptp_save_state (fep); +if (fep->bufdesc_ex) +fec_ptp_save_state (fep);/* Whack a reset. We should wait for this. * For i.MX6SX SOC, enet use AXI bus, we use disable MAC
@@ -1340,7 +1341,8 @@ fec_stop(struct net_device *ndev)netdev_err (ndev,"Graceful transmit stop did not complete!\n" ); } -fec_ptp_save_state (fep); +if (fep->bufdesc_ex) +fec_ptp_save_state (fep);/* Whack a reset. We should wait for this. * For i.MX6SX SOC, enet use AXI bus, we use disable MAC
drivers/net/ethernet/ibm/emac/mal.c +3 -1
@@ -578,7 +578,7 @@ static int mal_probe(struct platform_device *ofdev)printk (KERN_ERR "%pOF: Support for 405EZ not enabled!\n" , ofdev->dev.of_node); err = -ENODEV ; - goto fail; + goto fail_unmap;#endif }
@@ -742,6 +742,8 @@ static void mal_remove(struct platform_device *ofdev)free_netdev (mal->dummy_dev); +dcr_unmap (mal->dcr_host,0x100 ); + dma_free_coherent(&ofdev->dev, sizeof(struct mal_descriptor) * (NUM_TX_BUFF * mal->num_tx_chans +
drivers/net/ethernet/intel/e1000e/hw.h +2 -2
@@ -108,8 +108,8 @@ struct e1000_hw;#define E1000_DEV_ID_PCH_RPL_I219_V22 0x0DC8#define E1000_DEV_ID_PCH_MTP_I219_LM18 0x550A#define E1000_DEV_ID_PCH_MTP_I219_V18 0x550B -#define E1000_DEV_ID_PCH_MTP_I219_LM19 0x550C -#define E1000_DEV_ID_PCH_MTP_I219_V19 0x550D +#define E1000_DEV_ID_PCH_ADP_I219_LM19 0x550C +#define E1000_DEV_ID_PCH_ADP_I219_V19 0x550D#define E1000_DEV_ID_PCH_LNP_I219_LM20 0x550E#define E1000_DEV_ID_PCH_LNP_I219_V20 0x550F#define E1000_DEV_ID_PCH_LNP_I219_LM21 0x5510
drivers/net/ethernet/intel/e1000e/netdev.c +2 -2
@@ -7899,10 +7899,10 @@ static const struct pci_device_id e1000_pci_tbl[] = { { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V17), board_pch_adp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_RPL_I219_LM22), board_pch_adp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_RPL_I219_V22), board_pch_adp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_LM19), board_pch_adp }, + { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_ADP_I219_V19), board_pch_adp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM18), board_pch_mtp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V18), board_pch_mtp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_LM19), board_pch_mtp }, - { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_MTP_I219_V19), board_pch_mtp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LNP_I219_LM20), board_pch_mtp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LNP_I219_V20), board_pch_mtp }, { PCI_VDEVICE(INTEL, E1000_DEV_ID_PCH_LNP_I219_LM21), board_pch_mtp },
drivers/net/ethernet/intel/i40e/i40e_main.c +1 -0
@@ -1734,6 +1734,7 @@ struct i40e_mac_filter *i40e_add_mac_filter(struct i40e_vsi *vsi,struct hlist_node *h;int bkt; +lockdep_assert_held (&vsi->mac_filter_hash_lock);if (vsi->info.pvid)return i40e_add_filter (vsi, macaddr,le16_to_cpu (vsi->info.pvid));
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c +2 -0
@@ -2213,8 +2213,10 @@ static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf, u8 *msg) vfres->vsi_res[0 ].qset_handle =le16_to_cpu (vsi->info.qs_handle[0 ]);if (!(vf->driver_caps &VIRTCHNL_VF_OFFLOAD_USO ) && !vf->pf_set_mac) { +spin_lock_bh (&vsi->mac_filter_hash_lock);i40e_del_mac_filter (vsi, vf->default_lan_addr.addr);eth_zero_addr (vf->default_lan_addr.addr); +spin_unlock_bh (&vsi->mac_filter_hash_lock); }ether_addr_copy (vfres->vsi_res[0 ].default_mac_addr, vf->default_lan_addr.addr);
drivers/net/ethernet/intel/ice/ice_ddp.c +28 -30
138 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_ddp.h +2 -2
@@ -430,7 +430,7 @@ struct ice_pkg_enum {u32 buf_idx;u32 type; -struct ice_buf_hdr *buf; +const struct ice_buf_hdr *buf;u32 sect_idx;void *sect;u32 sect_type;
@@ -454,6 +454,6 @@ u16 ice_pkg_buf_get_active_sections(struct ice_buf_build *bld);void *ice_pkg_enum_section (struct ice_seg *ice_seg,struct ice_pkg_enum *state,u32 sect_type); -int ice_cfg_tx_topo (struct ice_hw *hw,u8 *buf,u32 len); +int ice_cfg_tx_topo (struct ice_hw *hw,const void *buf,u32 len);#endif
drivers/net/ethernet/intel/ice/ice_dpll.c +4 -2
@@ -651,6 +651,8 @@ ice_dpll_output_state_set(const struct dpll_pin *pin, void *pin_priv,struct ice_dpll_pin *p = pin_priv;struct ice_dpll *d = dpll_priv; +if (state ==DPLL_PIN_STATE_SELECTABLE ) +return -EINVAL ;if (!enable && p->state[d->dpll_idx] ==DPLL_PIN_STATE_DISCONNECTED )return 0 ;
@@ -1626,6 +1628,8 @@ ice_dpll_init_rclk_pins(struct ice_pf *pf, struct ice_dpll_pin *pin,struct dpll_pin *parent;int ret, i; +if (WARN_ON ((!vsi || !vsi->netdev))) +return -EINVAL ; ret =ice_dpll_get_pins (pf, pin, start_idx,ICE_DPLL_RCLK_NUM_PER_PF , pf->dplls.clock_id);if (ret)
@@ -1641,8 +1645,6 @@ ice_dpll_init_rclk_pins(struct ice_pf *pf, struct ice_dpll_pin *pin,if (ret) goto unregister_pins; } -if (WARN_ON ((!vsi || !vsi->netdev))) -return -EINVAL ;dpll_netdev_pin_set (vsi->netdev, pf->dplls.rclk.pin);return 0 ;
drivers/net/ethernet/intel/ice/ice_eswitch_br.c +4 -1
@@ -582,10 +582,13 @@ ice_eswitch_br_switchdev_event(struct notifier_block *nb,return NOTIFY_DONE ; } -static void ice_eswitch_br_fdb_flush (struct ice_esw_br *bridge) +void ice_eswitch_br_fdb_flush (struct ice_esw_br *bridge) {struct ice_esw_br_fdb_entry *entry, *tmp; +if (!bridge) +return ; +list_for_each_entry_safe (entry, tmp, &bridge->fdb_list, list)ice_eswitch_br_fdb_entry_notify_and_cleanup (bridge, entry); }
drivers/net/ethernet/intel/ice/ice_eswitch_br.h +1 -0
@@ -117,5 +117,6 @@ void ice_eswitch_br_offloads_deinit(struct ice_pf *pf);int ice_eswitch_br_offloads_init (struct ice_pf *pf); +void ice_eswitch_br_fdb_flush (struct ice_esw_br *bridge);#endif /* _ICE_ESWITCH_BR_H_ */
drivers/net/ethernet/intel/ice/ice_main.c +7 -32
@@ -86,7 +86,8 @@ ice_indr_setup_tc_cb(struct net_device *netdev, struct Qdisc *sch,bool netif_is_ice (const struct net_device *dev) { -return dev && (dev->netdev_ops == &ice_netdev_ops); +return dev && (dev->netdev_ops == &ice_netdev_ops || + dev->netdev_ops == &ice_netdev_safe_mode_ops); }/**
@@ -519,25 +520,6 @@ static void ice_pf_dis_all_vsi(struct ice_pf *pf, bool locked) pf->vf_agg_node[node].num_vsis =0 ; } -/** -* ice_clear_sw_switch_recipes - clear switch recipes -* @pf: board private structure -* -* Mark switch recipes as not created in sw structures. There are cases where -* rules (especially advanced rules) need to be restored, either re-read from -* hardware or added again. For example after the reset. 'recp_created' flag -* prevents from doing that and need to be cleared upfront. -*/ -static void ice_clear_sw_switch_recipes (struct ice_pf *pf) -{ -struct ice_sw_recipe *recp; -u8 i; - - recp = pf->hw.switch_info->recp_list; -for (i =0 ; i <ICE_MAX_NUM_RECIPES ; i++) - recp[i].recp_created = false; -} -/** * ice_prepare_for_reset - prep for reset * @pf: board private structure
@@ -574,8 +556,9 @@ ice_prepare_for_reset(struct ice_pf *pf, enum ice_reset_req reset_type)mutex_unlock (&pf->vfs.table_lock);if (ice_is_eswitch_mode_switchdev (pf)) { -if (reset_type !=ICE_RESET_PFR ) -ice_clear_sw_switch_recipes (pf); +rtnl_lock (); +ice_eswitch_br_fdb_flush (pf->eswitch.br_offloads->bridge); +rtnl_unlock (); }/* release ADQ specific HW and SW resources */
@@ -4548,16 +4531,10 @@ ice_init_tx_topology(struct ice_hw *hw, const struct firmware *firmware)u8 num_tx_sched_layers = hw->num_tx_sched_layers;struct ice_pf *pf = hw->back;struct device *dev; -u8 *buf_copy;int err; dev =ice_pf_to_dev (pf); -/* ice_cfg_tx_topo buf argument is not a constant, -* so we have to make a copy -*/ - buf_copy =kmemdup (firmware->data, firmware->size,GFP_KERNEL ); - - err =ice_cfg_tx_topo (hw, buf_copy, firmware->size); + err =ice_cfg_tx_topo (hw, firmware->data, firmware->size);if (!err) {if (hw->num_tx_sched_layers > num_tx_sched_layers)dev_info (dev,"Tx scheduling layers switching feature disabled\n" );
@@ -4785,14 +4762,12 @@ int ice_init_dev(struct ice_pf *pf)ice_init_feature_support (pf); err =ice_init_ddp_config (hw, pf); -if (err) -return err;/* if ice_init_ddp_config fails, ICE_FLAG_ADV_FEATURES bit won't be * set in pf->state, which will cause ice_is_safe_mode to return * true */ -if (ice_is_safe_mode (pf)) { +if (err ||ice_is_safe_mode (pf)) {/* we already got function/device capabilities but these don't * reflect what the driver needs to do in safe mode. Instead of * adding conditional logic everywhere to ignore these
drivers/net/ethernet/intel/ice/ice_sriov.c +14 -5
@@ -1096,8 +1096,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count)return -ENOENT ; vsi =ice_get_vf_vsi (vf); -if (!vsi) +if (!vsi) { +ice_put_vf (vf);return -ENOENT ; + } prev_msix = vf->num_msix; prev_queues = vf->num_vf_qs;
@@ -1119,7 +1121,10 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count)if (vf->first_vector_idx <0 ) goto unroll; -if (ice_vf_reconfig_vsi (vf) ||ice_vf_init_host_cfg (vf, vsi)) { + vsi->req_txq = queues; + vsi->req_rxq = queues; + +if (ice_vsi_rebuild (vsi,ICE_VSI_FLAG_NO_INIT )) {/* Try to rebuild with previous values */ needs_rebuild = true; goto unroll;
@@ -1142,12 +1147,16 @@ int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count) vf->num_msix = prev_msix; vf->num_vf_qs = prev_queues; vf->first_vector_idx =ice_sriov_get_irqs (pf, vf->num_msix); -if (vf->first_vector_idx <0 ) +if (vf->first_vector_idx <0 ) { +ice_put_vf (vf);return -EINVAL ; + }if (needs_rebuild) { -ice_vf_reconfig_vsi (vf); -ice_vf_init_host_cfg (vf, vsi); + vsi->req_txq = prev_queues; + vsi->req_rxq = prev_queues; + +ice_vsi_rebuild (vsi,ICE_VSI_FLAG_NO_INIT ); }ice_ena_vf_mappings (vf);
drivers/net/ethernet/intel/ice/ice_switch.c +0 -2
@@ -6322,8 +6322,6 @@ ice_replay_vsi_fltr(struct ice_hw *hw, u16 vsi_handle, u8 recp_id,if (!itr->vsi_list_info || !test_bit (vsi_handle, itr->vsi_list_info->vsi_map))continue ; -/* Clearing it so that the logic can add it back */ -clear_bit (vsi_handle, itr->vsi_list_info->vsi_map); f_entry.fltr_info.vsi_handle = vsi_handle; f_entry.fltr_info.fltr_act =ICE_FWD_TO_VSI ;/* update the src in case it is VSI num */
drivers/net/ethernet/intel/ice/ice_tc_lib.c +11 -0
@@ -819,6 +819,17 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr) rule_info.sw_act.flag |=ICE_FLTR_TX ; rule_info.sw_act.src = vsi->idx; rule_info.flags_info.act =ICE_SINGLE_ACT_LAN_ENABLE ; +/* This is a specific case. The destination VSI index is +* overwritten by the source VSI index. This type of filter +* should allow the packet to go to the LAN, not to the +* VSI passed here. It should set LAN_EN bit only. However, +* the VSI must be a valid one. Setting source VSI index +* here is safe. Even if the result from switch is set LAN_EN +* and LB_EN (which normally will pass the packet to this VSI) +* packet won't be seen on the VSI, because local loopback is +* turned off. +*/ + rule_info.sw_act.vsi_handle = vsi->idx; }else {/* VF to VF */ rule_info.sw_act.flag |=ICE_FLTR_TX ;
drivers/net/ethernet/intel/ice/ice_vf_lib.c +8 -1
@@ -256,7 +256,7 @@ static void ice_vf_pre_vsi_rebuild(struct ice_vf *vf)* * It brings the VSI down and then reconfigures it with the hardware. */ -int ice_vf_reconfig_vsi (struct ice_vf *vf) +static int ice_vf_reconfig_vsi (struct ice_vf *vf) {struct ice_vsi *vsi =ice_get_vf_vsi (vf);struct ice_pf *pf = vf->pf;
@@ -335,6 +335,13 @@ static int ice_vf_rebuild_host_vlan_cfg(struct ice_vf *vf, struct ice_vsi *vsi) err = vlan_ops->add_vlan (vsi, &vf->port_vlan_info); }else { +/* clear possible previous port vlan config */ + err =ice_vsi_clear_port_vlan (vsi); +if (err) { +dev_err (dev,"failed to clear port VLAN via VSI parameters for VF %u, error %d\n" , + vf->vf_id, err); +return err; + } err =ice_vsi_add_vlan_zero (vsi); }
drivers/net/ethernet/intel/ice/ice_vf_lib_private.h +0 -1
@@ -23,7 +23,6 @@#warning "Only include ice_vf_lib_private.h in CONFIG_PCI_IOV virtualization files"#endif -int ice_vf_reconfig_vsi (struct ice_vf *vf);void ice_initialize_vf_entry (struct ice_vf *vf);void ice_dis_vf_qs (struct ice_vf *vf);int ice_check_vf_init (struct ice_vf *vf);
drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.c +57 -0
60 lines not on this page · raw message
drivers/net/ethernet/intel/ice/ice_vsi_vlan_lib.h +1 -0
@@ -36,5 +36,6 @@ int ice_vsi_ena_outer_insertion(struct ice_vsi *vsi, u16 tpid);int ice_vsi_dis_outer_insertion (struct ice_vsi *vsi);int ice_vsi_set_outer_port_vlan (struct ice_vsi *vsi,struct ice_vlan *vlan);int ice_vsi_clear_outer_port_vlan (struct ice_vsi *vsi); +int ice_vsi_clear_port_vlan (struct ice_vsi *vsi);#endif /* _ICE_VSI_VLAN_LIB_H_ */
drivers/net/ethernet/intel/idpf/idpf_virtchnl.c +1 -8
@@ -666,7 +666,7 @@ idpf_vc_xn_forward_reply(struct idpf_adapter *adapter,if (ctlq_msg->data_len) { payload = ctlq_msg->ctx.indirect.payload->va; - payload_size = ctlq_msg->ctx.indirect.payload->size; + payload_size = ctlq_msg->data_len; } xn->reply_sz = payload_size;
@@ -1295,10 +1295,6 @@ int idpf_send_create_vport_msg(struct idpf_adapter *adapter, err = reply_sz; goto free_vport_params; } -if (reply_sz <IDPF_CTLQ_MAX_BUF_LEN ) { - err = -EIO ; - goto free_vport_params; - }return 0 ;
@@ -2602,9 +2598,6 @@ int idpf_send_get_rx_ptype_msg(struct idpf_vport *vport)if (reply_sz <0 )return reply_sz; -if (reply_sz <IDPF_CTLQ_MAX_BUF_LEN ) -return -EIO ; - ptypes_recvd +=le16_to_cpu (ptype_info->num_ptypes);if (ptypes_recvd > max_ptype)return -EINVAL ;
drivers/net/ethernet/intel/igb/igb_main.c +4 -0
@@ -9651,6 +9651,10 @@ static void igb_io_resume(struct pci_dev *pdev)struct igb_adapter *adapter =netdev_priv (netdev);if (netif_running (netdev)) { +if (!test_bit (__IGB_DOWN, &adapter->state)) { +dev_dbg (&pdev->dev,"Resuming from non-fatal error, do nothing.\n" ); +return ; + }if (igb_up (adapter)) {dev_err (&pdev->dev,"igb_up failed after reset\n" );return ;
drivers/net/ethernet/sfc/efx_channels.c +2 -1
@@ -1260,7 +1260,8 @@ static int efx_poll(struct napi_struct *napi, int budget) spent =efx_process_channel (channel, budget); -xdp_do_flush (); +if (budget) +xdp_do_flush ();if (spent < budget) { if (efx_channel_has_rx_queue(channel) &&
drivers/net/ethernet/sfc/siena/efx_channels.c +2 -1
@@ -1285,7 +1285,8 @@ static int efx_poll(struct napi_struct *napi, int budget) spent =efx_process_channel (channel, budget); -xdp_do_flush (); +if (budget) +xdp_do_flush ();if (spent < budget) { if (efx_channel_has_rx_queue(channel) &&
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 -1
@@ -2022,7 +2022,7 @@ static int __alloc_dma_rx_desc_resources(struct stmmac_priv *priv, rx_q->queue_index = queue; rx_q->priv_data = priv; - pp_params.flags =PP_FLAG_DMA_MAP | (xdp_prog ?PP_FLAG_DMA_SYNC_DEV :0 ); + pp_params.flags =PP_FLAG_DMA_MAP |PP_FLAG_DMA_SYNC_DEV ; pp_params.pool_size = dma_conf->dma_rx_size; num_pages =DIV_ROUND_UP (dma_conf->dma_buf_sz,PAGE_SIZE ); pp_params.order =ilog2 (num_pages);
drivers/net/ethernet/ti/icssg/icssg_config.c +2 -0
@@ -733,6 +733,7 @@ void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,u8 fid_c1; tbl = prueth->vlan_tbl; +spin_lock (&prueth->vtbl_lock); fid_c1 = tbl[vid].fid_c1;/* FID_C1: bit0..2 port membership mask,
@@ -748,6 +749,7 @@ void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask, } tbl[vid].fid_c1 = fid_c1; +spin_unlock (&prueth->vtbl_lock); }EXPORT_SYMBOL_GPL (icssg_vtbl_modify);
drivers/net/ethernet/ti/icssg/icssg_prueth.c +1 -0
@@ -1262,6 +1262,7 @@ static int prueth_probe(struct platform_device *pdev)icss_iep_init_fw (prueth->iep1); } +spin_lock_init (&prueth->vtbl_lock);/* setup netdev interfaces */ if (eth0_node) { ret =prueth_netdev_init (prueth, eth0_node);
drivers/net/ethernet/ti/icssg/icssg_prueth.h +2 -0
@@ -282,6 +282,8 @@ struct prueth {bool is_switchmode_supported;unsigned char switch_id[MAX_PHYS_ITEM_ID_LEN ];int default_vlan; +/** @vtbl_lock: Lock for vtbl in shared memory */ +spinlock_t vtbl_lock; };struct emac_tx_ts_response {
drivers/net/netconsole.c +7 -1
@@ -1118,8 +1118,14 @@ static void send_ext_msg_udp(struct netconsole_target *nt, const char *msg, this_chunk =min (userdata_len - sent_userdata,MAX_PRINT_CHUNK - preceding_bytes); -if (WARN_ON_ONCE (this_chunk <=0 )) +if (WARN_ON_ONCE (this_chunk <0 )) +/* this_chunk could be zero if all the previous +* message used all the buffer. This is not a +* problem, userdata will be sent in the next +* iteration +*/ return ; +memcpy (buf + this_header + this_offset, userdata + sent_userdata, this_chunk);
drivers/net/phy/aquantia/aquantia_main.c +33 -18
117 lines not on this page · raw message
drivers/net/phy/bcm84881.c +2 -2
@@ -132,7 +132,7 @@ static int bcm84881_aneg_done(struct phy_device *phydev) bmsr =phy_read_mmd (phydev,MDIO_MMD_AN ,MDIO_AN_C22 +MII_BMSR );if (bmsr <0 ) -return val; +return bmsr;return !!(val &MDIO_AN_STAT1_COMPLETE ) && !!(bmsr &BMSR_ANEGCOMPLETE );
@@ -158,7 +158,7 @@ static int bcm84881_read_status(struct phy_device *phydev) bmsr =phy_read_mmd (phydev,MDIO_MMD_AN ,MDIO_AN_C22 +MII_BMSR );if (bmsr <0 ) -return val; +return bmsr; phydev->autoneg_complete = !!(val &MDIO_AN_STAT1_COMPLETE ) && !!(bmsr &BMSR_ANEGCOMPLETE );
drivers/net/phy/dp83869.c +0 -1
@@ -645,7 +645,6 @@ static int dp83869_configure_fiber(struct phy_device *phydev, phydev->supported);linkmode_set_bit (ETHTOOL_LINK_MODE_FIBRE_BIT , phydev->supported); -linkmode_set_bit (ADVERTISED_FIBRE , phydev->advertising);if (dp83869->mode ==DP83869_RGMII_1000_BASE ) { linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseX_Full_BIT,
drivers/net/phy/phy_device.c +3 -2
@@ -3249,10 +3249,11 @@ static __maybe_unused int phy_led_hw_is_supported(struct led_classdev *led_cdev,static void phy_leds_unregister (struct phy_device *phydev) { -struct phy_led *phyled; +struct phy_led *phyled, *tmp; -list_for_each_entry (phyled, &phydev->leds, list) { +list_for_each_entry_safe (phyled, tmp, &phydev->leds, list) {led_classdev_unregister (&phyled->led_cdev); +list_del (&phyled->list); } }
drivers/net/phy/realtek.c +23 -1
@@ -1081,6 +1081,16 @@ static int rtl8221b_vn_cg_c45_match_phy_device(struct phy_device *phydev)return rtlgen_is_c45_match (phydev,RTL_8221B_VN_CG , true); } +static int rtl8251b_c22_match_phy_device (struct phy_device *phydev) +{ +return rtlgen_is_c45_match (phydev,RTL_8251B , false); +} + +static int rtl8251b_c45_match_phy_device (struct phy_device *phydev) +{ +return rtlgen_is_c45_match (phydev,RTL_8251B , true); +} +static int rtlgen_resume (struct phy_device *phydev) {int ret =genphy_resume (phydev);
@@ -1418,7 +1428,7 @@ static struct phy_driver realtek_drvs[] = { .suspend = genphy_c45_pma_suspend, .resume = rtlgen_c45_resume, }, { - PHY_ID_MATCH_EXACT(0x001cc862), + .match_phy_device = rtl8251b_c45_match_phy_device, .name = "RTL8251B 5Gbps PHY", .get_features = rtl822x_get_features, .config_aneg = rtl822x_config_aneg,
@@ -1427,6 +1437,18 @@ static struct phy_driver realtek_drvs[] = { .resume = rtlgen_resume, .read_page = rtl821x_read_page, .write_page = rtl821x_write_page, + }, { + .match_phy_device = rtl8251b_c22_match_phy_device, + .name = "RTL8126A-internal 5Gbps PHY", + .get_features = rtl822x_get_features, + .config_aneg = rtl822x_config_aneg, + .read_status = rtl822x_read_status, + .suspend = genphy_suspend, + .resume = rtlgen_resume, + .read_page = rtl821x_read_page, + .write_page = rtl821x_write_page, + .read_mmd = rtl822x_read_mmd, + .write_mmd = rtl822x_write_mmd, }, {PHY_ID_MATCH_EXACT (0x001ccad0 ), .name = "RTL8224 2.5Gbps PHY",
drivers/net/ppp/ppp_async.c +1 -1
@@ -542,7 +542,7 @@ ppp_async_encode(struct asyncppp *ap)* and 7 (code-reject) must be sent as though no options * had been negotiated. */ - islcp = proto ==PPP_LCP &&1 <= data[2 ] && data[2 ] <=7 ; + islcp = proto ==PPP_LCP && count >=3 &&1 <= data[2 ] && data[2 ] <=7 ;if (i ==0 ) {if (islcp)
drivers/net/pse-pd/pse_core.c +11 -0
@@ -785,6 +785,17 @@ static int pse_ethtool_c33_set_config(struct pse_control *psec,*/ switch (config->c33_admin_control) {case ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED : +/* We could have mismatch between admin_state_enabled and +* state reported by regulator_is_enabled. This can occur when +* the PI is forcibly turn off by the controller. Call +* regulator_disable on that case to fix the counters state. +*/ +if (psec->pcdev->pi[psec->id].admin_state_enabled && + !regulator_is_enabled (psec->ps)) { + err =regulator_disable (psec->ps); +if (err) +break ; + }if (!psec->pcdev->pi[psec->id].admin_state_enabled) err =regulator_enable (psec->ps);break ;
drivers/net/slip/slhc.c +34 -23
80 lines not on this page · raw message
drivers/net/vxlan/vxlan_core.c +5 -1
@@ -4913,9 +4913,13 @@ static int __init vxlan_init_module(void)if (rc) goto out4; -vxlan_vnifilter_init (); + rc =vxlan_vnifilter_init (); +if (rc) + goto out5;return 0 ; +out5: +rtnl_link_unregister (&vxlan_link_ops); out4:unregister_switchdev_notifier (&vxlan_switchdev_notifier_block); out3:
drivers/net/vxlan/vxlan_private.h +1 -1
@@ -202,7 +202,7 @@ int vxlan_vni_in_use(struct net *src_net, struct vxlan_dev *vxlan,int vxlan_vnigroup_init (struct vxlan_dev *vxlan);void vxlan_vnigroup_uninit (struct vxlan_dev *vxlan); -void vxlan_vnifilter_init (void ); +int vxlan_vnifilter_init (void );void vxlan_vnifilter_uninit (void ); void vxlan_vnifilter_count(struct vxlan_dev *vxlan, __be32 vni, struct vxlan_vni_node *vninode,
drivers/net/vxlan/vxlan_vnifilter.c +9 -10
@@ -992,19 +992,18 @@ static int vxlan_vnifilter_process(struct sk_buff *skb, struct nlmsghdr *nlh,return err; } -void vxlan_vnifilter_init (void ) +static const struct rtnl_msg_handler vxlan_vnifilter_rtnl_msg_handlers[] = { + {THIS_MODULE ,PF_BRIDGE ,RTM_GETTUNNEL ,NULL , vxlan_vnifilter_dump,0 }, + {THIS_MODULE ,PF_BRIDGE ,RTM_NEWTUNNEL , vxlan_vnifilter_process,NULL ,0 }, + {THIS_MODULE ,PF_BRIDGE ,RTM_DELTUNNEL , vxlan_vnifilter_process,NULL ,0 }, +}; + +int vxlan_vnifilter_init (void ) { -rtnl_register_module (THIS_MODULE ,PF_BRIDGE ,RTM_GETTUNNEL ,NULL , - vxlan_vnifilter_dump,0 ); -rtnl_register_module (THIS_MODULE ,PF_BRIDGE ,RTM_NEWTUNNEL , - vxlan_vnifilter_process,NULL ,0 ); -rtnl_register_module (THIS_MODULE ,PF_BRIDGE ,RTM_DELTUNNEL , - vxlan_vnifilter_process,NULL ,0 ); +return rtnl_register_many (vxlan_vnifilter_rtnl_msg_handlers); }void vxlan_vnifilter_uninit (void ) { -rtnl_unregister (PF_BRIDGE ,RTM_GETTUNNEL ); -rtnl_unregister (PF_BRIDGE ,RTM_NEWTUNNEL ); -rtnl_unregister (PF_BRIDGE ,RTM_DELTUNNEL ); +rtnl_unregister_many (vxlan_vnifilter_rtnl_msg_handlers); }
drivers/ntb/hw/mscc/ntb_hw_switchtec.c +1 -0
@@ -1554,6 +1554,7 @@ static void switchtec_ntb_remove(struct device *dev)switchtec_ntb_deinit_db_msg_irq (sndev);switchtec_ntb_deinit_shared_mw (sndev);switchtec_ntb_deinit_crosslink (sndev); +cancel_work_sync (&sndev->check_link_status_work);kfree (sndev);dev_info (dev,"ntb device unregistered\n" ); }
drivers/nvdimm/nd_virtio.c +9 -0
@@ -44,6 +44,15 @@ static int virtio_pmem_flush(struct nd_region *nd_region)unsigned long flags;int err, err1; +/* +* Don't bother to submit the request to the device if the device is +* not activated. +*/ +if (vdev->config->get_status (vdev) &VIRTIO_CONFIG_S_NEEDS_RESET ) { +dev_info (&vdev->dev,"virtio pmem device needs a reset\n" ); +return -EIO ; + } +might_sleep (); req_data =kmalloc (sizeof (*req_data),GFP_KERNEL );if (!req_data)
drivers/opp/core.c +3 -1
@@ -2630,8 +2630,10 @@ int dev_pm_opp_set_config(struct device *dev, struct dev_pm_opp_config *config)/* Attach genpds */ if (config->genpd_names) { -if (config->required_devs) +if (config->required_devs) { + ret = -EINVAL ; goto err; + } ret =_opp_attach_genpd (opp_table, dev, config->genpd_names, config->virt_devs);
drivers/pci/controller/dwc/pcie-designware.c +2 -0
@@ -112,6 +112,7 @@ int dw_pcie_get_resources(struct dw_pcie *pci) pci->dbi_base =devm_pci_remap_cfg_resource (pci->dev, res);if (IS_ERR (pci->dbi_base))return PTR_ERR (pci->dbi_base); + pci->dbi_phys_addr = res->start; }/* DBI2 is mainly useful for the endpoint controller */
@@ -134,6 +135,7 @@ int dw_pcie_get_resources(struct dw_pcie *pci) pci->atu_base =devm_ioremap_resource (pci->dev, res);if (IS_ERR (pci->atu_base))return PTR_ERR (pci->atu_base); + pci->atu_phys_addr = res->start; }else { pci->atu_base = pci->dbi_base +DEFAULT_DBI_ATU_OFFSET ; }
drivers/pci/controller/dwc/pcie-designware.h +2 -0
@@ -407,8 +407,10 @@ struct dw_pcie_ops {struct dw_pcie {struct device *dev;void __iomem *dbi_base; +resource_size_t dbi_phys_addr;void __iomem *dbi_base2;void __iomem *atu_base; +resource_size_t atu_phys_addr;size_t atu_size;u32 num_ib_windows;u32 num_ob_windows;
drivers/pci/controller/dwc/pcie-qcom.c +57 -15
78 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_els.c +63 -69
132 lines not on this page · raw message
drivers/scsi/lpfc/lpfc_vport.c +36 -7
43 lines not on this page · raw message
drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c +0 -2
Lines of this file are not shown. View the raw message.
drivers/usb/gadget/function/uvc_v4l2.c +11 -1
Lines of this file are not shown. View the raw message.
drivers/usb/host/xhci-dbgcap.c +82 -51
133 lines not on this page · raw message
fs/smb/client/smb2ops.c +28 -19
47 lines not on this page · raw message
fs/unicode/mkutf8data.c +0 -70
70 lines not on this page · raw message
fs/unicode/utf8data.c_shipped +3346 -3357
6,703 lines not on this page · raw message
net/ipv4/tcp_input.c +38 -4
42 lines not on this page · raw message
net/netfilter/nf_nat_core.c +118 -2
120 lines not on this page · raw message
net/netfilter/xt_CT.c +69 -37
106 lines not on this page · raw message
net/netfilter/xt_IDLETIMER.c +40 -19
59 lines not on this page · raw message
net/netfilter/xt_mark.c +32 -10
42 lines not on this page · raw message
tools/testing/selftests/bpf/progs/verifier_int_ptr.c +1 -4
Lines of this file are not shown. View the raw message.
tools/testing/selftests/net/forwarding/no_forwarding.sh +1 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rseq/rseq.c +75 -35
110 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.