[PATCH 00/39] Use g_assert_not_reached instead of (g_)assert(0, false)

Pierrick Bouvier posted 39 patches 2 months, 2 weeks ago
There is a newer version of this series
docs/spin/aio_notify_accept.promela     |  6 +++---
docs/spin/aio_notify_bug.promela        |  6 +++---
include/hw/s390x/cpu-topology.h         |  2 +-
accel/tcg/plugin-gen.c                  |  1 -
block/qcow2.c                           |  2 +-
block/ssh.c                             |  1 -
hw/acpi/aml-build.c                     |  3 +--
hw/arm/highbank.c                       |  2 +-
hw/char/avr_usart.c                     |  2 +-
hw/core/numa.c                          |  2 +-
hw/gpio/nrf51_gpio.c                    |  1 -
hw/hyperv/hyperv_testdev.c              |  6 +++---
hw/hyperv/vmbus.c                       | 12 ++++++------
hw/misc/imx6_ccm.c                      |  1 -
hw/misc/mac_via.c                       |  2 --
hw/net/e1000e_core.c                    |  2 +-
hw/net/i82596.c                         |  2 +-
hw/net/igb_core.c                       |  2 +-
hw/net/net_rx_pkt.c                     |  3 +--
hw/nvme/ctrl.c                          |  8 ++++----
hw/pci-host/gt64120.c                   |  2 --
hw/pci/pci-stub.c                       |  4 ++--
hw/ppc/spapr_events.c                   |  2 +-
hw/scsi/virtio-scsi.c                   |  1 -
hw/tpm/tpm_spapr.c                      |  1 -
hw/watchdog/watchdog.c                  |  2 +-
migration/dirtyrate.c                   |  2 +-
migration/migration-hmp-cmds.c          |  2 +-
migration/postcopy-ram.c                | 14 +++++++-------
migration/ram.c                         |  6 +++---
qobject/qlit.c                          |  2 +-
qobject/qnum.c                          |  8 ++++----
system/rtc.c                            |  2 +-
target/arm/hyp_gdbstub.c                |  1 -
target/i386/kvm/kvm.c                   |  4 ++--
target/ppc/dfp_helper.c                 |  8 ++++----
target/ppc/mmu_helper.c                 |  2 +-
target/riscv/monitor.c                  |  1 -
tests/qtest/ipmi-bt-test.c              |  2 +-
tests/qtest/ipmi-kcs-test.c             |  4 ++--
tests/qtest/migration-helpers.c         |  1 -
tests/qtest/numa-test.c                 | 10 +++++-----
tests/qtest/rtl8139-test.c              |  2 +-
tests/unit/test-xs-node.c               |  4 ++--
ui/qemu-pixman.c                        |  1 -
fpu/softfloat-parts.c.inc               |  2 --
target/riscv/insn_trans/trans_rvv.c.inc |  2 --
tcg/loongarch64/tcg-target.c.inc        |  1 -
scripts/checkpatch.pl                   |  3 +++
49 files changed, 72 insertions(+), 90 deletions(-)
[PATCH 00/39] Use g_assert_not_reached instead of (g_)assert(0, false)
Posted by Pierrick Bouvier 2 months, 2 weeks ago
This series cleans up all usages of assert/g_assert who are supposed to stop
execution of QEMU. We replace those by g_assert_not_reached().
It was suggested recently when cleaning codebase to build QEMU with gcc
and tsan: https://lore.kernel.org/qemu-devel/54bb02a6-1b12-460a-97f6-3f478ef766c6@linaro.org/.

In more, cleanup useless break after g_assert_not_reached();

And finally, ensure with scripts/checkpatch.pl that we don't reintroduce
(g_)assert(false) in the future.

