Message ID | 20231218225229.2542156-2-bvanassche@acm.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | Fix the error path in ufshcd_async_scan() | expand |
On 12/19/2023 6:52 AM, Bart Van Assche wrote: > ufshcd_init() calls pm_runtime_get_sync() before it calls > async_schedule(). ufshcd_async_scan() calls pm_runtime_put_sync() > directly or indirectly from ufshcd_add_lus(). Simplify > ufshcd_async_scan() by always calling pm_runtime_put_sync() from > ufshcd_async_scan(). > > Cc: stable@vger.kernel.org > Signed-off-by: Bart Van Assche <bvanassche@acm.org> > --- > drivers/ufs/core/ufshcd.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index d6ae5d17892c..0ad8bde39cd1 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -8711,7 +8711,6 @@ static int ufshcd_add_lus(struct ufs_hba *hba) > > ufs_bsg_probe(hba); > scsi_scan_host(hba->host); > - pm_runtime_put_sync(hba->dev); > > out: > return ret; > @@ -8980,15 +8979,15 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie) > > /* Probe and add UFS logical units */ > ret = ufshcd_add_lus(hba); > + > out: > + pm_runtime_put_sync(hba->dev); > /* > * If we failed to initialize the device or the device is not > * present, turn off the power/clocks etc. > */ > - if (ret) { > - pm_runtime_put_sync(hba->dev); > + if (ret) > ufshcd_hba_exit(hba); > - } > } > > static enum scsi_timeout_action ufshcd_eh_timed_out(struct scsi_cmnd *scmd) Reviewed-by: Can Guo <quic_cang@quicinc.com>
On Mon, Dec 18, 2023 at 02:52:14PM -0800, Bart Van Assche wrote: > ufshcd_init() calls pm_runtime_get_sync() before it calls > async_schedule(). ufshcd_async_scan() calls pm_runtime_put_sync() > directly or indirectly from ufshcd_add_lus(). Simplify > ufshcd_async_scan() by always calling pm_runtime_put_sync() from > ufshcd_async_scan(). > > Cc: stable@vger.kernel.org No fixes tag? > Signed-off-by: Bart Van Assche <bvanassche@acm.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> - Mani > --- > drivers/ufs/core/ufshcd.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c > index d6ae5d17892c..0ad8bde39cd1 100644 > --- a/drivers/ufs/core/ufshcd.c > +++ b/drivers/ufs/core/ufshcd.c > @@ -8711,7 +8711,6 @@ static int ufshcd_add_lus(struct ufs_hba *hba) > > ufs_bsg_probe(hba); > scsi_scan_host(hba->host); > - pm_runtime_put_sync(hba->dev); > > out: > return ret; > @@ -8980,15 +8979,15 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie) > > /* Probe and add UFS logical units */ > ret = ufshcd_add_lus(hba); > + > out: > + pm_runtime_put_sync(hba->dev); > /* > * If we failed to initialize the device or the device is not > * present, turn off the power/clocks etc. > */ > - if (ret) { > - pm_runtime_put_sync(hba->dev); > + if (ret) > ufshcd_hba_exit(hba); > - } > } > > static enum scsi_timeout_action ufshcd_eh_timed_out(struct scsi_cmnd *scmd)
On 12/20/23 06:42, Manivannan Sadhasivam wrote: > On Mon, Dec 18, 2023 at 02:52:14PM -0800, Bart Van Assche wrote: >> ufshcd_init() calls pm_runtime_get_sync() before it calls >> async_schedule(). ufshcd_async_scan() calls pm_runtime_put_sync() >> directly or indirectly from ufshcd_add_lus(). Simplify >> ufshcd_async_scan() by always calling pm_runtime_put_sync() from >> ufshcd_async_scan(). >> >> Cc: stable@vger.kernel.org > > No fixes tag? There is no Fixes: tag because this patch does not change the behavior of the UFS driver. The Cc: stable tag is present because the next patch in this series has a Fixes: tag and depends on this patch. Thanks, Bart.
On Wed, Dec 20, 2023 at 08:36:28AM -0800, Bart Van Assche wrote: > On 12/20/23 06:42, Manivannan Sadhasivam wrote: > > On Mon, Dec 18, 2023 at 02:52:14PM -0800, Bart Van Assche wrote: > > > ufshcd_init() calls pm_runtime_get_sync() before it calls > > > async_schedule(). ufshcd_async_scan() calls pm_runtime_put_sync() > > > directly or indirectly from ufshcd_add_lus(). Simplify > > > ufshcd_async_scan() by always calling pm_runtime_put_sync() from > > > ufshcd_async_scan(). > > > > > > Cc: stable@vger.kernel.org > > > > No fixes tag? > > There is no Fixes: tag because this patch does not change the behavior of > the UFS driver. The Cc: stable tag is present because the next patch in this > series has a Fixes: tag and depends on this patch. > Ok. - Mani > Thanks, > > Bart.
diff --git a/drivers/ufs/core/ufshcd.c b/drivers/ufs/core/ufshcd.c index d6ae5d17892c..0ad8bde39cd1 100644 --- a/drivers/ufs/core/ufshcd.c +++ b/drivers/ufs/core/ufshcd.c @@ -8711,7 +8711,6 @@ static int ufshcd_add_lus(struct ufs_hba *hba) ufs_bsg_probe(hba); scsi_scan_host(hba->host); - pm_runtime_put_sync(hba->dev); out: return ret; @@ -8980,15 +8979,15 @@ static void ufshcd_async_scan(void *data, async_cookie_t cookie) /* Probe and add UFS logical units */ ret = ufshcd_add_lus(hba); + out: + pm_runtime_put_sync(hba->dev); /* * If we failed to initialize the device or the device is not * present, turn off the power/clocks etc. */ - if (ret) { - pm_runtime_put_sync(hba->dev); + if (ret) ufshcd_hba_exit(hba); - } } static enum scsi_timeout_action ufshcd_eh_timed_out(struct scsi_cmnd *scmd)
ufshcd_init() calls pm_runtime_get_sync() before it calls async_schedule(). ufshcd_async_scan() calls pm_runtime_put_sync() directly or indirectly from ufshcd_add_lus(). Simplify ufshcd_async_scan() by always calling pm_runtime_put_sync() from ufshcd_async_scan(). Cc: stable@vger.kernel.org Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- drivers/ufs/core/ufshcd.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)