Re: [PATCH v3] net: stmmac: fix maxmtu assignment to be within valid range
From: Andy Shevchenko <hidden>
Date: 2017-01-06 17:06:48
Also in:
lkml
On Sat, Jan 7, 2017 at 2:49 AM, Kweh, Hock Leong [off-list ref] wrote:
From: "Kweh, Hock Leong" <redacted> 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.
quoted hunk ↗ jump to hunk
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c@@ -3345,8 +3345,14 @@ int stmmac_dvr_probe(struct device *device, ndev->max_mtu = JUMBO_LEN; else ndev->max_mtu = SKB_MAX_HEAD(NET_SKB_PAD + NET_IP_ALIGN); - if (priv->plat->maxmtu < ndev->max_mtu)
+
The lines are logically grouped here. No need to split it. Thus, remove this extra line.
+ if ((priv->plat->maxmtu < ndev->max_mtu) && + (priv->plat->maxmtu >= ndev->min_mtu))
ndev->max_mtu = priv->plat->maxmtu;
+ else if (priv->plat->maxmtu < ndev->min_mtu)
And if it > ndev->max_mtu?..
+ netdev_warn(priv->dev, + "%s: warning: maxmtu having invalid value (%d)\n", + __func__, priv->plat->maxmtu);
quoted hunk ↗ jump to hunk
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c@@ -204,6 +204,10 @@ static int stmmac_pci_probe(struct pci_dev *pdev, pci_set_master(pdev); + /* Set the maxmtu to a default of JUMBO_LEN in case the + * parameter is not defined for the device. + */ + plat->maxmtu = JUMBO_LEN;
Please, use *_default_data() hooks for that.
At some point it might make sense to extract
static int common_default_data() {...}
and call it at the beginning of the rest of *_defautl_data() hooks.
--
With Best Regards,
Andy Shevchenko