drm/nouveau/pm: Prevent overflow in nouveau_perf_init()
While parsing the perf table, there is no check if the num of entries read from the vbios is less than the currently allocated number. In case of a buggy vbios this will cause overwriting of kernel memory, causing aditional problems. Add a simple check in order to prevent the case Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
0897554cdd
commit
2905544073
1 changed files with 5 additions and 0 deletions
|
@ -182,6 +182,11 @@ nouveau_perf_init(struct drm_device *dev)
|
|||
entries = perf[2];
|
||||
}
|
||||
|
||||
if (entries > NOUVEAU_PM_MAX_LEVEL) {
|
||||
NV_DEBUG(dev, "perf table has too many entries - buggy vbios?\n");
|
||||
entries = NOUVEAU_PM_MAX_LEVEL;
|
||||
}
|
||||
|
||||
entry = perf + headerlen;
|
||||
for (i = 0; i < entries; i++) {
|
||||
struct nouveau_pm_level *perflvl = &pm->perflvl[pm->nr_perflvl];
|
||||
|
|
Reference in a new issue