mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-18 11:54:37 +08:00
fallthrough fixes for Clang for 5.14-rc2
Hi Linus, Please, pull the following patches that fix many fall-through warnings when building with Clang and -Wimplicit-fallthrough. This pull-request also contains the patch for Makefile that enables -Wimplicit-fallthrough for Clang, globally. It's also important to notice that since we have adopted the use of the pseudo-keyword macro fallthrough; we also want to avoid having more /* fall through */ comments being introduced. Notice that contrary to GCC, Clang doesn't recognize any comments as implicit fall-through markings when the -Wimplicit-fallthrough option is enabled. So, in order to avoid having more comments being introduced, we have to use the option -Wimplicit-fallthrough=5 for GCC, which similar to Clang, will cause a warning in case a code comment is intended to be used as a fall-through marking. The patch for Makefile also enforces this. We had almost 4,000 of these issues for Clang in the beginning, and there might be a couple more out there when building some architectures with certain configurations. However, with the recent fixes I think we are in good shape and it is now possible to enable -Wimplicit-fallthrough for Clang. :) Thanks! -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEkmRahXBSurMIg1YvRwW0y0cG2zEFAmDvPV0ACgkQRwW0y0cG 2zGJ1xAAsbSN8I+ESxFCKi4UwQC71988isb0rHGL6rQPBbEYD2bbI+82aGu6WH8z 2ZVQZa5x3tUoIsqR2GMK5Npn1dFvuNWGZkYzlgjAp+FgzaULCLUc4NW9DEWU/Kbd UBz8ilXL7tUAlDalUYjXAVVTxMnRTZ+BDCbEmIdRZ5X/pMlD2xHeMGG4kh8/cHjJ +mqFwCFPZoyLJzPBnm37OEfIr8JxrLZAo1gfmz5sxfmBdYDY3hjV/BVgP8h0bkY9 ITaq0LMEAPMXvU+4DP3DxuqzRr9COYMcddmbaWwsXPd7UAuoXwGLvqx7JE0QqY3g J80w4/hXqEa4o4/fUAsfjYEQoNTEnhl0iGskBJD2xy5Lj17/m4aOSL44ibr2Ag67 yfJPWi9tooYELEGNobPVHPuqk4ts6amKTOKqHWMBEcTEOIGzaGWPEjRoyaMivfZ3 G3ZbEPEYERcJRizm63UbciLeslGsxb6tdYQEy5VI8Wa7caz9Ci9HT+jjS7Vm2fuq 1zg+vIgwuSxvwxrSV/PDTRcQm9EM/MoRL0D4jbr7gtYD6KNwH8Vo6M21CoaB9gH3 FgMiCT4zy9KiONjVDJKkjtzuk+9OwpI5AAg0/fAQ4Ak9TzUN3Xfg7HpytETCIJ0Z Ii3Jqwe+3IRTNq94ZTIiX/0hT7i5GsPxUfPzI2vwttCJn9ctUcM= =XVNN -----END PGP SIGNATURE----- Merge tag 'Wimplicit-fallthrough-clang-5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux Pull fallthrough fixes from Gustavo Silva: "This fixes many fall-through warnings when building with Clang and -Wimplicit-fallthrough, and also enables -Wimplicit-fallthrough for Clang, globally. It's also important to notice that since we have adopted the use of the pseudo-keyword macro fallthrough, we also want to avoid having more /* fall through */ comments being introduced. Contrary to GCC, Clang doesn't recognize any comments as implicit fall-through markings when the -Wimplicit-fallthrough option is enabled. So, in order to avoid having more comments being introduced, we use the option -Wimplicit-fallthrough=5 for GCC, which similar to Clang, will cause a warning in case a code comment is intended to be used as a fall-through marking. The patch for Makefile also enforces this. We had almost 4,000 of these issues for Clang in the beginning, and there might be a couple more out there when building some architectures with certain configurations. However, with the recent fixes I think we are in good shape and it is now possible to enable the warning for Clang" * tag 'Wimplicit-fallthrough-clang-5.14-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux: (27 commits) Makefile: Enable -Wimplicit-fallthrough for Clang powerpc/smp: Fix fall-through warning for Clang dmaengine: mpc512x: Fix fall-through warning for Clang usb: gadget: fsl_qe_udc: Fix fall-through warning for Clang powerpc/powernv: Fix fall-through warning for Clang MIPS: Fix unreachable code issue MIPS: Fix fall-through warnings for Clang ASoC: Mediatek: MT8183: Fix fall-through warning for Clang power: supply: Fix fall-through warnings for Clang dmaengine: ti: k3-udma: Fix fall-through warning for Clang s390: Fix fall-through warnings for Clang dmaengine: ipu: Fix fall-through warning for Clang iommu/arm-smmu-v3: Fix fall-through warning for Clang mmc: jz4740: Fix fall-through warning for Clang PCI: Fix fall-through warning for Clang scsi: libsas: Fix fall-through warning for Clang video: fbdev: Fix fall-through warning for Clang math-emu: Fix fall-through warning cpufreq: Fix fall-through warning for Clang drm/msm: Fix fall-through warning in msm_gem_new_impl() ...
This commit is contained in:
commit
e9338abf0e
9
Makefile
9
Makefile
@ -797,12 +797,6 @@ KBUILD_CFLAGS += -Wno-gnu
|
||||
# source of a reference will be _MergedGlobals and not on of the whitelisted names.
|
||||
# See modpost pattern 2
|
||||
KBUILD_CFLAGS += -mno-global-merge
|
||||
else
|
||||
|
||||
# Warn about unmarked fall-throughs in switch statement.
|
||||
# Disabled for clang while comment to attribute conversion happens and
|
||||
# https://github.com/ClangBuiltLinux/linux/issues/636 is discussed.
|
||||
KBUILD_CFLAGS += $(call cc-option,-Wimplicit-fallthrough,)
|
||||
endif
|
||||
|
||||
# These warnings generated too much noise in a regular build.
|
||||
@ -983,6 +977,9 @@ NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
|
||||
# warn about C99 declaration after statement
|
||||
KBUILD_CFLAGS += -Wdeclaration-after-statement
|
||||
|
||||
# Warn about unmarked fall-throughs in switch statement.
|
||||
KBUILD_CFLAGS += $(call cc-option,-Wimplicit-fallthrough=5,$(call cc-option,-Wimplicit-fallthrough,))
|
||||
|
||||
# Variable Length Arrays (VLAs) should not be used anywhere in the kernel
|
||||
KBUILD_CFLAGS += -Wvla
|
||||
|
||||
|
@ -76,7 +76,7 @@ static inline int __enable_fpu(enum fpu_mode mode)
|
||||
/* we only have a 32-bit FPU */
|
||||
return SIGFPE;
|
||||
#endif
|
||||
fallthrough;
|
||||
/* fallthrough */
|
||||
case FPU_32BIT:
|
||||
if (cpu_has_fre) {
|
||||
/* clear FRE */
|
||||
|
@ -1383,6 +1383,7 @@ static void build_r4000_tlb_refill_handler(void)
|
||||
switch (boot_cpu_type()) {
|
||||
default:
|
||||
if (sizeof(long) == 4) {
|
||||
fallthrough;
|
||||
case CPU_LOONGSON2EF:
|
||||
/* Loongson2 ebase is different than r4k, we have more space */
|
||||
if ((p - tlb_handler) > 64)
|
||||
@ -2169,6 +2170,7 @@ static void build_r4000_tlb_load_handler(void)
|
||||
default:
|
||||
if (cpu_has_mips_r2_exec_hazard) {
|
||||
uasm_i_ehb(&p);
|
||||
fallthrough;
|
||||
|
||||
case CPU_CAVIUM_OCTEON:
|
||||
case CPU_CAVIUM_OCTEON_PLUS:
|
||||
|
@ -146,6 +146,7 @@ static inline void psurge_clr_ipi(int cpu)
|
||||
switch(psurge_type) {
|
||||
case PSURGE_DUAL:
|
||||
out_8(psurge_sec_intr, ~0);
|
||||
break;
|
||||
case PSURGE_NONE:
|
||||
break;
|
||||
default:
|
||||
|
@ -126,6 +126,7 @@ int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val,
|
||||
case DIE_SSTEP:
|
||||
if (uprobe_post_sstep_notifier(regs))
|
||||
return NOTIFY_STOP;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -75,6 +75,7 @@ static int __op_panel_update_display(void)
|
||||
rc);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case OPAL_SUCCESS:
|
||||
break;
|
||||
default:
|
||||
|
@ -942,8 +942,6 @@ static int __init longhaul_init(void)
|
||||
return cpufreq_register_driver(&longhaul_driver);
|
||||
case 10:
|
||||
pr_err("Use acpi-cpufreq driver for VIA C7\n");
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
||||
return -ENODEV;
|
||||
|
@ -618,6 +618,7 @@ static int ipu_enable_channel(struct idmac *idmac, struct idmac_channel *ichan)
|
||||
case IDMAC_SDC_1:
|
||||
case IDMAC_IC_7:
|
||||
ipu_channel_set_priority(ipu, channel, true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -978,6 +979,7 @@ static int ipu_init_channel(struct idmac *idmac, struct idmac_channel *ichan)
|
||||
case IDMAC_SDC_0:
|
||||
case IDMAC_SDC_1:
|
||||
n_desc = 4;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -813,6 +813,7 @@ inline bool is_buswidth_valid(u8 buswidth, bool is_mpc8308)
|
||||
case 16:
|
||||
if (is_mpc8308)
|
||||
return false;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 4:
|
||||
|
@ -4948,6 +4948,7 @@ static int setup_resources(struct udma_dev *ud)
|
||||
ud->tchan_cnt),
|
||||
ud->rchan_cnt - bitmap_weight(ud->rchan_map,
|
||||
ud->rchan_cnt));
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -62,6 +62,7 @@ static void try_to_writeback(struct drm_i915_gem_object *obj,
|
||||
switch (obj->mm.madv) {
|
||||
case I915_MADV_DONTNEED:
|
||||
i915_gem_object_truncate(obj);
|
||||
return;
|
||||
case __I915_MADV_PURGED:
|
||||
return;
|
||||
}
|
||||
|
@ -1169,7 +1169,7 @@ static int msm_gem_new_impl(struct drm_device *dev,
|
||||
case MSM_BO_CACHED_COHERENT:
|
||||
if (priv->has_cached_coherent)
|
||||
break;
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
default:
|
||||
DRM_DEV_ERROR(dev->dev, "invalid cache flag: %x\n",
|
||||
(flags & MSM_BO_CACHE_MASK));
|
||||
|
@ -379,6 +379,7 @@ static void arm_smmu_cmdq_skip_err(struct arm_smmu_device *smmu)
|
||||
switch (idx) {
|
||||
case CMDQ_ERR_CERROR_ABT_IDX:
|
||||
dev_err(smmu->dev, "retrying command fetch\n");
|
||||
return;
|
||||
case CMDQ_ERR_CERROR_NONE_IDX:
|
||||
return;
|
||||
case CMDQ_ERR_CERROR_ATC_INV_IDX:
|
||||
|
@ -789,6 +789,8 @@ static irqreturn_t jz_mmc_irq_worker(int irq, void *devid)
|
||||
break;
|
||||
}
|
||||
}
|
||||
fallthrough;
|
||||
|
||||
case JZ4740_MMC_STATE_DONE:
|
||||
break;
|
||||
}
|
||||
|
@ -108,8 +108,8 @@ map_word cfi_build_cmd(u_long cmd, struct map_info *map, struct cfi_private *cfi
|
||||
#if BITS_PER_LONG >= 64
|
||||
case 8:
|
||||
onecmd |= (onecmd << (chip_mode * 32));
|
||||
#endif
|
||||
fallthrough;
|
||||
#endif
|
||||
case 4:
|
||||
onecmd |= (onecmd << (chip_mode * 16));
|
||||
fallthrough;
|
||||
@ -164,8 +164,8 @@ unsigned long cfi_merge_status(map_word val, struct map_info *map,
|
||||
#if BITS_PER_LONG >= 64
|
||||
case 8:
|
||||
res |= (onestat >> (chip_mode * 32));
|
||||
#endif
|
||||
fallthrough;
|
||||
#endif
|
||||
case 4:
|
||||
res |= (onestat >> (chip_mode * 16));
|
||||
fallthrough;
|
||||
|
@ -1159,6 +1159,7 @@ int nfp_fl_ct_del_flow(struct nfp_fl_ct_map_entry *ct_map_ent)
|
||||
nfp_ct_map_params);
|
||||
nfp_fl_ct_clean_flow_entry(ct_map_ent->ct_entry);
|
||||
kfree(ct_map_ent);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -389,6 +389,7 @@ static int mt7921_set_key(struct ieee80211_hw *hw, enum set_key_cmd cmd,
|
||||
case WLAN_CIPHER_SUITE_WEP104:
|
||||
if (!mvif->wep_sta)
|
||||
return -EOPNOTSUPP;
|
||||
break;
|
||||
case WLAN_CIPHER_SUITE_TKIP:
|
||||
case WLAN_CIPHER_SUITE_CCMP:
|
||||
case WLAN_CIPHER_SUITE_CCMP_256:
|
||||
|
@ -230,8 +230,8 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd,
|
||||
break;
|
||||
}
|
||||
/* If arch decided it can't, fall through... */
|
||||
#endif /* HAVE_PCI_MMAP */
|
||||
fallthrough;
|
||||
#endif /* HAVE_PCI_MMAP */
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
|
@ -1728,6 +1728,7 @@ static void ab8500_fg_algorithm_calibrate(struct ab8500_fg *di)
|
||||
break;
|
||||
case AB8500_FG_CALIB_WAIT:
|
||||
dev_dbg(di->dev, "Calibration WFI\n");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -2224,6 +2225,7 @@ static int ab8500_fg_get_ext_psy_data(struct device *dev, void *data)
|
||||
queue_work(di->fg_wq, &di->fg_work);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -1150,6 +1150,7 @@ static int abx500_chargalg_get_ext_psy_data(struct device *dev, void *data)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -371,8 +371,6 @@ __tapechar_ioctl(struct tape_device *device,
|
||||
case MTSEEK:
|
||||
if (device->required_tapemarks)
|
||||
tape_std_terminate_write(device);
|
||||
default:
|
||||
;
|
||||
}
|
||||
rc = tape_mtop(device, op.mt_op, op.mt_count);
|
||||
|
||||
|
@ -1454,6 +1454,7 @@ again:
|
||||
get_ccwdev_lock(ch->cdev), saveflags);
|
||||
if (rc != 0)
|
||||
ctcm_ccw_check_rc(ch, rc, "normal RX");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -434,6 +434,7 @@ static int qeth_l3_correct_routing_type(struct qeth_card *card,
|
||||
if (qeth_is_ipafunc_supported(card, prot,
|
||||
IPA_OSA_MC_ROUTER))
|
||||
return 0;
|
||||
goto out_inval;
|
||||
default:
|
||||
goto out_inval;
|
||||
}
|
||||
|
@ -461,7 +461,7 @@ static void sas_discover_domain(struct work_struct *work)
|
||||
break;
|
||||
#else
|
||||
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. */
|
||||
default:
|
||||
|
@ -586,6 +586,7 @@ static int qe_ep_init(struct qe_udc *udc,
|
||||
case USB_SPEED_FULL:
|
||||
if (max <= 1023)
|
||||
break;
|
||||
fallthrough;
|
||||
default:
|
||||
goto en_done;
|
||||
}
|
||||
|
@ -241,6 +241,8 @@ xilinx_fb_blank(int blank_mode, struct fb_info *fbi)
|
||||
case FB_BLANK_POWERDOWN:
|
||||
/* turn off panel */
|
||||
xilinx_fb_out32(drvdata, REG_CTRL, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -369,8 +369,8 @@ static long do_fcntl(int fd, unsigned int cmd, unsigned long arg,
|
||||
/* 32-bit arches must use fcntl64() */
|
||||
case F_OFD_SETLK:
|
||||
case F_OFD_SETLKW:
|
||||
#endif
|
||||
fallthrough;
|
||||
#endif
|
||||
case F_SETLK:
|
||||
case F_SETLKW:
|
||||
if (copy_from_user(&flock, argp, sizeof(flock)))
|
||||
|
@ -483,7 +483,7 @@ xfs_attr_set_iter(
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_RM_LBLK:
|
||||
/* Set state in case xfs_attr_rmtval_remove returns -EAGAIN */
|
||||
dac->dela_state = XFS_DAS_RM_LBLK;
|
||||
@ -496,7 +496,7 @@ xfs_attr_set_iter(
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_RD_LEAF:
|
||||
/*
|
||||
* This is the last step for leaf format. Read the block with
|
||||
@ -528,7 +528,7 @@ xfs_attr_set_iter(
|
||||
return error;
|
||||
}
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_ALLOC_NODE:
|
||||
/*
|
||||
* If there was an out-of-line value, allocate the blocks we
|
||||
@ -590,7 +590,7 @@ xfs_attr_set_iter(
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_RM_NBLK:
|
||||
/* Set state in case xfs_attr_rmtval_remove returns -EAGAIN */
|
||||
dac->dela_state = XFS_DAS_RM_NBLK;
|
||||
@ -603,7 +603,7 @@ xfs_attr_set_iter(
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_CLR_FLAG:
|
||||
/*
|
||||
* The last state for node format. Look up the old attr and
|
||||
@ -1406,7 +1406,7 @@ xfs_attr_remove_iter(
|
||||
state = dac->da_state;
|
||||
}
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_RMTBLK:
|
||||
dac->dela_state = XFS_DAS_RMTBLK;
|
||||
|
||||
@ -1441,7 +1441,7 @@ xfs_attr_remove_iter(
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_RM_NAME:
|
||||
/*
|
||||
* If we came here fresh from a transaction roll, reattach all
|
||||
@ -1469,7 +1469,7 @@ xfs_attr_remove_iter(
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
/* fallthrough */
|
||||
fallthrough;
|
||||
case XFS_DAS_RM_SHRINK:
|
||||
/*
|
||||
* If the result is small enough, push it all into the inode.
|
||||
|
@ -338,7 +338,7 @@ do { \
|
||||
FP_SET_EXCEPTION(FP_EX_INVALID | FP_EX_INVALID_ISI); \
|
||||
break; \
|
||||
} \
|
||||
/* FALLTHRU */ \
|
||||
fallthrough; \
|
||||
\
|
||||
case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_NORMAL): \
|
||||
case _FP_CLS_COMBINE(FP_CLS_INF,FP_CLS_ZERO): \
|
||||
|
@ -1045,8 +1045,8 @@ int gdb_serial_stub(struct kgdb_state *ks)
|
||||
gdb_cmd_detachkill(ks);
|
||||
return DBG_PASS_EVENT;
|
||||
}
|
||||
#endif
|
||||
fallthrough;
|
||||
#endif
|
||||
case 'C': /* Exception passing */
|
||||
tmp = gdb_cmd_exception_pass(ks);
|
||||
if (tmp > 0)
|
||||
|
@ -341,6 +341,7 @@ static int set_mtkaif_rx(struct mtk_base_afe *afe)
|
||||
case MT8183_MTKAIF_PROTOCOL_1:
|
||||
regmap_write(afe->regmap, AFE_AUD_PAD_TOP, 0x31);
|
||||
regmap_write(afe->regmap, AFE_ADDA_MTKAIF_CFG0, 0x0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user