Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Revert "net: ethtool: Avoid thousands of -Wflex-array-member-not-at-end warnings"

This reverts commit 3bd9b9abdf1563a22041b7255baea6d449902f1a. We cannot
use the new tagged struct group because it throws C++ errors even under
"extern C".

Signed-off-by: Kees Cook <kees@kernel.org>
Link: https://patch.msgid.link/20241115204308.3821419-1-kees@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Kees Cook and committed by
Jakub Kicinski
1cfb5e57 920efe3e

+22 -26
+3 -3
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c
··· 2780 2780 static void bnxt_get_default_speeds(struct ethtool_link_ksettings *lk_ksettings, 2781 2781 struct bnxt_link_info *link_info) 2782 2782 { 2783 - struct ethtool_link_settings_hdr *base = &lk_ksettings->base; 2783 + struct ethtool_link_settings *base = &lk_ksettings->base; 2784 2784 2785 2785 if (link_info->link_state == BNXT_LINK_STATE_UP) { 2786 2786 base->speed = bnxt_fw_to_ethtool_speed(link_info->link_speed); ··· 2799 2799 static int bnxt_get_link_ksettings(struct net_device *dev, 2800 2800 struct ethtool_link_ksettings *lk_ksettings) 2801 2801 { 2802 - struct ethtool_link_settings_hdr *base = &lk_ksettings->base; 2802 + struct ethtool_link_settings *base = &lk_ksettings->base; 2803 2803 enum ethtool_link_mode_bit_indices link_mode; 2804 2804 struct bnxt *bp = netdev_priv(dev); 2805 2805 struct bnxt_link_info *link_info; ··· 3022 3022 static int bnxt_set_link_ksettings(struct net_device *dev, 3023 3023 const struct ethtool_link_ksettings *lk_ksettings) 3024 3024 { 3025 - const struct ethtool_link_settings_hdr *base = &lk_ksettings->base; 3026 3025 struct bnxt *bp = netdev_priv(dev); 3027 3026 struct bnxt_link_info *link_info = &bp->link_info; 3027 + const struct ethtool_link_settings *base = &lk_ksettings->base; 3028 3028 bool set_pause = false; 3029 3029 u32 speed, lanes = 0; 3030 3030 int rc = 0;
+2 -2
drivers/net/ethernet/chelsio/cxgb4/cxgb4_ethtool.c
··· 662 662 static int get_link_ksettings(struct net_device *dev, 663 663 struct ethtool_link_ksettings *link_ksettings) 664 664 { 665 - struct ethtool_link_settings_hdr *base = &link_ksettings->base; 666 665 struct port_info *pi = netdev_priv(dev); 666 + struct ethtool_link_settings *base = &link_ksettings->base; 667 667 668 668 /* For the nonce, the Firmware doesn't send up Port State changes 669 669 * when the Virtual Interface attached to the Port is down. So ··· 717 717 static int set_link_ksettings(struct net_device *dev, 718 718 const struct ethtool_link_ksettings *link_ksettings) 719 719 { 720 - const struct ethtool_link_settings_hdr *base = &link_ksettings->base; 721 720 struct port_info *pi = netdev_priv(dev); 722 721 struct link_config *lc = &pi->link_cfg; 722 + const struct ethtool_link_settings *base = &link_ksettings->base; 723 723 struct link_config old_lc; 724 724 unsigned int fw_caps; 725 725 int ret = 0;
+1 -1
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
··· 1436 1436 static int cxgb4vf_get_link_ksettings(struct net_device *dev, 1437 1437 struct ethtool_link_ksettings *link_ksettings) 1438 1438 { 1439 - struct ethtool_link_settings_hdr *base = &link_ksettings->base; 1440 1439 struct port_info *pi = netdev_priv(dev); 1440 + struct ethtool_link_settings *base = &link_ksettings->base; 1441 1441 1442 1442 /* For the nonce, the Firmware doesn't send up Port State changes 1443 1443 * when the Virtual Interface attached to the Port is down. So
+1 -1
drivers/net/ethernet/cisco/enic/enic_ethtool.c
··· 129 129 static int enic_get_ksettings(struct net_device *netdev, 130 130 struct ethtool_link_ksettings *ecmd) 131 131 { 132 - struct ethtool_link_settings_hdr *base = &ecmd->base; 133 132 struct enic *enic = netdev_priv(netdev); 133 + struct ethtool_link_settings *base = &ecmd->base; 134 134 135 135 ethtool_link_ksettings_add_link_mode(ecmd, supported, 136 136 10000baseT_Full);
+2 -2
drivers/net/ethernet/qlogic/qede/qede_ethtool.c
··· 504 504 struct ethtool_link_ksettings *cmd) 505 505 { 506 506 typeof(cmd->link_modes) *link_modes = &cmd->link_modes; 507 - struct ethtool_link_settings_hdr *base = &cmd->base; 507 + struct ethtool_link_settings *base = &cmd->base; 508 508 struct qede_dev *edev = netdev_priv(dev); 509 509 struct qed_link_output current_link; 510 510 ··· 537 537 static int qede_set_link_ksettings(struct net_device *dev, 538 538 const struct ethtool_link_ksettings *cmd) 539 539 { 540 - const struct ethtool_link_settings_hdr *base = &cmd->base; 540 + const struct ethtool_link_settings *base = &cmd->base; 541 541 const struct ethtool_forced_speed_map *map; 542 542 struct qede_dev *edev = netdev_priv(dev); 543 543 struct qed_link_output current_link;
+1 -1
include/linux/ethtool.h
··· 211 211 * fields, but they are allowed to overwrite them (will be ignored). 212 212 */ 213 213 struct ethtool_link_ksettings { 214 - struct ethtool_link_settings_hdr base; 214 + struct ethtool_link_settings base; 215 215 struct { 216 216 __ETHTOOL_DECLARE_LINK_MODE_MASK(supported); 217 217 __ETHTOOL_DECLARE_LINK_MODE_MASK(advertising);
+1 -1
net/ethtool/ioctl.c
··· 425 425 426 426 /* layout of the struct passed from/to userland */ 427 427 struct ethtool_link_usettings { 428 - struct ethtool_link_settings_hdr base; 428 + struct ethtool_link_settings base; 429 429 struct { 430 430 __u32 supported[__ETHTOOL_LINK_MODE_MASK_NU32]; 431 431 __u32 advertising[__ETHTOOL_LINK_MODE_MASK_NU32];
+4 -4
net/ethtool/linkinfo.c
··· 8 8 }; 9 9 10 10 struct linkinfo_reply_data { 11 - struct ethnl_reply_data base; 12 - struct ethtool_link_ksettings ksettings; 13 - struct ethtool_link_settings_hdr *lsettings; 11 + struct ethnl_reply_data base; 12 + struct ethtool_link_ksettings ksettings; 13 + struct ethtool_link_settings *lsettings; 14 14 }; 15 15 16 16 #define LINKINFO_REPDATA(__reply_base) \ ··· 98 98 ethnl_set_linkinfo(struct ethnl_req_info *req_info, struct genl_info *info) 99 99 { 100 100 struct ethtool_link_ksettings ksettings = {}; 101 - struct ethtool_link_settings_hdr *lsettings; 101 + struct ethtool_link_settings *lsettings; 102 102 struct net_device *dev = req_info->dev; 103 103 struct nlattr **tb = info->attrs; 104 104 bool mod = false;
+7 -11
net/ethtool/linkmodes.c
··· 11 11 }; 12 12 13 13 struct linkmodes_reply_data { 14 - struct ethnl_reply_data base; 15 - struct ethtool_link_ksettings ksettings; 16 - struct ethtool_link_settings_hdr *lsettings; 17 - bool peer_empty; 14 + struct ethnl_reply_data base; 15 + struct ethtool_link_ksettings ksettings; 16 + struct ethtool_link_settings *lsettings; 17 + bool peer_empty; 18 18 }; 19 19 20 20 #define LINKMODES_REPDATA(__reply_base) \ ··· 62 62 { 63 63 const struct linkmodes_reply_data *data = LINKMODES_REPDATA(reply_base); 64 64 const struct ethtool_link_ksettings *ksettings = &data->ksettings; 65 + const struct ethtool_link_settings *lsettings = &ksettings->base; 65 66 bool compact = req_base->flags & ETHTOOL_FLAG_COMPACT_BITSETS; 66 - const struct ethtool_link_settings_hdr *lsettings; 67 67 int len, ret; 68 - 69 - lsettings = &ksettings->base; 70 68 71 69 len = nla_total_size(sizeof(u8)) /* LINKMODES_AUTONEG */ 72 70 + nla_total_size(sizeof(u32)) /* LINKMODES_SPEED */ ··· 103 105 { 104 106 const struct linkmodes_reply_data *data = LINKMODES_REPDATA(reply_base); 105 107 const struct ethtool_link_ksettings *ksettings = &data->ksettings; 108 + const struct ethtool_link_settings *lsettings = &ksettings->base; 106 109 bool compact = req_base->flags & ETHTOOL_FLAG_COMPACT_BITSETS; 107 - const struct ethtool_link_settings_hdr *lsettings; 108 110 int ret; 109 - 110 - lsettings = &ksettings->base; 111 111 112 112 if (nla_put_u8(skb, ETHTOOL_A_LINKMODES_AUTONEG, lsettings->autoneg)) 113 113 return -EMSGSIZE; ··· 237 241 struct ethtool_link_ksettings *ksettings, 238 242 bool *mod, const struct net_device *dev) 239 243 { 240 - struct ethtool_link_settings_hdr *lsettings = &ksettings->base; 244 + struct ethtool_link_settings *lsettings = &ksettings->base; 241 245 bool req_speed, req_lanes, req_duplex; 242 246 const struct nlattr *master_slave_cfg, *lanes_cfg; 243 247 int ret;