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

Commit 0c3ee078 authored by Ramax Lo's avatar Ramax Lo Committed by Ben Dooks
Browse files

[ARM] S3C24XX: ADC: Check pending queue before freeing adc client



Check pending queue and remove the adc client being released.

Signed-off-by: default avatarRamax Lo <ramaxlo@gmail.com>
Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
parent f8c8ac81
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -190,6 +190,23 @@ EXPORT_SYMBOL_GPL(s3c_adc_register);
void s3c_adc_release(struct s3c_adc_client *client)
{
	/* We should really check that nothing is in progress. */
	if (adc_dev->cur == client)
		adc_dev->cur = NULL;
	if (adc_dev->ts_pend == client)
		adc_dev->ts_pend = NULL;
	else {
		struct list_head *p, *n;
		struct s3c_adc_client *tmp;

		list_for_each_safe(p, n, &adc_pending) {
			tmp = list_entry(p, struct s3c_adc_client, pend);
			if (tmp == client)
				list_del(&tmp->pend);
		}
	}

	if (adc_dev->cur == NULL)
		s3c_adc_try(adc_dev);
	kfree(client);
}
EXPORT_SYMBOL_GPL(s3c_adc_release);