All of lore.kernel.org
 help / color / mirror / Atom feed
From: Corey Minyard <minyard@acm.org>
To: Daniel Henrique Barboza <danielhb413@gmail.com>
Cc: qemu-trivial@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [PATCH v1 00/59] trivial unneeded labels cleanup
Date: Mon, 6 Jan 2020 13:54:57 -0600	[thread overview]
Message-ID: <20200106195457.GE2886@minyard.net> (raw)
In-Reply-To: <20200106182425.20312-1-danielhb413@gmail.com>

On Mon, Jan 06, 2020 at 03:23:26PM -0300, Daniel Henrique Barboza wrote:
> Hello,
> 
> This is the type of cleanup I've contributed to Libvirt
> during the last year. Figured QEMU also deserves the same
> care.
> 
> The idea here is remove unneeded labels. By 'unneeded' I
> mean labels that does nothing but a 'return' call. One
> common case is something like this:
> 
> if ()
>     goto cleanup;
> [...]
>  cleanup:
>     return 0;
> 
> This code can be simplified to:
> 
> if ()
>     return 0;
> 
> 
> Which is cleaner and requires less brain cycles to wonder
> whether the 'cleanup' label does anything special, such
> as a heap memory cleanup.

I would disagree with this analysis.  To me, I often wonder
when I have to add cleanup code to a routine whether there is
some hidden return in the middle of the function.  That's a lot
harder to spot than just looking for the cleanup label at the
end of the function to see what it does.  For non-trivial
functions I prefer to have one point of return at the end
(and maybe some minor checks with returns right at the beginning).
I'm not adamant about this, just my opinion.

But if we are going to fix things like this, it might be best to add
them to the coding style document and checkpatch script.  Otherwise
these sorts of things will just continue.

-corey

