From: Ben Skeggs Date: Wed, 17 Feb 2016 18:10:04 +0000 (+1000) Subject: drm/nouveau/bios/devinit: properly handle unknown generic conditions X-Git-Tag: v4.6-rc1~12^2~16^2~83 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=e24c9c44d7a3b4a57661100efc11b340ecdc873c;p=uclinux-h8%2Flinux.git drm/nouveau/bios/devinit: properly handle unknown generic conditions Upon encountering an unknown condition code, the script interpreter is supposed to skip 'size' bytes and continue at the next devinit token. Signed-off-by: Ben Skeggs --- diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c index c99b6676171b..38ed09fd3d2f 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bios/init.c @@ -795,11 +795,11 @@ init_generic_condition(struct nvbios_init *init) struct nvkm_bios *bios = init->bios; struct nvbios_dpout info; u8 cond = nvbios_rd08(bios, init->offset + 1); - u8 unkn = nvbios_rd08(bios, init->offset + 2); + u8 size = nvbios_rd08(bios, init->offset + 2); u8 ver, hdr, cnt, len; u16 data; - trace("GENERIC_CONDITION\t0x%02x 0x%02x\n", cond, unkn); + trace("GENERIC_CONDITION\t0x%02x 0x%02x\n", cond, size); init->offset += 3; switch (cond) { @@ -829,6 +829,7 @@ init_generic_condition(struct nvbios_init *init) break; default: warn("INIT_GENERIC_CONDITON: unknown 0x%02x\n", cond); + init->offset += size; break; } }