]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 28 Jul 2025 13:54:42 +0000 (15:54 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 28 Jul 2025 13:54:42 +0000 (15:54 +0200)
added patches:
alsa-hda-realtek-add-mute-led-support-for-hp-pavilion-15-eg0xxx.patch
e1000e-disregard-nvm-checksum-on-tgp-when-valid-checksum-bit-is-not-set.patch
e1000e-ignore-uninitialized-checksum-word-on-tgp.patch
gve-fix-stuck-tx-queue-for-dq-queue-format.patch
nilfs2-reject-invalid-file-types-when-reading-inodes.patch

queue-5.10/alsa-hda-realtek-add-mute-led-support-for-hp-pavilion-15-eg0xxx.patch [new file with mode: 0644]
queue-5.10/e1000e-disregard-nvm-checksum-on-tgp-when-valid-checksum-bit-is-not-set.patch [new file with mode: 0644]
queue-5.10/e1000e-ignore-uninitialized-checksum-word-on-tgp.patch [new file with mode: 0644]
queue-5.10/gve-fix-stuck-tx-queue-for-dq-queue-format.patch [new file with mode: 0644]
queue-5.10/nilfs2-reject-invalid-file-types-when-reading-inodes.patch [new file with mode: 0644]
queue-5.10/series

diff --git a/queue-5.10/alsa-hda-realtek-add-mute-led-support-for-hp-pavilion-15-eg0xxx.patch b/queue-5.10/alsa-hda-realtek-add-mute-led-support-for-hp-pavilion-15-eg0xxx.patch
new file mode 100644 (file)
index 0000000..59fde5b
--- /dev/null
@@ -0,0 +1,34 @@
+From 9744ede7099e8a69c04aa23fbea44c15bc390c04 Mon Sep 17 00:00:00 2001
+From: Dawid Rezler <dawidrezler.patches@gmail.com>
+Date: Sun, 20 Jul 2025 17:49:08 +0200
+Subject: ALSA: hda/realtek - Add mute LED support for HP Pavilion 15-eg0xxx
+
+From: Dawid Rezler <dawidrezler.patches@gmail.com>
+
+commit 9744ede7099e8a69c04aa23fbea44c15bc390c04 upstream.
+
+The mute LED on the HP Pavilion Laptop 15-eg0xxx,
+which uses the ALC287 codec, didn't work.
+This patch fixes the issue by enabling the ALC287_FIXUP_HP_GPIO_LED quirk.
+
+Tested on a physical device, the LED now works as intended.
+
+Signed-off-by: Dawid Rezler <dawidrezler.patches@gmail.com>
+Cc: <stable@vger.kernel.org>
+Link: https://patch.msgid.link/20250720154907.80815-2-dawidrezler.patches@gmail.com
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ sound/pci/hda/patch_realtek.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/sound/pci/hda/patch_realtek.c
++++ b/sound/pci/hda/patch_realtek.c
+@@ -9287,6 +9287,7 @@ static const struct snd_pci_quirk alc269
+       SND_PCI_QUIRK(0x103c, 0x8788, "HP OMEN 15", ALC285_FIXUP_HP_MUTE_LED),
+       SND_PCI_QUIRK(0x103c, 0x87b7, "HP Laptop 14-fq0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
+       SND_PCI_QUIRK(0x103c, 0x87c8, "HP", ALC287_FIXUP_HP_GPIO_LED),
++      SND_PCI_QUIRK(0x103c, 0x87cc, "HP Pavilion 15-eg0xxx", ALC287_FIXUP_HP_GPIO_LED),
+       SND_PCI_QUIRK(0x103c, 0x87d3, "HP Laptop 15-gw0xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
+       SND_PCI_QUIRK(0x103c, 0x87df, "HP ProBook 430 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
+       SND_PCI_QUIRK(0x103c, 0x87e5, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
diff --git a/queue-5.10/e1000e-disregard-nvm-checksum-on-tgp-when-valid-checksum-bit-is-not-set.patch b/queue-5.10/e1000e-disregard-nvm-checksum-on-tgp-when-valid-checksum-bit-is-not-set.patch
new file mode 100644 (file)
index 0000000..cd914b9
--- /dev/null
@@ -0,0 +1,42 @@
+From 536fd741c7ac907d63166cdae1081b1febfab613 Mon Sep 17 00:00:00 2001
+From: Jacek Kowalski <jacek@jacekk.info>
+Date: Mon, 30 Jun 2025 10:33:39 +0200
+Subject: e1000e: disregard NVM checksum on tgp when valid checksum bit is not set
+
+From: Jacek Kowalski <jacek@jacekk.info>
+
+commit 536fd741c7ac907d63166cdae1081b1febfab613 upstream.
+
+As described by Vitaly Lifshits:
+
+> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
+> driver cannot perform checksum validation and correction. This means
+> that all NVM images must leave the factory with correct checksum and
+> checksum valid bit set. Since Tiger Lake devices were the first to have
+> this lock, some systems in the field did not meet this requirement.
+> Therefore, for these transitional devices we skip checksum update and
+> verification, if the valid bit is not set.
+
+Signed-off-by: Jacek Kowalski <jacek@jacekk.info>
+Reviewed-by: Simon Horman <horms@kernel.org>
+Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
+Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
+Cc: stable@vger.kernel.org
+Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
+Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/intel/e1000e/ich8lan.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/net/ethernet/intel/e1000e/ich8lan.c
++++ b/drivers/net/ethernet/intel/e1000e/ich8lan.c
+@@ -4144,6 +4144,8 @@ static s32 e1000_validate_nvm_checksum_i
+                       ret_val = e1000e_update_nvm_checksum(hw);
+                       if (ret_val)
+                               return ret_val;
++              } else if (hw->mac.type == e1000_pch_tgp) {
++                      return 0;
+               }
+       }
diff --git a/queue-5.10/e1000e-ignore-uninitialized-checksum-word-on-tgp.patch b/queue-5.10/e1000e-ignore-uninitialized-checksum-word-on-tgp.patch
new file mode 100644 (file)
index 0000000..79904f2
--- /dev/null
@@ -0,0 +1,62 @@
+From 61114910a5f6a71d0b6ea3b95082dfe031b19dfe Mon Sep 17 00:00:00 2001
+From: Jacek Kowalski <jacek@jacekk.info>
+Date: Mon, 30 Jun 2025 10:35:00 +0200
+Subject: e1000e: ignore uninitialized checksum word on tgp
+
+From: Jacek Kowalski <jacek@jacekk.info>
+
+commit 61114910a5f6a71d0b6ea3b95082dfe031b19dfe upstream.
+
+As described by Vitaly Lifshits:
+
+> Starting from Tiger Lake, LAN NVM is locked for writes by SW, so the
+> driver cannot perform checksum validation and correction. This means
+> that all NVM images must leave the factory with correct checksum and
+> checksum valid bit set.
+
+Unfortunately some systems have left the factory with an uninitialized
+value of 0xFFFF at register address 0x3F (checksum word location).
+So on Tiger Lake platform we ignore the computed checksum when such
+condition is encountered.
+
+Signed-off-by: Jacek Kowalski <jacek@jacekk.info>
+Tested-by: Vlad URSU <vlad@ursu.me>
+Fixes: 4051f68318ca9 ("e1000e: Do not take care about recovery NVM checksum")
+Cc: stable@vger.kernel.org
+Reviewed-by: Simon Horman <horms@kernel.org>
+Reviewed-by: Vitaly Lifshits <vitaly.lifshits@intel.com>
+Tested-by: Mor Bar-Gabay <morx.bar.gabay@intel.com>
+Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/intel/e1000e/defines.h |    3 +++
+ drivers/net/ethernet/intel/e1000e/nvm.c     |    6 ++++++
+ 2 files changed, 9 insertions(+)
+
+--- a/drivers/net/ethernet/intel/e1000e/defines.h
++++ b/drivers/net/ethernet/intel/e1000e/defines.h
+@@ -638,6 +638,9 @@
+ /* For checksumming, the sum of all words in the NVM should equal 0xBABA. */
+ #define NVM_SUM                    0xBABA
++/* Uninitialized ("empty") checksum word value */
++#define NVM_CHECKSUM_UNINITIALIZED 0xFFFF
++
+ /* PBA (printed board assembly) number words */
+ #define NVM_PBA_OFFSET_0           8
+ #define NVM_PBA_OFFSET_1           9
+--- a/drivers/net/ethernet/intel/e1000e/nvm.c
++++ b/drivers/net/ethernet/intel/e1000e/nvm.c
+@@ -558,6 +558,12 @@ s32 e1000e_validate_nvm_checksum_generic
+               checksum += nvm_data;
+       }
++      if (hw->mac.type == e1000_pch_tgp &&
++          nvm_data == NVM_CHECKSUM_UNINITIALIZED) {
++              e_dbg("Uninitialized NVM Checksum on TGP platform - ignoring\n");
++              return 0;
++      }
++
+       if (checksum != (u16)NVM_SUM) {
+               e_dbg("NVM Checksum Invalid\n");
+               return -E1000_ERR_NVM;
diff --git a/queue-5.10/gve-fix-stuck-tx-queue-for-dq-queue-format.patch b/queue-5.10/gve-fix-stuck-tx-queue-for-dq-queue-format.patch
new file mode 100644 (file)
index 0000000..1ee87e8
--- /dev/null
@@ -0,0 +1,125 @@
+From b03f15c0192b184078206760c839054ae6eb4eaa Mon Sep 17 00:00:00 2001
+From: Praveen Kaligineedi <pkaligineedi@google.com>
+Date: Thu, 17 Jul 2025 19:20:24 +0000
+Subject: gve: Fix stuck TX queue for DQ queue format
+
+From: Praveen Kaligineedi <pkaligineedi@google.com>
+
+commit b03f15c0192b184078206760c839054ae6eb4eaa upstream.
+
+gve_tx_timeout was calculating missed completions in a way that is only
+relevant in the GQ queue format. Additionally, it was attempting to
+disable device interrupts, which is not needed in either GQ or DQ queue
+formats.
+
+As a result, TX timeouts with the DQ queue format likely would have
+triggered early resets without kicking the queue at all.
+
+This patch drops the check for pending work altogether and always kicks
+the queue after validating the queue has not seen a TX timeout too
+recently.
+
+Cc: stable@vger.kernel.org
+Fixes: 87a7f321bb6a ("gve: Recover from queue stall due to missed IRQ")
+Co-developed-by: Tim Hostetler <thostet@google.com>
+Signed-off-by: Tim Hostetler <thostet@google.com>
+Signed-off-by: Praveen Kaligineedi <pkaligineedi@google.com>
+Signed-off-by: Harshitha Ramamurthy <hramamurthy@google.com>
+Link: https://patch.msgid.link/20250717192024.1820931-1-hramamurthy@google.com
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/net/ethernet/google/gve/gve_main.c |   71 +++++++++++++++--------------
+ 1 file changed, 39 insertions(+), 32 deletions(-)
+
+--- a/drivers/net/ethernet/google/gve/gve_main.c
++++ b/drivers/net/ethernet/google/gve/gve_main.c
+@@ -944,49 +944,56 @@ static void gve_turnup(struct gve_priv *
+       gve_set_napi_enabled(priv);
+ }
+-static void gve_tx_timeout(struct net_device *dev, unsigned int txqueue)
++static struct gve_notify_block *gve_get_tx_notify_block(struct gve_priv *priv,
++                                                      unsigned int txqueue)
+ {
+-      struct gve_notify_block *block;
+-      struct gve_tx_ring *tx = NULL;
+-      struct gve_priv *priv;
+-      u32 last_nic_done;
+-      u32 current_time;
+       u32 ntfy_idx;
+-      netdev_info(dev, "Timeout on tx queue, %d", txqueue);
+-      priv = netdev_priv(dev);
+       if (txqueue > priv->tx_cfg.num_queues)
+-              goto reset;
++              return NULL;
+       ntfy_idx = gve_tx_idx_to_ntfy(priv, txqueue);
+       if (ntfy_idx >= priv->num_ntfy_blks)
+-              goto reset;
++              return NULL;
++
++      return &priv->ntfy_blocks[ntfy_idx];
++}
++
++static bool gve_tx_timeout_try_q_kick(struct gve_priv *priv,
++                                    unsigned int txqueue)
++{
++      struct gve_notify_block *block;
++      u32 current_time;
+-      block = &priv->ntfy_blocks[ntfy_idx];
+-      tx = block->tx;
++      block = gve_get_tx_notify_block(priv, txqueue);
++
++      if (!block)
++              return false;
+       current_time = jiffies_to_msecs(jiffies);
+-      if (tx->last_kick_msec + MIN_TX_TIMEOUT_GAP > current_time)
+-              goto reset;
++      if (block->tx->last_kick_msec + MIN_TX_TIMEOUT_GAP > current_time)
++              return false;
++
++      netdev_info(priv->dev, "Kicking queue %d", txqueue);
++      napi_schedule(&block->napi);
++      block->tx->last_kick_msec = current_time;
++      return true;
++}
++
++static void gve_tx_timeout(struct net_device *dev, unsigned int txqueue)
++{
++      struct gve_notify_block *block;
++      struct gve_priv *priv;
++
++      netdev_info(dev, "Timeout on tx queue, %d", txqueue);
++      priv = netdev_priv(dev);
++
++      if (!gve_tx_timeout_try_q_kick(priv, txqueue))
++              gve_schedule_reset(priv);
+-      /* Check to see if there are missed completions, which will allow us to
+-       * kick the queue.
+-       */
+-      last_nic_done = gve_tx_load_event_counter(priv, tx);
+-      if (last_nic_done - tx->done) {
+-              netdev_info(dev, "Kicking queue %d", txqueue);
+-              iowrite32be(GVE_IRQ_MASK, gve_irq_doorbell(priv, block));
+-              napi_schedule(&block->napi);
+-              tx->last_kick_msec = current_time;
+-              goto out;
+-      } // Else reset.
+-
+-reset:
+-      gve_schedule_reset(priv);
+-
+-out:
+-      if (tx)
+-              tx->queue_timeout++;
++      block = gve_get_tx_notify_block(priv, txqueue);
++      if (block)
++              block->tx->queue_timeout++;
+       priv->tx_timeo_cnt++;
+ }
diff --git a/queue-5.10/nilfs2-reject-invalid-file-types-when-reading-inodes.patch b/queue-5.10/nilfs2-reject-invalid-file-types-when-reading-inodes.patch
new file mode 100644 (file)
index 0000000..7014a2c
--- /dev/null
@@ -0,0 +1,48 @@
+From 4aead50caf67e01020c8be1945c3201e8a972a27 Mon Sep 17 00:00:00 2001
+From: Ryusuke Konishi <konishi.ryusuke@gmail.com>
+Date: Thu, 10 Jul 2025 22:49:08 +0900
+Subject: nilfs2: reject invalid file types when reading inodes
+
+From: Ryusuke Konishi <konishi.ryusuke@gmail.com>
+
+commit 4aead50caf67e01020c8be1945c3201e8a972a27 upstream.
+
+To prevent inodes with invalid file types from tripping through the vfs
+and causing malfunctions or assertion failures, add a missing sanity check
+when reading an inode from a block device.  If the file type is not valid,
+treat it as a filesystem error.
+
+Link: https://lkml.kernel.org/r/20250710134952.29862-1-konishi.ryusuke@gmail.com
+Fixes: 05fe58fdc10d ("nilfs2: inode operations")
+Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
+Reported-by: syzbot+895c23f6917da440ed0d@syzkaller.appspotmail.com
+Link: https://syzkaller.appspot.com/bug?extid=895c23f6917da440ed0d
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ fs/nilfs2/inode.c |    9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+--- a/fs/nilfs2/inode.c
++++ b/fs/nilfs2/inode.c
+@@ -517,11 +517,18 @@ static int __nilfs_read_inode(struct sup
+               inode->i_op = &nilfs_symlink_inode_operations;
+               inode_nohighmem(inode);
+               inode->i_mapping->a_ops = &nilfs_aops;
+-      } else {
++      } else if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode) ||
++                 S_ISFIFO(inode->i_mode) || S_ISSOCK(inode->i_mode)) {
+               inode->i_op = &nilfs_special_inode_operations;
+               init_special_inode(
+                       inode, inode->i_mode,
+                       huge_decode_dev(le64_to_cpu(raw_inode->i_device_code)));
++      } else {
++              nilfs_error(sb,
++                          "invalid file type bits in mode 0%o for inode %lu",
++                          inode->i_mode, ino);
++              err = -EIO;
++              goto failed_unmap;
+       }
+       nilfs_ifile_unmap_inode(root->ifile, ino, bh);
+       brelse(bh);
index ce040bf85352d4912eca75cf10de21a65e5057d0..3cd30d3904c5edee294182d1cc5378cd3e8811db 100644 (file)
@@ -62,3 +62,8 @@ net-sched-sch_qfq-avoid-triggering-might_sleep-in-at.patch
 net-hns3-refine-the-struct-hane3_tc_info.patch
 net-hns3-fixed-vf-get-max-channels-bug.patch
 i2c-qup-jump-out-of-the-loop-in-case-of-timeout.patch
+alsa-hda-realtek-add-mute-led-support-for-hp-pavilion-15-eg0xxx.patch
+e1000e-disregard-nvm-checksum-on-tgp-when-valid-checksum-bit-is-not-set.patch
+e1000e-ignore-uninitialized-checksum-word-on-tgp.patch
+gve-fix-stuck-tx-queue-for-dq-queue-format.patch
+nilfs2-reject-invalid-file-types-when-reading-inodes.patch