> 
> Another common case uses a variable to set a return value,
> generally an error, then return:
> 
> if () {
>     ret = -ENOENT;
>     goto out;
> }
> [..]
>  out:
>     return ret;
> 
> Likewise, it is clearer to just 'return -ENOENT' instead of
> jumping to a label. There are other cases being handled in
> these patches, but these are the most common.
> 
> There are still a handful of unneeded labels hanging around after
> this series. There are cases in which the label name is
> part of the code semantics and I judged not worth removing.
> search_chunk() in block/dmg.c has an example of an unneeded
> 'err' label that I decided to not remove.
> 
> No functional change was made. If any of these patches changes
> existing behavior it is unintended and an error from my
> part.
> 
> 
> 
> Daniel Henrique Barboza (59):
>   spapr.c: remove 'out' label in spapr_dt_cas_updates()
>   ppc440_bamboo.c: remove label from bamboo_load_device_tree()
>   kvm-all.c: remove unneeded labels
>   paaudio.c: remove unneeded labels
>   ram.c: remove unneeded labels
>   mips-semi.c: remove 'uhi_done' label in helper_do_semihosting()
>   unicore32/softmmu.c: remove 'do_fault' label in get_phys_addr_ucv2()
>   chardev/char-mux.c: remove 'send_char' label
>   chardev/char-pipe.c: remove 'fail' label in win_chr_pipe_init()
>   chardev/char-win.c: remove 'fail' label in win_chr_serial_init()
>   exec.c: remove 'err' label in ram_block_discard_range()
>   virtfs-proxy-helper.c: remove 'err_out' label in setugid()
>   block/vdi.c: remove 'fail' label in vdi_open()
>   block/file-posix.c: remove unneeded labels
>   block/blkreplay.c: remove unneeded 'fail' label in blkreplay_open()
>   block/gluster.c: remove unneeded 'exit' label
>   block/dmg.c: remove unneeded 'fail' label in dmg_read_mish_block()
>   qcow2-refcount.c: remove unneeded 'fail' label in
>     qcow2_refcount_init()
>   block/ssh.c: remove unneeded labels
>   block/vpc.c: remove unneeded 'fail' label in create_dynamic_disk()
>   block/backup.c remove unneeded 'out' label in backup_run()
>   block/vmdk.c: remove unneeded labels
>   block/vxhs.c: remove unneeded 'out' label in vxhs_iio_callback()
>   block/vhdx-log.c: remove unneeded labels
>   block/vhdx.c: remove unneeded 'exit' labels
>   block/replication.c: remove unneeded label in replication_co_writev
>   crypto/block-luks.c: remove unneeded label in
>     qcrypto_block_luks_find_key
>   qga/commands-win32.c: remove 'out' label in get_pci_info
>   cryptodev-vhost.c: remove unneeded 'err' label in
>     cryptodev_vhost_start
>   util/module.c: remove unneeded label in module_load_file()
>   util/aio-posix.c: remove unneeded 'out' label in aio_epoll
>   qemu-img.c: remove 'out4' label in img_compare
>   ipmi/ipmi_bmc_sim.c: remove unneeded labels
>   ipmi/ipmi_bt.c: remove unneeded label in ipmi_bt_handle_event
>   ipmi_bmc_extern.c: remove unneeded label in
>     ipmi_bmc_extern_handle_command
>   ipmi/ipmi_kcs.c: remove unneeded label in ipmi_kcs_handle_event
>   s390x/event-facility.c: remove unneeded labels
>   s390x/sclp.c: remove unneeded label in sclp_service_call()
>   usb/dev-mtp.c: remove unneeded label in write_retry()
>   hsb/hcd-ehci.c: remove unneeded labels
>   intc/s390_flic_kvm.c: remove unneeded label in kvm_flic_load()
>   i386/intel_iommu.c: remove unneeded labels
>   i386/amd_iommu.c: remove unneeded label in amdvi_int_remap_msi()
>   9p-local.c: remove unneeded label in local_unlinkat_common()
>   9pfs/9p.c: remove unneeded labels
>   alpha/typhoon.c: remove unneeded label in typhoon_translate_iommu()
>   pvrdma_main.c: remove unneeded labels
>   pvrdma_dev_ring.c: remove unneeded label in pvrdma_ring_init()
>   rdma/rdma_rm.c: remove unneeded label in rdma_rm_alloc_pd()
>   rdma/rdma_backend.c: remove unneeded label in rdma_backend_init()
>   virtio/vhost.c: remove unneeded labels
>   net/vhost_net.c: remove unneeded labels
>   net/net_tx_pkt.c: remove unneeded label in net_tx_pkt_get_gso_type()
>   ivshmem-server/main.c: remove unneeded label in main()
>   linux-user/flatload.c: remove unused 'out' label
>   linux-user/signal.c: remove unneeded label in do_sigaltstack()
>   linux-user/syscall.c: fix trailing whitespaces and style
>   linux-user/syscall.c: remove unneeded labels
>   linux-user/vm86.c: remove unneeded label in do_vm86()
> 
>  accel/kvm/kvm-all.c           | 30 +++++-------
>  audio/paaudio.c               | 10 +---
>  backends/cryptodev-vhost.c    |  4 +-
>  block/backup.c                |  6 +--
>  block/blkreplay.c             |  8 +---
>  block/dmg.c                   | 10 +---
>  block/file-posix.c            | 10 ++--
>  block/gluster.c               |  3 +-
>  block/qcow2-refcount.c        |  7 +--
>  block/replication.c           |  9 ++--
>  block/ssh.c                   | 61 ++++++++-----------------
>  block/vdi.c                   | 40 ++++++----------
>  block/vhdx-log.c              | 86 +++++++++++++----------------------
>  block/vhdx.c                  | 10 ++--
>  block/vmdk.c                  | 37 ++++++---------
>  block/vpc.c                   | 12 ++---
>  block/vxhs.c                  |  4 +-
>  chardev/char-mux.c            |  3 +-
>  chardev/char-pipe.c           | 13 ++----
>  chardev/char-win.c            | 19 ++++----
>  contrib/ivshmem-server/main.c |  9 ++--
>  crypto/block-luks.c           |  3 +-
>  exec.c                        | 13 +++---
>  fsdev/virtfs-proxy-helper.c   |  4 +-
>  hw/9pfs/9p-local.c            | 12 ++---
>  hw/9pfs/9p.c                  |  9 ++--
>  hw/alpha/typhoon.c            | 18 ++++----
>  hw/i386/amd_iommu.c           | 13 ++----
>  hw/i386/intel_iommu.c         |  8 ++--
>  hw/intc/s390_flic_kvm.c       | 10 ++--
>  hw/ipmi/ipmi_bmc_extern.c     |  5 +-
>  hw/ipmi/ipmi_bmc_sim.c        |  9 +---
>  hw/ipmi/ipmi_bt.c             |  8 ++--
>  hw/ipmi/ipmi_kcs.c            |  4 +-
>  hw/net/net_tx_pkt.c           | 11 ++---
>  hw/net/vhost_net.c            |  7 ++-
>  hw/ppc/ppc440_bamboo.c        |  8 +---
>  hw/ppc/spapr.c                |  9 ++--
>  hw/rdma/rdma_backend.c        |  4 +-
>  hw/rdma/rdma_rm.c             | 11 ++---
>  hw/rdma/vmw/pvrdma_dev_ring.c |  7 +--
>  hw/rdma/vmw/pvrdma_main.c     | 10 ++--
>  hw/s390x/event-facility.c     | 21 +++------
>  hw/s390x/sclp.c               | 16 ++-----
>  hw/usb/dev-mtp.c              | 13 ++----
>  hw/usb/hcd-ehci.c             | 32 ++++---------
>  hw/virtio/vhost.c             | 11 ++---
>  linux-user/flatload.c         |  1 -
>  linux-user/signal.c           | 20 +++-----
>  linux-user/syscall.c          | 54 ++++++++++------------
>  linux-user/vm86.c             |  7 +--
>  migration/ram.c               | 18 ++------
>  qemu-img.c                    |  7 +--
>  qga/commands-win32.c          | 17 ++++---
>  target/mips/mips-semi.c       | 15 +++---
>  target/unicore32/softmmu.c    | 23 +++-------
>  util/aio-posix.c              |  3 +-
>  util/module.c                 | 11 ++---
>  58 files changed, 293 insertions(+), 550 deletions(-)
> 
> -- 
> 2.24.1
> 
> 


  parent reply	other threads:[~2020-01-06 19:55 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-06 18:23 [PATCH v1 00/59] trivial unneeded labels cleanup Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 01/59] spapr.c: remove 'out' label in spapr_dt_cas_updates() Daniel Henrique Barboza
2020-01-06 23:44   ` David Gibson
2020-01-06 18:23 ` [PATCH v1 02/59] ppc440_bamboo.c: remove label from bamboo_load_device_tree() Daniel Henrique Barboza
2020-01-06 23:45   ` David Gibson
2020-01-06 18:23 ` [PATCH v1 03/59] kvm-all.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 04/59] paaudio.c: " Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 05/59] ram.c: " Daniel Henrique Barboza
2020-01-06 18:57   ` Dr. David Alan Gilbert
2020-01-06 23:38   ` Juan Quintela
2020-01-08 12:41   ` Juan Quintela
2020-01-06 18:23 ` [PATCH v1 06/59] mips-semi.c: remove 'uhi_done' label in helper_do_semihosting() Daniel Henrique Barboza
2020-01-09 20:41   ` Aleksandar Markovic
2020-01-24 17:22   ` Aleksandar Markovic
2020-01-06 18:23 ` [PATCH v1 07/59] unicore32/softmmu.c: remove 'do_fault' label in get_phys_addr_ucv2() Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 08/59] chardev/char-mux.c: remove 'send_char' label Daniel Henrique Barboza
2020-01-06 19:02   ` Marc-André Lureau
2020-01-06 18:23 ` [PATCH v1 09/59] chardev/char-pipe.c: remove 'fail' label in win_chr_pipe_init() Daniel Henrique Barboza
2020-01-06 19:01   ` Marc-André Lureau
2020-01-06 18:23 ` [PATCH v1 10/59] chardev/char-win.c: remove 'fail' label in win_chr_serial_init() Daniel Henrique Barboza
2020-01-06 19:01   ` Marc-André Lureau
2020-01-07  6:52   ` Philippe Mathieu-Daudé
2020-01-06 18:23 ` [PATCH v1 11/59] exec.c: remove 'err' label in ram_block_discard_range() Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 12/59] virtfs-proxy-helper.c: remove 'err_out' label in setugid() Daniel Henrique Barboza
2020-01-07  9:51   ` Greg Kurz
2020-01-13 15:15     ` Markus Armbruster
2020-01-13 16:32       ` Laurent Vivier
2020-01-13 19:56         ` Greg Kurz
2020-01-14  7:55         ` Markus Armbruster
2020-01-06 18:23 ` [PATCH v1 13/59] block/vdi.c: remove 'fail' label in vdi_open() Daniel Henrique Barboza
2020-01-06 21:04   ` Stefan Weil
2020-01-06 18:23 ` [PATCH v1 14/59] block/file-posix.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 15/59] block/blkreplay.c: remove unneeded 'fail' label in blkreplay_open() Daniel Henrique Barboza
2020-01-10  6:07   ` Pavel Dovgalyuk
2020-01-06 18:23 ` [PATCH v1 16/59] block/gluster.c: remove unneeded 'exit' label Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 17/59] block/dmg.c: remove unneeded 'fail' label in dmg_read_mish_block() Daniel Henrique Barboza
2020-01-07 16:54   ` Stefan Hajnoczi
2020-01-06 18:23 ` [PATCH v1 18/59] qcow2-refcount.c: remove unneeded 'fail' label in qcow2_refcount_init() Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 19/59] block/ssh.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:37   ` Richard W.M. Jones
2020-01-06 18:23 ` [PATCH v1 20/59] block/vpc.c: remove unneeded 'fail' label in create_dynamic_disk() Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 21/59] block/backup.c remove unneeded 'out' label in backup_run() Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 22/59] block/vmdk.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 23/59] block/vxhs.c: remove unneeded 'out' label in vxhs_iio_callback() Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 24/59] block/vhdx-log.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 25/59] block/vhdx.c: remove unneeded 'exit' labels Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 26/59] block/replication.c: remove unneeded label in replication_co_writev Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 27/59] crypto/block-luks.c: remove unneeded label in qcrypto_block_luks_find_key Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 28/59] qga/commands-win32.c: remove 'out' label in get_pci_info Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 29/59] cryptodev-vhost.c: remove unneeded 'err' label in cryptodev_vhost_start Daniel Henrique Barboza
2020-01-07  6:53   ` Philippe Mathieu-Daudé
2020-01-07  8:18   ` Gonglei (Arei)
2020-01-06 18:23 ` [PATCH v1 30/59] util/module.c: remove unneeded label in module_load_file() Daniel Henrique Barboza
2020-01-07 11:26   ` Thomas Huth
2020-01-06 18:23 ` [PATCH v1 31/59] util/aio-posix.c: remove unneeded 'out' label in aio_epoll Daniel Henrique Barboza
2020-01-07 13:34   ` Thomas Huth
2020-01-06 18:23 ` [PATCH v1 32/59] qemu-img.c: remove 'out4' label in img_compare Daniel Henrique Barboza
2020-01-06 18:23 ` [PATCH v1 33/59] ipmi/ipmi_bmc_sim.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 34/59] ipmi/ipmi_bt.c: remove unneeded label in ipmi_bt_handle_event Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 35/59] ipmi_bmc_extern.c: remove unneeded label in ipmi_bmc_extern_handle_command Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 36/59] ipmi/ipmi_kcs.c: remove unneeded label in ipmi_kcs_handle_event Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 37/59] s390x/event-facility.c: remove unneeded labels Daniel Henrique Barboza
2020-01-07 13:36   ` Thomas Huth
2020-01-08 12:46   ` Cornelia Huck
2020-01-08 14:15     ` Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 38/59] s390x/sclp.c: remove unneeded label in sclp_service_call() Daniel Henrique Barboza
2020-01-07 13:37   ` Thomas Huth
2020-01-08 13:16   ` Cornelia Huck
2020-01-06 18:24 ` [PATCH v1 39/59] usb/dev-mtp.c: remove unneeded label in write_retry() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 40/59] hsb/hcd-ehci.c: remove unneeded labels Daniel Henrique Barboza
2020-01-13 15:17   ` Markus Armbruster
2020-01-06 18:24 ` [PATCH v1 41/59] intc/s390_flic_kvm.c: remove unneeded label in kvm_flic_load() Daniel Henrique Barboza
2020-01-08 13:00   ` Cornelia Huck
2020-01-13 16:51     ` Cornelia Huck
2020-01-13 16:06   ` Thomas Huth
2020-01-06 18:24 ` [PATCH v1 42/59] i386/intel_iommu.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 43/59] i386/amd_iommu.c: remove unneeded label in amdvi_int_remap_msi() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 44/59] 9p-local.c: remove unneeded label in local_unlinkat_common() Daniel Henrique Barboza
2020-01-07 12:04   ` Christian Schoenebeck
2020-01-07 13:58     ` Greg Kurz
2020-01-07 13:53   ` Greg Kurz
2020-01-07 14:16     ` Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 45/59] 9pfs/9p.c: remove unneeded labels Daniel Henrique Barboza
2020-01-07 12:14   ` Christian Schoenebeck
2020-01-08 14:08     ` Greg Kurz
2020-01-06 18:24 ` [PATCH v1 46/59] alpha/typhoon.c: remove unneeded label in typhoon_translate_iommu() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 47/59] pvrdma_main.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 48/59] pvrdma_dev_ring.c: remove unneeded label in pvrdma_ring_init() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 49/59] rdma/rdma_rm.c: remove unneeded label in rdma_rm_alloc_pd() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 50/59] rdma/rdma_backend.c: remove unneeded label in rdma_backend_init() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 51/59] virtio/vhost.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 52/59] net/vhost_net.c: " Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 53/59] net/net_tx_pkt.c: remove unneeded label in net_tx_pkt_get_gso_type() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 54/59] ivshmem-server/main.c: remove unneeded label in main() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 55/59] linux-user/flatload.c: remove unused 'out' label Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 56/59] linux-user/signal.c: remove unneeded label in do_sigaltstack() Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 57/59] linux-user/syscall.c: fix trailing whitespaces and style Daniel Henrique Barboza
2020-01-07  6:57   ` Philippe Mathieu-Daudé
2020-01-07 10:37   ` Peter Maydell
2020-01-06 18:24 ` [PATCH v1 58/59] linux-user/syscall.c: remove unneeded labels Daniel Henrique Barboza
2020-01-06 18:24 ` [PATCH v1 59/59] linux-user/vm86.c: remove unneeded label in do_vm86() Daniel Henrique Barboza
2020-01-06 19:54 ` Corey Minyard [this message]
2020-01-06 20:35   ` [PATCH v1 00/59] trivial unneeded labels cleanup Daniel Henrique Barboza
2020-01-07  6:16     ` Kevin Wolf
2020-01-07  7:06       ` Philippe Mathieu-Daudé
2020-01-09 19:19         ` Daniel Henrique Barboza
2020-01-07 11:52       ` Daniel Henrique Barboza
2020-01-07 12:21         ` Kevin Wolf
2020-01-13 15:26   ` Markus Armbruster
2020-01-07  9:43 ` Max Reitz
2020-01-09 20:16   ` Daniel Henrique Barboza
2020-01-10 19:05 ` Eric Blake
2020-01-10 20:31   ` Daniel Henrique Barboza

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200106195457.GE2886@minyard.net \
    --to=minyard@acm.org \
    --cc=danielhb413@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=qemu-trivial@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.