ALSA: mpu401: Check card index validity at probe

mpu401 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-3-tiwai@suse.de
This commit is contained in:
Takashi Iwai
2026-08-06 17:32:19 +02:00
parent 819b106a9f
commit f7dcecb92e

View File

@@ -89,6 +89,12 @@ static int snd_mpu401_probe(struct platform_device *devptr)
int err;
struct snd_card *card;
if (dev < 0 || dev >= SNDRV_CARDS) {
dev_warn(&devptr->dev,
"Invalid card index %d, using default 0\n", dev);
dev = 0;
}
if (port[dev] == SNDRV_AUTO_PORT) {
dev_err(&devptr->dev, "specify port\n");
return -EINVAL;