media: imx-jpeg: Fix potential error pointer dereference in detach_pm()
Subsystems (4)
PATCH v2 1/1 media: imx-jpeg: Fix potential error pointer dereference in detach_pm()
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.
---
v2: The buggy patch hasn't hit Linus's tree yet, but it's destined for stable so
add a stable tag to this too.
drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +4 -3
@@ -2679,11 +2679,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 ;
Signature · 1 line
2.45.2
Quoted 9 lines
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 theIS_ERR_OR_NULL()check for that.
Quoted 4 lines
Fixes fd0af4cd35da ("media: imx-jpeg: Ensure power suppliers be suspendedbefore detach them")
Cc <[email protected]>Signed-off-by Dan Carpenter <[email protected]>
Quoted 31 lines
---
v2: The buggy patch hasn't hit Linus's tree yet, but it's destined for stable so
add a stable tag to this too.
drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c| 7 ++++---1 file changed, 4 insertions(+), 3 deletions(-)drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c +4
-3@@ -2679,11 +2679,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;--
2.45.2