On Thu Oct 17 23:34:16 2024 +0300, Dan Carpenter wrote:
> The proble is on the first line:
> 
>         if (jpeg->pd_dev[i] && !pm_runtime_suspended(jpeg->pd_dev[i]))
> 
> If jpeg->pd_dev[i] is an error pointer, then passing it to
> pm_runtime_suspended() will lead to an Oops.  The other conditions
> check for both error pointers and NULL, but it would be more clear to
> use the IS_ERR_OR_NULL() check for that.
> 
> Fixes: fd0af4cd35da ("media: imx-jpeg: Ensure power suppliers be suspended 
> before detach them")
> Cc: <sta...@vger.kernel.org>
> Signed-off-by: Dan Carpenter <dan.carpen...@linaro.org>
> Reviewed-by: Ming Qian <ming.q...@nxp.com>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

---

diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c 
b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
index 7f5fe551179b..1221b309a916 100644
--- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
+++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c
@@ -2677,11 +2677,12 @@ static void mxc_jpeg_detach_pm_domains(struct 
mxc_jpeg_dev *jpeg)
        int i;
 
        for (i = 0; i < jpeg->num_domains; i++) {
-               if (jpeg->pd_dev[i] && !pm_runtime_suspended(jpeg->pd_dev[i]))
+               if (!IS_ERR_OR_NULL(jpeg->pd_dev[i]) &&
+                   !pm_runtime_suspended(jpeg->pd_dev[i]))
                        pm_runtime_force_suspend(jpeg->pd_dev[i]);
-               if (jpeg->pd_link[i] && !IS_ERR(jpeg->pd_link[i]))
+               if (!IS_ERR_OR_NULL(jpeg->pd_link[i]))
                        device_link_del(jpeg->pd_link[i]);
-               if (jpeg->pd_dev[i] && !IS_ERR(jpeg->pd_dev[i]))
+               if (!IS_ERR_OR_NULL(jpeg->pd_dev[i]))
                        dev_pm_domain_detach(jpeg->pd_dev[i], true);
                jpeg->pd_dev[i] = NULL;
                jpeg->pd_link[i] = NULL;

Reply via email to