Joe Eykholt wrote:
> The timer for rport retries wasn't getting canceled, and
> would occasionally go off after the module was unloaded.
> 
> Add logic to cancel the timer in fc_rport_work().
> 
> Since we cancel the timer before deleting the rdata,
> it is no longer necessary to do a kref_get() for the pending timer.

This should've said get_device() not kref_get().  I resubmitted it.

        Joe

> 
> Signed-off-by: Joe Eykholt <[email protected]>
> ---
>  drivers/scsi/libfc/fc_rport.c |    3 +--
>  1 files changed, 1 insertions(+), 2 deletions(-)
> 
> 
> diff --git a/drivers/scsi/libfc/fc_rport.c b/drivers/scsi/libfc/fc_rport.c
> index a86df0b..90cc90d 100644
> --- a/drivers/scsi/libfc/fc_rport.c
> +++ b/drivers/scsi/libfc/fc_rport.c
> @@ -276,6 +276,7 @@ static void fc_rport_work(struct work_struct *work)
>               mutex_unlock(&rdata->rp_mutex);
>               if (rport_ops->event_callback)
>                       rport_ops->event_callback(lport, rport, event);
> +             cancel_delayed_work_sync(&rdata->retry_work);
>               if (trans_state == FC_PORTSTATE_ROGUE)
>                       put_device(&rport->dev);
>               else {
> @@ -433,7 +434,6 @@ static void fc_rport_timeout(struct work_struct *work)
>       }
>  
>       mutex_unlock(&rdata->rp_mutex);
> -     put_device(&rport->dev);
>  }
>  
>  /**
> @@ -494,7 +494,6 @@ static void fc_rport_error_retry(struct fc_rport *rport, 
> struct fc_frame *fp)
>               /* no additional delay on exchange timeouts */
>               if (PTR_ERR(fp) == -FC_EX_TIMEOUT)
>                       delay = 0;
> -             get_device(&rport->dev);
>               schedule_delayed_work(&rdata->retry_work, delay);
>               return;
>       }
> 
> 
> _______________________________________________
> devel mailing list
> [email protected]
> http://www.open-fcoe.org/mailman/listinfo/devel

_______________________________________________
devel mailing list
[email protected]
http://www.open-fcoe.org/mailman/listinfo/devel

Reply via email to