diff mbox series

[v2,5/6] migration: Fix analyze-migration read operation signedness

Message ID 20231009184326.15777-6-farosas@suse.de
State New
Headers show
Series scripts/migration: Fix analyze-migration.py and add a test | expand

Commit Message

Fabiano Rosas Oct. 9, 2023, 6:43 p.m. UTC
The migration code uses unsigned values for 16, 32 and 64-bit
operations. Fix the script to do the same.

This was causing an issue when parsing the migration stream generated
on the ppc64 target because one of instance_ids was larger than the
32bit signed maximum:

Traceback (most recent call last):
  File "/home/fabiano/kvm/qemu/build/scripts/analyze-migration.py", line 658, in <module>
    dump.read(dump_memory = args.memory)
  File "/home/fabiano/kvm/qemu/build/scripts/analyze-migration.py", line 592, in read
    classdesc = self.section_classes[section_key]
KeyError: ('spapr_iommu', -2147483648)

Signed-off-by: Fabiano Rosas <farosas@suse.de>
---
 scripts/analyze-migration.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Juan Quintela Oct. 11, 2023, 1:24 p.m. UTC | #1
Fabiano Rosas <farosas@suse.de> wrote:
> The migration code uses unsigned values for 16, 32 and 64-bit
> operations. Fix the script to do the same.
>
> This was causing an issue when parsing the migration stream generated
> on the ppc64 target because one of instance_ids was larger than the
> 32bit signed maximum:
>
> Traceback (most recent call last):
>   File "/home/fabiano/kvm/qemu/build/scripts/analyze-migration.py", line 658, in <module>
>     dump.read(dump_memory = args.memory)
>   File "/home/fabiano/kvm/qemu/build/scripts/analyze-migration.py", line 592, in read
>     classdesc = self.section_classes[section_key]
> KeyError: ('spapr_iommu', -2147483648)
>
> Signed-off-by: Fabiano Rosas <farosas@suse.de>

Reviewed-by: Juan Quintela <quintela@redhat.com>
diff mbox series

Patch

diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
index 56ab04dd2d..de506cb8bf 100755
--- a/scripts/analyze-migration.py
+++ b/scripts/analyze-migration.py
@@ -38,13 +38,13 @@  def __init__(self, filename):
         self.file = open(self.filename, "rb")
 
     def read64(self):
-        return int.from_bytes(self.file.read(8), byteorder='big', signed=True)
+        return int.from_bytes(self.file.read(8), byteorder='big', signed=False)
 
     def read32(self):
-        return int.from_bytes(self.file.read(4), byteorder='big', signed=True)
+        return int.from_bytes(self.file.read(4), byteorder='big', signed=False)
 
     def read16(self):
-        return int.from_bytes(self.file.read(2), byteorder='big', signed=True)
+        return int.from_bytes(self.file.read(2), byteorder='big', signed=False)
 
     def read8(self):
         return int.from_bytes(self.file.read(1), byteorder='big', signed=True)