Skip to content

Commit

Permalink
staging/bcm2835-isp: Fix cleanup after init fail
Browse files Browse the repository at this point in the history
bcm2835_isp_remove is called on an initialisation failure, but at that
point the drvdata hasn't been set. This causes a crash when e.g. using
the cutdown firmware (gpu_mem=16).

Move platform_set_drvdata before the instance probing loop to avoid the
problem.

See: #4774

Signed-off-by: Phil Elwell <phil@raspberrypi.com>
  • Loading branch information
pelwell authored and popcornmix committed Nov 18, 2024
1 parent a22c1e1 commit 743d4bb
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
Original file line number Diff line number Diff line change
Expand Up @@ -1776,14 +1776,15 @@ static int bcm2835_isp_probe(struct platform_device *pdev)
if (!bcm2835_isp_instances)
return -ENOMEM;

platform_set_drvdata(pdev, bcm2835_isp_instances);

for (i = 0; i < BCM2835_ISP_NUM_INSTANCES; i++) {
ret = bcm2835_isp_probe_instance(pdev,
&bcm2835_isp_instances[i], i);
if (ret)
goto error;
}

platform_set_drvdata(pdev, bcm2835_isp_instances);
dev_info(&pdev->dev, "Loaded V4L2 %s\n", BCM2835_ISP_NAME);
return 0;

Expand Down

0 comments on commit 743d4bb

Please sign in to comment.