Pierrick Bouvier (39):
  docs/spin: replace assert(0) with g_assert_not_reached()
  hw/acpi: replace assert(0) with g_assert_not_reached()
  hw/arm: replace assert(0) with g_assert_not_reached()
  hw/char: replace assert(0) with g_assert_not_reached()
  hw/core: replace assert(0) with g_assert_not_reached()
  hw/net: replace assert(0) with g_assert_not_reached()
  hw/watchdog: replace assert(0) with g_assert_not_reached()
  migration: replace assert(0) with g_assert_not_reached()
  qobject: replace assert(0) with g_assert_not_reached()
  system: replace assert(0) with g_assert_not_reached()
  target/ppc: replace assert(0) with g_assert_not_reached()
  tests/qtest: replace assert(0) with g_assert_not_reached()
  tests/unit: replace assert(0) with g_assert_not_reached()
  include/hw/s390x: replace assert(false) with g_assert_not_reached()
  block: replace assert(false) with g_assert_not_reached()
  hw/hyperv: replace assert(false) with g_assert_not_reached()
  hw/net: replace assert(false) with g_assert_not_reached()
  hw/nvme: replace assert(false) with g_assert_not_reached()
  hw/pci: replace assert(false) with g_assert_not_reached()
  hw/ppc: replace assert(false) with g_assert_not_reached()
  migration: replace assert(false) with g_assert_not_reached()
  target/i386/kvm: replace assert(false) with g_assert_not_reached()
  tests/qtest: replace assert(false) with g_assert_not_reached()
  accel/tcg: remove break after g_assert_not_reached()
  block: remove break after g_assert_not_reached()
  hw/acpi: remove break after g_assert_not_reached()
  hw/gpio: remove break after g_assert_not_reached()
  hw/misc: remove break after g_assert_not_reached()
  hw/net: remove break after g_assert_not_reached()
  hw/pci-host: remove break after g_assert_not_reached()
  hw/scsi: remove break after g_assert_not_reached()
  hw/tpm: remove break after g_assert_not_reached()
  target/arm: remove break after g_assert_not_reached()
  target/riscv: remove break after g_assert_not_reached()
  tests/qtest: remove break after g_assert_not_reached()
  ui: remove break after g_assert_not_reached()
  fpu: remove break after g_assert_not_reached()
  tcg/loongarch64: remove break after g_assert_not_reached()
  scripts/checkpatch.pl: emit error when using assert(false)

 docs/spin/aio_notify_accept.promela     |  6 +++---
 docs/spin/aio_notify_bug.promela        |  6 +++---
 include/hw/s390x/cpu-topology.h         |  2 +-
 accel/tcg/plugin-gen.c                  |  1 -
 block/qcow2.c                           |  2 +-
 block/ssh.c                             |  1 -
 hw/acpi/aml-build.c                     |  3 +--
 hw/arm/highbank.c                       |  2 +-
 hw/char/avr_usart.c                     |  2 +-
 hw/core/numa.c                          |  2 +-
 hw/gpio/nrf51_gpio.c                    |  1 -
 hw/hyperv/hyperv_testdev.c              |  6 +++---
 hw/hyperv/vmbus.c                       | 12 ++++++------
 hw/misc/imx6_ccm.c                      |  1 -
 hw/misc/mac_via.c                       |  2 --
 hw/net/e1000e_core.c                    |  2 +-
 hw/net/i82596.c                         |  2 +-
 hw/net/igb_core.c                       |  2 +-
 hw/net/net_rx_pkt.c                     |  3 +--
 hw/nvme/ctrl.c                          |  8 ++++----
 hw/pci-host/gt64120.c                   |  2 --
 hw/pci/pci-stub.c                       |  4 ++--
 hw/ppc/spapr_events.c                   |  2 +-
 hw/scsi/virtio-scsi.c                   |  1 -
 hw/tpm/tpm_spapr.c                      |  1 -
 hw/watchdog/watchdog.c                  |  2 +-
 migration/dirtyrate.c                   |  2 +-
 migration/migration-hmp-cmds.c          |  2 +-
 migration/postcopy-ram.c                | 14 +++++++-------
 migration/ram.c                         |  6 +++---
 qobject/qlit.c                          |  2 +-
 qobject/qnum.c                          |  8 ++++----
 system/rtc.c                            |  2 +-
 target/arm/hyp_gdbstub.c                |  1 -
 target/i386/kvm/kvm.c                   |  4 ++--
 target/ppc/dfp_helper.c                 |  8 ++++----
 target/ppc/mmu_helper.c                 |  2 +-
 target/riscv/monitor.c                  |  1 -
 tests/qtest/ipmi-bt-test.c              |  2 +-
 tests/qtest/ipmi-kcs-test.c             |  4 ++--
 tests/qtest/migration-helpers.c         |  1 -
 tests/qtest/numa-test.c                 | 10 +++++-----
 tests/qtest/rtl8139-test.c              |  2 +-
 tests/unit/test-xs-node.c               |  4 ++--
 ui/qemu-pixman.c                        |  1 -
 fpu/softfloat-parts.c.inc               |  2 --
 target/riscv/insn_trans/trans_rvv.c.inc |  2 --
 tcg/loongarch64/tcg-target.c.inc        |  1 -
 scripts/checkpatch.pl                   |  3 +++
 49 files changed, 72 insertions(+), 90 deletions(-)

-- 
2.39.2
Re: [PATCH 00/39] Use g_assert_not_reached instead of (g_)assert(0,false)
Posted by Philippe Mathieu-Daudé 2 months, 1 week ago
On 11/9/24 00:15, Pierrick Bouvier wrote:

