U-Boot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Andre Przywara <andre.przywara@arm.com>
To: Tom Rini <trini@konsulko.com>, Simon Glass <sjg@chromium.org>
Cc: Marek Vasut <marex@denx.de>, Michal Simek <michal.simek@amd.com>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	u-boot@lists.denx.de, Ramon Fried <rfried.dev@gmail.com>,
	Joe Hershberger <joe.hershberger@ni.com>,
	Mattijs Korpershoek <mkorpershoek@baylibre.com>,
	Bin Meng <bmeng.cn@gmail.com>, Anatolij Gustschin <agust@denx.de>,
	Kyungmin Park <kmpark@infradead.org>, Heiko Schocher <hs@denx.de>,
	Jagan Teki <jagan@amarulasolutions.com>,
	Vignesh R <vigneshr@ti.com>,
	Tudor Ambarus <tudor.ambarus@linaro.org>,
	Dario Binacchi <dario.binacchi@amarulasolutions.com>,
	Michael Trimarchi <michael@amarulasolutions.com>
Subject: [PATCH 00/18] Annotate switch/case fallthrough cases
Date: Thu, 27 Mar 2025 15:32:55 +0000	[thread overview]
Message-ID: <20250327153313.2105227-1-andre.przywara@arm.com> (raw)

C's implicit fallthrough behaviour in switch/case statements can lead to
subtle bugs. Quite some while ago many compilers introduced warnings in
those cases, requiring intentional fallthrough's to be annotated.
    
So far we were not enabling that compiler option, so many ambiguities
and some bugs in the code went unnoticed.

This series adds the required annotations in code paths that the first
stage of the U-Boot CI covers. There is a large number of cases left
in the libbz2 code. The usage of switch/case is borderline insane there,
labels are hidden in macros, and there are no breaks, but just goto's.
Upstream still uses very similar code, without any annotations. I still
am not 100% sure those are meant to fall through or not, and plan to do
further investigations, but didn't want to hold the rest of the patches
back. You can see for yourself by applying patch 18/18 and building for
sandbox64, for instance.

Because of this we cannot quite enable the warning in the Makefile yet,
but those fixes are worth regardless, and be it to increase readability.

Please not that those patches do not fix anything, really, they just add
those fallthrough annotations, so the series is not really critical.

Cheers,
Andre

Andre Przywara (18):
  spl: mmc: properly annotate fallthrough
  zlib: annotate switch/case fallthrough cases
  gadget: f_thor: annotate switch/case fallthrough
  use proper fallthrough annotations
  net/net: fix switch/case fallthrough annotations
  fastboot: annotate switch/case fallthrough case
  net: sun8i-emac: annotate fallthrough
  usb: ohci-hcd: annotate switch/case fallthrough
  usb: xhci: annotate switch/case fallthrough properly (TBF)
  video: annotate switch/case fall-through
  net: e1000: annotate switch/case fallthrough
  mtd: ubi: annotate fallthrough (TBF)
  arm: mach-k3: am62p: annotate switch/case fallthrough
  mtd: spi-nor-tiny: annotate switch/case fallthrough
  mtd: rawnand: nand_base: annotate switch/case fallthrough
  cmd: pmic: annotate switch/case fallthrough
  cmd: spl: annotate switch/case fallthrough
  [DO NOT MERGE] Makefile: enable switch/case fallthrough warnings

 Makefile                              |  1 +
 arch/arm/mach-k3/am62px/am62p5_init.c |  1 +
 cmd/pmic.c                            |  1 +
 cmd/spl.c                             |  2 ++
 common/command.c                      |  2 +-
 common/spl/spl_mmc.c                  |  1 +
 drivers/fastboot/fb_command.c         |  1 +
 drivers/mtd/nand/raw/nand_base.c      |  4 ++++
 drivers/mtd/spi/spi-nor-tiny.c        |  1 +
 drivers/mtd/ubi/attach.c              |  1 +
 drivers/mtd/ubi/build.c               |  3 +++
 drivers/net/e1000.c                   |  2 ++
 drivers/net/sun8i_emac.c              |  1 +
 drivers/usb/gadget/f_thor.c           |  1 +
 drivers/usb/host/ohci-hcd.c           |  3 ++-
 drivers/usb/host/xhci.c               |  2 +-
 drivers/video/video-uclass.c          |  2 ++
 lib/tiny-printf.c                     |  2 +-
 lib/zlib/inflate.c                    | 21 +++++++++++++++++++++
 net/net.c                             |  5 ++---
 20 files changed, 50 insertions(+), 7 deletions(-)

