Skip to content
  • Takashi Iwai's avatar
    ALSA: pcm: Fix lockdep warning with nonatomic PCM ops · 67756e31
    Takashi Iwai authored
    
    
    With the nonatomic PCM ops, the system may spew lockdep warnings like:
    
     =============================================
     [ INFO: possible recursive locking detected ]
     4.2.0-rc1-jeejaval3 #12 Not tainted
     ---------------------------------------------
     aplay/4029 is trying to acquire lock:
      (snd_pcm_link_rwsem){.+.+.+}, at: [<ffffffff816fd473>] snd_pcm_stream_lock+0x43/0x60
    
     but task is already holding lock:
      (snd_pcm_link_rwsem){.+.+.+}, at: [<ffffffff816fcf29>] snd_pcm_action_nonatomic+0x29/0x80
    
     other info that might help us debug this:
      Possible unsafe locking scenario:
    
            CPU0
            ----
       lock(snd_pcm_link_rwsem);
       lock(snd_pcm_link_rwsem);
    
    Although this is false-positive as the rwsem is taken always as
    read-only for these code paths, it's certainly annoying to see this at
    any occasion.  A simple fix is to use down_read_nested() in
    snd_pcm_stream_lock() that can be called inside another lock.
    
    Reported-by: default avatarVinod Koul <vinod.koul@intel.com>
    Reported-by: default avatarJeeja Kp <jeeja.kp@intel.com>
    Tested-by: default avatarJeeja Kp <jeeja.kp@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    67756e31