Linux 6.10.12
Greg Kroah-Hartman
maintainerI'm announcing the release of the 6.10.12 kernel.
All users of the 6.10 kernel series must upgrade.
The updated 6.10.y git tree can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-6.10.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/include/asm/hw_irq.h | 2 arch/loongarch/include/asm/kvm_vcpu.h | 1 arch/loongarch/kernel/irq.c | 3 arch/loongarch/kvm/timer.c | 7 arch/loongarch/kvm/vcpu.c | 2 arch/microblaze/mm/init.c | 5 arch/x86/kernel/cpu/mshyperv.c | 1 drivers/accel/drm_accel.c | 110 --------------- drivers/bluetooth/btintel_pcie.c | 2 drivers/clk/qcom/gcc-sm8650.c | 56 +++---- drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c | 3 drivers/gpu/drm/arm/display/komeda/komeda_kms.c | 10 - drivers/gpu/drm/drm_drv.c | 97 ++++++------- drivers/gpu/drm/drm_file.c | 2 drivers/gpu/drm/drm_internal.h | 4 drivers/hwmon/asus-ec-sensors.c | 2 drivers/net/can/m_can/m_can.c | 16 +- drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c | 42 +++-- drivers/net/can/spi/mcp251xfd/mcp251xfd-dump.c | 2 drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c | 2 drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c | 14 + drivers/net/can/spi/mcp251xfd/mcp251xfd-tef.c | 2 drivers/net/can/spi/mcp251xfd/mcp251xfd-timestamp.c | 7 drivers/net/can/spi/mcp251xfd/mcp251xfd.h | 1 drivers/net/ethernet/faraday/ftgmac100.c | 26 ++- drivers/net/ethernet/intel/ice/ice_lib.c | 4 drivers/net/ethernet/intel/ice/ice_main.c | 4 drivers/net/ethernet/intel/ice/ice_xsk.c | 6 drivers/net/wireless/intel/iwlwifi/fw/dbg.c | 2 drivers/net/wireless/intel/iwlwifi/iwl-trans.h | 2 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 9 + drivers/net/wireless/intel/iwlwifi/mvm/ops.c | 2 drivers/net/wireless/intel/iwlwifi/mvm/scan.c | 31 ++-- drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c | 3 drivers/nvme/host/nvme.h | 5 drivers/nvme/host/pci.c | 18 +- drivers/pinctrl/pinctrl-at91.c | 5 drivers/platform/x86/amd/pmf/pmf-quirks.c | 2 drivers/platform/x86/asus-nb-wmi.c | 20 ++ drivers/platform/x86/asus-wmi.h | 1 drivers/platform/x86/x86-android-tablets/dmi.c | 1 drivers/powercap/intel_rapl_common.c | 35 ++++ drivers/scsi/lpfc/lpfc_bsg.c | 2 drivers/spi/spi-bcm63xx.c | 1 drivers/spi/spidev.c | 2 drivers/usb/class/usbtmc.c | 2 drivers/usb/serial/pl2303.c | 1 drivers/usb/serial/pl2303.h | 4 fs/ocfs2/xattr.c | 27 ++- fs/smb/client/connect.c | 14 + include/drm/drm_accel.h | 18 -- include/drm/drm_file.h | 5 net/mac80211/tx.c | 4 net/netfilter/nft_socket.c | 41 +++++ sound/pci/hda/patch_hdmi.c | 1 sound/pci/hda/patch_realtek.c | 76 ++++++---- sound/soc/amd/acp/acp-sof-mach.c | 2 sound/soc/amd/yc/acp6x-mach.c | 7 sound/soc/au1x/db1200.c | 1 sound/soc/codecs/chv3-codec.c | 1 sound/soc/codecs/tda7419.c | 1 sound/soc/google/chv3-i2s.c | 1 sound/soc/intel/common/soc-acpi-intel-cht-match.c | 1 sound/soc/intel/keembay/kmb_platform.c | 1 sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 1 sound/soc/mediatek/mt8188/mt8188-mt6359.c | 17 +- sound/soc/sof/mediatek/mt8195/mt8195.c | 3 tools/hv/Makefile | 2 69 files changed, 449 insertions(+), 358 deletions(-)
Albert Jakieła (1):
ASoC: SOF: mediatek: Add missing board compatible
Benjamin Berg (1):
wifi: iwlwifi: lower message level for FW buffer destination
Bibo Mao (1):
LoongArch: KVM: Invalidate guest steal time address on vCPU reset
Dan Carpenter (2):
netfilter: nft_socket: Fix a NULL vs IS_ERR() bug in nft_socket_cgroup_subtree_level()
powercap: intel_rapl: Change an error pointer to NULL
Daniel Gabay (2):
wifi: iwlwifi: mvm: fix iwl_mvm_scan_fits() calculation
wifi: iwlwifi: mvm: fix iwl_mvm_max_scan_ie_fw_cmd_room()
Dhananjay Ugwekar (2):
powercap/intel_rapl: Add support for AMD family 1Ah powercap/intel_rapl: Fix the energy-pkg event for AMD CPUs
Dmitry Antipov (1):
wifi: mac80211: free skb on error path in ieee80211_beacon_get_ap()
Edward Adam Davis (1):
USB: usbtmc: prevent kernel-usb-infoleak
Emmanuel Grumbach (3):
wifi: iwlwifi: mvm: pause TCM when the firmware is stopped
wifi: iwlwifi: mvm: don't wait for tx queues if firmware is dead
wifi: iwlwifi: clear trans->state earlier upon error
Fabio Estevam (1):
spi: spidev: Add an entry for elgin,jg10309-01
Ferry Meng (2):
ocfs2: add bounds checking to ocfs2_xattr_find_entry()
ocfs2: strict bound check before memcmp in ocfs2_xattr_find_entry()
Florian Westphal (1):
netfilter: nft_socket: make cgroupsv2 matching work with namespaces
Geert Uytterhoeven (1):
spi: spidev: Add missing spi_device_id for jg10309-01
Greg Kroah-Hartman (1):
Linux 6.10.12
Hans de Goede (2):
platform/x86: x86-android-tablets: Make Lenovo Yoga Tab 3 X90F DMI match less strict
ASoC: Intel: soc-acpi-cht: Make Lenovo Yoga Tab 3 X90F DMI match less strict
Hongbo Li (2):
ASoC: allow module autoloading for table db1200_pids
ASoC: allow module autoloading for table board_ids
Huacai Chen (1):
LoongArch: Define ARCH_IRQ_INIT_FLAGS as IRQ_NOPROBE
Jacky Chou (1):
net: ftgmac100: Ensure tx descriptor updates are visible
Junhao Xie (1):
USB: serial: pl2303: add device id for Macrosilicon MS3020
Kai Vehmanen (1):
ALSA: hda: add HDMI codec ID for Intel PTL
Kailang Yang (2):
ALSA: hda/realtek - Fixed ALC256 headphone no sound
ALSA: hda/realtek - FIxed ALC285 headphone no sound
Keith Busch (1):
nvme-pci: qdepth 1 quirk
Kenneth Feng (1):
drm/amd/pm: fix the pp_dpm_pcie issue on smu v14.0.2/3
Kiran K (1):
Bluetooth: btintel_pcie: Allocate memory for driver private data
Larysa Zaremba (1):
ice: check for XDP rings instead of bpf program when unconfiguring
Liao Chen (5):
ASoC: intel: fix module autoloading
ASoC: google: fix module autoloading
ASoC: tda7419: fix module autoloading
ASoC: fix module autoloading
spi: bcm63xx: Enable module autoloading
Luke D. Jones (1):
platform/x86/amd: pmf: Make ASUS GA403 quirk generic
Marc Kleine-Budde (3):
can: mcp251xfd: mcp251xfd_ring_init(): check TX-coalescing configuration
can: mcp251xfd: properly indent labels
can: mcp251xfd: move mcp251xfd_timestamp_start()/stop() into mcp251xfd_chip_start/stop()
Markus Schneider-Pargmann (1):
can: m_can: Limit coalescing to peripheral instances
Markuss Broks (1):
ASoC: amd: yc: Add a quirk for MSI Bravo 17 (D7VEK)
Mathieu Fenniak (1):
platform/x86: asus-wmi: Fix spurious rfkill on UX8406MA
Michael Kelley (1):
x86/hyperv: Set X86_FEATURE_TSC_KNOWN_FREQ when Hyper-V provides frequency
Michał Winiarski (3):
drm: Use XArray instead of IDR for minors
accel: Use XArray instead of IDR for minors
drm: Expand max DRM device number to full MINORBITS
Mike Rapoport (1):
microblaze: don't treat zero reserved memory regions as error
Neil Armstrong (1):
clk: qcom: gcc-sm8650: Don't use shared clk_ops for QUPs
Paulo Alcantara (1):
smb: client: fix hang in wait_for_response() for negproto
Ross Brown (1):
hwmon: (asus-ec-sensors) remove VRM temp X570-E GAMING
Sherry Yang (1):
scsi: lpfc: Fix overflow build issue
Thomas Blocher (1):
pinctrl: at91: make it work with current gpiolib
YR Yang (1):
ASoC: mediatek: mt8188: Mark AFE_DAC_CON0 register as volatile
Zhang Yi (1):
ASoC: mediatek: mt8188-mt6359: Modify key
hongchi.peng (1):
drm: komeda: Fix an issue related to normalized zpos
zhang jiao (1):
tools: hv: rm .*.cmd when make clean
Greg Kroah-Hartman
maintainerMakefile +1 -1
@@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 VERSION = 6 PATCHLEVEL = 10 -SUBLEVEL = 11 +SUBLEVEL = 12 EXTRAVERSION = NAME = Baby Opossum Posse
arch/loongarch/include/asm/hw_irq.h +2 -0
@@ -9,6 +9,8 @@extern atomic_t irq_err_count; +#define ARCH_IRQ_INIT_FLAGS IRQ_NOPROBE +/* * interrupt-retrigger: NOP for now. This may not be appropriate for all * machines, we'll see ...
arch/loongarch/include/asm/kvm_vcpu.h +0 -1
@@ -76,7 +76,6 @@ static inline void kvm_restore_lasx(struct loongarch_fpu *fpu) { }#endif void kvm_init_timer (struct kvm_vcpu *vcpu,unsigned long hz); -void kvm_reset_timer (struct kvm_vcpu *vcpu);void kvm_save_timer (struct kvm_vcpu *vcpu);void kvm_restore_timer (struct kvm_vcpu *vcpu);
arch/loongarch/kernel/irq.c +0 -3
@@ -102,9 +102,6 @@ void __init init_IRQ(void) mp_ops.init_ipi ();#endif -for (i =0 ; i <NR_IRQS ; i++) -irq_set_noprobe (i); -for_each_possible_cpu (i) { page =alloc_pages_node (cpu_to_node (i),GFP_KERNEL , order);
arch/loongarch/kvm/timer.c +0 -7
@@ -188,10 +188,3 @@ void kvm_save_timer(struct kvm_vcpu *vcpu)kvm_save_hw_gcsr (csr,LOONGARCH_CSR_ESTAT );preempt_enable (); } - -void kvm_reset_timer (struct kvm_vcpu *vcpu) -{ -write_gcsr_timercfg (0 ); -kvm_write_sw_gcsr (vcpu->arch.csr,LOONGARCH_CSR_TCFG ,0 ); -hrtimer_cancel (&vcpu->arch.swtimer); -}
arch/loongarch/kvm/vcpu.c +1 -1
@@ -572,7 +572,7 @@ static int kvm_set_one_reg(struct kvm_vcpu *vcpu, vcpu->kvm->arch.time_offset = (signed long )(v -drdtime ());break ;case KVM_REG_LOONGARCH_VCPU_RESET : -kvm_reset_timer (vcpu); + vcpu->arch.st.guest_addr =0 ;memset (&vcpu->arch.irq_pending,0 ,sizeof (vcpu->arch.irq_pending));memset (&vcpu->arch.irq_clear,0 ,sizeof (vcpu->arch.irq_clear));break ;
arch/microblaze/mm/init.c +0 -5
@@ -193,11 +193,6 @@ asmlinkage void __init mmu_init(void) {unsigned int kstart, ksize; -if (!memblock.reserved.cnt) { -pr_emerg ("Error memory count\n" ); -machine_restart (NULL ); - } -if ((u32 ) memblock.memory.regions[0 ].size <0x400000 ) {pr_emerg ("Memory must be greater than 4MB\n" );machine_restart (NULL );
arch/x86/kernel/cpu/mshyperv.c +1 -0
@@ -424,6 +424,7 @@ static void __init ms_hyperv_init_platform(void) ms_hyperv.misc_features & HV_FEATURE_FREQUENCY_MSRS_AVAILABLE) { x86_platform.calibrate_tsc = hv_get_tsc_khz; x86_platform.calibrate_cpu = hv_get_tsc_khz; +setup_force_cpu_cap (X86_FEATURE_TSC_KNOWN_FREQ ); }if (ms_hyperv.priv_high &HV_ISOLATION ) {
drivers/accel/drm_accel.c +7 -103
164 lines not on this page · raw message
drivers/bluetooth/btintel_pcie.c +1 -1
@@ -1208,7 +1208,7 @@ static int btintel_pcie_setup_hdev(struct btintel_pcie_data *data)int err;struct hci_dev *hdev; - hdev =hci_alloc_dev (); + hdev =hci_alloc_dev_priv (sizeof (struct btintel_data ));if (!hdev)return -ENOMEM ;
drivers/clk/qcom/gcc-sm8650.c +28 -28
224 lines not on this page · raw message
drivers/gpu/drm/amd/pm/swsmu/smu14/smu_v14_0_2_ppt.c +3 -0
@@ -672,6 +672,9 @@ static int smu_v14_0_2_set_default_dpm_table(struct smu_context *smu) pcie_table->clk_freq[pcie_table->num_of_link_levels] = skutable->LclkFreq[link_level]; pcie_table->num_of_link_levels++; + +if (link_level ==0 ) + link_level++; }return 0 ;
drivers/gpu/drm/arm/display/komeda/komeda_kms.c +7 -3
@@ -160,6 +160,7 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc,struct drm_plane *plane;struct list_head zorder_list;int order =0 , err; +u32 slave_zpos =0 ;DRM_DEBUG_ATOMIC ("[CRTC:%d:%s] calculating normalized zpos values\n" , crtc->base.id, crtc->name);
@@ -199,10 +200,13 @@ static int komeda_crtc_normalize_zpos(struct drm_crtc *crtc, plane_st->zpos, plane_st->normalized_zpos);/* calculate max slave zorder */ -if (has_bit (drm_plane_index (plane), kcrtc->slave_planes)) +if (has_bit (drm_plane_index (plane), kcrtc->slave_planes)) { + slave_zpos = plane_st->normalized_zpos; +if (to_kplane_st (plane_st)->layer_split) + slave_zpos++; kcrtc_st->max_slave_zorder = -max (plane_st->normalized_zpos, - kcrtc_st->max_slave_zorder); +max (slave_zpos, kcrtc_st->max_slave_zorder); + } } crtc_st->zpos_changed = true;
drivers/gpu/drm/drm_drv.c +47 -50
194 lines not on this page · raw message
drivers/gpu/drm/drm_file.c +1 -1
@@ -364,7 +364,7 @@ int drm_open(struct inode *inode, struct file *filp)struct drm_minor *minor;int retcode; - minor =drm_minor_acquire (iminor (inode)); + minor =drm_minor_acquire (&drm_minors_xa,iminor (inode));if (IS_ERR (minor))return PTR_ERR (minor);
drivers/gpu/drm/drm_internal.h +0 -4
@@ -81,10 +81,6 @@ void drm_prime_destroy_file_private(struct drm_prime_file_private *prime_fpriv);void drm_prime_remove_buf_handle (struct drm_prime_file_private *prime_fpriv,uint32_t handle); -/* drm_drv.c */ -struct drm_minor *drm_minor_acquire (unsigned int minor_id); -void drm_minor_release (struct drm_minor *minor); -/* drm_managed.c */ void drm_managed_release (struct drm_device *dev);void drmm_add_final_kfree (struct drm_device *dev,void *container);
drivers/hwmon/asus-ec-sensors.c +1 -1
@@ -412,7 +412,7 @@ static const struct ec_board_info board_info_strix_b550_i_gaming = {static const struct ec_board_info board_info_strix_x570_e_gaming = { .sensors =SENSOR_SET_TEMP_CHIPSET_CPU_MB | -SENSOR_TEMP_T_SENSOR |SENSOR_TEMP_VRM | +SENSOR_TEMP_T_SENSOR |SENSOR_FAN_CHIPSET |SENSOR_CURR_CPU |SENSOR_IN_CPU_CORE , .mutex_path =ASUS_HW_ACCESS_MUTEX_ASMX ,
drivers/net/can/m_can/m_can.c +9 -7
@@ -2141,7 +2141,7 @@ static int m_can_set_coalesce(struct net_device *dev,return 0 ; } -static const struct ethtool_ops m_can_ethtool_ops = { +static const struct ethtool_ops m_can_ethtool_ops_coalescing = { .supported_coalesce_params =ETHTOOL_COALESCE_RX_USECS_IRQ |ETHTOOL_COALESCE_RX_MAX_FRAMES_IRQ | ETHTOOL_COALESCE_TX_USECS_IRQ |
@@ -2152,18 +2152,20 @@ static const struct ethtool_ops m_can_ethtool_ops = { .set_coalesce = m_can_set_coalesce, }; -static const struct ethtool_ops m_can_ethtool_ops_polling = { +static const struct ethtool_ops m_can_ethtool_ops = { .get_ts_info = ethtool_op_get_ts_info, }; -static int register_m_can_dev (struct net_device *dev) +static int register_m_can_dev (struct m_can_classdev *cdev) { +struct net_device *dev = cdev->net; + dev->flags |=IFF_ECHO ;/* we support local echo */ dev->netdev_ops = &m_can_netdev_ops; -if (dev->irq) - dev->ethtool_ops = &m_can_ethtool_ops; +if (dev->irq && cdev->is_peripheral) + dev->ethtool_ops = &m_can_ethtool_ops_coalescing;else - dev->ethtool_ops = &m_can_ethtool_ops_polling; + dev->ethtool_ops = &m_can_ethtool_ops;return register_candev (dev); }
@@ -2349,7 +2351,7 @@ int m_can_class_register(struct m_can_classdev *cdev)if (ret) goto rx_offload_del; - ret =register_m_can_dev (cdev->net); + ret =register_m_can_dev (cdev);if (ret) {dev_err (cdev->dev,"registering %s failed (err=%d)\n" , cdev->net->name, ret);
drivers/net/can/spi/mcp251xfd/mcp251xfd-core.c +22 -20
119 lines not on this page · raw message
drivers/net/can/spi/mcp251xfd/mcp251xfd-dump.c +1 -1
@@ -94,7 +94,7 @@ static void mcp251xfd_dump_registers(const struct mcp251xfd_priv *priv,kfree (buf); } - out: +out:mcp251xfd_dump_header (iter,MCP251XFD_DUMP_OBJECT_TYPE_REG , reg); }
drivers/net/can/spi/mcp251xfd/mcp251xfd-regmap.c +1 -1
@@ -397,7 +397,7 @@ mcp251xfd_regmap_crc_read(void *context,return err; } - out: +out:memcpy (val_buf, buf_rx->data, val_len);return 0 ;
drivers/net/can/spi/mcp251xfd/mcp251xfd-ring.c +11 -3
@@ -290,7 +290,7 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv)const struct mcp251xfd_rx_ring *rx_ring;u16 base =0 , ram_used;u8 fifo_nr =1 ; -int i; +int err =0 , i;netdev_reset_queue (priv->ndev);
@@ -386,10 +386,18 @@ int mcp251xfd_ring_init(struct mcp251xfd_priv *priv)netdev_err (priv->ndev,"Error during ring configuration, using more RAM (%u bytes) than available (%u bytes).\n" , ram_used,MCP251XFD_RAM_SIZE ); -return -ENOMEM ; + err = -ENOMEM ; } -return 0 ; +if (priv->tx_obj_num_coalesce_irq && + priv->tx_obj_num_coalesce_irq *2 != priv->tx->obj_num) { +netdev_err (priv->ndev, +"Error during ring configuration, number of TEF coalescing buffers (%u) must be half of TEF buffers (%u).\n" , + priv->tx_obj_num_coalesce_irq, priv->tx->obj_num); + err = -EINVAL ; + } + +return err; }void mcp251xfd_ring_free (struct mcp251xfd_priv *priv)
drivers/net/can/spi/mcp251xfd/mcp251xfd-tef.c +1 -1
@@ -219,7 +219,7 @@ int mcp251xfd_handle_tefif(struct mcp251xfd_priv *priv) total_frame_len += frame_len; } - out_netif_wake_queue: +out_netif_wake_queue: len = i;/* number of handled goods TEFs */ if (len) {struct mcp251xfd_tef_ring *ring = priv->tef;
drivers/net/can/spi/mcp251xfd/mcp251xfd-timestamp.c +5 -2
@@ -48,9 +48,12 @@ void mcp251xfd_timestamp_init(struct mcp251xfd_priv *priv) cc->shift =1 ; cc->mult =clocksource_hz2mult (priv->can.clock.freq, cc->shift); -timecounter_init (&priv->tc, &priv->cc,ktime_get_real_ns ()); -INIT_DELAYED_WORK (&priv->timestamp, mcp251xfd_timestamp_work); +} + +void mcp251xfd_timestamp_start (struct mcp251xfd_priv *priv) +{ +timecounter_init (&priv->tc, &priv->cc,ktime_get_real_ns ());schedule_delayed_work (&priv->timestamp,MCP251XFD_TIMESTAMP_WORK_DELAY_SEC *HZ ); }
drivers/net/can/spi/mcp251xfd/mcp251xfd.h +1 -0
@@ -957,6 +957,7 @@ int mcp251xfd_ring_alloc(struct mcp251xfd_priv *priv);int mcp251xfd_handle_rxif (struct mcp251xfd_priv *priv);int mcp251xfd_handle_tefif (struct mcp251xfd_priv *priv);void mcp251xfd_timestamp_init (struct mcp251xfd_priv *priv); +void mcp251xfd_timestamp_start (struct mcp251xfd_priv *priv);void mcp251xfd_timestamp_stop (struct mcp251xfd_priv *priv);void mcp251xfd_tx_obj_write_sync (struct work_struct *work);
drivers/net/ethernet/faraday/ftgmac100.c +18 -8
@@ -572,7 +572,7 @@ static bool ftgmac100_rx_packet(struct ftgmac100 *priv, int *processed) (*processed)++;return true; - drop: +drop:/* Clean rxdes0 (which resets own bit) */ rxdes->rxdes0 =cpu_to_le32 (status & priv->rxdes0_edorr_mask); priv->rx_pointer =ftgmac100_next_rx_pointer (priv, pointer);
@@ -656,6 +656,11 @@ static bool ftgmac100_tx_complete_packet(struct ftgmac100 *priv)ftgmac100_free_tx_packet (priv, pointer, skb, txdes, ctl_stat); txdes->txdes0 =cpu_to_le32 (ctl_stat & priv->txdes0_edotr_mask); +/* Ensure the descriptor config is visible before setting the tx +* pointer. +*/ +smp_wmb (); + priv->tx_clean_pointer =ftgmac100_next_tx_pointer (priv, pointer);return true;
@@ -809,6 +814,11 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,dma_wmb (); first->txdes0 =cpu_to_le32 (f_ctl_stat); +/* Ensure the descriptor config is visible before setting the tx +* pointer. +*/ +smp_wmb (); +/* Update next TX pointer */ priv->tx_pointer = pointer;
@@ -829,7 +839,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,return NETDEV_TX_OK ; - dma_err: +dma_err:if (net_ratelimit ())netdev_err (netdev,"map tx fragment failed\n" );
@@ -851,7 +861,7 @@ static netdev_tx_t ftgmac100_hard_start_xmit(struct sk_buff *skb,* last fragment, so we know ftgmac100_free_tx_packet() * hasn't freed the skb yet. */ - drop: +drop:/* Drop the packet */ dev_kfree_skb_any (skb); netdev->stats.tx_dropped++;
@@ -1344,7 +1354,7 @@ static void ftgmac100_reset(struct ftgmac100 *priv)ftgmac100_init_all (priv, true);netdev_dbg (netdev,"Reset done !\n" ); - bail: +bail:if (priv->mii_bus)mutex_unlock (&priv->mii_bus->mdio_lock);if (netdev->phydev)
@@ -1543,15 +1553,15 @@ static int ftgmac100_open(struct net_device *netdev)return 0 ; - err_ncsi: +err_ncsi:napi_disable (&priv->napi);netif_stop_queue (netdev); - err_alloc: +err_alloc:ftgmac100_free_buffers (priv);free_irq (netdev->irq, netdev); - err_irq: +err_irq:netif_napi_del (&priv->napi); - err_hw: +err_hw:iowrite32 (0 , priv->base +FTGMAC100_OFFSET_IER );ftgmac100_free_rings (priv);return err;
drivers/net/ethernet/intel/ice/ice_lib.c +2 -2
@@ -2419,7 +2419,7 @@ void ice_vsi_decfg(struct ice_vsi *vsi)dev_err (ice_pf_to_dev (pf),"Failed to remove RDMA scheduler config for VSI %u, err %d\n" , vsi->vsi_num, err); -if (ice_is_xdp_ena_vsi (vsi)) +if (vsi->xdp_rings)/* return value check can be skipped here, it always returns * 0 if reset is in progress */
@@ -2521,7 +2521,7 @@ static void ice_vsi_release_msix(struct ice_vsi *vsi)for (q =0 ; q < q_vector->num_ring_tx; q++) {ice_write_itr (&q_vector->tx,0 );wr32 (hw,QINT_TQCTL (vsi->txq_map[txq]),0 ); -if (ice_is_xdp_ena_vsi (vsi)) { +if (vsi->xdp_rings) {u32 xdp_txq = txq + vsi->num_xdp_txq;wr32 (hw,QINT_TQCTL (vsi->txq_map[xdp_txq]),0 );
drivers/net/ethernet/intel/ice/ice_main.c +2 -2
@@ -7253,7 +7253,7 @@ int ice_down(struct ice_vsi *vsi)if (tx_err)netdev_err (vsi->netdev,"Failed stop Tx rings, VSI %d error %d\n" , vsi->vsi_num, tx_err); -if (!tx_err &&ice_is_xdp_ena_vsi (vsi)) { +if (!tx_err && vsi->xdp_rings) { tx_err =ice_vsi_stop_xdp_tx_rings (vsi);if (tx_err) netdev_err(vsi->netdev, "Failed stop XDP rings, VSI %d error %d\n",
@@ -7270,7 +7270,7 @@ int ice_down(struct ice_vsi *vsi)ice_for_each_txq (vsi, i)ice_clean_tx_ring (vsi->tx_rings[i]); -if (ice_is_xdp_ena_vsi (vsi)) +if (vsi->xdp_rings)ice_for_each_xdp_txq (vsi, i)ice_clean_tx_ring (vsi->xdp_rings[i]);
drivers/net/ethernet/intel/ice/ice_xsk.c +3 -3
@@ -39,7 +39,7 @@ static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx) sizeof(vsi_stat->rx_ring_stats[q_idx]->rx_stats));memset (&vsi_stat->tx_ring_stats[q_idx]->stats,0 ,sizeof (vsi_stat->tx_ring_stats[q_idx]->stats)); -if (ice_is_xdp_ena_vsi (vsi)) +if (vsi->xdp_rings)memset (&vsi->xdp_rings[q_idx]->ring_stats->stats,0 ,sizeof (vsi->xdp_rings[q_idx]->ring_stats->stats)); }
@@ -52,7 +52,7 @@ static void ice_qp_reset_stats(struct ice_vsi *vsi, u16 q_idx)static void ice_qp_clean_rings (struct ice_vsi *vsi,u16 q_idx) {ice_clean_tx_ring (vsi->tx_rings[q_idx]); -if (ice_is_xdp_ena_vsi (vsi)) +if (vsi->xdp_rings)ice_clean_tx_ring (vsi->xdp_rings[q_idx]);ice_clean_rx_ring (vsi->rx_rings[q_idx]); }
@@ -186,7 +186,7 @@ static int ice_qp_dis(struct ice_vsi *vsi, u16 q_idx) err =ice_vsi_stop_tx_ring (vsi,ICE_NO_RESET ,0 , tx_ring, &txq_meta);if (!fail) fail = err; -if (ice_is_xdp_ena_vsi (vsi)) { +if (vsi->xdp_rings) {struct ice_tx_ring *xdp_ring = vsi->xdp_rings[q_idx];memset (&txq_meta,0 ,sizeof (txq_meta));
drivers/net/wireless/intel/iwlwifi/fw/dbg.c +1 -1
@@ -3352,7 +3352,7 @@ void iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt, {int ret__maybe_unused =0 ; -if (test_bit (STATUS_FW_ERROR , &fwrt->trans->status)) +if (!iwl_trans_fw_running (fwrt->trans))return ; if (fw_has_capa(&fwrt->fw->ucode_capa,
drivers/net/wireless/intel/iwlwifi/iwl-trans.h +1 -1
@@ -1579,8 +1579,8 @@ static inline void iwl_trans_fw_error(struct iwl_trans *trans, bool sync)/* prevent double restarts due to the same erroneous FW */ if (!test_and_set_bit (STATUS_FW_ERROR , &trans->status)) { -iwl_op_mode_nic_error (trans->op_mode, sync); trans->state =IWL_TRANS_NO_FW ; +iwl_op_mode_nic_error (trans->op_mode, sync); } }
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c +8 -1
@@ -5819,6 +5819,10 @@ static void iwl_mvm_flush_no_vif(struct iwl_mvm *mvm, u32 queues, bool drop)int i;if (!iwl_mvm_has_new_tx_api (mvm)) { +/* we can't ask the firmware anything if it is dead */ +if (test_bit (IWL_MVM_STATUS_HW_RESTART_REQUESTED , + &mvm->status)) +return ;if (drop) {mutex_lock (&mvm->mutex); iwl_mvm_flush_tx_path(mvm,
@@ -5914,8 +5918,11 @@ void iwl_mvm_mac_flush(struct ieee80211_hw *hw, struct ieee80211_vif *vif,/* this can take a while, and we may need/want other operations * to succeed while doing this, so do it without the mutex held +* If the firmware is dead, this can't work... */ -if (!drop && !iwl_mvm_has_new_tx_api (mvm)) +if (!drop && !iwl_mvm_has_new_tx_api (mvm) && + !test_bit (IWL_MVM_STATUS_HW_RESTART_REQUESTED , + &mvm->status))iwl_trans_wait_tx_queues_empty (mvm->trans, msk); }
drivers/net/wireless/intel/iwlwifi/mvm/ops.c +2 -0
@@ -1521,6 +1521,8 @@ void iwl_mvm_stop_device(struct iwl_mvm *mvm)clear_bit (IWL_MVM_STATUS_FIRMWARE_RUNNING , &mvm->status); +iwl_mvm_pause_tcm (mvm, false); +iwl_fw_dbg_stop_sync (&mvm->fwrt);iwl_trans_stop_device (mvm->trans);iwl_free_fw_paging (&mvm->fwrt);
drivers/net/wireless/intel/iwlwifi/mvm/scan.c +16 -15
@@ -48,6 +48,8 @@/* Number of iterations on the channel for mei filtered scan */ #define IWL_MEI_SCAN_NUM_ITER 5U +#define WFA_TPC_IE_LEN 9 +struct iwl_mvm_scan_timing_params {u32 suspend_time;u32 max_out_time;
@@ -303,8 +305,8 @@ static int iwl_mvm_max_scan_ie_fw_cmd_room(struct iwl_mvm *mvm) max_probe_len =SCAN_OFFLOAD_PROBE_REQ_SIZE ; -/* we create the 802.11 header and SSID element */ - max_probe_len -=24 +2 ; +/* we create the 802.11 header SSID element and WFA TPC element */ + max_probe_len -=24 +2 +WFA_TPC_IE_LEN ;/* DS parameter set element is added on 2.4GHZ band if required */ if (iwl_mvm_rrm_scan_needed (mvm))
@@ -731,8 +733,6 @@ static u8 *iwl_mvm_copy_and_insert_ds_elem(struct iwl_mvm *mvm, const u8 *ies,return newpos; } -#define WFA_TPC_IE_LEN 9 -static void iwl_mvm_add_tpc_report_ie (u8 *pos) { pos[0 ] =WLAN_EID_VENDOR_SPECIFIC ;
@@ -837,8 +837,8 @@ static inline bool iwl_mvm_scan_fits(struct iwl_mvm *mvm, int n_ssids,return ((n_ssids <=PROBE_OPTION_MAX ) && (n_channels <= mvm->fw->ucode_capa.n_scan_channels) & (ies->common_ie_len + - ies->len[NL80211_BAND_2GHZ ] + - ies->len[NL80211_BAND_5GHZ ] <= + ies->len[NL80211_BAND_2GHZ ] + ies->len[NL80211_BAND_5GHZ ] + + ies->len[NL80211_BAND_6GHZ ] <=iwl_mvm_max_scan_ie_fw_cmd_room (mvm))); }
@@ -3179,18 +3179,16 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, params.n_channels = j; } -if (non_psc_included && - !iwl_mvm_scan_fits (mvm, req->n_ssids, ies, params.n_channels)) { -kfree (params.channels); -return -ENOBUFS ; +if (!iwl_mvm_scan_fits (mvm, req->n_ssids, ies, params.n_channels)) { + ret = -ENOBUFS ; + goto out; } uid =iwl_mvm_build_scan_cmd (mvm, vif, &hcmd, ¶ms, type); - -if (non_psc_included) -kfree (params.channels); -if (uid <0 ) -return uid; +if (uid <0 ) { + ret = uid; + goto out; + } ret =iwl_mvm_send_cmd (mvm, &hcmd);if (!ret) {
@@ -3208,6 +3206,9 @@ int iwl_mvm_sched_scan_start(struct iwl_mvm *mvm, mvm->sched_scan_pass_all =SCHED_SCAN_PASS_ALL_DISABLED ; } +out: +if (non_psc_included) +kfree (params.channels);return ret; }
drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c +2 -1
@@ -89,7 +89,8 @@ iwl_pcie_ctxt_info_dbg_enable(struct iwl_trans *trans, }break ;default : -IWL_ERR (trans,"WRT: Invalid buffer destination\n" ); +IWL_DEBUG_FW (trans,"WRT: Invalid buffer destination (%d)\n" , +le32_to_cpu (fw_mon_cfg->buf_location)); } out:if (dbg_flags)
drivers/nvme/host/nvme.h +5 -0
@@ -89,6 +89,11 @@ enum nvme_quirks {*/ NVME_QUIRK_NO_DEEPEST_PS = (1 <<5 ), +/* +* Problems seen with concurrent commands +*/ + NVME_QUIRK_QDEPTH_ONE = (1 << 6), +/* * Set MEDIUM priority on SQ creation */
drivers/nvme/host/pci.c +9 -9
@@ -2528,15 +2528,8 @@ static int nvme_pci_enable(struct nvme_dev *dev)else dev->io_sqes =NVME_NVM_IOSQES ; -/* -* Temporary fix for the Apple controller found in the MacBook8,1 and -* some MacBook7,1 to avoid controller resets and data loss. -*/ -if (pdev->vendor ==PCI_VENDOR_ID_APPLE && pdev->device ==0x2001 ) { +if (dev->ctrl.quirks &NVME_QUIRK_QDEPTH_ONE ) { dev->q_depth =2 ; -dev_warn (dev->ctrl.device,"detected Apple NVMe controller, " -"set queue depth=%u to work around controller resets\n" , - dev->q_depth); }else if (pdev->vendor ==PCI_VENDOR_ID_SAMSUNG && (pdev->device ==0xa821 || pdev->device ==0xa822 ) &&NVME_CAP_MQES (dev->ctrl.cap) ==0 ) {
@@ -3401,6 +3394,8 @@ static const struct pci_device_id nvme_id_table[] = { NVME_QUIRK_BOGUS_NID, }, { PCI_VDEVICE(REDHAT, 0x0010), /* Qemu emulated controller */ .driver_data = NVME_QUIRK_BOGUS_NID, }, + { PCI_DEVICE(0x1217, 0x8760), /* O2 Micro 64GB Steam Deck */ + .driver_data = NVME_QUIRK_QDEPTH_ONE }, { PCI_DEVICE(0x126f, 0x2262), /* Silicon Motion generic */ .driver_data = NVME_QUIRK_NO_DEEPEST_PS | NVME_QUIRK_BOGUS_NID, },
@@ -3535,7 +3530,12 @@ static const struct pci_device_id nvme_id_table[] = { { PCI_DEVICE(PCI_VENDOR_ID_AMAZON, 0xcd02), .driver_data = NVME_QUIRK_DMA_ADDRESS_BITS_48, }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2001), - .driver_data = NVME_QUIRK_SINGLE_VECTOR }, +/* +* Fix for the Apple controller found in the MacBook8,1 and +* some MacBook7,1 to avoid controller resets and data loss. +*/ + .driver_data = NVME_QUIRK_SINGLE_VECTOR | + NVME_QUIRK_QDEPTH_ONE }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2003) }, { PCI_DEVICE(PCI_VENDOR_ID_APPLE, 0x2005), .driver_data = NVME_QUIRK_SINGLE_VECTOR |
drivers/pinctrl/pinctrl-at91.c +4 -1
@@ -1409,8 +1409,11 @@ static int at91_pinctrl_probe(struct platform_device *pdev)/* We will handle a range of GPIO pins */ for (i =0 ; i < gpio_banks; i++) -if (gpio_chips[i]) +if (gpio_chips[i]) {pinctrl_add_gpio_range (info->pctl, &gpio_chips[i]->range); +gpiochip_add_pin_range (&gpio_chips[i]->chip,dev_name (info->pctl->dev),0 , + gpio_chips[i]->range.pin_base, gpio_chips[i]->range.npins); + }dev_info (dev,"initialized AT91 pinctrl driver\n" );
drivers/platform/x86/amd/pmf/pmf-quirks.c +1 -1
@@ -25,7 +25,7 @@ static const struct dmi_system_id fwbug_list[] = { .ident = "ROG Zephyrus G14", .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTeK COMPUTER INC." ), - DMI_MATCH(DMI_PRODUCT_NAME, "GA403UV"), + DMI_MATCH(DMI_PRODUCT_NAME, "GA403U"), }, .driver_data = &quirk_no_sps_bug, },
drivers/platform/x86/asus-nb-wmi.c +19 -1
@@ -145,6 +145,10 @@ static struct quirk_entry quirk_asus_ignore_fan = { .wmi_ignore_fan = true, }; +static struct quirk_entry quirk_asus_zenbook_duo_kbd = { + .ignore_key_wlan = true, +}; +static int dmi_matched (const struct dmi_system_id *dmi) {pr_info ("Identified laptop model '%s'\n" , dmi->ident);
@@ -516,6 +520,15 @@ static const struct dmi_system_id asus_quirks[] = { }, .driver_data = &quirk_asus_ignore_fan, }, + { + .callback = dmi_matched, + .ident = "ASUS Zenbook Duo UX8406MA", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "ASUSTeK COMPUTER INC."), + DMI_MATCH(DMI_PRODUCT_NAME, "UX8406MA"), + }, + .driver_data = &quirk_asus_zenbook_duo_kbd, + }, {}, };
@@ -630,7 +643,12 @@ static void asus_nb_wmi_key_filter(struct asus_wmi_driver *asus_wmi, int *code,case 0x32 :/* Volume Mute */ if (atkbd_reports_vol_keys) *code =ASUS_WMI_KEY_IGNORE ; - +break ; +case 0x5D :/* Wireless console Toggle */ +case 0x5E :/* Wireless console Enable */ +case 0x5F :/* Wireless console Disable */ +if (quirks->ignore_key_wlan) + *code =ASUS_WMI_KEY_IGNORE ;break ; } }
drivers/platform/x86/asus-wmi.h +1 -0
@@ -40,6 +40,7 @@ struct quirk_entry {bool wmi_force_als_set;bool wmi_ignore_fan;bool filter_i8042_e1_extended_codes; +bool ignore_key_wlan;enum asus_wmi_tablet_switch_mode tablet_switch_mode;int wapf;/*
drivers/platform/x86/x86-android-tablets/dmi.c +0 -1
@@ -140,7 +140,6 @@ const struct dmi_system_id x86_android_tablet_ids[] __initconst = {/* Lenovo Yoga Tab 3 Pro YT3-X90F */ .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Intel Corporation" ), -DMI_MATCH (DMI_PRODUCT_NAME ,"CHERRYVIEW D1 PLATFORM" ), DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), }, .driver_data = (void *)&lenovo_yt3_info,
drivers/powercap/intel_rapl_common.c +31 -4
@@ -1285,6 +1285,7 @@ static const struct x86_cpu_id rapl_ids[] __initconst = {X86_MATCH_VENDOR_FAM (AMD ,0x17 , &rapl_defaults_amd),X86_MATCH_VENDOR_FAM (AMD ,0x19 , &rapl_defaults_amd), +X86_MATCH_VENDOR_FAM (AMD ,0x1A , &rapl_defaults_amd), X86_MATCH_VENDOR_FAM(HYGON, 0x18, &rapl_defaults_amd), {} };
@@ -2128,6 +2129,21 @@ void rapl_remove_package(struct rapl_package *rp) }EXPORT_SYMBOL_GPL (rapl_remove_package); +/* +* RAPL Package energy counter scope: +* 1. AMD/HYGON platforms use per-PKG package energy counter +* 2. For Intel platforms +* 2.1 CLX-AP platform has per-DIE package energy counter +* 2.2 Other platforms that uses MSR RAPL are single die systems so the +* package energy counter can be considered as per-PKG/per-DIE, +* here it is considered as per-DIE. +* 2.3 New platforms that use TPMI RAPL doesn't care about the +* scope because they are not MSR/CPU based. +*/ +#define rapl_msrs_are_pkg_scope () \ + (boot_cpu_data.x86_vendor == X86_VENDOR_AMD || \ + boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) +/* caller to ensure CPU hotplug lock is held */ struct rapl_package *rapl_find_package_domain_cpuslocked (int id,struct rapl_if_priv *priv,bool id_is_cpu)
@@ -2135,8 +2151,14 @@ struct rapl_package *rapl_find_package_domain_cpuslocked(int id, struct rapl_if_struct rapl_package *rp;int uid; -if (id_is_cpu) - uid =topology_logical_die_id (id); +if (id_is_cpu) { + uid =rapl_msrs_are_pkg_scope () ? +topology_physical_package_id (id) :topology_logical_die_id (id); +if (uid <0 ) { +pr_err ("topology_logical_(package/die)_id() returned a negative value" ); +return NULL ; + } + }else uid = id;
@@ -2168,9 +2190,14 @@ struct rapl_package *rapl_add_package_cpuslocked(int id, struct rapl_if_priv *prreturn ERR_PTR (-ENOMEM );if (id_is_cpu) { - rp->id =topology_logical_die_id (id); + rp->id =rapl_msrs_are_pkg_scope () ? +topology_physical_package_id (id) :topology_logical_die_id (id); +if ((int )(rp->id) <0 ) { +pr_err ("topology_logical_(package/die)_id() returned a negative value" ); +return ERR_PTR (-EINVAL ); + } rp->lead_cpu = id; -if (topology_max_dies_per_package () >1 ) +if (!rapl_msrs_are_pkg_scope () &&topology_max_dies_per_package () >1 )snprintf (rp->name,PACKAGE_DOMAIN_NAME_LENGTH ,"package-%d-die-%d" ,topology_physical_package_id (id),topology_die_id (id));else
drivers/scsi/lpfc/lpfc_bsg.c +1 -1
@@ -5410,7 +5410,7 @@ lpfc_get_cgnbuf_info(struct bsg_job *job)struct get_cgnbuf_info_req *cgnbuf_req;struct lpfc_cgn_info *cp;uint8_t *cgn_buff; -int size, cinfosz; +size_t size, cinfosz;int rc =0 ; if (job->request_len < sizeof(struct fc_bsg_request) +
drivers/spi/spi-bcm63xx.c +1 -0
@@ -472,6 +472,7 @@ static const struct of_device_id bcm63xx_spi_of_match[] = { { .compatible = "brcm,bcm6358-spi", .data = &bcm6358_spi_reg_offsets }, { }, }; +MODULE_DEVICE_TABLE (of, bcm63xx_spi_of_match);static int bcm63xx_spi_probe (struct platform_device *pdev) {
drivers/spi/spidev.c +2 -0
@@ -702,6 +702,7 @@ static const struct class spidev_class = {static const struct spi_device_id spidev_spi_ids[] = { { .name ="bh2228fv" }, { .name ="dh2228fv" }, + { .name ="jg10309-01" }, { .name ="ltc2488" }, { .name ="sx1301" }, { .name ="bk4" },
@@ -731,6 +732,7 @@ static int spidev_of_check(struct device *dev)static const struct of_device_id spidev_dt_ids[] = { { .compatible ="cisco,spi-petra" , .data = &spidev_of_check }, { .compatible ="dh,dhcom-board" , .data = &spidev_of_check }, + { .compatible ="elgin,jg10309-01" , .data = &spidev_of_check }, { .compatible ="lineartechnology,ltc2488" , .data = &spidev_of_check }, { .compatible ="lwn,bk4" , .data = &spidev_of_check }, { .compatible ="menlo,m53cpld" , .data = &spidev_of_check },
drivers/usb/class/usbtmc.c +1 -1
@@ -754,7 +754,7 @@ static struct urb *usbtmc_create_urb(void)if (!urb)return NULL ; - dmabuf =kmalloc (bufsize,GFP_KERNEL ); + dmabuf =kzalloc (bufsize,GFP_KERNEL );if (!dmabuf) {usb_free_urb (urb);return NULL ;
drivers/usb/serial/pl2303.c +1 -0
@@ -118,6 +118,7 @@ static const struct usb_device_id id_table[] = { { USB_DEVICE(SMART_VENDOR_ID, SMART_PRODUCT_ID) }, { USB_DEVICE(AT_VENDOR_ID, AT_VTKIT3_PRODUCT_ID) }, { USB_DEVICE(IBM_VENDOR_ID, IBM_PRODUCT_ID) }, + { USB_DEVICE(MACROSILICON_VENDOR_ID, MACROSILICON_MS3020_PRODUCT_ID) }, { } /* Terminating entry */ };
drivers/usb/serial/pl2303.h +4 -0
@@ -171,3 +171,7 @@/* Allied Telesis VT-Kit3 */ #define AT_VENDOR_ID 0x0caa#define AT_VTKIT3_PRODUCT_ID 0x3001 + +/* Macrosilicon MS3020 */ +#define MACROSILICON_VENDOR_ID 0x345f +#define MACROSILICON_MS3020_PRODUCT_ID 0x3020
fs/ocfs2/xattr.c +18 -9
@@ -1062,13 +1062,13 @@ ssize_t ocfs2_listxattr(struct dentry *dentry,return i_ret + b_ret; } -static int ocfs2_xattr_find_entry (int name_index, +static int ocfs2_xattr_find_entry (struct inode *inode,int name_index,const char *name,struct ocfs2_xattr_search *xs) {struct ocfs2_xattr_entry *entry;size_t name_len; -int i, cmp =1 ; +int i, name_offset, cmp =1 ;if (name ==NULL )return -EINVAL ;
@@ -1076,13 +1076,22 @@ static int ocfs2_xattr_find_entry(int name_index, name_len =strlen (name); entry = xs->here;for (i =0 ; i <le16_to_cpu (xs->header->xh_count); i++) { +if ((void *)entry >= xs->end) { +ocfs2_error (inode->i_sb,"corrupted xattr entries" ); +return -EFSCORRUPTED ; + } cmp = name_index -ocfs2_xattr_get_type (entry);if (!cmp) cmp = name_len - entry->xe_name_len; -if (!cmp) - cmp =memcmp (name, (xs->base + -le16_to_cpu (entry->xe_name_offset)), - name_len); +if (!cmp) { + name_offset =le16_to_cpu (entry->xe_name_offset); +if ((xs->base + name_offset + name_len) > xs->end) { +ocfs2_error (inode->i_sb, +"corrupted xattr entries" ); +return -EFSCORRUPTED ; + } + cmp =memcmp (name, (xs->base + name_offset), name_len); + }if (cmp ==0 )break ; entry +=1 ;
@@ -1166,7 +1175,7 @@ static int ocfs2_xattr_ibody_get(struct inode *inode, xs->base = (void *)xs->header; xs->here = xs->header->xh_entries; - ret =ocfs2_xattr_find_entry (name_index, name, xs); + ret =ocfs2_xattr_find_entry (inode, name_index, name, xs);if (ret)return ret; size =le64_to_cpu (xs->here->xe_value_size);
@@ -2698,7 +2707,7 @@ static int ocfs2_xattr_ibody_find(struct inode *inode,/* Find the named attribute. */ if (oi->ip_dyn_features &OCFS2_INLINE_XATTR_FL ) { - ret =ocfs2_xattr_find_entry (name_index, name, xs); + ret =ocfs2_xattr_find_entry (inode, name_index, name, xs);if (ret && ret != -ENODATA )return ret; xs->not_found = ret;
@@ -2833,7 +2842,7 @@ static int ocfs2_xattr_block_find(struct inode *inode, xs->end = (void *)(blk_bh->b_data) + blk_bh->b_size; xs->here = xs->header->xh_entries; - ret =ocfs2_xattr_find_entry (name_index, name, xs); + ret =ocfs2_xattr_find_entry (inode, name_index, name, xs); }else ret = ocfs2_xattr_index_block_find(inode, blk_bh, name_index,
fs/smb/client/connect.c +13 -1
@@ -656,6 +656,19 @@ allocate_buffers(struct TCP_Server_Info *server)static bool server_unresponsive (struct TCP_Server_Info *server) { +/* +* If we're in the process of mounting a share or reconnecting a session +* and the server abruptly shut down (e.g. socket wasn't closed, packet +* had been ACK'ed but no SMB response), don't wait longer than 20s to +* negotiate protocol. +*/ +spin_lock (&server->srv_lock); +if (server->tcpStatus == CifsInNegotiate && +time_after (jiffies, server->lstrp +20 *HZ )) { +spin_unlock (&server->srv_lock); +cifs_reconnect (server, false); +return true; + }/* * We need to wait 3 echo intervals to make sure we handle such * situations right:
@@ -667,7 +680,6 @@ server_unresponsive(struct TCP_Server_Info *server)* 65s kernel_recvmsg times out, and we see that we haven't gotten * a response in >60s. */ -spin_lock (&server->srv_lock); if ((server->tcpStatus == CifsGood || server->tcpStatus == CifsNeedNegotiate) && (!server->ops->can_echo || server->ops->can_echo(server)) &&
include/drm/drm_accel.h +2 -16
@@ -51,11 +51,10 @@#if IS_ENABLED (CONFIG_DRM_ACCEL ) +extern struct xarray accel_minors_xa; +void accel_core_exit (void );int accel_core_init (void ); -void accel_minor_remove (int index); -int accel_minor_alloc (void ); -void accel_minor_replace (struct drm_minor *minor,int index);void accel_set_device_instance_params (struct device *kdev,int index);int accel_open (struct inode *inode,struct file *filp);void accel_debugfs_init (struct drm_device *dev);
@@ -73,19 +72,6 @@ static inline int __init accel_core_init(void)return 0 ; } -static inline void accel_minor_remove (int index) -{ -} - -static inline int accel_minor_alloc (void ) -{ -return -EOPNOTSUPP ; -} - -static inline void accel_minor_replace (struct drm_minor *minor,int index) -{ -} -static inline void accel_set_device_instance_params (struct device *kdev,int index) { }
include/drm/drm_file.h +5 -0
@@ -45,6 +45,8 @@ struct drm_printer;struct device ;struct file ; +extern struct xarray drm_minors_xa; +/* * FIXME: Not sure we want to have drm_minor here in the end, but to avoid * header include loops we need it here for now.
@@ -434,6 +436,9 @@ static inline bool drm_is_accel_client(const struct drm_file *file_priv)void drm_file_update_pid (struct drm_file *); +struct drm_minor *drm_minor_acquire (struct xarray *minors_xa,unsigned int minor_id); +void drm_minor_release (struct drm_minor *minor); +int drm_open (struct inode *inode,struct file *filp);int drm_open_helper (struct file *filp,struct drm_minor *minor); ssize_t drm_read(struct file *filp, char __user *buffer,
net/mac80211/tx.c +3 -1
@@ -5348,8 +5348,10 @@ ieee80211_beacon_get_ap(struct ieee80211_hw *hw,if (beacon->tail)skb_put_data (skb, beacon->tail, beacon->tail_len); -if (ieee80211_beacon_protect (skb, local, sdata, link) <0 ) +if (ieee80211_beacon_protect (skb, local, sdata, link) <0 ) { +dev_kfree_skb (skb);return NULL ; + }ieee80211_beacon_get_finish (hw, vif, link, offs, beacon, skb, chanctx_conf, csa_off_base);
net/netfilter/nft_socket.c +38 -3
73 lines not on this page · raw message
sound/pci/hda/patch_hdmi.c +1 -0
@@ -4639,6 +4639,7 @@ HDA_CODEC_ENTRY(0x8086281d, "Meteor Lake HDMI", patch_i915_adlp_hdmi),HDA_CODEC_ENTRY (0x8086281e ,"Battlemage HDMI" , patch_i915_adlp_hdmi),HDA_CODEC_ENTRY (0x8086281f ,"Raptor Lake P HDMI" , patch_i915_adlp_hdmi),HDA_CODEC_ENTRY (0x80862820 ,"Lunar Lake HDMI" , patch_i915_adlp_hdmi), +HDA_CODEC_ENTRY (0x80862822 ,"Panther Lake HDMI" , patch_i915_adlp_hdmi),HDA_CODEC_ENTRY (0x80862880 ,"CedarTrail HDMI" , patch_generic_hdmi),HDA_CODEC_ENTRY (0x80862882 ,"Valleyview2 HDMI" , patch_i915_byt_hdmi), HDA_CODEC_ENTRY(0x80862883, "Braswell HDMI", patch_i915_byt_hdmi),
sound/pci/hda/patch_realtek.c +51 -25
157 lines not on this page · raw message
sound/soc/amd/acp/acp-sof-mach.c +2 -0
@@ -158,6 +158,8 @@ static const struct platform_device_id board_ids[] = { }, { } }; +MODULE_DEVICE_TABLE (platform, board_ids); +static struct platform_driver acp_asoc_audio = { .driver = { .name ="sof_mach" ,
sound/soc/amd/yc/acp6x-mach.c +7 -0
@@ -353,6 +353,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 15 C7VF"), } }, + { + .driver_data = &acp6x_card, + .matches = { +DMI_MATCH (DMI_BOARD_VENDOR ,"Micro-Star International Co., Ltd." ), + DMI_MATCH(DMI_PRODUCT_NAME, "Bravo 17 D7VEK"), + } + }, { .driver_data = &acp6x_card, .matches = {
sound/soc/au1x/db1200.c +1 -0
@@ -44,6 +44,7 @@ static const struct platform_device_id db1200_pids[] = { }, {}, }; +MODULE_DEVICE_TABLE (platform, db1200_pids);/*------------------------- AC97 PART ---------------------------*/
sound/soc/codecs/chv3-codec.c +1 -0
@@ -26,6 +26,7 @@ static const struct of_device_id chv3_codec_of_match[] = { { .compatible = "google,chv3-codec", }, { } }; +MODULE_DEVICE_TABLE (of, chv3_codec_of_match);static struct platform_driver chv3_codec_platform_driver = { .driver = {
sound/soc/codecs/tda7419.c +1 -0
@@ -623,6 +623,7 @@ static const struct of_device_id tda7419_of_match[] = { { .compatible = "st,tda7419" }, { }, }; +MODULE_DEVICE_TABLE (of, tda7419_of_match);static struct i2c_driver tda7419_driver = { .driver = {
sound/soc/google/chv3-i2s.c +1 -0
@@ -322,6 +322,7 @@ static const struct of_device_id chv3_i2s_of_match[] = { { .compatible = "google,chv3-i2s" }, {}, }; +MODULE_DEVICE_TABLE (of, chv3_i2s_of_match);static struct platform_driver chv3_i2s_driver = { .probe = chv3_i2s_probe,
sound/soc/intel/common/soc-acpi-intel-cht-match.c +0 -1
@@ -84,7 +84,6 @@ static const struct dmi_system_id lenovo_yoga_tab3_x90[] = {/* Lenovo Yoga Tab 3 Pro YT3-X90, codec missing from DSDT */ .matches = {DMI_MATCH (DMI_SYS_VENDOR ,"Intel Corporation" ), -DMI_MATCH (DMI_PRODUCT_NAME ,"CHERRYVIEW D1 PLATFORM" ), DMI_MATCH(DMI_PRODUCT_VERSION, "Blade3-10A-001"), }, },
sound/soc/intel/keembay/kmb_platform.c +1 -0
@@ -814,6 +814,7 @@ static const struct of_device_id kmb_plat_of_match[] = { { .compatible = "intel,keembay-tdm", .data = &intel_kmb_tdm_dai}, {} }; +MODULE_DEVICE_TABLE (of, kmb_plat_of_match);static int kmb_plat_dai_probe (struct platform_device *pdev) {
sound/soc/mediatek/mt8188/mt8188-afe-pcm.c +1 -0
@@ -2748,6 +2748,7 @@ static bool mt8188_is_volatile_reg(struct device *dev, unsigned int reg)case AFE_ASRC12_NEW_CON9 :case AFE_LRCK_CNT :case AFE_DAC_MON0 : +case AFE_DAC_CON0 :case AFE_DL2_CUR :case AFE_DL3_CUR :case AFE_DL6_CUR :
sound/soc/mediatek/mt8188/mt8188-mt6359.c +13 -4
@@ -734,6 +734,7 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd)struct mtk_soc_card_data *soc_card_data =snd_soc_card_get_drvdata (rtd->card);struct snd_soc_jack *jack = &soc_card_data->card_data->jacks[MT8188_JACK_HEADSET ];struct snd_soc_component *component =snd_soc_rtd_to_codec (rtd,0 )->component; +struct mtk_platform_card_data *card_data = soc_card_data->card_data;int ret; ret = snd_soc_dapm_new_controls(&card->dapm, mt8188_nau8825_widgets,
@@ -762,10 +763,18 @@ static int mt8188_headset_codec_init(struct snd_soc_pcm_runtime *rtd)return ret; } -snd_jack_set_key (jack->jack,SND_JACK_BTN_0 ,KEY_PLAYPAUSE ); -snd_jack_set_key (jack->jack,SND_JACK_BTN_1 ,KEY_VOICECOMMAND ); -snd_jack_set_key (jack->jack,SND_JACK_BTN_2 ,KEY_VOLUMEUP ); -snd_jack_set_key (jack->jack,SND_JACK_BTN_3 ,KEY_VOLUMEDOWN ); +if (card_data->flags &ES8326_HS_PRESENT ) { +snd_jack_set_key (jack->jack,SND_JACK_BTN_0 ,KEY_PLAYPAUSE ); +snd_jack_set_key (jack->jack,SND_JACK_BTN_1 ,KEY_VOLUMEUP ); +snd_jack_set_key (jack->jack,SND_JACK_BTN_2 ,KEY_VOLUMEDOWN ); +snd_jack_set_key (jack->jack,SND_JACK_BTN_3 ,KEY_VOICECOMMAND ); + }else { +snd_jack_set_key (jack->jack,SND_JACK_BTN_0 ,KEY_PLAYPAUSE ); +snd_jack_set_key (jack->jack,SND_JACK_BTN_1 ,KEY_VOICECOMMAND ); +snd_jack_set_key (jack->jack,SND_JACK_BTN_2 ,KEY_VOLUMEUP ); +snd_jack_set_key (jack->jack,SND_JACK_BTN_3 ,KEY_VOLUMEDOWN ); + } + ret =snd_soc_component_set_jack (component, jack,NULL );if (ret) {
sound/soc/sof/mediatek/mt8195/mt8195.c +3 -0
@@ -574,6 +574,9 @@ static struct snd_sof_of_mach sof_mt8195_machs[] = { { .compatible = "google,tomato", .sof_tplg_filename ="sof-mt8195-mt6359-rt1019-rt5682.tplg" + }, { + .compatible = "google,dojo", + .sof_tplg_filename ="sof-mt8195-mt6359-max98390-rt5682.tplg" }, { .compatible ="mediatek,mt8195" , .sof_tplg_filename = "sof-mt8195.tplg"
tools/hv/Makefile +1 -1
@@ -52,7 +52,7 @@ $(OUTPUT)hv_fcopy_uio_daemon: $(HV_FCOPY_UIO_DAEMON_IN) clean: rm -f $(ALL_PROGRAMS) - find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete + find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete install: $(ALL_PROGRAMS) install -d -m 755 $(DESTDIR)$(sbindir); \