* [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset
@ 2024-06-07 12:15 Dawid Osuchowski
2024-06-10 9:53 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy
2024-06-11 2:47 ` Jakub Kicinski
0 siblings, 2 replies; 4+ messages in thread
From: Dawid Osuchowski @ 2024-06-07 12:15 UTC (permalink / raw)
To: intel-wired-lan
Cc: netdev, Ngai-Mint Kwan, Mateusz Polchlopek, Pawel Chmielewski,
Simon Horman, Dawid Osuchowski
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.
We cannot use ice_wait_for_reset() since both the ethtool handler and the
adapter reset flow call rtnl_lock() during operation. If we wait for
reset completion inside of an ethtool handling function such as
ice_get_coalesce(), the wait will always timeout due to reset being
blocked by rtnl_lock() inside of ice_queue_set_napi() (which is called
during reset process), and in turn we will always return -EBUSY anyways,
with the added hang time of the timeout value.
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>
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
Changes since v4:
* Rebased over current IWL net branch
* Rollback the use of ice_wait_for_reset() due to rtnl_lock() deadlock
issue described in [2] and commit msg
[1] https://lore.kernel.org/netdev/BL0PR11MB3122D70ABDE6C2ACEE376073BD90A@BL0PR11MB3122.namprd11.prod.outlook.com/
[2] https://lore.kernel.org/netdev/20240501195641.1e606747@kernel.org/T/#m1629ecfe88d26551852c5c97982cd10314991422
---
drivers/net/ethernet/intel/ice/ice_ethtool.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index 62c8205fceba..2ffe864a364c 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -3810,6 +3810,9 @@ __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))
+ return -EBUSY;
+
if (q_num < 0)
q_num = 0;
--
2.44.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* RE: [Intel-wired-lan] [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset
2024-06-07 12:15 [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset Dawid Osuchowski
@ 2024-06-10 9:53 ` Pucha, HimasekharX Reddy
2024-06-11 2:47 ` Jakub Kicinski
1 sibling, 0 replies; 4+ messages in thread
From: Pucha, HimasekharX Reddy @ 2024-06-10 9:53 UTC (permalink / raw)
To: Dawid Osuchowski, intel-wired-lan@lists.osuosl.org
Cc: Kwan, Ngai-mint, netdev@vger.kernel.org, Chmielewski, Pawel,
Simon Horman, Polchlopek, Mateusz
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of Dawid Osuchowski
> Sent: Friday, June 7, 2024 5:46 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: Kwan, Ngai-mint <ngai-mint.kwan@intel.com>; netdev@vger.kernel.org; Chmielewski, Pawel <pawel.chmielewski@intel.com>; Simon Horman <horms@kernel.org>; Polchlopek, Mateusz <mateusz.polchlopek@intel.com>; Dawid Osuchowski <dawid.osuchowski@linux.intel.com>
> Subject: [Intel-wired-lan] [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset
>
> 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.
>
> We cannot use ice_wait_for_reset() since both the ethtool handler and the adapter reset flow call rtnl_lock() during operation. If we wait for reset completion inside of an ethtool handling function such as ice_get_coalesce(), the wait will always timeout due to reset being blocked by rtnl_lock() inside of ice_queue_set_napi() (which is called during reset process), and in turn we will always return -EBUSY anyways, with the added hang time of the timeout value.
>
> 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>
> 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 Changes since v4:
> * Rebased over current IWL net branch
> * Rollback the use of ice_wait_for_reset() due to rtnl_lock() deadlock issue described in [2] and commit msg
>
> [1] https://lore.kernel.org/netdev/BL0PR11MB3122D70ABDE6C2ACEE376073BD90A@BL0PR11MB3122.namprd11.prod.outlook.com/
> [2] https://lore.kernel.org/netdev/20240501195641.1e606747@kernel.org/T/#m1629ecfe88d26551852c5c97982cd10314991422
> ---
> drivers/net/ethernet/intel/ice/ice_ethtool.c | 3 +++
> 1 file changed, 3 insertions(+)
>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset
2024-06-07 12:15 [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset Dawid Osuchowski
2024-06-10 9:53 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy
@ 2024-06-11 2:47 ` Jakub Kicinski
2024-06-14 11:50 ` Dawid Osuchowski
1 sibling, 1 reply; 4+ messages in thread
From: Jakub Kicinski @ 2024-06-11 2:47 UTC (permalink / raw)
To: Dawid Osuchowski
Cc: intel-wired-lan, netdev, Ngai-Mint Kwan, Mateusz Polchlopek,
Pawel Chmielewski, Simon Horman
On Fri, 7 Jun 2024 14:15:52 +0200 Dawid Osuchowski wrote:
> We cannot use ice_wait_for_reset() since both the ethtool handler and the
> adapter reset flow call rtnl_lock() during operation. If we wait for
> reset completion inside of an ethtool handling function such as
> ice_get_coalesce(), the wait will always timeout due to reset being
> blocked by rtnl_lock() inside of ice_queue_set_napi() (which is called
> during reset process), and in turn we will always return -EBUSY anyways,
> with the added hang time of the timeout value.
Why does the reset not call netif_device_detach()?
Then core will know not to call the driver.
> Fixes: 67fe64d78c43 ("ice: Implement getting and setting ethtool coalesce")
Isn't ice_queue_set_napi() much more recent than this commit?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset
2024-06-11 2:47 ` Jakub Kicinski
@ 2024-06-14 11:50 ` Dawid Osuchowski
0 siblings, 0 replies; 4+ messages in thread
From: Dawid Osuchowski @ 2024-06-14 11:50 UTC (permalink / raw)
To: Jakub Kicinski
Cc: intel-wired-lan, netdev, Ngai-Mint Kwan, Mateusz Polchlopek,
Pawel Chmielewski, Simon Horman, larysa.zaremba
On 11.06.2024 04:47, Jakub Kicinski wrote:
> Why does the reset not call netif_device_detach()?
> Then core will know not to call the driver.
Will use this approach in new patch, thanks.
--Dawid
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-06-14 11:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-07 12:15 [PATCH iwl-net v5] ice: Do not get coalesce settings while in reset Dawid Osuchowski
2024-06-10 9:53 ` [Intel-wired-lan] " Pucha, HimasekharX Reddy
2024-06-11 2:47 ` Jakub Kicinski
2024-06-14 11:50 ` Dawid Osuchowski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).