summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2026-08-06 17:32:20 +0200
committerTakashi Iwai <tiwai@suse.de>2026-08-06 18:10:21 +0200
commite0fb960b227fcdebe22e4f26c9486d60943c0424 (patch)
treef5642dccf785ba98a3e0ee7dcea77eafc68c0bf8
parentf7dcecb92ed192ff5fcf842918fb1aaea84b5bdd (diff)
downloadlinux-e0fb960b227fcdebe22e4f26c9486d60943c0424.tar.gz
linux-e0fb960b227fcdebe22e4f26c9486d60943c0424.zip
ALSA: serial-u16550: Check card index validity at probe
serial-u16550 driver blindly trusts that the given devptr->id value is within the proper card index range at probe. It's OK for the devices the driver itself creates at the module probe time, but if the device is bound manually via sysfs interface, this could be -1 as "none", and this leads to OOB access for index[] and other parameters. Add a sanity check for the card index and warn/correct it if it's a value out of the range. Cc: stable@vger.kernel.org Signed-off-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20260806153227.1460166-4-tiwai@suse.de
-rw-r--r--sound/drivers/serial-u16550.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c
index 3c28961091b1..cc9c325df910 100644
--- a/sound/drivers/serial-u16550.c
+++ b/sound/drivers/serial-u16550.c
@@ -846,6 +846,12 @@ static int snd_serial_probe(struct platform_device *devptr)
int err;
int dev = devptr->id;
+ if (dev < 0 || dev >= SNDRV_CARDS) {
+ dev_warn(&devptr->dev,
+ "Invalid card index %d, using default 0\n", dev);
+ dev = 0;
+ }
+
switch (adaptor[dev]) {
case SNDRV_SERIAL_SOUNDCANVAS:
ins[dev] = 1;