Skip to content
  • Philippe Mathieu-Daudé's avatar
    fc1bff95
    hw/misc/pca9552: Add missing TypeInfo::class_size field · fc1bff95
    Philippe Mathieu-Daudé authored
    
    
    When adding the generic PCA955xClass in commit 736132e4, we
    forgot to set the class_size field. Fill it now to avoid:
    
      (gdb) run -machine mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      Starting program: ../../qemu/qemu/arm-softmmu/qemu-system-arm -machine mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      double free or corruption (!prev)
      Thread 1 "qemu-system-arm" received signal SIGABRT, Aborted.
      __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      (gdb) where
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x00007ffff75d8859 in __GI_abort () at abort.c:79
      #2  0x00007ffff76433ee in __libc_message
          (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff776d285 "%s\n")
          at ../sysdeps/posix/libc_fatal.c:155
      #3  0x00007ffff764b47c in malloc_printerr
          (str=str@entry=0x7ffff776f690 "double free or corruption (!prev)")
          at malloc.c:5347
      #4  0x00007ffff764d12c in _int_free
          (av=0x7ffff779eb80 <main_arena>, p=0x5555567a3990, have_lock=<optimized out>) at malloc.c:4317
      #5  0x0000555555c906c3 in type_initialize_interface
          (ti=ti@entry=0x5555565b8f40, interface_type=0x555556597ad0, parent_type=0x55555662ca10) at qom/object.c:259
      #6  0x0000555555c902da in type_initialize (ti=ti@entry=0x5555565b8f40)
          at qom/object.c:323
      #7  0x0000555555c90d20 in type_initialize (ti=0x5555565b8f40)
          at qom/object.c:1028
    
      $ valgrind --track-origins=yes qemu-system-arm -M mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      ==77479== Memcheck, a memory error detector
      ==77479== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
      ==77479== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
      ==77479== Command: qemu-system-arm -M mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      ==77479==
      ==77479== Invalid write of size 2
      ==77479==    at 0x6D8322: pca9552_class_init (pca9552.c:424)
      ==77479==    by 0x844D1F: type_initialize (object.c:1029)
      ==77479==    by 0x844D1F: object_class_foreach_tramp (object.c:1016)
      ==77479==    by 0x4AE1057: g_hash_table_foreach (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.2)
      ==77479==    by 0x8453A4: object_class_foreach (object.c:1038)
      ==77479==    by 0x8453A4: object_class_get_list (object.c:1095)
      ==77479==    by 0x556194: select_machine (vl.c:2416)
      ==77479==    by 0x556194: qemu_init (vl.c:3828)
      ==77479==    by 0x40AF9C: main (main.c:48)
      ==77479==  Address 0x583f108 is 0 bytes after a block of size 200 alloc'd
      ==77479==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==77479==    by 0x4AF8D30: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.2)
      ==77479==    by 0x844258: type_initialize.part.0 (object.c:306)
      ==77479==    by 0x844D1F: type_initialize (object.c:1029)
      ==77479==    by 0x844D1F: object_class_foreach_tramp (object.c:1016)
      ==77479==    by 0x4AE1057: g_hash_table_foreach (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.2)
      ==77479==    by 0x8453A4: object_class_foreach (object.c:1038)
      ==77479==    by 0x8453A4: object_class_get_list (object.c:1095)
      ==77479==    by 0x556194: select_machine (vl.c:2416)
      ==77479==    by 0x556194: qemu_init (vl.c:3828)
      ==77479==    by 0x40AF9C: main (main.c:48)
    
    Fixes: 736132e4 ("hw/misc/pca9552: Add generic PCA955xClass")
    Reported-by: default avatarJean-Christophe DUBOIS <jcd@tribudubois.net>
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Tested-by: default avatarJean-Christophe DUBOIS <jcd@tribudubois.net>
    Message-id: 20200629074704.23028-1-f4bug@amsat.org
    Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    fc1bff95
    hw/misc/pca9552: Add missing TypeInfo::class_size field
    Philippe Mathieu-Daudé authored
    
    
    When adding the generic PCA955xClass in commit 736132e4, we
    forgot to set the class_size field. Fill it now to avoid:
    
      (gdb) run -machine mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      Starting program: ../../qemu/qemu/arm-softmmu/qemu-system-arm -machine mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      double free or corruption (!prev)
      Thread 1 "qemu-system-arm" received signal SIGABRT, Aborted.
      __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      (gdb) where
      #0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
      #1  0x00007ffff75d8859 in __GI_abort () at abort.c:79
      #2  0x00007ffff76433ee in __libc_message
          (action=action@entry=do_abort, fmt=fmt@entry=0x7ffff776d285 "%s\n")
          at ../sysdeps/posix/libc_fatal.c:155
      #3  0x00007ffff764b47c in malloc_printerr
          (str=str@entry=0x7ffff776f690 "double free or corruption (!prev)")
          at malloc.c:5347
      #4  0x00007ffff764d12c in _int_free
          (av=0x7ffff779eb80 <main_arena>, p=0x5555567a3990, have_lock=<optimized out>) at malloc.c:4317
      #5  0x0000555555c906c3 in type_initialize_interface
          (ti=ti@entry=0x5555565b8f40, interface_type=0x555556597ad0, parent_type=0x55555662ca10) at qom/object.c:259
      #6  0x0000555555c902da in type_initialize (ti=ti@entry=0x5555565b8f40)
          at qom/object.c:323
      #7  0x0000555555c90d20 in type_initialize (ti=0x5555565b8f40)
          at qom/object.c:1028
    
      $ valgrind --track-origins=yes qemu-system-arm -M mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      ==77479== Memcheck, a memory error detector
      ==77479== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
      ==77479== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
      ==77479== Command: qemu-system-arm -M mcimx6ul-evk -m 128M -display none -serial stdio -kernel ./OS.elf
      ==77479==
      ==77479== Invalid write of size 2
      ==77479==    at 0x6D8322: pca9552_class_init (pca9552.c:424)
      ==77479==    by 0x844D1F: type_initialize (object.c:1029)
      ==77479==    by 0x844D1F: object_class_foreach_tramp (object.c:1016)
      ==77479==    by 0x4AE1057: g_hash_table_foreach (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.2)
      ==77479==    by 0x8453A4: object_class_foreach (object.c:1038)
      ==77479==    by 0x8453A4: object_class_get_list (object.c:1095)
      ==77479==    by 0x556194: select_machine (vl.c:2416)
      ==77479==    by 0x556194: qemu_init (vl.c:3828)
      ==77479==    by 0x40AF9C: main (main.c:48)
      ==77479==  Address 0x583f108 is 0 bytes after a block of size 200 alloc'd
      ==77479==    at 0x483DD99: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==77479==    by 0x4AF8D30: g_malloc0 (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.2)
      ==77479==    by 0x844258: type_initialize.part.0 (object.c:306)
      ==77479==    by 0x844D1F: type_initialize (object.c:1029)
      ==77479==    by 0x844D1F: object_class_foreach_tramp (object.c:1016)
      ==77479==    by 0x4AE1057: g_hash_table_foreach (in /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0.6400.2)
      ==77479==    by 0x8453A4: object_class_foreach (object.c:1038)
      ==77479==    by 0x8453A4: object_class_get_list (object.c:1095)
      ==77479==    by 0x556194: select_machine (vl.c:2416)
      ==77479==    by 0x556194: qemu_init (vl.c:3828)
      ==77479==    by 0x40AF9C: main (main.c:48)
    
    Fixes: 736132e4 ("hw/misc/pca9552: Add generic PCA955xClass")
    Reported-by: default avatarJean-Christophe DUBOIS <jcd@tribudubois.net>
    Signed-off-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
    Tested-by: default avatarJean-Christophe DUBOIS <jcd@tribudubois.net>
    Message-id: 20200629074704.23028-1-f4bug@amsat.org
    Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
    Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Loading