[PATCH v4 00/19] contrib/elf2dmp: Improve robustness

Akihiko Odaki posted 19 patches 1 month, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240307-elf2dmp-v4-0-4f324ad4d99d@daynix.com
Maintainers: Viktor Prutyanov <viktor.prutyanov@phystech.edu>, Akihiko Odaki <akihiko.odaki@daynix.com>
MAINTAINERS                 |   1 +
contrib/elf2dmp/addrspace.h |   6 +-
contrib/elf2dmp/download.h  |   2 +-
contrib/elf2dmp/pdb.h       |   2 +-
contrib/elf2dmp/qemu_elf.h  |   2 +-
contrib/elf2dmp/addrspace.c |  63 ++++++++++-------
contrib/elf2dmp/download.c  |  12 ++--
contrib/elf2dmp/main.c      | 168 ++++++++++++++++++++------------------------
contrib/elf2dmp/pdb.c       |  61 +++++++---------
contrib/elf2dmp/qemu_elf.c  | 150 ++++++++++++++++++++++-----------------
contrib/elf2dmp/meson.build |   2 +-
11 files changed, 238 insertions(+), 231 deletions(-)
[PATCH v4 00/19] contrib/elf2dmp: Improve robustness
Posted by Akihiko Odaki 1 month, 3 weeks ago
elf2dmp sometimes fails to work with partially corrupted dumps, and also
emits warnings when sanitizers are in use. This series are collections
of changes to improve the situation.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
---
Changes in v4:
- Remove unnecessary !! idiom (Peter Maydell)
- Link to v3: https://lore.kernel.org/r/20240306-elf2dmp-v3-0-d74e6c3da49c@daynix.com

Changes in v3:
- Split patch "contrib/elf2dmp: Conform to the error reporting pattern".
  (Peter Maydell)
- Stated that the relevant value is little-endian in patch
  "contrib/elf2dmp: Use lduw_le_p() to read PDB".
- Added a message saying "Build it only for little endian hosts until
  they are fixed." for patch "contrib/elf2dmp: Build only for little
  endian host".
- Added patch "contrib/elf2dmp: Ensure phdrs fit in file" to fix
  https://gitlab.com/qemu-project/qemu/-/issues/2202 as patch
  "contrib/elf2dmp: Clamp QEMU note to file size" was not really fixing
  the crash.
- Link to v2: https://lore.kernel.org/r/20240305-elf2dmp-v2-0-86ff2163ad32@daynix.com

Changes in v2:
- Added patch "contrib/elf2dmp: Remove unnecessary err flags".
- Added patch "contrib/elf2dmp: Assume error by default".
- Added patch "contrib/elf2dmp: Conform to the error reporting pattern".
- Added patch "contrib/elf2dmp: Build only for little endian host".
- Added patch "contrib/elf2dmp: Use GPtrArray".
- Added patch "contrib/elf2dmp: Clamp QEMU note to file size".
- Changed error handling in patch "contrib/elf2dmp: Ensure segment fits
  in file" (Peter Maydell)
- Added a comment to fill_context() that it continues on failure.
  (Peter Maydell)
- Link to v1: https://lore.kernel.org/r/20240303-elf2dmp-v1-0-bea6649fe3e6@daynix.com

---
Akihiko Odaki (19):
      contrib/elf2dmp: Remove unnecessary err flags
      contrib/elf2dmp: Assume error by default
      contrib/elf2dmp: Continue even contexts are lacking
      contrib/elf2dmp: Change pa_space_create() signature
      contrib/elf2dmp: Fix error reporting style in addrspace.c
      contrib/elf2dmp: Fix error reporting style in download.c
      contrib/elf2dmp: Fix error reporting style in pdb.c
      contrib/elf2dmp: Fix error reporting style in qemu_elf.c
      contrib/elf2dmp: Fix error reporting style in main.c
      contrib/elf2dmp: Always check for PA resolution failure
      contrib/elf2dmp: Always destroy PA space
      contrib/elf2dmp: Ensure segment fits in file
      contrib/elf2dmp: Use lduw_le_p() to read PDB
      contrib/elf2dmp: Use rol64() to decode
      MAINTAINERS: Add Akihiko Odaki as a elf2dmp reviewer
      contrib/elf2dmp: Build only for little endian host
      contrib/elf2dmp: Use GPtrArray
      contrib/elf2dmp: Clamp QEMU note to file size
      contrib/elf2dmp: Ensure phdrs fit in file

 MAINTAINERS                 |   1 +
 contrib/elf2dmp/addrspace.h |   6 +-
 contrib/elf2dmp/download.h  |   2 +-
 contrib/elf2dmp/pdb.h       |   2 +-
 contrib/elf2dmp/qemu_elf.h  |   2 +-
 contrib/elf2dmp/addrspace.c |  63 ++++++++++-------
 contrib/elf2dmp/download.c  |  12 ++--
 contrib/elf2dmp/main.c      | 168 ++++++++++++++++++++------------------------
 contrib/elf2dmp/pdb.c       |  61 +++++++---------
 contrib/elf2dmp/qemu_elf.c  | 150 ++++++++++++++++++++++-----------------
 contrib/elf2dmp/meson.build |   2 +-
 11 files changed, 238 insertions(+), 231 deletions(-)
---
base-commit: bfe8020c814a30479a4241aaa78b63960655962b
change-id: 20240301-elf2dmp-1a6a551f8663

Best regards,
-- 
Akihiko Odaki <akihiko.odaki@daynix.com>
Re: [PATCH v4 00/19] contrib/elf2dmp: Improve robustness
Posted by Peter Maydell 1 month, 2 weeks ago
On Thu, 7 Mar 2024 at 10:20, Akihiko Odaki <akihiko.odaki@daynix.com> wrote:
>
> elf2dmp sometimes fails to work with partially corrupted dumps, and also
> emits warnings when sanitizers are in use. This series are collections
> of changes to improve the situation.
>
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---

Thanks for this -- I've taken it via target-arm.next since I
want to make another pullreq for softfreeze anyway.

I didn't take the "Build only for little endian host" patch. I thought
about it, and decided that on balance it was probably best not to:
in practice we haven't had anybody say "I tried to run this on a BE
host and it didn't work" (unsurprising, most users especially of Windows
VMs will be on LE hosts), and if we do stop building it for BE this
seems like it might well create work for downstream distros who might
have to make their package creation deal with "this binary doesn't
get built on these hosts" (and then remove that handling again in future
if we ever fix the endianness bugs).

thanks
-- PMM
Re: [PATCH v4 00/19] contrib/elf2dmp: Improve robustness
Posted by Viktor Prutyanov 1 month, 2 weeks ago

> elf2dmp sometimes fails to work with partially corrupted dumps, and also
> emits warnings when sanitizers are in use. This series are collections
> of changes to improve the situation.
> 
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
> ---
> Changes in v4:
> - Remove unnecessary !! idiom (Peter Maydell)
> - Link to v3: https://lore.kernel.org/r/20240306-elf2dmp-v3-0-d74e6c3da49c@daynix.com
> 
> Changes in v3:
> - Split patch "contrib/elf2dmp: Conform to the error reporting pattern".
> (Peter Maydell)
> - Stated that the relevant value is little-endian in patch
> "contrib/elf2dmp: Use lduw_le_p() to read PDB".
> - Added a message saying "Build it only for little endian hosts until
> they are fixed." for patch "contrib/elf2dmp: Build only for little
> endian host".
> - Added patch "contrib/elf2dmp: Ensure phdrs fit in file" to fix
> https://gitlab.com/qemu-project/qemu/-/issues/2202 as patch
> "contrib/elf2dmp: Clamp QEMU note to file size" was not really fixing
> the crash.
> - Link to v2: https://lore.kernel.org/r/20240305-elf2dmp-v2-0-86ff2163ad32@daynix.com
> 
> Changes in v2:
> - Added patch "contrib/elf2dmp: Remove unnecessary err flags".
> - Added patch "contrib/elf2dmp: Assume error by default".
> - Added patch "contrib/elf2dmp: Conform to the error reporting pattern".
> - Added patch "contrib/elf2dmp: Build only for little endian host".
> - Added patch "contrib/elf2dmp: Use GPtrArray".
> - Added patch "contrib/elf2dmp: Clamp QEMU note to file size".
> - Changed error handling in patch "contrib/elf2dmp: Ensure segment fits
> in file" (Peter Maydell)
> - Added a comment to fill_context() that it continues on failure.
> (Peter Maydell)
> - Link to v1: https://lore.kernel.org/r/20240303-elf2dmp-v1-0-bea6649fe3e6@daynix.com
> 
> ---
> Akihiko Odaki (19):
> contrib/elf2dmp: Remove unnecessary err flags
> contrib/elf2dmp: Assume error by default
> contrib/elf2dmp: Continue even contexts are lacking
> contrib/elf2dmp: Change pa_space_create() signature
> contrib/elf2dmp: Fix error reporting style in addrspace.c
> contrib/elf2dmp: Fix error reporting style in download.c
> contrib/elf2dmp: Fix error reporting style in pdb.c
> contrib/elf2dmp: Fix error reporting style in qemu_elf.c
> contrib/elf2dmp: Fix error reporting style in main.c
> contrib/elf2dmp: Always check for PA resolution failure
> contrib/elf2dmp: Always destroy PA space
> contrib/elf2dmp: Ensure segment fits in file
> contrib/elf2dmp: Use lduw_le_p() to read PDB
> contrib/elf2dmp: Use rol64() to decode
> MAINTAINERS: Add Akihiko Odaki as a elf2dmp reviewer
> contrib/elf2dmp: Build only for little endian host
> contrib/elf2dmp: Use GPtrArray
> contrib/elf2dmp: Clamp QEMU note to file size
> contrib/elf2dmp: Ensure phdrs fit in file
> 
> MAINTAINERS | 1 +
> contrib/elf2dmp/addrspace.h | 6 +-
> contrib/elf2dmp/download.h | 2 +-
> contrib/elf2dmp/pdb.h | 2 +-
> contrib/elf2dmp/qemu_elf.h | 2 +-
> contrib/elf2dmp/addrspace.c | 63 ++++++++++-------
> contrib/elf2dmp/download.c | 12 ++--
> contrib/elf2dmp/main.c | 168 ++++++++++++++++++++------------------------
> contrib/elf2dmp/pdb.c | 61 +++++++---------
> contrib/elf2dmp/qemu_elf.c | 150 ++++++++++++++++++++++-----------------
> contrib/elf2dmp/meson.build | 2 +-
> 11 files changed, 238 insertions(+), 231 deletions(-)
> ---
> base-commit: bfe8020c814a30479a4241aaa78b63960655962b
> change-id: 20240301-elf2dmp-1a6a551f8663
> 
> Best regards,
> 
> --
> Akihiko Odaki <akihiko.odaki@daynix.com>

Hi,

I've tested the series with Windows Server 2022 Standard (Build 20348), 4GiB, 4 vCPUs.

Tested-by: Viktor Prutyanov <viktor.prutyanov@phystech.edu>