Skip to contentSkip to conversation

Patch "ALSA: seq: Fix lockdep warnings due to double mutex locks" has been added to the 4.3-stable tree

PATCH [email protected] 1 participant 1 message Feb 14, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

ALSA: seq: Fix lockdep warnings due to double mutex locks

to the 4.3-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
alsa-seq-fix-lockdep-warnings-due-to-double-mutex-locks.patch
and it can be found in the queue-4.3 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 7f0973e973cd74aa40747c9d38844560cd184ee8 Mon Sep 17 00:00:00 2001

From: Takashi Iwai <[email protected]>
Date: Wed, 3 Feb 2016 08:32:44 +0100
Subject: ALSA: seq: Fix lockdep warnings due to double mutex locks

From: Takashi Iwai <[email protected]>

commit 7f0973e973cd74aa40747c9d38844560cd184ee8 upstream.

The port subscription code uses double mutex locks for source and destination ports, and this may become racy once when wrongly set up. It leads to lockdep warning splat, typically triggered by fuzzer like syzkaller, although the actual deadlock hasn't been seen, so far.

This patch simplifies the handling by reducing to two single locks, so that no lockdep warning will be trigger any longer.

By splitting to two actions, a still-in-progress element shall be added in one list while handling another. For ignoring this element, a new check is added in deliver_to_subscribers().

Along with it, the code to add/remove the subscribers list element was cleaned up and refactored.

---
 sound/core/seq/seq_clientmgr.c |    3 
 sound/core/seq/seq_ports.c     |  235 ++++++++++++++++++++++-------------------
 2 files changed, 134 insertions(+), 104 deletions(-)
sound/core/seq/seq_clientmgr.c +3 -0
@@ -678,6 +678,9 @@ static int deliver_to_subscribers(struct
 	else
 		down_read(&grp->list_mutex);
 	list_for_each_entry(subs, &grp->list_head, src_list) {
+		/* both ports ready? */
+		if (atomic_read(&subs->ref_count) != 2)
+			continue;
 		event->dest = subs->info.dest;
 		if (subs->info.flags & SNDRV_SEQ_PORT_SUBS_TIMESTAMP)
 			/* convert time according to flag with subscription */
sound/core/seq/seq_ports.c +131 -104

320 lines not on this page · raw message

Patches currently in stable-queue which might be from [email protected] are

queue-4.3/alsa-seq-fix-race-at-closing-in-virmidi-driver.patch queue-4.3/alsa-hda-fix-bad-dereference-of-jack-object.patch queue-4.3/c8sectpfe-remove-select-on-config_fw_loader_user_helper_fallback.patch queue-4.3/alsa-usb-audio-add-quirk-for-microsoft-lifecam-hd-6000.patch queue-4.3/alsa-rawmidi-remove-kernel-warning-for-null-user-space-buffer-check.patch queue-4.3/alsa-usb-audio-fix-oppo-ha-1-vendor-id.patch queue-4.3/alsa-timer-fix-race-at-concurrent-reads.patch queue-4.3/alsa-hda-fix-static-checker-warning-in-patch_hdmi.c.patch queue-4.3/alsa-seq-fix-lockdep-warnings-due-to-double-mutex-locks.patch queue-4.3/alsa-usb-audio-fix-teac-ud-501-ud-503-nt-503-usb-delay.patch queue-4.3/alsa-timer-fix-wrong-instance-passed-to-slave-callbacks.patch queue-4.3/alsa-hda-implement-loopback-control-switch-for-realtek-and-other-codecs.patch queue-4.3/alsa-seq-degrade-the-error-message-for-too-many-opens.patch queue-4.3/alsa-compress-disable-get_codec_caps-ioctl-for-some-architectures.patch queue-4.3/alsa-rawmidi-make-snd_rawmidi_transmit-race-free.patch queue-4.3/alsa-hda-fix-speaker-output-from-vaio-aio-machines.patch queue-4.3/alsa-bebob-use-a-signed-return-type-for-get_formation_index.patch queue-4.3/alsa-dummy-implement-timer-backend-switching-more-safely.patch queue-4.3/alsa-dummy-disable-switching-timer-backend-via-sysfs.patch queue-4.3/alsa-seq-fix-incorrect-sanity-check-at-snd_seq_oss_synth_cleanup.patch queue-4.3/alsa-seq-fix-yet-another-races-among-alsa-timer-accesses.patch queue-4.3/alsa-usb-audio-avoid-freeing-umidi-object-twice.patch queue-4.3/revert-alsa-hda-fix-noise-on-gigabyte-z170x-mobo.patch queue-4.3/alsa-hda-add-fixup-for-mac-mini-7-1-model.patch queue-4.3/alsa-usb-audio-add-native-dsd-support-for-ps-audio-nuwave-dac.patch queue-4.3/alsa-timer-fix-leftover-link-at-closing.patch queue-4.3/alsa-rawmidi-fix-race-at-copying-updating-the-position.patch queue-4.3/alsa-pcm-fix-potential-deadlock-in-oss-emulation.patch queue-4.3/alsa-timer-fix-link-corruption-due-to-double-start-or-stop.patch