Thread (6 messages) 6 messages, 2 authors, 2021-08-12

Re: [PATCH v1] media: camss: vfe: Don't use vfe->base before it's assigned

From: Marek Szyprowski <m.szyprowski@samsung.com>
Date: 2021-08-11 07:48:54
Also in: linux-arm-msm, lkml

On 10.08.2021 12:33, Robert Foss wrote:
vfe->ops->hw_version(vfe) being called before vfe->base has been assigned
is incorrect and causes crashes.

Fixes: b10b5334528a9 ("media: camss: vfe: Don't read hardware version needlessly")

Reported-by: Linux Kernel Functional Testing <redacted>
Signed-off-by: Robert Foss <redacted>
With this patch applied on top of linux next-20210810 instead of the 
NULL pointer dereference I get following error on DragonBoard410c while 
loading kernel modules:

[   18.480608] qcom-venus 1d00000.video-codec: Adding to iommu group 1
[   18.536167] qcom-camss 1b0ac00.camss: Adding to iommu group 2
[   18.600373] Internal error: synchronous external abort: 96000010 [#1] 
PREEMPT SMP
quoted hunk ↗ jump to hunk
---
  drivers/media/platform/qcom/camss/camss-vfe.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/qcom/camss/camss-vfe.c b/drivers/media/platform/qcom/camss/camss-vfe.c
index 6b2f33fc9be22..1c8d2f0f81207 100644
--- a/drivers/media/platform/qcom/camss/camss-vfe.c
+++ b/drivers/media/platform/qcom/camss/camss-vfe.c
@@ -1299,7 +1299,6 @@ int msm_vfe_subdev_init(struct camss *camss, struct vfe_device *vfe,
  		return -EINVAL;
  	}
  	vfe->ops->subdev_init(dev, vfe);
-	vfe->ops->hw_version(vfe);
  
  	/* Memory */
  
@@ -1309,6 +1308,8 @@ int msm_vfe_subdev_init(struct camss *camss, struct vfe_device *vfe,
  		return PTR_ERR(vfe->base);
  	}
  
+	vfe->ops->hw_version(vfe);
+
  	/* Interrupt */
  
  	r = platform_get_resource_byname(pdev, IORESOURCE_IRQ,
Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help