From d9619b0fedfeaac9e38dbcf2154f2c5d1b449aa9 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Thu, 24 Dec 2020 11:12:00 -0500 Subject: [PATCH] Fixes for 5.4 Signed-off-by: Sasha Levin --- ...m_runtime_resume_and_get-to-deal-wit.patch | 60 +++++++++++++++++++ queue-5.4/series | 1 + 2 files changed, 61 insertions(+) create mode 100644 queue-5.4/pm-runtime-add-pm_runtime_resume_and_get-to-deal-wit.patch diff --git a/queue-5.4/pm-runtime-add-pm_runtime_resume_and_get-to-deal-wit.patch b/queue-5.4/pm-runtime-add-pm_runtime_resume_and_get-to-deal-wit.patch new file mode 100644 index 00000000000..b70d0d96237 --- /dev/null +++ b/queue-5.4/pm-runtime-add-pm_runtime_resume_and_get-to-deal-wit.patch @@ -0,0 +1,60 @@ +From 9b9d01a9814289568cc447498150478df493960e Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Tue, 10 Nov 2020 17:29:32 +0800 +Subject: PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter + +From: Zhang Qilong + +[ Upstream commit dd8088d5a8969dc2b42f71d7bc01c25c61a78066 ] + +In many case, we need to check return value of pm_runtime_get_sync, but +it brings a trouble to the usage counter processing. Many callers forget +to decrease the usage counter when it failed, which could resulted in +reference leak. It has been discussed a lot[0][1]. So we add a function +to deal with the usage counter for better coding. + +[0]https://lkml.org/lkml/2020/6/14/88 +[1]https://patchwork.ozlabs.org/project/linux-tegra/list/?series=178139 +Signed-off-by: Zhang Qilong +Acked-by: Rafael J. Wysocki +Signed-off-by: Jakub Kicinski +Signed-off-by: Sasha Levin +--- + include/linux/pm_runtime.h | 21 +++++++++++++++++++++ + 1 file changed, 21 insertions(+) + +diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h +index fe61e3b9a9ca2..7145795b4b9da 100644 +--- a/include/linux/pm_runtime.h ++++ b/include/linux/pm_runtime.h +@@ -224,6 +224,27 @@ static inline int pm_runtime_get_sync(struct device *dev) + return __pm_runtime_resume(dev, RPM_GET_PUT); + } + ++/** ++ * pm_runtime_resume_and_get - Bump up usage counter of a device and resume it. ++ * @dev: Target device. ++ * ++ * Resume @dev synchronously and if that is successful, increment its runtime ++ * PM usage counter. Return 0 if the runtime PM usage counter of @dev has been ++ * incremented or a negative error code otherwise. ++ */ ++static inline int pm_runtime_resume_and_get(struct device *dev) ++{ ++ int ret; ++ ++ ret = __pm_runtime_resume(dev, RPM_GET_PUT); ++ if (ret < 0) { ++ pm_runtime_put_noidle(dev); ++ return ret; ++ } ++ ++ return 0; ++} ++ + static inline int pm_runtime_put(struct device *dev) + { + return __pm_runtime_idle(dev, RPM_GET_PUT | RPM_ASYNC); +-- +2.27.0 + diff --git a/queue-5.4/series b/queue-5.4/series index 2a7ceffd5f1..889cd7e0b50 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -7,6 +7,7 @@ arm-dts-sun8i-v3s-fix-gic-node-memory-range.patch arm-dts-sun7i-pcduino3-nano-enable-rgmii-rx-tx-delay.patch arm-dts-imx6qdl-wandboard-revd1-remove-pad_gpio_6-fr.patch arm-dts-imx6qdl-kontron-samx6i-fix-i2c_pm-scl-pin.patch +pm-runtime-add-pm_runtime_resume_and_get-to-deal-wit.patch gpio-zynq-fix-reference-leak-in-zynq_gpio-functions.patch gpio-mvebu-fix-potential-user-after-free-on-probe.patch scsi-bnx2i-requires-mmu.patch -- 2.47.3