Message ID | 20230908061950.20287-3-hbh25y@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 51fe0a470543f345e3c62b6798929de3ddcedc1d |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Fix possible OOB write when using rule_buf | expand |
pt., 8 wrz 2023 o 08:21 Hangyu Hua <hbh25y@gmail.com> napisał(a): > > rules is allocated in ethtool_get_rxnfc and the size is determined by > rule_cnt from user space. So rule_cnt needs to be check before using > rules to avoid OOB writing or NULL pointer dereference. > > Fixes: 90b509b39ac9 ("net: mvpp2: cls: Add Classification offload support") > Signed-off-by: Hangyu Hua <hbh25y@gmail.com> > --- > drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c > index eb74ccddb440..21c3f9b015c8 100644 > --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c > +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c > @@ -5586,6 +5586,11 @@ static int mvpp2_ethtool_get_rxnfc(struct net_device *dev, > break; > case ETHTOOL_GRXCLSRLALL: > for (i = 0; i < MVPP2_N_RFS_ENTRIES_PER_FLOW; i++) { > + if (loc == info->rule_cnt) { > + ret = -EMSGSIZE; > + break; > + } > + > if (port->rfs_rules[i]) > rules[loc++] = i; > } Reviewed-by: Marcin Wojtas <mw@semihalf.com> Thanks, Marcin
On Fri, Sep 08, 2023 at 02:19:49PM +0800, Hangyu Hua wrote: > rules is allocated in ethtool_get_rxnfc and the size is determined by > rule_cnt from user space. So rule_cnt needs to be check before using > rules to avoid OOB writing or NULL pointer dereference. > > Fixes: 90b509b39ac9 ("net: mvpp2: cls: Add Classification offload support") > Signed-off-by: Hangyu Hua <hbh25y@gmail.com> Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Thanks!
diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c index eb74ccddb440..21c3f9b015c8 100644 --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c @@ -5586,6 +5586,11 @@ static int mvpp2_ethtool_get_rxnfc(struct net_device *dev, break; case ETHTOOL_GRXCLSRLALL: for (i = 0; i < MVPP2_N_RFS_ENTRIES_PER_FLOW; i++) { + if (loc == info->rule_cnt) { + ret = -EMSGSIZE; + break; + } + if (port->rfs_rules[i]) rules[loc++] = i; }
rules is allocated in ethtool_get_rxnfc and the size is determined by rule_cnt from user space. So rule_cnt needs to be check before using rules to avoid OOB writing or NULL pointer dereference. Fixes: 90b509b39ac9 ("net: mvpp2: cls: Add Classification offload support") Signed-off-by: Hangyu Hua <hbh25y@gmail.com> --- drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 5 +++++ 1 file changed, 5 insertions(+)