aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc/mcdi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/sfc/mcdi.c')
-rw-r--r--drivers/net/ethernet/sfc/mcdi.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/ethernet/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c
index 578e5f72aabe..e855f4cddb4e 100644
--- a/drivers/net/ethernet/sfc/mcdi.c
+++ b/drivers/net/ethernet/sfc/mcdi.c
@@ -683,12 +683,14 @@ int efx_mcdi_get_board_cfg(struct efx_nic *efx, u8 *mac_address,
683 if (mac_address) 683 if (mac_address)
684 memcpy(mac_address, outbuf + offset, ETH_ALEN); 684 memcpy(mac_address, outbuf + offset, ETH_ALEN);
685 if (fw_subtype_list) { 685 if (fw_subtype_list) {
686 /* Byte-swap and truncate or zero-pad as necessary */
686 offset = MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST; 687 offset = MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_OFST;
687 for (i = 0; 688 for (i = 0;
688 i < MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MINNUM; 689 i < MC_CMD_GET_BOARD_CFG_OUT_FW_SUBTYPE_LIST_MAXNUM;
689 i++) { 690 i++) {
690 fw_subtype_list[i] = 691 fw_subtype_list[i] =
691 le16_to_cpup((__le16 *)(outbuf + offset)); 692 (offset + 2 <= outlen) ?
693 le16_to_cpup((__le16 *)(outbuf + offset)) : 0;
692 offset += 2; 694 offset += 2;
693 } 695 }
694 } 696 }