Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

char: applicom: fix NULL pointer dereference in ac_ioctl

Discovered by Atuin - Automated Vulnerability Discovery Engine.

In ac_ioctl, the validation of IndexCard and the check for a valid
RamIO pointer are skipped when cmd is 6. However, the function
unconditionally executes readb(apbs[IndexCard].RamIO + VERS) at the
end.

If cmd is 6, IndexCard may reference a board that does not exist
(where RamIO is NULL), leading to a NULL pointer dereference.

Fix this by skipping the readb access when cmd is 6, as this
command is a global information query and does not target a specific
board context.

Signed-off-by: Tianchu Chen <flynnnchen@tencent.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Cc: stable <stable@kernel.org>
Link: https://patch.msgid.link/20251128155323.a786fde92ebb926cbe96fcb1@linux.dev
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Tianchu Chen and committed by
Greg Kroah-Hartman
82d12088 cbe1d77e

+4 -1
+4 -1
drivers/char/applicom.c
··· 835 835 ret = -ENOTTY; 836 836 break; 837 837 } 838 - Dummy = readb(apbs[IndexCard].RamIO + VERS); 838 + 839 + if (cmd != 6) 840 + Dummy = readb(apbs[IndexCard].RamIO + VERS); 841 + 839 842 kfree(adgl); 840 843 mutex_unlock(&ac_mutex); 841 844 return ret;