[ARM] S3C24XX: ADC: Check pending queue before freeing adc client
Check pending queue and remove the adc client being released. Signed-off-by: Ramax Lo <ramaxlo@gmail.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
This commit is contained in:
parent
f8c8ac8109
commit
0c3ee07825
1 changed files with 17 additions and 0 deletions
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue