msm: kgsl: Correctly free up resources on error during probe

Correctly free up resources on error during probe.

Change-Id: Ia094bfd5694d580735000d2807a30f597f06f4e5
Signed-off-by: Kamal Agrawal <kamaagra@codeaurora.org>
This commit is contained in:
Kamal Agrawal 2021-05-15 11:43:42 +05:30
commit dc16f70deb
No known key found for this signature in database
GPG key ID: 688B6B9F11316E66
2 changed files with 14 additions and 6 deletions

View file

@ -4367,11 +4367,6 @@ int kgsl_device_platform_probe(struct kgsl_device *device)
if (status)
goto error;
/* This can return -EPROBE_DEFER */
status = kgsl_mmu_probe(device);
if (status != 0)
goto error_pwrctrl_close;
if (!devm_request_mem_region(&pdev->dev, device->reg_phys,
device->reg_len, device->name)) {
dev_err(device->dev, "request_mem_region failed\n");
@ -4411,6 +4406,11 @@ int kgsl_device_platform_probe(struct kgsl_device *device)
goto error_pwrctrl_close;
}
/* This can return -EPROBE_DEFER */
status = kgsl_mmu_probe(device);
if (status != 0)
goto error_pwrctrl_close;
kgsl_device_debugfs_init(device);
dma_set_coherent_mask(&pdev->dev, KGSL_DMA_BIT_MASK);
@ -4424,6 +4424,11 @@ int kgsl_device_platform_probe(struct kgsl_device *device)
return 0;
error_pwrctrl_close:
if (device->events_wq) {
destroy_workqueue(device->events_wq);
device->events_wq = NULL;
}
kgsl_pwrctrl_close(device);
error:
_unregister_device(device);

View file

@ -857,8 +857,11 @@ int kgsl_pwrscale_init(struct kgsl_device *device, struct platform_device *pdev,
}
pwrscale->devfreq_wq = create_freezable_workqueue("kgsl_devfreq_wq");
if (!pwrscale->devfreq_wq)
if (!pwrscale->devfreq_wq) {
dev_err(device->dev, "Failed to allocate kgsl devfreq workqueue\n");
device->pwrscale.enabled = false;
return -ENOMEM;
}
devfreq = devfreq_add_device(&pdev->dev, &gpu_profile->profile,
governor, &adreno_tz_data);