Commit d07e5b20 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'ethtool-more-bug-fixes'

Jakub Kicinski says:

====================
ethtool: more bug fixes

Last week I sent two patch sets - one fixing bugs in RSS handling,
and one fixing CMIS / module handling. This set contains the remaining
fixes. There's a concentration of fixes around PHY and timestamp config
handling but not enough to break those out as separate sets.
====================

Link: https://patch.msgid.link/20260526153533.2779187-1-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents ce1e3302 67cfdd92
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -472,6 +472,12 @@ static int ethnl_update_profile(struct net_device *dev,

	nla_for_each_nested_type(nest, ETHTOOL_A_PROFILE_IRQ_MODERATION,
				 nests, rem) {
		if (i >= NET_DIM_PARAMS_NUM_PROFILES) {
			NL_SET_BAD_ATTR(extack, nest);
			ret = -E2BIG;
			goto err_out;
		}

		ret = nla_parse_nested(tb, len_irq_moder - 1, nest,
				       coalesce_irq_moderation_policy,
				       extack);
+6 −4
Original line number Diff line number Diff line
@@ -44,6 +44,9 @@ static int fallback_set_params(struct eeprom_req_info *request,
	if (offset >= modinfo->eeprom_len)
		return -EINVAL;

	if (length > modinfo->eeprom_len - offset)
		return -EINVAL;

	eeprom->cmd = ETHTOOL_GMODULEEEPROM;
	eeprom->len = length;
	eeprom->offset = offset;
@@ -69,7 +72,7 @@ static int eeprom_fallback(struct eeprom_req_info *request,
	if (err < 0)
		return err;

	data = kmalloc(eeprom.len, GFP_KERNEL);
	data = kzalloc(eeprom.len, GFP_KERNEL);
	if (!data)
		return -ENOMEM;
	err = ethtool_get_module_eeprom_call(dev, &eeprom, data);
@@ -141,12 +144,11 @@ static int eeprom_prepare_data(const struct ethnl_req_info *req_base,
	return 0;

err_ops:
	if (ret == -EOPNOTSUPP)
		ret = eeprom_fallback(request, reply);
	ethnl_ops_complete(dev);
err_free:
	kfree(page_data.data);

	if (ret == -EOPNOTSUPP)
		return eeprom_fallback(request, reply);
	return ret;
}

+2 −4
Original line number Diff line number Diff line
@@ -106,10 +106,8 @@ static int linkstate_prepare_data(const struct ethnl_req_info *req_base,

	phydev = ethnl_req_get_phydev(req_base, tb, ETHTOOL_A_LINKSTATE_HEADER,
				      info->extack);
	if (IS_ERR(phydev)) {
		ret = PTR_ERR(phydev);
		goto out;
	}
	if (IS_ERR(phydev))
		return PTR_ERR(phydev);

	ret = ethnl_ops_begin(dev);
	if (ret < 0)
+5 −5
Original line number Diff line number Diff line
@@ -62,14 +62,14 @@ static int pse_prepare_data(const struct ethnl_req_info *req_base,
	struct phy_device *phydev;
	int ret;

	ret = ethnl_ops_begin(dev);
	if (ret < 0)
		return ret;

	phydev = ethnl_req_get_phydev(req_base, tb, ETHTOOL_A_PSE_HEADER,
				      info->extack);
	if (IS_ERR(phydev))
		return -ENODEV;
		return PTR_ERR(phydev);

	ret = ethnl_ops_begin(dev);
	if (ret < 0)
		return ret;

	ret = pse_get_pse_attributes(phydev, info->extack, data);

+1 −1
Original line number Diff line number Diff line
@@ -311,7 +311,7 @@ static int strset_prepare_data(const struct ethnl_req_info *req_base,
		return 0;
	}

	phydev = ethnl_req_get_phydev(req_base, tb, ETHTOOL_A_HEADER_FLAGS,
	phydev = ethnl_req_get_phydev(req_base, tb, ETHTOOL_A_STRSET_HEADER,
				      info->extack);

	/* phydev can be NULL, check for errors only */
Loading