mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-18 08:35:08 +08:00
V4L/DVB (11069): au8522: add mutex protecting use of hybrid state
Access using the hybrid state framework requires the list to be protected by a mutex. Thanks to Michael Krufky <mkrufky@linuxtv.org> for reporting this during a code review. Signed-off-by: Devin Heitmueller <dheitmueller@linuxtv.org> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
7fdd7c72ad
commit
4ff5ed44f8
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user