⬢ DragonFlyBSD Kernel Audit
DF-3671 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/netif/ix/ixgbe_common.c
+++ b/sys/dev/netif/ix/ixgbe_common.c
@@ -275,8 +275,12 @@
 
 		break;
 	case ixgbe_media_type_copper:
-		hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT,
-				     IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &reg_cu);
+		if (hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT,
+					 IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
+					 &reg_cu)) {
+			ret_val = IXGBE_ERR_PHY;
+			goto out;
+		}
 		break;
 	default:
 		break;
@@ -618,14 +622,18 @@
 	if (hw->mac.type == ixgbe_mac_X550 || hw->mac.type == ixgbe_mac_X540) {
 		if (hw->phy.id == 0)
 			ixgbe_identify_phy(hw);
-		hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECL,
-				     IXGBE_MDIO_PCS_DEV_TYPE, &i);
-		hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECH,
-				     IXGBE_MDIO_PCS_DEV_TYPE, &i);
-		hw->phy.ops.read_reg(hw, IXGBE_LDPCECL,
-				     IXGBE_MDIO_PCS_DEV_TYPE, &i);
-		hw->phy.ops.read_reg(hw, IXGBE_LDPCECH,
-				     IXGBE_MDIO_PCS_DEV_TYPE, &i);
+		if (hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECL,
+				         IXGBE_MDIO_PCS_DEV_TYPE, &i))
+			return IXGBE_ERR_PHY;
+		if (hw->phy.ops.read_reg(hw, IXGBE_PCRC8ECH,
+				         IXGBE_MDIO_PCS_DEV_TYPE, &i))
+			return IXGBE_ERR_PHY;
+		if (hw->phy.ops.read_reg(hw, IXGBE_LDPCECL,
+				         IXGBE_MDIO_PCS_DEV_TYPE, &i))
+			return IXGBE_ERR_PHY;
+		if (hw->phy.ops.read_reg(hw, IXGBE_LDPCECH,
+				         IXGBE_MDIO_PCS_DEV_TYPE, &i))
+			return IXGBE_ERR_PHY;
 	}
 
 	return IXGBE_SUCCESS;
@@ -3080,12 +3098,14 @@
 	u16 technology_ability_reg = 0;
 	u16 lp_technology_ability_reg = 0;
 
-	hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT,
-			     IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
-			     &technology_ability_reg);
-	hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_LP,
-			     IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
-			     &lp_technology_ability_reg);
+	if (hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_ADVT,
+				 IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
+				 &technology_ability_reg))
+		return IXGBE_ERR_PHY;
+	if (hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_LP,
+				 IXGBE_MDIO_AUTO_NEG_DEV_TYPE,
+				 &lp_technology_ability_reg))
+		return IXGBE_ERR_PHY;
 
 	return ixgbe_negotiate_fc(hw, (u32)technology_ability_reg,
 				  (u32)lp_technology_ability_reg,
@@ -4435,7 +4455,9 @@
 {
 	DEBUGFUNC("ixgbe_get_device_caps_generic");
 
-	hw->eeprom.ops.read(hw, IXGBE_DEVICE_CAPS, device_caps);
+	*device_caps = 0;
+	if (hw->eeprom.ops.read(hw, IXGBE_DEVICE_CAPS, device_caps))
+		return IXGBE_ERR_EEPROM;
 
 	return IXGBE_SUCCESS;
 }