qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [v2] Help wanted for enabling -Wshadow=local
@ 2023-09-26 14:42 Markus Armbruster
  2023-09-26 15:03 ` Markus Armbruster
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Markus Armbruster @ 2023-09-26 14:42 UTC (permalink / raw)
  To: Brian Cain, Gerd Hoffmann, Jason Wang, Marc-André Lureau,
	Michael S. Tsirkin, Paolo Bonzini
  Cc: qemu-devel, Richard Henderson, Eduardo Habkost

Brian, Gerd, Jason, Marc-André, Michael, we need your help to enable
-Wshadow=local.

Paolo, you already took care of several subsystems (thanks!), except you
left a few warnings in target/i386/tcg/seg_helper.c.


Local variables shadowing other local variables or parameters make the
code needlessly hard to understand.  Bugs love to hide in such code.
Evidence: "[PATCH v3 1/7] migration/rdma: Fix save_page method to fail
on polling error".

Enabling -Wshadow would prevent bugs like this one.  But we have to
clean up all the offenders first.

People responded quickly to my first call for help.  Thank you so much!

I'm collecting patches in my git repo at
https://repo.or.cz/qemu/armbru.git in branch shadow-next, output of
git-shortlog appended.  I'm happy to do pull requests.  I don't mind
maintainers merging patches for their subsystems; interference should be
minimal.

My test build is down to 19 files with warnings.  Sorted by subsystems,
files covered by multiple subsystems marked "(*NUMBER*)":

Guest CPU cores (TCG)
---------------------
Hexagon TCG CPUs
M: Brian Cain <bcain@quicinc.com>
    target/hexagon/gen_helper_funcs.py
    target/hexagon/mmvec/macros.h
    target/hexagon/op_helper.c
    target/hexagon/translate.c

X86 TCG CPUs
M: Paolo Bonzini <pbonzini@redhat.com>
M: Richard Henderson <richard.henderson@linaro.org>
M: Eduardo Habkost <eduardo@habkost.net>
    target/i386/tcg/seg_helper.c

Devices
-------
Network devices
M: Jason Wang <jasowang@redhat.com>
    hw/net/vhost_net.c(*2*)

USB
M: Gerd Hoffmann <kraxel@redhat.com>
    hw/usb/desc.c
    hw/usb/dev-hub.c
    hw/usb/dev-storage.c
    hw/usb/hcd-xhci.c
    hw/usb/host-libusb.c

vhost
M: Michael S. Tsirkin <mst@redhat.com>
    contrib/vhost-user-gpu/vhost-user-gpu.c(*2*)
    contrib/vhost-user-gpu/vugpu.h(*2*)
    hw/net/vhost_net.c(*2*)
    hw/virtio/vhost.c

virtio
M: Michael S. Tsirkin <mst@redhat.com>
    hw/virtio/virtio-pci.c
    include/hw/virtio/virtio-gpu.h(*2*)

virtio-gpu
M: Gerd Hoffmann <kraxel@redhat.com>
    include/hw/virtio/virtio-gpu.h(*2*)

vhost-user-gpu
M: Marc-André Lureau <marcandre.lureau@redhat.com>
R: Gerd Hoffmann <kraxel@redhat.com>
    contrib/vhost-user-gpu/vhost-user-gpu.c(*2*)
    contrib/vhost-user-gpu/vugpu.h(*2*)

Subsystems
----------
Overall Audio backends
M: Gerd Hoffmann <kraxel@redhat.com>
M: Marc-André Lureau <marcandre.lureau@redhat.com>
    audio/audio.c

Open Sound System (OSS) Audio backend
M: Gerd Hoffmann <kraxel@redhat.com>
    audio/ossaudio.c

Dump
M: Marc-André Lureau <marcandre.lureau@redhat.com>
    dump/dump.c


Patches collected so far:

Alberto Garcia (1):
      test-throttle: don't shadow 'index' variable in do_test_accounting()

Alistair Francis (4):
      hw/riscv: opentitan: Fixup local variables shadowing
      target/riscv: cpu: Fixup local variables shadowing
      target/riscv: vector_helper: Fixup local variables shadowing
      softmmu/device_tree: Fixup local variables shadowing

Ani Sinha (1):
      hw/acpi: changes towards enabling -Wshadow=local

Cédric Le Goater (13):
      hw/ppc: Clean up local variable shadowing in _FDT helper routine
      pnv/psi: Clean up local variable shadowing
      spapr: Clean up local variable shadowing in spapr_dt_cpus()
      spapr: Clean up local variable shadowing in spapr_init_cpus()
      spapr: Clean up local variable shadowing in spapr_get_fw_dev_path()
      spapr/drc: Clean up local variable shadowing in rtas_ibm_configure_connector()
      spapr/pci: Clean up local variable shadowing in spapr_phb_realize()
      spapr/drc: Clean up local variable shadowing in prop_get_fdt()
      aspeed/i2c: Clean up local variable shadowing
      aspeed: Clean up local variable shadowing
      aspeed/i3c: Rename variable shadowing a local
      aspeed/timer: Clean up local variable shadowing
      target/ppc: Rename variables to avoid local variable shadowing in VUPKPX

Daniel P. Berrangé (2):
      crypto: remove shadowed 'ret' variable
      seccomp: avoid shadowing of 'action' variable

Eric Blake (1):
      qemu-nbd: changes towards enabling -Wshadow=local

Klaus Jensen (1):
      hw/nvme: Clean up local variable shadowing in nvme_ns_init()

Laurent Vivier (1):
      disas/m68k: clean up local variable shadowing

Markus Armbruster (8):
      meson: Enable -Wshadow as a warning
      migration/rdma: Fix save_page method to fail on polling error
      migration: Clean up local variable shadowing
      ui: Clean up local variable shadowing
      block/dirty-bitmap: Clean up local variable shadowing
      block/vdi: Clean up local variable shadowing
      block: Clean up local variable shadowing
      qobject atomics osdep: Make a few macros more hygienic

Paolo Bonzini (8):
      mptsas: avoid shadowed local variables
      pm_smbus: rename variable to avoid shadowing
      vl: remove shadowed local variables
      target/i386/kvm: eliminate shadowed local variables
      target/i386/cpu: avoid shadowed local variables
      target/i386/translate: avoid shadowed local variables
      target/i386/svm_helper: eliminate duplicate local variable
      target/i386/seg_helper: remove shadowed variable

Peter Maydell (4):
      hw/intc/arm_gicv3_its: Avoid shadowing variable in do_process_its_cmd()
      hw/misc/arm_sysctl.c: Avoid shadowing local variable
      hw/arm/smmuv3.c: Avoid shadowing variable
      hw/arm/smmuv3-internal.h: Don't use locals in statement macros

Peter Xu (1):
      intel_iommu: Fix shadow local variables on "size"

Philippe Mathieu-Daudé (23):
      tcg: Clean up local variable shadowing
      target/arm/tcg: Clean up local variable shadowing
      target/arm/hvf: Clean up local variable shadowing
      target/mips: Clean up local variable shadowing
      target/m68k: Clean up local variable shadowing
      target/tricore: Clean up local variable shadowing
      hw/arm/armv7m: Clean up local variable shadowing
      hw/arm/virt: Clean up local variable shadowing
      hw/arm/allwinner: Clean up local variable shadowing
      hw/ide/ahci: Clean up local variable shadowing
      hw/m68k: Clean up local variable shadowing
      hw/microblaze: Clean up local variable shadowing
      hw/nios2: Clean up local variable shadowing
      net/eth: Clean up local variable shadowing
      crypto/cipher-gnutls.c: Clean up local variable shadowing
      util/vhost-user-server: Clean up local variable shadowing
      semihosting/arm-compat: Clean up local variable shadowing
      linux-user/strace: Clean up local variable shadowing
      sysemu/device_tree: Clean up local variable shadowing
      softmmu/memory: Clean up local variable shadowing
      softmmu/physmem: Clean up local variable shadowing
      hw/core/machine: Clean up local variable shadowing
      hw/intc/openpic: Clean up local variable shadowing



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [v2] Help wanted for enabling -Wshadow=local
  2023-09-26 14:42 [v2] Help wanted for enabling -Wshadow=local Markus Armbruster
@ 2023-09-26 15:03 ` Markus Armbruster
  2023-09-26 15:43 ` Paolo Bonzini
  2023-09-26 15:52 ` Warner Losh
  2 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2023-09-26 15:03 UTC (permalink / raw)
  To: Brian Cain, Gerd Hoffmann, Jason Wang, Marc-André Lureau,
	Michael S. Tsirkin, Paolo Bonzini
  Cc: qemu-devel, Richard Henderson, Eduardo Habkost

