提交 a2cd64f3 编写于 作者: K Kweh, Hock Leong 提交者: David S. Miller

net: stmmac: fix maxmtu assignment to be within valid range

There is no checking valid value of maxmtu when getting it from
device tree. This resolution added the checking condition to
ensure the assignment is made within a valid range.
Signed-off-by: NKweh, Hock Leong <hock.leong.kweh@intel.com>
Reviewed-by: NAndy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 9d5ecb09
...@@ -3319,8 +3319,16 @@ int stmmac_dvr_probe(struct device *device, ...@@ -3319,8 +3319,16 @@ int stmmac_dvr_probe(struct device *device,
ndev->max_mtu = JUMBO_LEN; ndev->max_mtu = JUMBO_LEN;
else else
ndev->max_mtu = SKB_MAX_HEAD(NET_SKB_PAD + NET_IP_ALIGN); ndev->max_mtu = SKB_MAX_HEAD(NET_SKB_PAD + NET_IP_ALIGN);
if (priv->plat->maxmtu < ndev->max_mtu) /* Will not overwrite ndev->max_mtu if plat->maxmtu > ndev->max_mtu
* as well as plat->maxmtu < ndev->min_mtu which is a invalid range.
*/
if ((priv->plat->maxmtu < ndev->max_mtu) &&
(priv->plat->maxmtu >= ndev->min_mtu))
ndev->max_mtu = priv->plat->maxmtu; ndev->max_mtu = priv->plat->maxmtu;
else if (priv->plat->maxmtu < ndev->min_mtu)
netdev_warn(priv->dev,
"%s: warning: maxmtu having invalid value (%d)\n",
__func__, priv->plat->maxmtu);
if (flow_ctrl) if (flow_ctrl)
priv->flow_ctrl = FLOW_AUTO; /* RX/TX pause on */ priv->flow_ctrl = FLOW_AUTO; /* RX/TX pause on */
......
...@@ -89,6 +89,9 @@ static void stmmac_default_data(struct plat_stmmacenet_data *plat) ...@@ -89,6 +89,9 @@ static void stmmac_default_data(struct plat_stmmacenet_data *plat)
/* Set default value for unicast filter entries */ /* Set default value for unicast filter entries */
plat->unicast_filter_entries = 1; plat->unicast_filter_entries = 1;
/* Set the maxmtu to a default of JUMBO_LEN */
plat->maxmtu = JUMBO_LEN;
} }
static int quark_default_data(struct plat_stmmacenet_data *plat, static int quark_default_data(struct plat_stmmacenet_data *plat,
...@@ -126,6 +129,9 @@ static int quark_default_data(struct plat_stmmacenet_data *plat, ...@@ -126,6 +129,9 @@ static int quark_default_data(struct plat_stmmacenet_data *plat,
/* Set default value for unicast filter entries */ /* Set default value for unicast filter entries */
plat->unicast_filter_entries = 1; plat->unicast_filter_entries = 1;
/* Set the maxmtu to a default of JUMBO_LEN */
plat->maxmtu = JUMBO_LEN;
return 0; return 0;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册