The bounds check used regno > 256 instead of regno >= 256,
allowing regno == 256. Valid indices are 0–255, resulting
in an out-of-bounds write.
Also remove the regno < 256 check in the truecolor path,
as it is always true with the corrected guard.
Signed-off-by: Ahmet Sezgin Duran <ahmet@sezginduran.net>
Link: https://patch.msgid.link/20260408181210.9672-1-ahmet@sezginduran.net
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
var = &info->var;
ret = 0;
- if (regno > 256) {
+ if (regno >= 256) {
dev_err(info->device, "regno = %d\n", regno);
return -EINVAL;
}
goto exit;
}
- if (info->fix.visual == FB_VISUAL_TRUECOLOR && regno < 256) {
+ if (info->fix.visual == FB_VISUAL_TRUECOLOR) {
u32 val;
if (var->bits_per_pixel == 16 ||