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

This commit is contained in:
qctecmdr 2021-05-18 08:19:07 -07:00 • committed by Gerrit - the friendly Code Review server
commit 83020f31f6
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);