On Mon, Nov 02, 2020 at 03:18:38PM +0100, Maxime Ripard wrote: > On Mon, Nov 02, 2020 at 10:26:22PM +0800, Zhang Qilong wrote: > > pm_runtime_get_sync will increment pm usage counter even it > > failed. Forgetting to pm_runtime_put_noidle will result in > > reference leak in cedrus_start_streaming. We should fix it. > > > > Fixes: d5aecd289babf ("media: cedrus: Implement runtime PM") > > Signed-off-by: Zhang Qilong <zhangqilong3@xxxxxxxxxx> > > Shouldn't we fix pm_runtime_get_sync instead then? It seems that most of > the callers get this wrong, and that's definitely non-obvious. > > Maxime The other bug that people run into is that pm_runtime_get_sync() can return 1 on success. drivers/spi/spi-img-spfi.c:734 img_spfi_resume() warn: pm_runtime_get_sync() also returns 1 on success drivers/mfd/arizona-core.c:49 arizona_clk32k_enable() warn: pm_runtime_get_sync() also returns 1 on success drivers/usb/dwc3/dwc3-pci.c:212 dwc3_pci_resume_work() warn: pm_runtime_get_sync() also returns 1 on success drivers/input/keyboard/omap4-keypad.c:279 omap4_keypad_probe() warn: pm_runtime_get_sync() also returns 1 on success drivers/gpu/drm/vc4/vc4_dsi.c:839 vc4_dsi_encoder_enable() warn: pm_runtime_get_sync() also returns 1 on success drivers/gpu/drm/i915/selftests/mock_gem_device.c:157 mock_gem_device() warn: 'pm_runtime_get_sync(&pdev->dev)' returns positive and negative drivers/watchdog/rti_wdt.c:230 rti_wdt_probe() warn: pm_runtime_get_sync() also returns 1 on success drivers/media/platform/exynos4-is/mipi-csis.c:513 s5pcsis_s_stream() warn: pm_runtime_get_sync() also returns 1 on success drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_pm.c:89 mtk_vcodec_dec_pw_on() warn: pm_runtime_get_sync() also returns 1 on success drivers/media/platform/ti-vpe/cal.c:794 cal_probe() warn: pm_runtime_get_sync() also returns 1 on success drivers/media/platform/ti-vpe/vpe.c:2478 vpe_runtime_get() warn: pm_runtime_get_sync() also returns 1 on success drivers/media/i2c/smiapp/smiapp-core.c:1529 smiapp_pm_get_init() warn: pm_runtime_get_sync() also returns 1 on success I don't really understand the point of incrementing the counter on failure well enough to write a check for this... regards, dan carpenter