Message ID | 20240506153307.114104-1-dawid.osuchowski@linux.intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-net,v4] ice: Do not get coalesce settings while in reset | expand |
On 5/6/2024 8:33 AM, Dawid Osuchowski wrote: > From: Ngai-Mint Kwan <ngai-mint.kwan@intel.com> > > Getting coalesce settings while reset is in progress can cause NULL > pointer deference bug. > If under reset, abort get coalesce for ethtool. > > Fixes: 67fe64d78c43 ("ice: Implement getting and setting ethtool coalesce") > Signed-off-by: Ngai-Mint Kwan <ngai-mint.kwan@intel.com> > Reviewed-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com> > Signed-off-by: Pawel Chmielewski <pawel.chmielewski@intel.com> > Reviewed-by: Simon Horman <horms@kernel.org> > Co-developed-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > Signed-off-by: Dawid Osuchowski <dawid.osuchowski@linux.intel.com> > --- > Changes since v1: > * Added "Fixes:" tag > Changes since v2: > * Rebased over current IWL net branch > * Confirmed that the issue previously reported for this patch [1] by > Himasekhar Reddy Pucha was caused by other, internally tracked issue > Changes since v3: > * Using ice_wait_for_reset() instead of returning -EBUSY Seems like commit message, and probably title, need to get updated for this change? > [1] https://lore.kernel.org/netdev/BL0PR11MB3122D70ABDE6C2ACEE376073BD90A@BL0PR11MB3122.namprd11.prod.outlook.com/ > --- > drivers/net/ethernet/intel/ice/ice_ethtool.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c > index d91f41f61bce..4ff16fd2eb94 100644 > --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c > +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c > @@ -3815,6 +3815,13 @@ __ice_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec, > struct ice_netdev_priv *np = netdev_priv(netdev); > struct ice_vsi *vsi = np->vsi; > > + if (ice_is_reset_in_progress(vsi->back->state)) { > + int err = ice_wait_for_reset(vsi->back, 10 * HZ); > + > + if (err) > + return err; > + } > + > if (q_num < 0) > q_num = 0; >
On 09.05.2024 18:11, Tony Nguyen wrote: > Seems like commit message, and probably title, need to get updated for > this change? During testing of the change, it turns out at the current state our driver is in we have to use the approach with returning -EBUSY. Will update the description in v5 to account for this. --Dawid
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c index d91f41f61bce..4ff16fd2eb94 100644 --- a/drivers/net/ethernet/intel/ice/ice_ethtool.c +++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c @@ -3815,6 +3815,13 @@ __ice_get_coalesce(struct net_device *netdev, struct ethtool_coalesce *ec, struct ice_netdev_priv *np = netdev_priv(netdev); struct ice_vsi *vsi = np->vsi; + if (ice_is_reset_in_progress(vsi->back->state)) { + int err = ice_wait_for_reset(vsi->back, 10 * HZ); + + if (err) + return err; + } + if (q_num < 0) q_num = 0;