Re: [GIT PULL] fallthrough pseudo-keyword macro conversions for 5.9-rc2

From: Gustavo A. R. Silva
Date: Sat Aug 22 2020 - 18:37:15 EST



Hi Joe,

On 8/22/20 12:36, Joe Perches wrote:
> On Thu, 2020-08-20 at 17:02 -0500, Gustavo A. R. Silva wrote:
>> This treewide patch doesn't address ALL fall-through markings in all
>> subsystems at once because I have previously sent out patches for some of
>> such subsystems separately, and I will follow up on them; however, this
>> definitely contributes most of the work needed to replace all the
>> fall-through markings with the fallthrough pseudo-keyword macro in the
>> whole codebase.
>
> Hi Gustavo. Thanks for this.
>
> Some stragglers (for -next) in the arch/subsystems modified
> by this patch:
>
> arch/x86/
> drivers/gpu/
> drivers/misc/
> drivers/net/ethernet/
> lib/
>
> And some in scripts/ and tools/ which maybe shouldn't be changed.
>

I didn't change anything in scripts/ and tools/

I first plan to send a patch series to the following to tools/include/linux/compiler-gcc.h:

/*
* Add the pseudo keyword 'fallthrough' so case statement blocks
* must end with any of these keywords:
* break;
* fallthrough;
* goto <label>;
* return [expression];
*
* gcc: https://gcc.gnu.org/onlinedocs/gcc/Statement-Attributes.html#Statement-Attributes
*/
#if __has_attribute(__fallthrough__)
# define fallthrough __attribute__((__fallthrough__))
#else
# define fallthrough do {} while (0) /* fallthrough */
#endif

and address the fallthrough markings in tools/

Thanks
--
Gustavo