-- 
2.25.1


             reply	other threads:[~2025-03-27 15:33 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-27 15:32 Andre Przywara [this message]
2025-03-27 15:32 ` [PATCH 01/18] spl: mmc: properly annotate fallthrough Andre Przywara
2025-03-29  0:06   ` Tom Rini
2025-03-27 15:32 ` [PATCH 02/18] zlib: annotate switch/case fallthrough cases Andre Przywara
2025-03-31 16:13   ` Tom Rini
2025-03-27 15:32 ` [PATCH 03/18] gadget: f_thor: annotate switch/case fallthrough Andre Przywara
2025-03-31  8:01   ` Mattijs Korpershoek
2025-03-27 15:32 ` [PATCH 04/18] use proper fallthrough annotations Andre Przywara
2025-03-31 14:11   ` Tom Rini
2025-03-27 15:33 ` [PATCH 05/18] net/net: fix switch/case " Andre Przywara
2025-03-31 15:55   ` Tom Rini
2025-04-08 22:29   ` Tom Rini
2025-04-08 23:53     ` Andre Przywara
2025-04-09  1:46       ` Tom Rini
2025-04-09 10:41         ` Andre Przywara
2025-04-09 14:15           ` Tom Rini
2025-03-27 15:33 ` [PATCH 06/18] fastboot: annotate switch/case fallthrough case Andre Przywara
2025-03-31  8:04   ` Mattijs Korpershoek
2025-03-27 15:33 ` [PATCH 07/18] net: sun8i-emac: annotate fallthrough Andre Przywara
2025-03-27 15:33 ` [PATCH 08/18] usb: ohci-hcd: annotate switch/case fallthrough Andre Przywara
2025-03-27 15:33 ` [PATCH 09/18] usb: xhci: annotate switch/case fallthrough properly Andre Przywara
2025-03-31 15:57   ` Tom Rini
2025-03-27 15:33 ` [PATCH 10/18] video: annotate switch/case fall-through Andre Przywara
2025-03-31 16:01   ` Tom Rini
2025-03-27 15:33 ` [PATCH 11/18] net: e1000: annotate switch/case fallthrough Andre Przywara
2025-03-27 15:33 ` [PATCH 12/18] mtd: ubi: annotate fallthrough Andre Przywara
2025-03-28  5:03   ` Heiko Schocher
2025-03-27 15:33 ` [PATCH 13/18] arm: mach-k3: am62p: annotate switch/case fallthrough Andre Przywara
2025-03-31 14:11   ` Tom Rini
2025-03-27 15:33 ` [PATCH 14/18] mtd: spi-nor-tiny: " Andre Przywara
2025-03-31 16:07   ` Tom Rini
2025-03-27 15:33 ` [PATCH 15/18] mtd: rawnand: nand_base: " Andre Przywara
2025-03-28  8:26   ` Michael Nazzareno Trimarchi
2025-03-27 15:33 ` [PATCH 16/18] cmd: pmic: " Andre Przywara
2025-03-31 16:09   ` Tom Rini
2025-03-27 15:33 ` [PATCH 17/18] cmd: spl: " Andre Przywara
2025-03-31 16:09   ` Tom Rini
2025-03-27 15:33 ` [PATCH 18/18] [DO NOT MERGE] Makefile: enable switch/case fallthrough warnings Andre Przywara
2025-03-28 16:07   ` Tom Rini
2025-03-28 10:28 ` [PATCH 00/18] Annotate switch/case fallthrough cases Heinrich Schuchardt
2025-03-28 10:39   ` Andre Przywara
2025-03-28 13:45     ` Andre Przywara
2025-03-28 13:49       ` Tom Rini
2025-04-10  1:46 ` (subset) " Tom Rini

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=20250327153313.2105227-1-andre.przywara@arm.com \
    --to=andre.przywara@arm.com \
    --cc=agust@denx.de \
    --cc=bmeng.cn@gmail.com \
    --cc=dario.binacchi@amarulasolutions.com \
    --cc=hs@denx.de \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jagan@amarulasolutions.com \
    --cc=joe.hershberger@ni.com \
    --cc=kmpark@infradead.org \
    --cc=marex@denx.de \
    --cc=michael@amarulasolutions.com \
    --cc=michal.simek@amd.com \
    --cc=mkorpershoek@baylibre.com \
    --cc=rfried.dev@gmail.com \
    --cc=sjg@chromium.org \
    --cc=trini@konsulko.com \
    --cc=tudor.ambarus@linaro.org \
    --cc=u-boot@lists.denx.de \
    --cc=vigneshr@ti.com \
    --cc=xypron.glpk@gmx.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox