On calling pm_runtime_get_sync() the reference count of the device
is incremented. In case of failure, should decrement the reference
count before returning the error. So we fixed it by replacing it
with pm_runtime_resume_and_get.

Signed-off-by: Wang Xiaojun <wangxiaoju...@huawei.com>
---
 drivers/crypto/omap-sham.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c
index a3b38d2c92e7..4a4da0cc444c 100644
--- a/drivers/crypto/omap-sham.c
+++ b/drivers/crypto/omap-sham.c
@@ -371,7 +371,7 @@ static int omap_sham_hw_init(struct omap_sham_dev *dd)
 {
        int err;
 
-       err = pm_runtime_get_sync(dd->dev);
+       err = pm_runtime_resume_and_get(dd->dev);
        if (err < 0) {
                dev_err(dd->dev, "failed to get sync: %d\n", err);
                return err;
@@ -2130,7 +2130,7 @@ static int omap_sham_probe(struct platform_device *pdev)
        pm_runtime_enable(dev);
        pm_runtime_irq_safe(dev);
 
-       err = pm_runtime_get_sync(dev);
+       err = pm_runtime_resume_and_get(dev);
        if (err < 0) {
                dev_err(dev, "failed to get sync: %d\n", err);
                goto err_pm;
@@ -2243,7 +2243,7 @@ static int omap_sham_suspend(struct device *dev)
 
 static int omap_sham_resume(struct device *dev)
 {
-       int err = pm_runtime_get_sync(dev);
+       int err = pm_runtime_resume_and_get(dev);
        if (err < 0) {
                dev_err(dev, "failed to get sync: %d\n", err);
                return err;
-- 
2.25.1

Reply via email to