Hi On Thu, Oct 20, 2022 at 3:59 AM Viktor Prutyanov < viktor.prutya...@redhat.com> wrote:
> 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.prutya...@redhat.com> > Assuming the used CPUs are in the same order. Or is there a way to query it instead? lgtm otherwise Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com> > --- > dump/win_dump.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/dump/win_dump.c b/dump/win_dump.c > index fd91350fbb..f20b6051b6 100644 > --- a/dump/win_dump.c > +++ b/dump/win_dump.c > @@ -273,6 +273,13 @@ static void patch_and_save_context(WinDumpHeader *h, > bool x64, > uint64_t Context; > 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, > KiProcessorBlock + i * win_dump_ptr_size(x64), > &Prcb)) { > -- > 2.35.1 > >