mm: validate vseg before using it

Reported-by: syzbot+da9595a72d0762aaa48d@syzkaller.appspotmail.com
PiperOrigin-RevId: 698826152
This commit is contained in:
Andrei Vagin
2024-11-21 10:15:08 -08:00
committed by gVisor bot
parent f66f0e235a
commit ae1d4ccf02
+5 -1
View File
@@ -1270,6 +1270,7 @@ func (mm *MemoryManager) madviseMutateVMAs(addr hostarch.Addr, length uint64, f
return err
}
if ar.End <= vseg.End() {
mm.vmas.MergeNext(vseg)
break
}
vgap := vseg.NextGap()
@@ -1277,8 +1278,11 @@ func (mm *MemoryManager) madviseMutateVMAs(addr hostarch.Addr, length uint64, f
hadvgap = true
}
vseg = vgap.NextSegment()
if !vseg.Ok() {
// No VMA reaching to the end of ar.
return linuxerr.ENOMEM
}
}
mm.vmas.MergePrev(vseg)
if hadvgap {
return linuxerr.ENOMEM
}