> Possible diffs for each straggler directory block below:
>
>> arch/x86/
>
> $ git diff -U0 arch
> diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
> index 0f3d01562ded..b825a5a5ede7 100644
> --- a/arch/x86/events/core.c
> +++ b/arch/x86/events/core.c
> @@ -1149 +1149 @@ static inline void x86_assign_hw_event(struct perf_event *event,
> - /* fall through */
> + fallthrough;
> diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c
> index 983cd53ed4c9..097cc3439e53 100644
> --- a/arch/x86/kernel/e820.c
> +++ b/arch/x86/kernel/e820.c
> @@ -190 +190 @@ static void __init e820_print_type(enum e820_type type)
> - case E820_TYPE_RAM: /* Fall through: */
> + case E820_TYPE_RAM:
> @@ -197 +197 @@ static void __init e820_print_type(enum e820_type type)
> - case E820_TYPE_PMEM: /* Fall through: */
> + case E820_TYPE_PMEM:
> @@ -1044 +1044 @@ static const char *__init e820_type_to_string(struct e820_entry *entry)
> - case E820_TYPE_RESERVED_KERN: /* Fall-through: */
> + case E820_TYPE_RESERVED_KERN:
> @@ -1060 +1060 @@ static unsigned long __init e820_type_to_iomem_type(struct e820_entry *entry)
> - case E820_TYPE_RESERVED_KERN: /* Fall-through: */
> + case E820_TYPE_RESERVED_KERN:
> @@ -1062,7 +1062,7 @@ static unsigned long __init e820_type_to_iomem_type(struct e820_entry *entry)
> - case E820_TYPE_ACPI: /* Fall-through: */
> - case E820_TYPE_NVS: /* Fall-through: */
> - case E820_TYPE_UNUSABLE: /* Fall-through: */
> - case E820_TYPE_PRAM: /* Fall-through: */
> - case E820_TYPE_PMEM: /* Fall-through: */
> - case E820_TYPE_RESERVED: /* Fall-through: */
> - case E820_TYPE_SOFT_RESERVED: /* Fall-through: */
> + case E820_TYPE_ACPI:
> + case E820_TYPE_NVS:
> + case E820_TYPE_UNUSABLE:
> + case E820_TYPE_PRAM:
> + case E820_TYPE_PMEM:
> + case E820_TYPE_RESERVED:
> + case E820_TYPE_SOFT_RESERVED:
> @@ -1082,3 +1082,3 @@ static unsigned long __init e820_type_to_iores_desc(struct e820_entry *entry)
> - case E820_TYPE_RESERVED_KERN: /* Fall-through: */
> - case E820_TYPE_RAM: /* Fall-through: */
> - case E820_TYPE_UNUSABLE: /* Fall-through: */
> + case E820_TYPE_RESERVED_KERN:
> + case E820_TYPE_RAM:
> + case E820_TYPE_UNUSABLE:
>
>> drivers/gpu/
>
> $ git diff -U1 drivers/gpu
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/si_dpm.c b/drivers/gpu/drm/amd/pm/powerplay/si_dpm.c
> index b5986d19dc08..77dec1a56b9b 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/si_dpm.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/si_dpm.c
> @@ -6203,3 +6203,3 @@ static void si_request_link_speed_change_before_state_change(struct amdgpu_devic
> #endif
> - /* fall through */
> + fallthrough;
> default:
> diff --git a/drivers/gpu/drm/radeon/ci_dpm.c b/drivers/gpu/drm/radeon/ci_dpm.c
> index 886e9959496f..6ba12f141833 100644
> --- a/drivers/gpu/drm/radeon/ci_dpm.c
> +++ b/drivers/gpu/drm/radeon/ci_dpm.c
> @@ -4863,3 +4863,3 @@ static void ci_request_link_speed_change_before_state_change(struct radeon_devic
> #endif
> - /* fall through */
> + fallthrough;
> default:
> diff --git a/drivers/gpu/drm/radeon/si_dpm.c b/drivers/gpu/drm/radeon/si_dpm.c
> index d1c73e9db889..76427c893827 100644
> --- a/drivers/gpu/drm/radeon/si_dpm.c
> +++ b/drivers/gpu/drm/radeon/si_dpm.c
> @@ -5751,3 +5751,3 @@ static void si_request_link_speed_change_before_state_change(struct radeon_devic
> #endif
> - /* fall through */
> + fallthrough;
> default:
>
>> drivers/misc/
>
> diff --git a/drivers/misc/mei/interrupt.c b/drivers/misc/mei/interrupt.c
> index 326955b04fda..683871267f4f 100644
> --- a/drivers/misc/mei/interrupt.c
> +++ b/drivers/misc/mei/interrupt.c
> @@ -135 +134,0 @@ static int mei_cl_irq_read_msg(struct mei_cl *cl,
> - fallthrough;
>
>> drivers/net/ethernet/
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c
> index 08c76636c164..2a86307e3c43 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-anarion.c
> @@ -87,3 +87,2 @@ static struct anarion_gmac *anarion_config_dt(struct platform_device *pdev)
> case PHY_INTERFACE_MODE_RGMII:
> - fallthrough;
> case PHY_INTERFACE_MODE_RGMII_ID:
>
>> drivers/scsi/
>
> $ git diff -U1 drivers/scsi
> diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c
> index cd7c7d269f6f..26c992213c9c 100644
> --- a/drivers/scsi/libsas/sas_discover.c
> +++ b/drivers/scsi/libsas/sas_discover.c
> @@ -468,5 +468,4 @@ static void sas_discover_domain(struct work_struct *work)
> pr_notice("ATA device seen but CONFIG_SCSI_SAS_ATA=N so cannot attach\n");
> - /* Fall through */
> + fallthrough;
> #endif
> - /* Fall through - only for the #else condition above. */
>
>> lib/
>
> $ git diff -U0 lib
> diff --git a/lib/nlattr.c b/lib/nlattr.c
> index 665bdaff02c8..e0da8c23d674 100644
> --- a/lib/nlattr.c
> +++ b/lib/nlattr.c
> @@ -404,2 +404 @@ static int validate_nla(const struct nlattr *nla, int maxtype,
> - /* fall through */
> -
> + fallthrough;
> diff --git a/lib/zlib_inflate/inflate.c b/lib/zlib_inflate/inflate.c
> index 67cc9b08ae9d..8147b0ade347 100644
> --- a/lib/zlib_inflate/inflate.c
> +++ b/lib/zlib_inflate/inflate.c
> @@ -399 +399 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -407 +407 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -410 +410 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -449 +449 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -483 +483 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -504 +504 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -578 +578 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -618 +618 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -626 +626 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -652 +652 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -672 +672 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
> @@ -723 +723 @@ int zlib_inflate(z_streamp strm, int flush)
> - /* fall through */
> + fallthrough;
>
>
>