> Pierrick Bouvier (39):
>    docs/spin: replace assert(0) with g_assert_not_reached()
>    hw/acpi: replace assert(0) with g_assert_not_reached()
>    hw/arm: replace assert(0) with g_assert_not_reached()
>    hw/char: replace assert(0) with g_assert_not_reached()
>    hw/core: replace assert(0) with g_assert_not_reached()
>    hw/net: replace assert(0) with g_assert_not_reached()
>    hw/watchdog: replace assert(0) with g_assert_not_reached()
>    migration: replace assert(0) with g_assert_not_reached()
>    qobject: replace assert(0) with g_assert_not_reached()
>    system: replace assert(0) with g_assert_not_reached()
>    target/ppc: replace assert(0) with g_assert_not_reached()
>    tests/qtest: replace assert(0) with g_assert_not_reached()
>    tests/unit: replace assert(0) with g_assert_not_reached()
>    include/hw/s390x: replace assert(false) with g_assert_not_reached()
>    block: replace assert(false) with g_assert_not_reached()
>    hw/hyperv: replace assert(false) with g_assert_not_reached()
>    hw/net: replace assert(false) with g_assert_not_reached()
>    hw/nvme: replace assert(false) with g_assert_not_reached()
>    hw/pci: replace assert(false) with g_assert_not_reached()
>    hw/ppc: replace assert(false) with g_assert_not_reached()
>    migration: replace assert(false) with g_assert_not_reached()
>    target/i386/kvm: replace assert(false) with g_assert_not_reached()
>    tests/qtest: replace assert(false) with g_assert_not_reached()
>    accel/tcg: remove break after g_assert_not_reached()
>    block: remove break after g_assert_not_reached()
>    hw/acpi: remove break after g_assert_not_reached()
>    hw/gpio: remove break after g_assert_not_reached()
>    hw/misc: remove break after g_assert_not_reached()
>    hw/net: remove break after g_assert_not_reached()
>    hw/pci-host: remove break after g_assert_not_reached()
>    hw/scsi: remove break after g_assert_not_reached()
>    hw/tpm: remove break after g_assert_not_reached()
>    target/arm: remove break after g_assert_not_reached()
>    target/riscv: remove break after g_assert_not_reached()
>    tests/qtest: remove break after g_assert_not_reached()
>    ui: remove break after g_assert_not_reached()
>    fpu: remove break after g_assert_not_reached()
>    tcg/loongarch64: remove break after g_assert_not_reached()
>    scripts/checkpatch.pl: emit error when using assert(false)

I'm queuing reviewed patches 4,5,7,10,27,28,30,36 so you don't
have to carry them in v2.

Regards,

Phil.
Re: [PATCH 00/39] Use g_assert_not_reached instead of (g_)assert(0,false)
Posted by Pierrick Bouvier 2 months, 1 week ago
On 9/11/24 01:39, Philippe Mathieu-Daudé wrote:
> On 11/9/24 00:15, Pierrick Bouvier wrote:
> 
>> Pierrick Bouvier (39):
>>     docs/spin: replace assert(0) with g_assert_not_reached()
>>     hw/acpi: replace assert(0) with g_assert_not_reached()
>>     hw/arm: replace assert(0) with g_assert_not_reached()
>>     hw/char: replace assert(0) with g_assert_not_reached()
>>     hw/core: replace assert(0) with g_assert_not_reached()
>>     hw/net: replace assert(0) with g_assert_not_reached()
>>     hw/watchdog: replace assert(0) with g_assert_not_reached()
>>     migration: replace assert(0) with g_assert_not_reached()
>>     qobject: replace assert(0) with g_assert_not_reached()
>>     system: replace assert(0) with g_assert_not_reached()
>>     target/ppc: replace assert(0) with g_assert_not_reached()
>>     tests/qtest: replace assert(0) with g_assert_not_reached()
>>     tests/unit: replace assert(0) with g_assert_not_reached()
>>     include/hw/s390x: replace assert(false) with g_assert_not_reached()
>>     block: replace assert(false) with g_assert_not_reached()
>>     hw/hyperv: replace assert(false) with g_assert_not_reached()
>>     hw/net: replace assert(false) with g_assert_not_reached()
>>     hw/nvme: replace assert(false) with g_assert_not_reached()
>>     hw/pci: replace assert(false) with g_assert_not_reached()
>>     hw/ppc: replace assert(false) with g_assert_not_reached()
>>     migration: replace assert(false) with g_assert_not_reached()
>>     target/i386/kvm: replace assert(false) with g_assert_not_reached()
>>     tests/qtest: replace assert(false) with g_assert_not_reached()
>>     accel/tcg: remove break after g_assert_not_reached()
>>     block: remove break after g_assert_not_reached()
>>     hw/acpi: remove break after g_assert_not_reached()
>>     hw/gpio: remove break after g_assert_not_reached()
>>     hw/misc: remove break after g_assert_not_reached()
>>     hw/net: remove break after g_assert_not_reached()
>>     hw/pci-host: remove break after g_assert_not_reached()
>>     hw/scsi: remove break after g_assert_not_reached()
>>     hw/tpm: remove break after g_assert_not_reached()
>>     target/arm: remove break after g_assert_not_reached()
>>     target/riscv: remove break after g_assert_not_reached()
>>     tests/qtest: remove break after g_assert_not_reached()
>>     ui: remove break after g_assert_not_reached()
>>     fpu: remove break after g_assert_not_reached()
>>     tcg/loongarch64: remove break after g_assert_not_reached()
>>     scripts/checkpatch.pl: emit error when using assert(false)
> 
> I'm queuing reviewed patches 4,5,7,10,27,28,30,36 so you don't
> have to carry them in v2.
> 
> Regards,
> 
> Phil.

Just for the sake of simplicity, and to not miss anything (on my side), 
I'll keep those in v2. When rebasing, once merged on master, they will 
be skipped automatically.

Thanks,
Pierrick