On Sunday 08 March 2015 11:01:01 Pali Rohár wrote: > Function pm_runtime_get_sync could fail and we need to check return > value to prevent kernel crash. > > Signed-off-by: Pali Rohár <pali.rohar@xxxxxxxxx> > --- > v2: Check return value for all pm_runtime_get_sync() calls > --- > drivers/crypto/omap-sham.c | 23 ++++++++++++++++++++--- > 1 file changed, 20 insertions(+), 3 deletions(-) > > diff --git a/drivers/crypto/omap-sham.c b/drivers/crypto/omap-sham.c > index b20e374..c5df53d 100644 > --- a/drivers/crypto/omap-sham.c > +++ b/drivers/crypto/omap-sham.c > @@ -362,7 +362,13 @@ static void omap_sham_copy_ready_hash(struct > ahash_request *req) > > static int omap_sham_hw_init(struct omap_sham_dev *dd) > { > - pm_runtime_get_sync(dd->dev); > + int err; > + > + err = pm_runtime_get_sync(dd->dev); > + if (err < 0) { > + dev_err(dd->dev, "failed to get sync: %d\n", err); > + return err; > + } > > if (!test_bit(FLAGS_INIT, &dd->flags)) { > set_bit(FLAGS_INIT, &dd->flags); > @@ -1949,7 +1955,13 @@ static int omap_sham_probe(struct > platform_device *pdev) dd->flags |= dd->pdata->flags; > > pm_runtime_enable(dev); > - pm_runtime_get_sync(dev); > + > + err = pm_runtime_get_sync(dev); > + if (err < 0) { > + dev_err(dev, "failed to get sync: %d\n", err); > + goto err_pm; > + } > + > rev = omap_sham_read(dd, SHA_REG_REV(dd)); > pm_runtime_put_sync(&pdev->dev); > > @@ -1979,6 +1991,7 @@ err_algs: > for (j = dd->pdata->algs_info[i].registered - 1; j >= 0; j--) > crypto_unregister_ahash( > &dd->pdata->algs_info[i].algs_list[j]); > +err_pm: > pm_runtime_disable(dev); > if (dd->dma_lch) > dma_release_channel(dd->dma_lch); > @@ -2021,7 +2034,11 @@ static int omap_sham_suspend(struct device > *dev) > > static int omap_sham_resume(struct device *dev) > { > - pm_runtime_get_sync(dev); > + int err = pm_runtime_get_sync(dev); > + if (err < 0) { > + dev_err(dev, "failed to get sync: %d\n", err); > + return err; > + } > return 0; > } > #endif Herbert, can you apply this patch? -- Pali Rohár pali.rohar@xxxxxxxxx
Attachment:
signature.asc
Description: This is a digitally signed message part.