dump/win_dump: limit number of processed PRCBs
When number of CPUs utilized by guest Windows is less than defined in QEMU (i.e., desktop versions of Windows severely limits number of CPU sockets), patch_and_save_context routine accesses non-existent PRCB and fails. So, limit number of processed PRCBs by NumberProcessors taken from guest Windows driver. Signed-off-by: Viktor Prutyanov <viktor.prutyanov@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20221019235948.656411-1-viktor.prutyanov@redhat.com>
This commit is contained in:
parent
113d8f4e95
commit
e38c24cb58
@ -273,6 +273,13 @@ static void patch_and_save_context(WinDumpHeader *h, bool x64,
|
|||||||
uint64_t Context;
|
uint64_t Context;
|
||||||
WinContext ctx;
|
WinContext ctx;
|
||||||
|
|
||||||
|
if (i >= WIN_DUMP_FIELD(NumberProcessors)) {
|
||||||
|
warn_report("win-dump: number of QEMU CPUs is bigger than"
|
||||||
|
" NumberProcessors (%u) in guest Windows",
|
||||||
|
WIN_DUMP_FIELD(NumberProcessors));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (cpu_read_ptr(x64, first_cpu,
|
if (cpu_read_ptr(x64, first_cpu,
|
||||||
KiProcessorBlock + i * win_dump_ptr_size(x64),
|
KiProcessorBlock + i * win_dump_ptr_size(x64),
|
||||||
&Prcb)) {
|
&Prcb)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user