Ensure the flow through switch statements is clear
Ensure case clauses:
* Terminate with an unconditional break, return or goto statement.
* Use conditional break, return or goto statements as long as the end
of the case clause is unreachable; such case clauses must terminate
with assert(0) /* Unreachable */ or an unconditional __dead2 function
call
* Only fallthough when doing otherwise would result in less
readable/maintainable code; such case clauses must terminate with a
/* Fallthrough */ comment to make it clear this is the case and
indicate that a fallthrough is intended.
This reduces the chance of bugs appearing due to unintended flow through a
switch statement
Change-Id: I70fc2d1f4fd679042397dec12fd1982976646168
Signed-off-by: Daniel Boulby <daniel.boulby@arm.com>
diff --git a/plat/common/plat_gicv2.c b/plat/common/plat_gicv2.c
index 2b61834..4b66873 100644
--- a/plat/common/plat_gicv2.c
+++ b/plat/common/plat_gicv2.c
@@ -226,7 +226,7 @@
gicv2_type = GICV2_INTR_GROUP1;
break;
default:
- assert(false);
+ assert(0); /* Unreachable */
break;
}
@@ -266,7 +266,7 @@
proc_num = -1;
break;
default:
- assert(false);
+ assert(0); /* Unreachable */
break;
}
diff --git a/plat/common/plat_gicv3.c b/plat/common/plat_gicv3.c
index e43a355..f8277fe 100644
--- a/plat/common/plat_gicv3.c
+++ b/plat/common/plat_gicv3.c
@@ -157,6 +157,7 @@
return __builtin_ctz(SCR_IRQ_BIT);
else
return __builtin_ctz(SCR_FIQ_BIT);
+ assert(0); /* Unreachable */
case INTR_TYPE_NS:
/*
* The Non secure interrupts will be signaled as FIQ in S-EL0/1
@@ -166,6 +167,7 @@
return __builtin_ctz(SCR_FIQ_BIT);
else
return __builtin_ctz(SCR_IRQ_BIT);
+ assert(0); /* Unreachable */
case INTR_TYPE_EL3:
/*
* The EL3 interrupts are signaled as FIQ in both S-EL0/1 and
@@ -255,7 +257,7 @@
irm = GICV3_IRM_ANY;
break;
default:
- assert(false);
+ assert(0); /* Unreachable */
break;
}
diff --git a/plat/rockchip/rk3399/drivers/dp/cdn_dp.c b/plat/rockchip/rk3399/drivers/dp/cdn_dp.c
index 2adab8f..73a75bb 100644
--- a/plat/rockchip/rk3399/drivers/dp/cdn_dp.c
+++ b/plat/rockchip/rk3399/drivers/dp/cdn_dp.c
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <assert.h>
#include <cdefs.h>
#include <cdn_dp.h>
#include <smccc.h>
@@ -38,6 +39,7 @@
return hdcp_handler(&key);
else
return PSCI_E_INVALID_PARAMS;
+ assert(0); /* Unreachable */
default:
return SMC_UNK;
}
diff --git a/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c b/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c
index 32c7357..16c08ae 100644
--- a/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c
+++ b/plat/xilinx/zynqmp/pm_service/pm_api_ioctl.c
@@ -253,6 +253,7 @@
if (type == PM_DLL_RESET_ASSERT)
break;
mdelay(1);
+ /* Fallthrough */
case PM_DLL_RESET_RELEASE:
ret = pm_mmio_write(ZYNQMP_SD_DLL_CTRL, mask, 0);
break;