diff mbox series

[v2] vfio: platform: fix reference leak in vfio_platform_open

Message ID 20201031030353.9699-1-zhangqilong3@huawei.com (mailing list archive)
State New, archived
Headers show
Series [v2] vfio: platform: fix reference leak in vfio_platform_open | expand

Commit Message

Zhang Qilong Oct. 31, 2020, 3:03 a.m. UTC
pm_runtime_get_sync() will increment pm usage counter even it
failed. Forgetting to call pm_runtime_put will result in
reference leak in vfio_platform_open, so we should fix it.

Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
---
 drivers/vfio/platform/vfio_platform_common.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Eric Auger Nov. 2, 2020, 9:08 a.m. UTC | #1
Hi Zhang,

On 10/31/20 4:03 AM, Zhang Qilong wrote:
> pm_runtime_get_sync() will increment pm usage counter even it
> failed. Forgetting to call pm_runtime_put will result in
> reference leak in vfio_platform_open, so we should fix it.
> 
> Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
Looks good to me,

Acked-by: Eric Auger <eric.auger@redhat.com>

Thank you for the fix

Eric

> ---
>  drivers/vfio/platform/vfio_platform_common.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/vfio/platform/vfio_platform_common.c b/drivers/vfio/platform/vfio_platform_common.c
> index c0771a9567fb..fb4b385191f2 100644
> --- a/drivers/vfio/platform/vfio_platform_common.c
> +++ b/drivers/vfio/platform/vfio_platform_common.c
> @@ -267,7 +267,7 @@ static int vfio_platform_open(void *device_data)
>  
>  		ret = pm_runtime_get_sync(vdev->device);
>  		if (ret < 0)
> -			goto err_pm;
> +			goto err_rst;
>  
>  		ret = vfio_platform_call_reset(vdev, &extra_dbg);
>  		if (ret && vdev->reset_required) {
> @@ -284,7 +284,6 @@ static int vfio_platform_open(void *device_data)
>  
>  err_rst:
>  	pm_runtime_put(vdev->device);
> -err_pm:
>  	vfio_platform_irq_cleanup(vdev);
>  err_irq:
>  	vfio_platform_regions_cleanup(vdev);
>
Alex Williamson Nov. 3, 2020, 6:21 p.m. UTC | #2
On Sat, 31 Oct 2020 11:03:53 +0800
Zhang Qilong <zhangqilong3@huawei.com> wrote:

> pm_runtime_get_sync() will increment pm usage counter even it
> failed. Forgetting to call pm_runtime_put will result in
> reference leak in vfio_platform_open, so we should fix it.
> 
> Signed-off-by: Zhang Qilong <zhangqilong3@huawei.com>
> ---
>  drivers/vfio/platform/vfio_platform_common.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)

Applied to vfio for-linus branch with Eric's ack for v5.10.  Thanks,

Alex


> diff --git a/drivers/vfio/platform/vfio_platform_common.c b/drivers/vfio/platform/vfio_platform_common.c
> index c0771a9567fb..fb4b385191f2 100644
> --- a/drivers/vfio/platform/vfio_platform_common.c
> +++ b/drivers/vfio/platform/vfio_platform_common.c
> @@ -267,7 +267,7 @@ static int vfio_platform_open(void *device_data)
>  
>  		ret = pm_runtime_get_sync(vdev->device);
>  		if (ret < 0)
> -			goto err_pm;
> +			goto err_rst;
>  
>  		ret = vfio_platform_call_reset(vdev, &extra_dbg);
>  		if (ret && vdev->reset_required) {
> @@ -284,7 +284,6 @@ static int vfio_platform_open(void *device_data)
>  
>  err_rst:
>  	pm_runtime_put(vdev->device);
> -err_pm:
>  	vfio_platform_irq_cleanup(vdev);
>  err_irq:
>  	vfio_platform_regions_cleanup(vdev);
diff mbox series

Patch

diff --git a/drivers/vfio/platform/vfio_platform_common.c b/drivers/vfio/platform/vfio_platform_common.c
index c0771a9567fb..fb4b385191f2 100644
--- a/drivers/vfio/platform/vfio_platform_common.c
+++ b/drivers/vfio/platform/vfio_platform_common.c
@@ -267,7 +267,7 @@  static int vfio_platform_open(void *device_data)
 
 		ret = pm_runtime_get_sync(vdev->device);
 		if (ret < 0)
-			goto err_pm;
+			goto err_rst;
 
 		ret = vfio_platform_call_reset(vdev, &extra_dbg);
 		if (ret && vdev->reset_required) {
@@ -284,7 +284,6 @@  static int vfio_platform_open(void *device_data)
 
 err_rst:
 	pm_runtime_put(vdev->device);
-err_pm:
 	vfio_platform_irq_cleanup(vdev);
 err_irq:
 	vfio_platform_regions_cleanup(vdev);