Markus Armbruster <armbru@redhat.com> writes:

> Brian, Gerd, Jason, Marc-André, Michael, we need your help to enable
> -Wshadow=local.
>
> Paolo, you already took care of several subsystems (thanks!), except you
> left a few warnings in target/i386/tcg/seg_helper.c.

Nope, I missed a patch; seg_helper.c is clean, too.

[...]



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [v2] Help wanted for enabling -Wshadow=local
  2023-09-26 14:42 [v2] Help wanted for enabling -Wshadow=local Markus Armbruster
  2023-09-26 15:03 ` Markus Armbruster
@ 2023-09-26 15:43 ` Paolo Bonzini
  2023-09-26 15:52 ` Warner Losh
  2 siblings, 0 replies; 5+ messages in thread
From: Paolo Bonzini @ 2023-09-26 15:43 UTC (permalink / raw)
  To: Markus Armbruster, Brian Cain, Gerd Hoffmann, Jason Wang,
	Marc-André Lureau, Michael S. Tsirkin
  Cc: qemu-devel, Richard Henderson, Eduardo Habkost

On 9/26/23 16:42, Markus Armbruster wrote:
> Overall Audio backends
> M: Gerd Hoffmann<kraxel@redhat.com>
> M: Marc-André Lureau<marcandre.lureau@redhat.com>
>      audio/audio.c

I can handle this too, but I first need to send out my next pull request.

Paolo



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [v2] Help wanted for enabling -Wshadow=local
  2023-09-26 14:42 [v2] Help wanted for enabling -Wshadow=local Markus Armbruster
  2023-09-26 15:03 ` Markus Armbruster
  2023-09-26 15:43 ` Paolo Bonzini
@ 2023-09-26 15:52 ` Warner Losh
  2023-09-26 20:47   ` Markus Armbruster
  2 siblings, 1 reply; 5+ messages in thread
From: Warner Losh @ 2023-09-26 15:52 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: Brian Cain, Gerd Hoffmann, Jason Wang, Marc-André Lureau,
	Michael S. Tsirkin, Paolo Bonzini, qemu-devel, Richard Henderson,
	Eduardo Habkost

[-- Attachment #1: Type: text/plain, Size: 7872 bytes --]

On Tue, Sep 26, 2023 at 8:43 AM Markus Armbruster <armbru@redhat.com> wrote:

> Brian, Gerd, Jason, Marc-André, Michael, we need your help to enable
> -Wshadow=local.
>
> Paolo, you already took care of several subsystems (thanks!), except you
> left a few warnings in target/i386/tcg/seg_helper.c.
>
>
> Local variables shadowing other local variables or parameters make the
> code needlessly hard to understand.  Bugs love to hide in such code.
> Evidence: "[PATCH v3 1/7] migration/rdma: Fix save_page method to fail
> on polling error".
>
> Enabling -Wshadow would prevent bugs like this one.  But we have to
> clean up all the offenders first.
>
> People responded quickly to my first call for help.  Thank you so much!
>
> I'm collecting patches in my git repo at
> https://repo.or.cz/qemu/armbru.git in branch shadow-next, output of
> git-shortlog appended.  I'm happy to do pull requests.  I don't mind
> maintainers merging patches for their subsystems; interference should be
> minimal.
>
> My test build is down to 19 files with warnings.  Sorted by subsystems,
> files covered by multiple subsystems marked "(*NUMBER*)":
>

Please make sure it's disabled for the bsd-user build. I have 3 patches in
my queue
to fix that, but I'm recovering from an illness and trying to land a large
number of patches
from my gsoc student Karim and git publish is being a pain. If this can
wait a week, I'll
likely be better enough by then and can submit the patches. They are all
trivial, but one
depends on the tcg header cleanups.

Thanks

Warner


> Guest CPU cores (TCG)
> ---------------------
> Hexagon TCG CPUs
> M: Brian Cain <bcain@quicinc.com>
>     target/hexagon/gen_helper_funcs.py
>     target/hexagon/mmvec/macros.h
>     target/hexagon/op_helper.c
>     target/hexagon/translate.c
>
> X86 TCG CPUs
> M: Paolo Bonzini <pbonzini@redhat.com>
> M: Richard Henderson <richard.henderson@linaro.org>
> M: Eduardo Habkost <eduardo@habkost.net>
>     target/i386/tcg/seg_helper.c
>
> Devices
> -------
> Network devices
> M: Jason Wang <jasowang@redhat.com>
>     hw/net/vhost_net.c(*2*)
>
> USB
> M: Gerd Hoffmann <kraxel@redhat.com>
>     hw/usb/desc.c
>     hw/usb/dev-hub.c
>     hw/usb/dev-storage.c
>     hw/usb/hcd-xhci.c
>     hw/usb/host-libusb.c
>
> vhost
> M: Michael S. Tsirkin <mst@redhat.com>
>     contrib/vhost-user-gpu/vhost-user-gpu.c(*2*)
>     contrib/vhost-user-gpu/vugpu.h(*2*)
>     hw/net/vhost_net.c(*2*)
>     hw/virtio/vhost.c
>
> virtio
> M: Michael S. Tsirkin <mst@redhat.com>
>     hw/virtio/virtio-pci.c
>     include/hw/virtio/virtio-gpu.h(*2*)
>
> virtio-gpu
> M: Gerd Hoffmann <kraxel@redhat.com>
>     include/hw/virtio/virtio-gpu.h(*2*)
>
> vhost-user-gpu
> M: Marc-André Lureau <marcandre.lureau@redhat.com>
> R: Gerd Hoffmann <kraxel@redhat.com>
>     contrib/vhost-user-gpu/vhost-user-gpu.c(*2*)
>     contrib/vhost-user-gpu/vugpu.h(*2*)
>
> Subsystems
> ----------
> Overall Audio backends
> M: Gerd Hoffmann <kraxel@redhat.com>
> M: Marc-André Lureau <marcandre.lureau@redhat.com>
>     audio/audio.c
>
> Open Sound System (OSS) Audio backend
> M: Gerd Hoffmann <kraxel@redhat.com>
>     audio/ossaudio.c
>
> Dump
> M: Marc-André Lureau <marcandre.lureau@redhat.com>
>     dump/dump.c
>
>
> Patches collected so far:
>
> Alberto Garcia (1):
>       test-throttle: don't shadow 'index' variable in do_test_accounting()
>
> Alistair Francis (4):
>       hw/riscv: opentitan: Fixup local variables shadowing
>       target/riscv: cpu: Fixup local variables shadowing
>       target/riscv: vector_helper: Fixup local variables shadowing
>       softmmu/device_tree: Fixup local variables shadowing
>
> Ani Sinha (1):
>       hw/acpi: changes towards enabling -Wshadow=local
>
> Cédric Le Goater (13):
>       hw/ppc: Clean up local variable shadowing in _FDT helper routine
>       pnv/psi: Clean up local variable shadowing
>       spapr: Clean up local variable shadowing in spapr_dt_cpus()
>       spapr: Clean up local variable shadowing in spapr_init_cpus()
>       spapr: Clean up local variable shadowing in spapr_get_fw_dev_path()
>       spapr/drc: Clean up local variable shadowing in
> rtas_ibm_configure_connector()
>       spapr/pci: Clean up local variable shadowing in spapr_phb_realize()
>       spapr/drc: Clean up local variable shadowing in prop_get_fdt()
>       aspeed/i2c: Clean up local variable shadowing
>       aspeed: Clean up local variable shadowing
>       aspeed/i3c: Rename variable shadowing a local
>       aspeed/timer: Clean up local variable shadowing
>       target/ppc: Rename variables to avoid local variable shadowing in
> VUPKPX
>
> Daniel P. Berrangé (2):
>       crypto: remove shadowed 'ret' variable
>       seccomp: avoid shadowing of 'action' variable
>
> Eric Blake (1):
>       qemu-nbd: changes towards enabling -Wshadow=local
>
> Klaus Jensen (1):
>       hw/nvme: Clean up local variable shadowing in nvme_ns_init()
>
> Laurent Vivier (1):
>       disas/m68k: clean up local variable shadowing
>
> Markus Armbruster (8):
>       meson: Enable -Wshadow as a warning
>       migration/rdma: Fix save_page method to fail on polling error
>       migration: Clean up local variable shadowing
>       ui: Clean up local variable shadowing
>       block/dirty-bitmap: Clean up local variable shadowing
>       block/vdi: Clean up local variable shadowing
>       block: Clean up local variable shadowing
>       qobject atomics osdep: Make a few macros more hygienic
>
> Paolo Bonzini (8):
>       mptsas: avoid shadowed local variables
>       pm_smbus: rename variable to avoid shadowing
>       vl: remove shadowed local variables
>       target/i386/kvm: eliminate shadowed local variables
>       target/i386/cpu: avoid shadowed local variables
>       target/i386/translate: avoid shadowed local variables
>       target/i386/svm_helper: eliminate duplicate local variable
>       target/i386/seg_helper: remove shadowed variable
>
> Peter Maydell (4):
>       hw/intc/arm_gicv3_its: Avoid shadowing variable in
> do_process_its_cmd()
>       hw/misc/arm_sysctl.c: Avoid shadowing local variable
>       hw/arm/smmuv3.c: Avoid shadowing variable
>       hw/arm/smmuv3-internal.h: Don't use locals in statement macros
>
> Peter Xu (1):
>       intel_iommu: Fix shadow local variables on "size"
>
> Philippe Mathieu-Daudé (23):
>       tcg: Clean up local variable shadowing
>       target/arm/tcg: Clean up local variable shadowing
>       target/arm/hvf: Clean up local variable shadowing
>       target/mips: Clean up local variable shadowing
>       target/m68k: Clean up local variable shadowing
>       target/tricore: Clean up local variable shadowing
>       hw/arm/armv7m: Clean up local variable shadowing
>       hw/arm/virt: Clean up local variable shadowing
>       hw/arm/allwinner: Clean up local variable shadowing
>       hw/ide/ahci: Clean up local variable shadowing
>       hw/m68k: Clean up local variable shadowing
>       hw/microblaze: Clean up local variable shadowing
>       hw/nios2: Clean up local variable shadowing
>       net/eth: Clean up local variable shadowing
>       crypto/cipher-gnutls.c: Clean up local variable shadowing
>       util/vhost-user-server: Clean up local variable shadowing
>       semihosting/arm-compat: Clean up local variable shadowing
>       linux-user/strace: Clean up local variable shadowing
>       sysemu/device_tree: Clean up local variable shadowing
>       softmmu/memory: Clean up local variable shadowing
>       softmmu/physmem: Clean up local variable shadowing
>       hw/core/machine: Clean up local variable shadowing
>       hw/intc/openpic: Clean up local variable shadowing
>
>
>

[-- Attachment #2: Type: text/html, Size: 10196 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [v2] Help wanted for enabling -Wshadow=local
  2023-09-26 15:52 ` Warner Losh
