]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 4.14
authorSasha Levin <sashal@kernel.org>
Sun, 12 Feb 2023 19:48:37 +0000 (14:48 -0500)
committerSasha Levin <sashal@kernel.org>
Sun, 12 Feb 2023 19:48:37 +0000 (14:48 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.14/alsa-pci-lx6464es-fix-a-debug-loop.patch [new file with mode: 0644]
queue-4.14/series

diff --git a/queue-4.14/alsa-pci-lx6464es-fix-a-debug-loop.patch b/queue-4.14/alsa-pci-lx6464es-fix-a-debug-loop.patch
new file mode 100644 (file)
index 0000000..6070388
--- /dev/null
@@ -0,0 +1,52 @@
+From 16fb648fba45a56aa26a441a13fa6d6e90bf0f58 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 31 Jan 2023 13:02:13 +0300
+Subject: ALSA: pci: lx6464es: fix a debug loop
+
+From: Dan Carpenter <error27@gmail.com>
+
+[ Upstream commit 5dac9f8dc25fefd9d928b98f6477ff3daefd73e3 ]
+
+This loop accidentally reuses the "i" iterator for both the inside and
+the outside loop.  The value of MAX_STREAM_BUFFER is 5.  I believe that
+chip->rmh.stat_len is in the 2-12 range.  If the value of .stat_len is
+4 or more then it will loop exactly one time, but if it's less then it
+is a forever loop.
+
+It looks like it was supposed to combined into one loop where
+conditions are checked.
+
+Fixes: 8e6320064c33 ("ALSA: lx_core: Remove useless #if 0 .. #endif")
+Signed-off-by: Dan Carpenter <error27@gmail.com>
+Link: https://lore.kernel.org/r/Y9jnJTis/mRFJAQp@kili
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ sound/pci/lx6464es/lx_core.c | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/sound/pci/lx6464es/lx_core.c b/sound/pci/lx6464es/lx_core.c
+index a80684bdc30d6..46f5362096710 100644
+--- a/sound/pci/lx6464es/lx_core.c
++++ b/sound/pci/lx6464es/lx_core.c
+@@ -508,12 +508,11 @@ int lx_buffer_ask(struct lx6464es *chip, u32 pipe, int is_capture,
+               dev_dbg(chip->card->dev,
+                       "CMD_08_ASK_BUFFERS: needed %d, freed %d\n",
+                           *r_needed, *r_freed);
+-              for (i = 0; i < MAX_STREAM_BUFFER; ++i) {
+-                      for (i = 0; i != chip->rmh.stat_len; ++i)
+-                              dev_dbg(chip->card->dev,
+-                                      "  stat[%d]: %x, %x\n", i,
+-                                          chip->rmh.stat[i],
+-                                          chip->rmh.stat[i] & MASK_DATA_SIZE);
++              for (i = 0; i < MAX_STREAM_BUFFER && i < chip->rmh.stat_len;
++                   ++i) {
++                      dev_dbg(chip->card->dev, "  stat[%d]: %x, %x\n", i,
++                              chip->rmh.stat[i],
++                              chip->rmh.stat[i] & MASK_DATA_SIZE);
+               }
+       }
+-- 
+2.39.0
+
index a5e5b96dd62ef2f87fb8d11e0510d99a8577e2e0..bb25c4e168bf5d12beac2059c63a8530e5d916c2 100644 (file)
@@ -25,3 +25,4 @@ serial-8250_dma-fix-dma-rx-completion-race.patch
 serial-8250_dma-fix-dma-rx-rearm-race.patch
 btrfs-limit-device-extents-to-the-device-size.patch
 alsa-emux-avoid-potential-array-out-of-bound-in-snd_emux_xg_control.patch
+alsa-pci-lx6464es-fix-a-debug-loop.patch