On Thu, Jan 11, 2018 at 09:27:24PM +0800, linzhecheng wrote: > Start a vm with qemu-kvm -enable-kvm -vnc :66 -smp 1 -m 1024 -hda > redhat_5.11.qcow2 -device pcnet -vga cirrus, > then use VNC client to connect to VM, and excute the code below in guest > OS will lead to qemu crash: > > int main() > { > iopl(3); > srand(time(NULL)); > int a,b; > while(1){ > a = rand()%0x100; > b = 0x3c0 + (rand()%0x20); > outb(a,b); > } > return 0; > } > > The above code is writing the registers of VGA randomly. > We can write VGA CRT controller registers index 0x0C or 0x0D > (which is the start address register) to modify the > the display memory address of the upper left pixel > or character of the screen. The address may be out of the > range of vga ram. So we should check the validation of memory address > when reading or writing it to avoid segfault.
Patch queued up. thanks, Gerd