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;