Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 83020f31 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

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

parents 5a2eb49b dc16f70d
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -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);
+4 −1
Original line number Diff line number Diff line
@@ -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);