* [PATCH 1/5] bnx2x: Drop redundant callback function casts
2019-11-15 5:07 [PATCH 0/5] bnx2x: Remove function casts Kees Cook
@ 2019-11-15 5:07 ` Kees Cook
2019-11-15 5:07 ` [PATCH 2/5] bnx2x: Remove read_status_t " Kees Cook
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kees Cook @ 2019-11-15 5:07 UTC (permalink / raw)
To: David S. Miller
Cc: Kees Cook, Ariel Elior, Sudarsana Kalluru, GR-everest-linux-l2,
Sami Tolvanen, netdev, kernel-hardening, linux-kernel
NULL is already "void *" so it will auto-cast in assignments and
initializers. Additionally, all the callbacks for .link_reset,
.config_loopback, .set_link_led, and .phy_specific_func are already
correct. No casting is needed for these, so remove them.
Signed-off-by: Kees Cook <keescook@chromium.org>
---
.../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 160 +++++++++---------
1 file changed, 80 insertions(+), 80 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
index d581d0ae6584..decde193c5b3 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
@@ -11636,14 +11636,14 @@ static const struct bnx2x_phy phy_null = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)NULL,
- .read_status = (read_status_t)NULL,
- .link_reset = (link_reset_t)NULL,
- .config_loopback = (config_loopback_t)NULL,
- .format_fw_ver = (format_fw_ver_t)NULL,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .config_init = NULL,
+ .read_status = NULL,
+ .link_reset = NULL,
+ .config_loopback = NULL,
+ .format_fw_ver = NULL,
+ .hw_reset = NULL,
+ .set_link_led = NULL,
+ .phy_specific_func = NULL
};
static const struct bnx2x_phy phy_serdes = {
@@ -11673,12 +11673,12 @@ static const struct bnx2x_phy phy_serdes = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_xgxs_config_init,
.read_status = (read_status_t)bnx2x_link_settings_status,
- .link_reset = (link_reset_t)bnx2x_int_link_reset,
- .config_loopback = (config_loopback_t)NULL,
- .format_fw_ver = (format_fw_ver_t)NULL,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .link_reset = bnx2x_int_link_reset,
+ .config_loopback = NULL,
+ .format_fw_ver = NULL,
+ .hw_reset = NULL,
+ .set_link_led = NULL,
+ .phy_specific_func = NULL
};
static const struct bnx2x_phy phy_xgxs = {
@@ -11709,12 +11709,12 @@ static const struct bnx2x_phy phy_xgxs = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_xgxs_config_init,
.read_status = (read_status_t)bnx2x_link_settings_status,
- .link_reset = (link_reset_t)bnx2x_int_link_reset,
- .config_loopback = (config_loopback_t)bnx2x_set_xgxs_loopback,
- .format_fw_ver = (format_fw_ver_t)NULL,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)bnx2x_xgxs_specific_func
+ .link_reset = bnx2x_int_link_reset,
+ .config_loopback = bnx2x_set_xgxs_loopback,
+ .format_fw_ver = NULL,
+ .hw_reset = NULL,
+ .set_link_led = NULL,
+ .phy_specific_func = bnx2x_xgxs_specific_func
};
static const struct bnx2x_phy phy_warpcore = {
.type = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_DIRECT,
@@ -11747,12 +11747,12 @@ static const struct bnx2x_phy phy_warpcore = {
/* rsrv = */0,
.config_init = (config_init_t)bnx2x_warpcore_config_init,
.read_status = (read_status_t)bnx2x_warpcore_read_status,
- .link_reset = (link_reset_t)bnx2x_warpcore_link_reset,
- .config_loopback = (config_loopback_t)bnx2x_set_warpcore_loopback,
- .format_fw_ver = (format_fw_ver_t)NULL,
+ .link_reset = bnx2x_warpcore_link_reset,
+ .config_loopback = bnx2x_set_warpcore_loopback,
+ .format_fw_ver = NULL,
.hw_reset = (hw_reset_t)bnx2x_warpcore_hw_reset,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .set_link_led = NULL,
+ .phy_specific_func = NULL
};
@@ -11778,12 +11778,12 @@ static const struct bnx2x_phy phy_7101 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_7101_config_init,
.read_status = (read_status_t)bnx2x_7101_read_status,
- .link_reset = (link_reset_t)bnx2x_common_ext_link_reset,
- .config_loopback = (config_loopback_t)bnx2x_7101_config_loopback,
+ .link_reset = bnx2x_common_ext_link_reset,
+ .config_loopback = bnx2x_7101_config_loopback,
.format_fw_ver = (format_fw_ver_t)bnx2x_7101_format_ver,
.hw_reset = (hw_reset_t)bnx2x_7101_hw_reset,
- .set_link_led = (set_link_led_t)bnx2x_7101_set_link_led,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .set_link_led = bnx2x_7101_set_link_led,
+ .phy_specific_func = NULL
};
static const struct bnx2x_phy phy_8073 = {
.type = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8073,
@@ -11809,12 +11809,12 @@ static const struct bnx2x_phy phy_8073 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8073_config_init,
.read_status = (read_status_t)bnx2x_8073_read_status,
- .link_reset = (link_reset_t)bnx2x_8073_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_8073_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)bnx2x_8073_specific_func
+ .hw_reset = NULL,
+ .set_link_led = NULL,
+ .phy_specific_func = bnx2x_8073_specific_func
};
static const struct bnx2x_phy phy_8705 = {
.type = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8705,
@@ -11837,12 +11837,12 @@ static const struct bnx2x_phy phy_8705 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8705_config_init,
.read_status = (read_status_t)bnx2x_8705_read_status,
- .link_reset = (link_reset_t)bnx2x_common_ext_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_common_ext_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_null_format_ver,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .hw_reset = NULL,
+ .set_link_led = NULL,
+ .phy_specific_func = NULL
};
static const struct bnx2x_phy phy_8706 = {
.type = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8706,
@@ -11866,12 +11866,12 @@ static const struct bnx2x_phy phy_8706 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8706_config_init,
.read_status = (read_status_t)bnx2x_8706_read_status,
- .link_reset = (link_reset_t)bnx2x_common_ext_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_common_ext_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .hw_reset = NULL,
+ .set_link_led = NULL,
+ .phy_specific_func = NULL
};
static const struct bnx2x_phy phy_8726 = {
@@ -11898,12 +11898,12 @@ static const struct bnx2x_phy phy_8726 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8726_config_init,
.read_status = (read_status_t)bnx2x_8726_read_status,
- .link_reset = (link_reset_t)bnx2x_8726_link_reset,
- .config_loopback = (config_loopback_t)bnx2x_8726_config_loopback,
+ .link_reset = bnx2x_8726_link_reset,
+ .config_loopback = bnx2x_8726_config_loopback,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)NULL,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .hw_reset = NULL,
+ .set_link_led = NULL,
+ .phy_specific_func = NULL
};
static const struct bnx2x_phy phy_8727 = {
@@ -11929,12 +11929,12 @@ static const struct bnx2x_phy phy_8727 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8727_config_init,
.read_status = (read_status_t)bnx2x_8727_read_status,
- .link_reset = (link_reset_t)bnx2x_8727_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_8727_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
.hw_reset = (hw_reset_t)bnx2x_8727_hw_reset,
- .set_link_led = (set_link_led_t)bnx2x_8727_set_link_led,
- .phy_specific_func = (phy_specific_func_t)bnx2x_8727_specific_func
+ .set_link_led = bnx2x_8727_set_link_led,
+ .phy_specific_func = bnx2x_8727_specific_func
};
static const struct bnx2x_phy phy_8481 = {
.type = PORT_HW_CFG_XGXS_EXT_PHY_TYPE_BCM8481,
@@ -11964,12 +11964,12 @@ static const struct bnx2x_phy phy_8481 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8481_config_init,
.read_status = (read_status_t)bnx2x_848xx_read_status,
- .link_reset = (link_reset_t)bnx2x_8481_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_8481_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
.hw_reset = (hw_reset_t)bnx2x_8481_hw_reset,
- .set_link_led = (set_link_led_t)bnx2x_848xx_set_link_led,
- .phy_specific_func = (phy_specific_func_t)NULL
+ .set_link_led = bnx2x_848xx_set_link_led,
+ .phy_specific_func = NULL
};
static const struct bnx2x_phy phy_84823 = {
@@ -12001,12 +12001,12 @@ static const struct bnx2x_phy phy_84823 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
.read_status = (read_status_t)bnx2x_848xx_read_status,
- .link_reset = (link_reset_t)bnx2x_848x3_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_848x3_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)bnx2x_848xx_set_link_led,
- .phy_specific_func = (phy_specific_func_t)bnx2x_848xx_specific_func
+ .hw_reset = NULL,
+ .set_link_led = bnx2x_848xx_set_link_led,
+ .phy_specific_func = bnx2x_848xx_specific_func
};
static const struct bnx2x_phy phy_84833 = {
@@ -12036,12 +12036,12 @@ static const struct bnx2x_phy phy_84833 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
.read_status = (read_status_t)bnx2x_848xx_read_status,
- .link_reset = (link_reset_t)bnx2x_848x3_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_848x3_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
.hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
- .set_link_led = (set_link_led_t)bnx2x_848xx_set_link_led,
- .phy_specific_func = (phy_specific_func_t)bnx2x_848xx_specific_func
+ .set_link_led = bnx2x_848xx_set_link_led,
+ .phy_specific_func = bnx2x_848xx_specific_func
};
static const struct bnx2x_phy phy_84834 = {
@@ -12070,12 +12070,12 @@ static const struct bnx2x_phy phy_84834 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
.read_status = (read_status_t)bnx2x_848xx_read_status,
- .link_reset = (link_reset_t)bnx2x_848x3_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_848x3_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
.hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
- .set_link_led = (set_link_led_t)bnx2x_848xx_set_link_led,
- .phy_specific_func = (phy_specific_func_t)bnx2x_848xx_specific_func
+ .set_link_led = bnx2x_848xx_set_link_led,
+ .phy_specific_func = bnx2x_848xx_specific_func
};
static const struct bnx2x_phy phy_84858 = {
@@ -12104,12 +12104,12 @@ static const struct bnx2x_phy phy_84858 = {
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
.read_status = (read_status_t)bnx2x_848xx_read_status,
- .link_reset = (link_reset_t)bnx2x_848x3_link_reset,
- .config_loopback = (config_loopback_t)NULL,
+ .link_reset = bnx2x_848x3_link_reset,
+ .config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_8485x_format_ver,
.hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
- .set_link_led = (set_link_led_t)bnx2x_848xx_set_link_led,
- .phy_specific_func = (phy_specific_func_t)bnx2x_848xx_specific_func
+ .set_link_led = bnx2x_848xx_set_link_led,
+ .phy_specific_func = bnx2x_848xx_specific_func
};
static const struct bnx2x_phy phy_54618se = {
@@ -12138,12 +12138,12 @@ static const struct bnx2x_phy phy_54618se = {
/* rsrv = */0,
.config_init = (config_init_t)bnx2x_54618se_config_init,
.read_status = (read_status_t)bnx2x_54618se_read_status,
- .link_reset = (link_reset_t)bnx2x_54618se_link_reset,
- .config_loopback = (config_loopback_t)bnx2x_54618se_config_loopback,
- .format_fw_ver = (format_fw_ver_t)NULL,
- .hw_reset = (hw_reset_t)NULL,
- .set_link_led = (set_link_led_t)bnx2x_5461x_set_link_led,
- .phy_specific_func = (phy_specific_func_t)bnx2x_54618se_specific_func
+ .link_reset = bnx2x_54618se_link_reset,
+ .config_loopback = bnx2x_54618se_config_loopback,
+ .format_fw_ver = NULL,
+ .hw_reset = NULL,
+ .set_link_led = bnx2x_5461x_set_link_led,
+ .phy_specific_func = bnx2x_54618se_specific_func
};
/*****************************************************************/
/* */
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/5] bnx2x: Remove read_status_t function casts
2019-11-15 5:07 [PATCH 0/5] bnx2x: Remove function casts Kees Cook
2019-11-15 5:07 ` [PATCH 1/5] bnx2x: Drop redundant callback " Kees Cook
@ 2019-11-15 5:07 ` Kees Cook
2019-11-15 5:07 ` [PATCH 3/5] bnx2x: Remove config_init_t " Kees Cook
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kees Cook @ 2019-11-15 5:07 UTC (permalink / raw)
To: David S. Miller
Cc: Kees Cook, Ariel Elior, Sudarsana Kalluru, GR-everest-linux-l2,
Sami Tolvanen, netdev, kernel-hardening, linux-kernel
The function casts for .read_status callbacks end up casting some int
return values to u8. This seems to be bug-prone (-EINVAL being returned
into something that appears to be true/false), but fixing the function
prototypes doesn't change the existing behavior. Fix the return values
to remove the casts.
Signed-off-by: Kees Cook <keescook@chromium.org>
---
.../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 44 +++++++++----------
1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
index decde193c5b3..a124f1e0819f 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
@@ -5611,9 +5611,9 @@ static int bnx2x_get_link_speed_duplex(struct bnx2x_phy *phy,
return 0;
}
-static int bnx2x_link_settings_status(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static u8 bnx2x_link_settings_status(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
struct bnx2x *bp = params->bp;
@@ -5685,7 +5685,7 @@ static int bnx2x_link_settings_status(struct bnx2x_phy *phy,
return rc;
}
-static int bnx2x_warpcore_read_status(struct bnx2x_phy *phy,
+static u8 bnx2x_warpcore_read_status(struct bnx2x_phy *phy,
struct link_params *params,
struct link_vars *vars)
{
@@ -8993,9 +8993,9 @@ static u8 bnx2x_8706_config_init(struct bnx2x_phy *phy,
return 0;
}
-static int bnx2x_8706_read_status(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static u8 bnx2x_8706_read_status(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
return bnx2x_8706_8726_read_status(phy, params, vars);
}
@@ -11672,7 +11672,7 @@ static const struct bnx2x_phy phy_serdes = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_xgxs_config_init,
- .read_status = (read_status_t)bnx2x_link_settings_status,
+ .read_status = bnx2x_link_settings_status,
.link_reset = bnx2x_int_link_reset,
.config_loopback = NULL,
.format_fw_ver = NULL,
@@ -11708,7 +11708,7 @@ static const struct bnx2x_phy phy_xgxs = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_xgxs_config_init,
- .read_status = (read_status_t)bnx2x_link_settings_status,
+ .read_status = bnx2x_link_settings_status,
.link_reset = bnx2x_int_link_reset,
.config_loopback = bnx2x_set_xgxs_loopback,
.format_fw_ver = NULL,
@@ -11746,7 +11746,7 @@ static const struct bnx2x_phy phy_warpcore = {
/* req_duplex = */0,
/* rsrv = */0,
.config_init = (config_init_t)bnx2x_warpcore_config_init,
- .read_status = (read_status_t)bnx2x_warpcore_read_status,
+ .read_status = bnx2x_warpcore_read_status,
.link_reset = bnx2x_warpcore_link_reset,
.config_loopback = bnx2x_set_warpcore_loopback,
.format_fw_ver = NULL,
@@ -11777,7 +11777,7 @@ static const struct bnx2x_phy phy_7101 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_7101_config_init,
- .read_status = (read_status_t)bnx2x_7101_read_status,
+ .read_status = bnx2x_7101_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = bnx2x_7101_config_loopback,
.format_fw_ver = (format_fw_ver_t)bnx2x_7101_format_ver,
@@ -11808,7 +11808,7 @@ static const struct bnx2x_phy phy_8073 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8073_config_init,
- .read_status = (read_status_t)bnx2x_8073_read_status,
+ .read_status = bnx2x_8073_read_status,
.link_reset = bnx2x_8073_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
@@ -11836,7 +11836,7 @@ static const struct bnx2x_phy phy_8705 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8705_config_init,
- .read_status = (read_status_t)bnx2x_8705_read_status,
+ .read_status = bnx2x_8705_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_null_format_ver,
@@ -11865,7 +11865,7 @@ static const struct bnx2x_phy phy_8706 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8706_config_init,
- .read_status = (read_status_t)bnx2x_8706_read_status,
+ .read_status = bnx2x_8706_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
@@ -11897,7 +11897,7 @@ static const struct bnx2x_phy phy_8726 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8726_config_init,
- .read_status = (read_status_t)bnx2x_8726_read_status,
+ .read_status = bnx2x_8726_read_status,
.link_reset = bnx2x_8726_link_reset,
.config_loopback = bnx2x_8726_config_loopback,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
@@ -11928,7 +11928,7 @@ static const struct bnx2x_phy phy_8727 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8727_config_init,
- .read_status = (read_status_t)bnx2x_8727_read_status,
+ .read_status = bnx2x_8727_read_status,
.link_reset = bnx2x_8727_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
@@ -11963,7 +11963,7 @@ static const struct bnx2x_phy phy_8481 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_8481_config_init,
- .read_status = (read_status_t)bnx2x_848xx_read_status,
+ .read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_8481_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
@@ -12000,7 +12000,7 @@ static const struct bnx2x_phy phy_84823 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
- .read_status = (read_status_t)bnx2x_848xx_read_status,
+ .read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
@@ -12035,7 +12035,7 @@ static const struct bnx2x_phy phy_84833 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
- .read_status = (read_status_t)bnx2x_848xx_read_status,
+ .read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
@@ -12069,7 +12069,7 @@ static const struct bnx2x_phy phy_84834 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
- .read_status = (read_status_t)bnx2x_848xx_read_status,
+ .read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
@@ -12103,7 +12103,7 @@ static const struct bnx2x_phy phy_84858 = {
.req_duplex = 0,
.rsrv = 0,
.config_init = (config_init_t)bnx2x_848x3_config_init,
- .read_status = (read_status_t)bnx2x_848xx_read_status,
+ .read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
.format_fw_ver = (format_fw_ver_t)bnx2x_8485x_format_ver,
@@ -12137,7 +12137,7 @@ static const struct bnx2x_phy phy_54618se = {
/* req_duplex = */0,
/* rsrv = */0,
.config_init = (config_init_t)bnx2x_54618se_config_init,
- .read_status = (read_status_t)bnx2x_54618se_read_status,
+ .read_status = bnx2x_54618se_read_status,
.link_reset = bnx2x_54618se_link_reset,
.config_loopback = bnx2x_54618se_config_loopback,
.format_fw_ver = NULL,
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/5] bnx2x: Remove config_init_t function casts
2019-11-15 5:07 [PATCH 0/5] bnx2x: Remove function casts Kees Cook
2019-11-15 5:07 ` [PATCH 1/5] bnx2x: Drop redundant callback " Kees Cook
2019-11-15 5:07 ` [PATCH 2/5] bnx2x: Remove read_status_t " Kees Cook
@ 2019-11-15 5:07 ` Kees Cook
2019-11-15 5:07 ` [PATCH 4/5] bnx2x: Remove format_fw_ver_t " Kees Cook
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Kees Cook @ 2019-11-15 5:07 UTC (permalink / raw)
To: David S. Miller
Cc: Kees Cook, Ariel Elior, Sudarsana Kalluru, GR-everest-linux-l2,
Sami Tolvanen, netdev, kernel-hardening, linux-kernel
No callers of .config_init check return values. Remove the casting and
change all callbacks to have the correct function prototype.
Signed-off-by: Kees Cook <keescook@chromium.org>
---
.../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 105 ++++++++----------
.../net/ethernet/broadcom/bnx2x/bnx2x_link.h | 4 +-
2 files changed, 48 insertions(+), 61 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
index a124f1e0819f..2bc6408ce00d 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
@@ -7364,9 +7364,9 @@ static void bnx2x_8073_specific_func(struct bnx2x_phy *phy,
}
}
-static int bnx2x_8073_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_8073_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
struct bnx2x *bp = params->bp;
u16 val = 0, tmp1;
@@ -7427,7 +7427,7 @@ static int bnx2x_8073_config_init(struct bnx2x_phy *phy,
if (params->loopback_mode == LOOPBACK_EXT) {
bnx2x_807x_force_10G(bp, phy);
DP(NETIF_MSG_LINK, "Forced speed 10G on 807X\n");
- return 0;
+ return;
} else {
bnx2x_cl45_write(bp, phy,
MDIO_PMA_DEVAD, MDIO_PMA_REG_BCM_CTRL, 0x0002);
@@ -7509,7 +7509,6 @@ static int bnx2x_8073_config_init(struct bnx2x_phy *phy,
bnx2x_cl45_write(bp, phy, MDIO_AN_DEVAD, MDIO_AN_REG_CTRL, 0x1200);
DP(NETIF_MSG_LINK, "807x Autoneg Restart: Advertise 1G=%x, 10G=%x\n",
((val & (1<<5)) > 0), ((val & (1<<7)) > 0));
- return 0;
}
static u8 bnx2x_8073_read_status(struct bnx2x_phy *phy,
@@ -7676,9 +7675,9 @@ static void bnx2x_8073_link_reset(struct bnx2x_phy *phy,
/******************************************************************/
/* BCM8705 PHY SECTION */
/******************************************************************/
-static int bnx2x_8705_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_8705_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
struct bnx2x *bp = params->bp;
DP(NETIF_MSG_LINK, "init 8705\n");
@@ -7700,7 +7699,6 @@ static int bnx2x_8705_config_init(struct bnx2x_phy *phy,
MDIO_WIS_DEVAD, MDIO_WIS_REG_LASI_CNTL, 0x1);
/* BCM8705 doesn't have microcode, hence the 0 */
bnx2x_save_spirom_version(bp, params->port, params->shmem_base, 0);
- return 0;
}
static u8 bnx2x_8705_read_status(struct bnx2x_phy *phy,
@@ -8887,9 +8885,9 @@ static u8 bnx2x_8706_8726_read_status(struct bnx2x_phy *phy,
/******************************************************************/
/* BCM8706 PHY SECTION */
/******************************************************************/
-static u8 bnx2x_8706_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_8706_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
u32 tx_en_mode;
u16 cnt, val, tmp1;
@@ -8989,8 +8987,6 @@ static u8 bnx2x_8706_config_init(struct bnx2x_phy *phy,
bnx2x_cl45_write(bp, phy,
MDIO_PMA_DEVAD, MDIO_PMA_REG_DIGITAL_CTRL, tmp1);
}
-
- return 0;
}
static u8 bnx2x_8706_read_status(struct bnx2x_phy *phy,
@@ -9070,9 +9066,9 @@ static u8 bnx2x_8726_read_status(struct bnx2x_phy *phy,
}
-static int bnx2x_8726_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_8726_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
struct bnx2x *bp = params->bp;
DP(NETIF_MSG_LINK, "Initializing BCM8726\n");
@@ -9150,9 +9146,6 @@ static int bnx2x_8726_config_init(struct bnx2x_phy *phy,
MDIO_PMA_REG_8726_TX_CTRL2,
phy->tx_preemphasis[1]);
}
-
- return 0;
-
}
static void bnx2x_8726_link_reset(struct bnx2x_phy *phy,
@@ -9288,9 +9281,9 @@ static void bnx2x_8727_config_speed(struct bnx2x_phy *phy,
}
}
-static int bnx2x_8727_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_8727_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
u32 tx_en_mode;
u16 tmp1, mod_abs, tmp2;
@@ -9370,8 +9363,6 @@ static int bnx2x_8727_config_init(struct bnx2x_phy *phy,
MDIO_PMA_DEVAD, MDIO_PMA_REG_PHY_IDENTIFIER,
(tmp2 & 0x7fff));
}
-
- return 0;
}
static void bnx2x_8727_handle_mod_abs(struct bnx2x_phy *phy,
@@ -9946,9 +9937,9 @@ static int bnx2x_848xx_cmn_config_init(struct bnx2x_phy *phy,
return 0;
}
-static int bnx2x_8481_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_8481_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
struct bnx2x *bp = params->bp;
/* Restore normal power mode*/
@@ -9960,7 +9951,7 @@ static int bnx2x_8481_config_init(struct bnx2x_phy *phy,
bnx2x_wait_reset_complete(bp, phy, params);
bnx2x_cl45_write(bp, phy, MDIO_PMA_DEVAD, MDIO_PMA_REG_CTRL, 1<<15);
- return bnx2x_848xx_cmn_config_init(phy, params, vars);
+ bnx2x_848xx_cmn_config_init(phy, params, vars);
}
#define PHY848xx_CMDHDLR_WAIT 300
@@ -10283,9 +10274,9 @@ static int bnx2x_8483x_enable_eee(struct bnx2x_phy *phy,
}
#define PHY84833_CONSTANT_LATENCY 1193
-static int bnx2x_848x3_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_848x3_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
struct bnx2x *bp = params->bp;
u8 port, initialize = 1;
@@ -10430,7 +10421,7 @@ static int bnx2x_848x3_config_init(struct bnx2x_phy *phy,
if (rc) {
DP(NETIF_MSG_LINK, "Failed to configure EEE timers\n");
bnx2x_8483x_disable_eee(phy, params, vars);
- return rc;
+ return;
}
if ((phy->req_duplex == DUPLEX_FULL) &&
@@ -10442,7 +10433,7 @@ static int bnx2x_848x3_config_init(struct bnx2x_phy *phy,
rc = bnx2x_8483x_disable_eee(phy, params, vars);
if (rc) {
DP(NETIF_MSG_LINK, "Failed to set EEE advertisement\n");
- return rc;
+ return;
}
} else {
vars->eee_status &= ~SHMEM_EEE_SUPPORTED_MASK;
@@ -10481,7 +10472,6 @@ static int bnx2x_848x3_config_init(struct bnx2x_phy *phy,
MDIO_84833_TOP_CFG_XGPHY_STRAP1,
(u16)~MDIO_84833_SUPER_ISOLATE);
}
- return rc;
}
static u8 bnx2x_848xx_read_status(struct bnx2x_phy *phy,
@@ -11038,9 +11028,9 @@ static void bnx2x_54618se_specific_func(struct bnx2x_phy *phy,
}
}
-static int bnx2x_54618se_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_54618se_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
struct bnx2x *bp = params->bp;
u8 port;
@@ -11240,8 +11230,6 @@ static int bnx2x_54618se_config_init(struct bnx2x_phy *phy,
bnx2x_cl22_write(bp, phy,
MDIO_PMA_REG_CTRL, autoneg_val);
-
- return 0;
}
@@ -11465,9 +11453,9 @@ static void bnx2x_7101_config_loopback(struct bnx2x_phy *phy,
MDIO_XS_DEVAD, MDIO_XS_SFX7101_XGXS_TEST1, 0x100);
}
-static int bnx2x_7101_config_init(struct bnx2x_phy *phy,
- struct link_params *params,
- struct link_vars *vars)
+static void bnx2x_7101_config_init(struct bnx2x_phy *phy,
+ struct link_params *params,
+ struct link_vars *vars)
{
u16 fw_ver1, fw_ver2, val;
struct bnx2x *bp = params->bp;
@@ -11502,7 +11490,6 @@ static int bnx2x_7101_config_init(struct bnx2x_phy *phy,
MDIO_PMA_DEVAD, MDIO_PMA_REG_7101_VER2, &fw_ver2);
bnx2x_save_spirom_version(bp, params->port,
(u32)(fw_ver1<<16 | fw_ver2), phy->ver_addr);
- return 0;
}
static u8 bnx2x_7101_read_status(struct bnx2x_phy *phy,
@@ -11671,7 +11658,7 @@ static const struct bnx2x_phy phy_serdes = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_xgxs_config_init,
+ .config_init = bnx2x_xgxs_config_init,
.read_status = bnx2x_link_settings_status,
.link_reset = bnx2x_int_link_reset,
.config_loopback = NULL,
@@ -11707,7 +11694,7 @@ static const struct bnx2x_phy phy_xgxs = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_xgxs_config_init,
+ .config_init = bnx2x_xgxs_config_init,
.read_status = bnx2x_link_settings_status,
.link_reset = bnx2x_int_link_reset,
.config_loopback = bnx2x_set_xgxs_loopback,
@@ -11745,7 +11732,7 @@ static const struct bnx2x_phy phy_warpcore = {
.speed_cap_mask = 0,
/* req_duplex = */0,
/* rsrv = */0,
- .config_init = (config_init_t)bnx2x_warpcore_config_init,
+ .config_init = bnx2x_warpcore_config_init,
.read_status = bnx2x_warpcore_read_status,
.link_reset = bnx2x_warpcore_link_reset,
.config_loopback = bnx2x_set_warpcore_loopback,
@@ -11776,7 +11763,7 @@ static const struct bnx2x_phy phy_7101 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_7101_config_init,
+ .config_init = bnx2x_7101_config_init,
.read_status = bnx2x_7101_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = bnx2x_7101_config_loopback,
@@ -11807,7 +11794,7 @@ static const struct bnx2x_phy phy_8073 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_8073_config_init,
+ .config_init = bnx2x_8073_config_init,
.read_status = bnx2x_8073_read_status,
.link_reset = bnx2x_8073_link_reset,
.config_loopback = NULL,
@@ -11835,7 +11822,7 @@ static const struct bnx2x_phy phy_8705 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_8705_config_init,
+ .config_init = bnx2x_8705_config_init,
.read_status = bnx2x_8705_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = NULL,
@@ -11864,7 +11851,7 @@ static const struct bnx2x_phy phy_8706 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_8706_config_init,
+ .config_init = bnx2x_8706_config_init,
.read_status = bnx2x_8706_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = NULL,
@@ -11896,7 +11883,7 @@ static const struct bnx2x_phy phy_8726 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_8726_config_init,
+ .config_init = bnx2x_8726_config_init,
.read_status = bnx2x_8726_read_status,
.link_reset = bnx2x_8726_link_reset,
.config_loopback = bnx2x_8726_config_loopback,
@@ -11927,7 +11914,7 @@ static const struct bnx2x_phy phy_8727 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_8727_config_init,
+ .config_init = bnx2x_8727_config_init,
.read_status = bnx2x_8727_read_status,
.link_reset = bnx2x_8727_link_reset,
.config_loopback = NULL,
@@ -11962,7 +11949,7 @@ static const struct bnx2x_phy phy_8481 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_8481_config_init,
+ .config_init = bnx2x_8481_config_init,
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_8481_link_reset,
.config_loopback = NULL,
@@ -11999,7 +11986,7 @@ static const struct bnx2x_phy phy_84823 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_848x3_config_init,
+ .config_init = bnx2x_848x3_config_init,
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
@@ -12034,7 +12021,7 @@ static const struct bnx2x_phy phy_84833 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_848x3_config_init,
+ .config_init = bnx2x_848x3_config_init,
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
@@ -12068,7 +12055,7 @@ static const struct bnx2x_phy phy_84834 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_848x3_config_init,
+ .config_init = bnx2x_848x3_config_init,
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
@@ -12102,7 +12089,7 @@ static const struct bnx2x_phy phy_84858 = {
.speed_cap_mask = 0,
.req_duplex = 0,
.rsrv = 0,
- .config_init = (config_init_t)bnx2x_848x3_config_init,
+ .config_init = bnx2x_848x3_config_init,
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
@@ -12136,7 +12123,7 @@ static const struct bnx2x_phy phy_54618se = {
.speed_cap_mask = 0,
/* req_duplex = */0,
/* rsrv = */0,
- .config_init = (config_init_t)bnx2x_54618se_config_init,
+ .config_init = bnx2x_54618se_config_init,
.read_status = bnx2x_54618se_read_status,
.link_reset = bnx2x_54618se_link_reset,
.config_loopback = bnx2x_54618se_config_loopback,
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h
index 7115f5025664..d31d15c78a17 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h
@@ -127,8 +127,8 @@ struct link_vars;
struct link_params;
struct bnx2x_phy;
-typedef u8 (*config_init_t)(struct bnx2x_phy *phy, struct link_params *params,
- struct link_vars *vars);
+typedef void (*config_init_t)(struct bnx2x_phy *phy, struct link_params *params,
+ struct link_vars *vars);
typedef u8 (*read_status_t)(struct bnx2x_phy *phy, struct link_params *params,
struct link_vars *vars);
typedef void (*link_reset_t)(struct bnx2x_phy *phy,
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/5] bnx2x: Remove format_fw_ver_t function casts
2019-11-15 5:07 [PATCH 0/5] bnx2x: Remove function casts Kees Cook
` (2 preceding siblings ...)
2019-11-15 5:07 ` [PATCH 3/5] bnx2x: Remove config_init_t " Kees Cook
@ 2019-11-15 5:07 ` Kees Cook
2019-11-15 5:07 ` [PATCH 5/5] bnx2x: Remove hw_reset_t " Kees Cook
2019-11-16 20:51 ` [PATCH 0/5] bnx2x: Remove " David Miller
5 siblings, 0 replies; 7+ messages in thread
From: Kees Cook @ 2019-11-15 5:07 UTC (permalink / raw)
To: David S. Miller
Cc: Kees Cook, Ariel Elior, Sudarsana Kalluru, GR-everest-linux-l2,
Sami Tolvanen, netdev, kernel-hardening, linux-kernel
The return values for format_fw_ver_t callbacks are supposed to be
"int", not "u8". Ultimately, the top-level caller doesn't actually check
the return value at all, but just clean this all up anyway and fix the
prototypes so that casts are no longer needed.
Signed-off-by: Kees Cook <keescook@chromium.org>
---
.../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 22 +++++++++----------
.../net/ethernet/broadcom/bnx2x/bnx2x_link.h | 2 +-
2 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
index 2bc6408ce00d..7dd35aa75925 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
@@ -11767,7 +11767,7 @@ static const struct bnx2x_phy phy_7101 = {
.read_status = bnx2x_7101_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = bnx2x_7101_config_loopback,
- .format_fw_ver = (format_fw_ver_t)bnx2x_7101_format_ver,
+ .format_fw_ver = bnx2x_7101_format_ver,
.hw_reset = (hw_reset_t)bnx2x_7101_hw_reset,
.set_link_led = bnx2x_7101_set_link_led,
.phy_specific_func = NULL
@@ -11798,7 +11798,7 @@ static const struct bnx2x_phy phy_8073 = {
.read_status = bnx2x_8073_read_status,
.link_reset = bnx2x_8073_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
+ .format_fw_ver = bnx2x_format_ver,
.hw_reset = NULL,
.set_link_led = NULL,
.phy_specific_func = bnx2x_8073_specific_func
@@ -11826,7 +11826,7 @@ static const struct bnx2x_phy phy_8705 = {
.read_status = bnx2x_8705_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_null_format_ver,
+ .format_fw_ver = bnx2x_null_format_ver,
.hw_reset = NULL,
.set_link_led = NULL,
.phy_specific_func = NULL
@@ -11855,7 +11855,7 @@ static const struct bnx2x_phy phy_8706 = {
.read_status = bnx2x_8706_read_status,
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
+ .format_fw_ver = bnx2x_format_ver,
.hw_reset = NULL,
.set_link_led = NULL,
.phy_specific_func = NULL
@@ -11887,7 +11887,7 @@ static const struct bnx2x_phy phy_8726 = {
.read_status = bnx2x_8726_read_status,
.link_reset = bnx2x_8726_link_reset,
.config_loopback = bnx2x_8726_config_loopback,
- .format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
+ .format_fw_ver = bnx2x_format_ver,
.hw_reset = NULL,
.set_link_led = NULL,
.phy_specific_func = NULL
@@ -11918,7 +11918,7 @@ static const struct bnx2x_phy phy_8727 = {
.read_status = bnx2x_8727_read_status,
.link_reset = bnx2x_8727_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_format_ver,
+ .format_fw_ver = bnx2x_format_ver,
.hw_reset = (hw_reset_t)bnx2x_8727_hw_reset,
.set_link_led = bnx2x_8727_set_link_led,
.phy_specific_func = bnx2x_8727_specific_func
@@ -11953,7 +11953,7 @@ static const struct bnx2x_phy phy_8481 = {
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_8481_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
+ .format_fw_ver = bnx2x_848xx_format_ver,
.hw_reset = (hw_reset_t)bnx2x_8481_hw_reset,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = NULL
@@ -11990,7 +11990,7 @@ static const struct bnx2x_phy phy_84823 = {
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
+ .format_fw_ver = bnx2x_848xx_format_ver,
.hw_reset = NULL,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = bnx2x_848xx_specific_func
@@ -12025,7 +12025,7 @@ static const struct bnx2x_phy phy_84833 = {
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
+ .format_fw_ver = bnx2x_848xx_format_ver,
.hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = bnx2x_848xx_specific_func
@@ -12059,7 +12059,7 @@ static const struct bnx2x_phy phy_84834 = {
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_848xx_format_ver,
+ .format_fw_ver = bnx2x_848xx_format_ver,
.hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = bnx2x_848xx_specific_func
@@ -12093,7 +12093,7 @@ static const struct bnx2x_phy phy_84858 = {
.read_status = bnx2x_848xx_read_status,
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
- .format_fw_ver = (format_fw_ver_t)bnx2x_8485x_format_ver,
+ .format_fw_ver = bnx2x_8485x_format_ver,
.hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = bnx2x_848xx_specific_func
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h
index d31d15c78a17..cae03c89dc73 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.h
@@ -135,7 +135,7 @@ typedef void (*link_reset_t)(struct bnx2x_phy *phy,
struct link_params *params);
typedef void (*config_loopback_t)(struct bnx2x_phy *phy,
struct link_params *params);
-typedef u8 (*format_fw_ver_t)(u32 raw, u8 *str, u16 *len);
+typedef int (*format_fw_ver_t)(u32 raw, u8 *str, u16 *len);
typedef void (*hw_reset_t)(struct bnx2x_phy *phy, struct link_params *params);
typedef void (*set_link_led_t)(struct bnx2x_phy *phy,
struct link_params *params, u8 mode);
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/5] bnx2x: Remove hw_reset_t function casts
2019-11-15 5:07 [PATCH 0/5] bnx2x: Remove function casts Kees Cook
` (3 preceding siblings ...)
2019-11-15 5:07 ` [PATCH 4/5] bnx2x: Remove format_fw_ver_t " Kees Cook
@ 2019-11-15 5:07 ` Kees Cook
2019-11-16 20:51 ` [PATCH 0/5] bnx2x: Remove " David Miller
5 siblings, 0 replies; 7+ messages in thread
From: Kees Cook @ 2019-11-15 5:07 UTC (permalink / raw)
To: David S. Miller
Cc: Kees Cook, Ariel Elior, Sudarsana Kalluru, GR-everest-linux-l2,
Sami Tolvanen, netdev, kernel-hardening, linux-kernel
All .rw_reset callbacks except bnx2x_84833_hw_reset_phy() use a
void return type. No callers of .hw_reset check a return value and
bnx2x_84833_hw_reset_phy() unconditionally returns 0. Remove all
hw_reset_t casts and fix the return type to void.
Signed-off-by: Kees Cook <keescook@chromium.org>
---
.../net/ethernet/broadcom/bnx2x/bnx2x_link.c | 20 +++++++++----------
1 file changed, 9 insertions(+), 11 deletions(-)
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
index 7dd35aa75925..9638d65d8261 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c
@@ -10201,8 +10201,8 @@ static u8 bnx2x_84833_get_reset_gpios(struct bnx2x *bp,
return reset_gpios;
}
-static int bnx2x_84833_hw_reset_phy(struct bnx2x_phy *phy,
- struct link_params *params)
+static void bnx2x_84833_hw_reset_phy(struct bnx2x_phy *phy,
+ struct link_params *params)
{
struct bnx2x *bp = params->bp;
u8 reset_gpios;
@@ -10230,8 +10230,6 @@ static int bnx2x_84833_hw_reset_phy(struct bnx2x_phy *phy,
udelay(10);
DP(NETIF_MSG_LINK, "84833 hw reset on pin values 0x%x\n",
reset_gpios);
-
- return 0;
}
static int bnx2x_8483x_disable_eee(struct bnx2x_phy *phy,
@@ -11737,7 +11735,7 @@ static const struct bnx2x_phy phy_warpcore = {
.link_reset = bnx2x_warpcore_link_reset,
.config_loopback = bnx2x_set_warpcore_loopback,
.format_fw_ver = NULL,
- .hw_reset = (hw_reset_t)bnx2x_warpcore_hw_reset,
+ .hw_reset = bnx2x_warpcore_hw_reset,
.set_link_led = NULL,
.phy_specific_func = NULL
};
@@ -11768,7 +11766,7 @@ static const struct bnx2x_phy phy_7101 = {
.link_reset = bnx2x_common_ext_link_reset,
.config_loopback = bnx2x_7101_config_loopback,
.format_fw_ver = bnx2x_7101_format_ver,
- .hw_reset = (hw_reset_t)bnx2x_7101_hw_reset,
+ .hw_reset = bnx2x_7101_hw_reset,
.set_link_led = bnx2x_7101_set_link_led,
.phy_specific_func = NULL
};
@@ -11919,7 +11917,7 @@ static const struct bnx2x_phy phy_8727 = {
.link_reset = bnx2x_8727_link_reset,
.config_loopback = NULL,
.format_fw_ver = bnx2x_format_ver,
- .hw_reset = (hw_reset_t)bnx2x_8727_hw_reset,
+ .hw_reset = bnx2x_8727_hw_reset,
.set_link_led = bnx2x_8727_set_link_led,
.phy_specific_func = bnx2x_8727_specific_func
};
@@ -11954,7 +11952,7 @@ static const struct bnx2x_phy phy_8481 = {
.link_reset = bnx2x_8481_link_reset,
.config_loopback = NULL,
.format_fw_ver = bnx2x_848xx_format_ver,
- .hw_reset = (hw_reset_t)bnx2x_8481_hw_reset,
+ .hw_reset = bnx2x_8481_hw_reset,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = NULL
};
@@ -12026,7 +12024,7 @@ static const struct bnx2x_phy phy_84833 = {
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
.format_fw_ver = bnx2x_848xx_format_ver,
- .hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
+ .hw_reset = bnx2x_84833_hw_reset_phy,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = bnx2x_848xx_specific_func
};
@@ -12060,7 +12058,7 @@ static const struct bnx2x_phy phy_84834 = {
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
.format_fw_ver = bnx2x_848xx_format_ver,
- .hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
+ .hw_reset = bnx2x_84833_hw_reset_phy,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = bnx2x_848xx_specific_func
};
@@ -12094,7 +12092,7 @@ static const struct bnx2x_phy phy_84858 = {
.link_reset = bnx2x_848x3_link_reset,
.config_loopback = NULL,
.format_fw_ver = bnx2x_8485x_format_ver,
- .hw_reset = (hw_reset_t)bnx2x_84833_hw_reset_phy,
+ .hw_reset = bnx2x_84833_hw_reset_phy,
.set_link_led = bnx2x_848xx_set_link_led,
.phy_specific_func = bnx2x_848xx_specific_func
};
--
2.17.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 0/5] bnx2x: Remove function casts
2019-11-15 5:07 [PATCH 0/5] bnx2x: Remove function casts Kees Cook
` (4 preceding siblings ...)
2019-11-15 5:07 ` [PATCH 5/5] bnx2x: Remove hw_reset_t " Kees Cook
@ 2019-11-16 20:51 ` David Miller
5 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2019-11-16 20:51 UTC (permalink / raw)
To: keescook
Cc: aelior, skalluru, GR-everest-linux-l2, samitolvanen, netdev,
kernel-hardening, linux-kernel
From: Kees Cook <keescook@chromium.org>
Date: Thu, 14 Nov 2019 21:07:10 -0800
> In order to make the entire kernel usable under Clang's Control Flow
> Integrity protections, function prototype casts need to be avoided
> because this will trip CFI checks at runtime (i.e. a mismatch between
> the caller's expected function prototype and the destination function's
> prototype). Many of these cases can be found with -Wcast-function-type,
> which found that bnx2x had a bunch of needless (or at least confusing)
> function casts. This series removes them all.
Looks reasonable, series applied to net-next.
Thank you.
^ permalink raw reply [flat|nested] 7+ messages in thread