All of lore.kernel.org
 help / color / mirror / Atom feed
From: Will Porter <mrwillporter@gmail.com>
To: Takashi Iwai <tiwai@suse.com>
Cc: "Jaroslav Kysela" <perex@perex.cz>,
	"Geoffrey D. Bennett" <g@b4.vu>,
	"Asahi Lina" <lina@asahilina.net>,
	"Chris J Arges" <chris.j.arges@canonical.com>,
	"Nick Kossifidis" <mickflemm@gmail.com>,
	"Detlef Urban" <onkel@paraair.de>,
	"Roy Vegard Ovesen" <roy.vegard.ovesen@gmail.com>,
	fenugrec <fenugrec@mail.com>,
	"Frederic Popp" <frederic.l.popp@t-online.de>,
	"Cássio Gabriel" <cassiogabrielcontato@gmail.com>,
	"Shipei Qu" <qu@darknavy.com>,
	linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org,
	"Will Porter" <mrwillporter@gmail.com>
Subject: [PATCH 0/6] ALSA: usb-audio: guard device-specific control transfers
Date: Thu, 27 Aug 2026 18:21:37 -0500	[thread overview]
Message-ID: <20260827232143.149197-1-mrwillporter@gmail.com> (raw)
In-Reply-To: <20260824230302.27965-1-mrwillporter@gmail.com>

Takashi confirmed that hardware access through usb_ctl_msg() should hold
snd_usb_lock, and suggested guarding scarlett2_usb() as the central point
for Scarlett2. This series adds that protection to the six device-specific
paths identified by the RFC audit.

Each guard covers a complete synchronous USB transaction. The guards are
outside private data and USB mutexes when a resume callback could affect
lock ordering.

FCP holds one reference across its complete initialization sequence so
runtime suspend cannot intervene between step zero, notification-URB setup,
and the two initialization commands.

Scarlett2 uses a dedicated unguarded helper only for the suspend-time config
save. That call already runs inside the USB suspend callback. The guarded
path covers normal controls and hwdep operations. The series does not claim
to hold a PM reference across Scarlett2's asynchronous flash-erase interval.

The affected devices were unavailable for runtime testing. I reproduced the
failure mechanism with an Audient iD14 MkI mixer path before the RFC. I then
built the complete sound/usb/ directory with the configuration from the
running x86-64 distribution kernel (7.2.0-ogc4.1.fc44.x86_64):

  make olddefconfig
  make -j4 W=1 sound/usb/

All six changed objects compiled without warnings, and the build linked
sound/usb/snd-usb-audio.o. The series also passes scripts/checkpatch.pl
--strict with no errors, warnings, or checks.

Link: https://lore.kernel.org/r/20260824230302.27965-1-mrwillporter@gmail.com

Will Porter (6):
  ALSA: usb-audio: Add PM guard to Studio 1810c controls
  ALSA: usb-audio: Add PM guards to US-16x08 transfers
  ALSA: usb-audio: Add PM guard to Scarlett meter reads
  ALSA: usb-audio: Guard Scarlett2 protocol transfers
  ALSA: usb-audio: Add PM guards to RME Digiface controls
  ALSA: usb-audio: Guard FCP protocol transfers

 sound/usb/fcp.c             |  8 ++++++++
 sound/usb/mixer_quirks.c    |  8 ++++++++
 sound/usb/mixer_s1810c.c    |  8 ++++++++
 sound/usb/mixer_scarlett.c  |  4 ++++
 sound/usb/mixer_scarlett2.c | 36 ++++++++++++++++++++++++++++++------
 sound/usb/mixer_us16x08.c   |  7 +++++++
 6 files changed, 65 insertions(+), 6 deletions(-)


base-commit: 58c1c30074a8d1179e17a0188cd695b2f416bf75
-- 
2.47.3

  parent reply	other threads:[~2026-08-27 23:21 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24 23:03 [RFC] ALSA: usb-audio: missing PM guards in device mixer paths Will Porter
2026-08-25  8:17 ` Takashi Iwai
2026-08-27 23:21 ` Will Porter [this message]
2026-08-27 23:21   ` [PATCH 1/6] ALSA: usb-audio: Add PM guard to Studio 1810c controls Will Porter
2026-08-27 23:21   ` [PATCH 2/6] ALSA: usb-audio: Add PM guards to US-16x08 transfers Will Porter
2026-08-27 23:21   ` [PATCH 3/6] ALSA: usb-audio: Add PM guard to Scarlett meter reads Will Porter
2026-08-27 23:21   ` [PATCH 4/6] ALSA: usb-audio: Guard Scarlett2 protocol transfers Will Porter
2026-08-27 23:21   ` [PATCH 5/6] ALSA: usb-audio: Add PM guards to RME Digiface controls Will Porter
2026-08-27 23:21   ` [PATCH 6/6] ALSA: usb-audio: Guard FCP protocol transfers Will Porter
2026-08-31  8:04   ` [PATCH 0/6] ALSA: usb-audio: guard device-specific control transfers Takashi Iwai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260827232143.149197-1-mrwillporter@gmail.com \
    --to=mrwillporter@gmail.com \
    --cc=cassiogabrielcontato@gmail.com \
    --cc=chris.j.arges@canonical.com \
    --cc=fenugrec@mail.com \
    --cc=frederic.l.popp@t-online.de \
    --cc=g@b4.vu \
    --cc=lina@asahilina.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=mickflemm@gmail.com \
    --cc=onkel@paraair.de \
    --cc=perex@perex.cz \
    --cc=qu@darknavy.com \
    --cc=roy.vegard.ovesen@gmail.com \
    --cc=tiwai@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.