| From e82bcd6939328cbf13c0beceddd5b07ea46a0efd Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 4 Jun 2021 09:48:58 -0700 |
| Subject: iavf: validate pointers |
| |
| From: Mitch Williams <mitch.a.williams@intel.com> |
| |
| [ Upstream commit 131b0edc4028bb88bb472456b1ddba526cfb7036 ] |
| |
| In some cases, the ethtool get_rxfh handler may be called with a null |
| key or indir parameter. So check these pointers, or you will have a very |
| bad day. |
| |
| Fixes: 43a3d9ba34c9 ("i40evf: Allow PF driver to configure RSS") |
| Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> |
| Tested-by: Tony Brelinski <tony.brelinski@intel.com> |
| Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 13 ++++++------- |
| 1 file changed, 6 insertions(+), 7 deletions(-) |
| |
| diff --git a/drivers/net/ethernet/intel/iavf/iavf_ethtool.c b/drivers/net/ethernet/intel/iavf/iavf_ethtool.c |
| index 758bef02a2a86..ad1e796e5544a 100644 |
| --- a/drivers/net/ethernet/intel/iavf/iavf_ethtool.c |
| +++ b/drivers/net/ethernet/intel/iavf/iavf_ethtool.c |
| @@ -962,14 +962,13 @@ static int iavf_get_rxfh(struct net_device *netdev, u32 *indir, u8 *key, |
| |
| if (hfunc) |
| *hfunc = ETH_RSS_HASH_TOP; |
| - if (!indir) |
| - return 0; |
| - |
| - memcpy(key, adapter->rss_key, adapter->rss_key_size); |
| + if (key) |
| + memcpy(key, adapter->rss_key, adapter->rss_key_size); |
| |
| - /* Each 32 bits pointed by 'indir' is stored with a lut entry */ |
| - for (i = 0; i < adapter->rss_lut_size; i++) |
| - indir[i] = (u32)adapter->rss_lut[i]; |
| + if (indir) |
| + /* Each 32 bits pointed by 'indir' is stored with a lut entry */ |
| + for (i = 0; i < adapter->rss_lut_size; i++) |
| + indir[i] = (u32)adapter->rss_lut[i]; |
| |
| return 0; |
| } |
| -- |
| 2.33.0 |
| |