@ 2023-09-26 20:47   ` Markus Armbruster
  0 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2023-09-26 20:47 UTC (permalink / raw)
  To: Warner Losh
  Cc: Brian Cain, Gerd Hoffmann, Jason Wang, Marc-André Lureau,
	Michael S. Tsirkin, Paolo Bonzini, qemu-devel, Richard Henderson,
	Eduardo Habkost

Warner Losh <imp@bsdimp.com> writes:

> On Tue, Sep 26, 2023 at 8:43 AM Markus Armbruster <armbru@redhat.com> wrote:
>
>> Brian, Gerd, Jason, Marc-André, Michael, we need your help to enable
>> -Wshadow=local.
>>
>> Paolo, you already took care of several subsystems (thanks!), except you
>> left a few warnings in target/i386/tcg/seg_helper.c.
>>
>>
>> Local variables shadowing other local variables or parameters make the
>> code needlessly hard to understand.  Bugs love to hide in such code.
>> Evidence: "[PATCH v3 1/7] migration/rdma: Fix save_page method to fail
>> on polling error".
>>
>> Enabling -Wshadow would prevent bugs like this one.  But we have to
>> clean up all the offenders first.
>>
>> People responded quickly to my first call for help.  Thank you so much!
>>
>> I'm collecting patches in my git repo at
>> https://repo.or.cz/qemu/armbru.git in branch shadow-next, output of
>> git-shortlog appended.  I'm happy to do pull requests.  I don't mind
>> maintainers merging patches for their subsystems; interference should be
>> minimal.
>>
>> My test build is down to 19 files with warnings.  Sorted by subsystems,
>> files covered by multiple subsystems marked "(*NUMBER*)":
>>
>
> Please make sure it's disabled for the bsd-user build. I have 3 patches in
> my queue
> to fix that, but I'm recovering from an illness and trying to land a large
> number of patches
> from my gsoc student Karim and git publish is being a pain. If this can
> wait a week, I'll
> likely be better enough by then and can submit the patches. They are all
> trivial, but one
> depends on the tcg header cleanups.

Waiting a week or two for bsd-user is no problem.  We don't need to
commit all -Wshadow cleanups in one go.

Get well!

[...]



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-09-26 20:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-26 14:42 [v2] Help wanted for enabling -Wshadow=local Markus Armbruster
2023-09-26 15:03 ` Markus Armbruster
2023-09-26 15:43 ` Paolo Bonzini
2023-09-26 15:52 ` Warner Losh
2023-09-26 20:47   ` Markus Armbruster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).