Re: lockdep trace when unplugging usb audio (.39rc4)

From: Oliver Neukum
Date: Wed Apr 20 2011 - 06:31:47 EST


Am Dienstag, 19. April 2011, 20:07:45 schrieb Dave Jones:
> I get this trace when I unplug my NuForce uDAC.

Please test this patch.

Regards
Oliver
From 24d036ccb418d7cfa5a821d5a70b3d3da2d63bb3 Mon Sep 17 00:00:00 2001
From: Oliver Neukum <oliver@xxxxxxxxxx>
Date: Wed, 20 Apr 2011 12:29:22 +0200
Subject: [PATCH] usb-audio:fix potential deadlock on unplug

Decrease the scope of a lock to fix a deadlock

Signed-off-by: Oliver Neukum <oneukum@xxxxxxx>
---
sound/usb/card.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/sound/usb/card.c b/sound/usb/card.c
index a90662a..1d3d9f0 100644
--- a/sound/usb/card.c
+++ b/sound/usb/card.c
@@ -554,6 +554,7 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr)
mutex_lock(&chip->shutdown_mutex);
chip->shutdown = 1;
chip->num_interfaces--;
+ mutex_unlock(&chip->shutdown_mutex);
if (chip->num_interfaces <= 0) {
snd_card_disconnect(card);
/* release the pcm resources */
@@ -569,11 +570,9 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr)
snd_usb_mixer_disconnect(p);
}
usb_chip[chip->index] = NULL;
- mutex_unlock(&chip->shutdown_mutex);
mutex_unlock(&register_mutex);
snd_card_free_when_closed(card);
} else {
- mutex_unlock(&chip->shutdown_mutex);
mutex_unlock(&register_mutex);
}
}
--
1.7.1