Skip to content

Commit

Permalink
[ARM] S3C24XX: ADC: Check pending queue before freeing adc client
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ramax Lo authored and Ben Dooks committed Apr 17, 2009
1 parent f8c8ac8 commit 0c3ee07
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions arch/arm/plat-s3c24xx/adc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 0c3ee07

Please sign in to comment.