diff options
author | Wu Fengguang <wfg@linux.intel.com> | 2009-01-09 03:45:24 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-01-09 03:58:47 -0500 |
commit | 5a9e02e94989323c2a7102e2fc80ee9102b19fa0 (patch) | |
tree | e6f5d2ecd8928a5b0256f4c9f8f7c7963d1f8e36 /sound/pci/hda/hda_codec.h | |
parent | 57d139278e6c246d78f71e4bf0e0d15bb0390646 (diff) |
ALSA: hda - create hda_codec.control_mutex for kcontrol->private_value
Fix the following lockdep warning by not reusing the hda_codec.spdif_mutex.
ALSA sound/pci/hda/hda_codec.c:882: hda_codec_cleanup_stream: NID=0x2
=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.28-next-20090102 #33
-------------------------------------------------------
mplayer/3151 is trying to acquire lock:
(&pcm->open_mutex){--..}, at: [<ffffffffa004ced3>] snd_pcm_release+0x43/0xd0 [snd_pcm]
but task is already holding lock:
(&mm->mmap_sem){----}, at: [<ffffffff810c0252>] sys_munmap+0x42/0x80
which lock already depends on the new lock.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_codec.h')
-rw-r--r-- | sound/pci/hda/hda_codec.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h index 729fc7642d7f..e9c723e13e5d 100644 --- a/sound/pci/hda/hda_codec.h +++ b/sound/pci/hda/hda_codec.h | |||
@@ -771,6 +771,7 @@ struct hda_codec { | |||
771 | struct hda_cache_rec cmd_cache; /* cache for other commands */ | 771 | struct hda_cache_rec cmd_cache; /* cache for other commands */ |
772 | 772 | ||
773 | struct mutex spdif_mutex; | 773 | struct mutex spdif_mutex; |
774 | struct mutex control_mutex; | ||
774 | unsigned int spdif_status; /* IEC958 status bits */ | 775 | unsigned int spdif_status; /* IEC958 status bits */ |
775 | unsigned short spdif_ctls; /* SPDIF control bits */ | 776 | unsigned short spdif_ctls; /* SPDIF control bits */ |
776 | unsigned int spdif_in_enable; /* SPDIF input enable? */ | 777 | unsigned int spdif_in_enable; /* SPDIF input enable? */ |