diff mbox series

[net] ice: Don't double unplug aux on peer initiated reset

Message ID 20220808222251.1966306-1-david.m.ertman@intel.com
State Superseded
Headers show
Series [net] ice: Don't double unplug aux on peer initiated reset | expand

Commit Message

Dave Ertman Aug. 8, 2022, 10:22 p.m. UTC
In the IDC callback that is accessed when the aux drivers request a reset,
the function to unplug the aux devices is called.  This function is also
called in the ice_prepare_for_reset function.  This double call is causing
a NULL pointer dereference.

The correct place to unplug the aux devices for a reset is in the
prepare_for_reset function, as this is a common place for all reset flows.
It also has built in protection from being called twice in a single reset
instance before the aux devices are replugged.

Fixes: f9f5301e7e2d4 ("ice: Register auxiliary device to provide RDMA")
Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
---
 drivers/net/ethernet/intel/ice/ice_main.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Maciej Fijalkowski Aug. 9, 2022, 8:57 a.m. UTC | #1
On Mon, Aug 08, 2022 at 03:22:51PM -0700, Dave Ertman wrote:
> In the IDC callback that is accessed when the aux drivers request a reset,
> the function to unplug the aux devices is called.  This function is also
> called in the ice_prepare_for_reset function.  This double call is causing

nit: double space after dot

> a NULL pointer dereference.

Can you include the splat related to this null ptr deref? it's always a
good practice.

> 
> The correct place to unplug the aux devices for a reset is in the
> prepare_for_reset function, as this is a common place for all reset flows.
> It also has built in protection from being called twice in a single reset
> instance before the aux devices are replugged.
> 
> Fixes: f9f5301e7e2d4 ("ice: Register auxiliary device to provide RDMA")
> Signed-off-by: Dave Ertman <david.m.ertman@intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_main.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
> index eb40526ee179..9afcf030201e 100644
> --- a/drivers/net/ethernet/intel/ice/ice_main.c
> +++ b/drivers/net/ethernet/intel/ice/ice_main.c
> @@ -2397,8 +2397,6 @@ int ice_schedule_reset(struct ice_pf *pf, enum ice_reset_req reset)
>  		return -EBUSY;
>  	}
>  
> -	ice_unplug_aux_dev(pf);
> -
>  	switch (reset) {
>  	case ICE_RESET_PFR:
>  		set_bit(ICE_PFR_REQ, pf->state);
> -- 
> 2.35.1
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan@osuosl.org
> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
diff mbox series

Patch

diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index eb40526ee179..9afcf030201e 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -2397,8 +2397,6 @@  int ice_schedule_reset(struct ice_pf *pf, enum ice_reset_req reset)
 		return -EBUSY;
 	}
 
-	ice_unplug_aux_dev(pf);
-
 	switch (reset) {
 	case ICE_RESET_PFR:
 		set_bit(ICE_PFR_REQ, pf->state);