From b226344605d545e2497a900087e090f32328bd0e Mon Sep 17 00:00:00 2001 From: Devin Heitmueller Date: Wed, 11 Mar 2009 03:00:45 -0300 Subject: [PATCH] --- yaml --- r: 138203 b: refs/heads/master c: 4ff5ed44f84aed6727ec226853a1c6b03c36db5e h: refs/heads/master i: 138201: 273b016e692e8c5b5b3bfc26a824d279200f8408 138199: 61be53315f4225c39b2b7384b7805b05bd6711a7 v: v3 --- [refs] | 2 +- trunk/drivers/media/dvb/frontends/au8522_dig.c | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index e64ef2bdec38..4021cf799481 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7fdd7c72ad65ef98d1071cf4cd8a39490f423bae +refs/heads/master: 4ff5ed44f84aed6727ec226853a1c6b03c36db5e diff --git a/trunk/drivers/media/dvb/frontends/au8522_dig.c b/trunk/drivers/media/dvb/frontends/au8522_dig.c index b04346687c68..7e24b914dbe5 100644 --- a/trunk/drivers/media/dvb/frontends/au8522_dig.c +++ b/trunk/drivers/media/dvb/frontends/au8522_dig.c @@ -34,6 +34,7 @@ static int debug; /* Despite the name "hybrid_tuner", the framework works just as well for hybrid demodulators as well... */ static LIST_HEAD(hybrid_tuner_instance_list); +static DEFINE_MUTEX(au8522_list_mutex); #define dprintk(arg...) do { \ if (debug) \ @@ -795,15 +796,23 @@ static struct dvb_frontend_ops au8522_ops; int au8522_get_state(struct au8522_state **state, struct i2c_adapter *i2c, u8 client_address) { - return hybrid_tuner_request_state(struct au8522_state, (*state), - hybrid_tuner_instance_list, - i2c, client_address, "au8522"); + int ret; + + mutex_lock(&au8522_list_mutex); + ret = hybrid_tuner_request_state(struct au8522_state, (*state), + hybrid_tuner_instance_list, + i2c, client_address, "au8522"); + mutex_unlock(&au8522_list_mutex); + + return ret; } void au8522_release_state(struct au8522_state *state) { + mutex_lock(&au8522_list_mutex); if (state != NULL) hybrid_tuner_release_state(state); + mutex_unlock(&au8522_list_mutex); }