From: Takashi Iwai <tiwai@suse.de>
To: John Keeping <jkeeping@inmusicbrands.com>
Cc: "Takashi Iwai" <tiwai@suse.com>,
"Jaroslav Kysela" <perex@perex.cz>,
"Zhang Cen" <rollkingzzc@gmail.com>,
"Uwe Kleine-König" <u.kleine-koenig@baylibre.com>,
"Kees Cook" <kees@kernel.org>,
linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] ALSA: seq: midi: Serialize input teardown with event_input
Date: Thu, 13 Aug 2026 18:20:14 +0200 [thread overview]
Message-ID: <874igyxa9t.wl-tiwai@suse.de> (raw)
In-Reply-To: <20260813150810.795393-1-jkeeping@inmusicbrands.com>
On Thu, 13 Aug 2026 17:08:08 +0200,
John Keeping wrote:
>
> snd_midi_input_event() must not be running while a rawmidi substream is
> closing, since this can lead to the trigger state becoming out-of-step
> through this sequence in snd_rawmidi_input_trigger():
>
> snd_rawmidi_input_trigger(up=0)
> snd_midi_input_event()
> -> snd_rawmidi_kernel_read()
> -> snd_rawmidi_input_trigger(up=1)
> -> cancel_work_sync()
>
> which ends with the underlying device being active unexpectedly.
>
> When this is called from close_substream(), further input can re-trigger
> the input event leaving it running after rawmidi_release_priv() has set
> rfile->rmidi to NULL which leads to:
>
> Unable to handle kernel NULL pointer dereference at virtual address 00000000000000b0
> Call trace:
> snd_midi_input_event+0x3c/0x134 [snd_seq_midi] (P)
> snd_rawmidi_input_event_work+0x1c/0x2c
> process_one_work+0x150/0x3a4
> worker_thread+0x190/0x318
>
> Apply a similar approach to commit ef7607ab1c8ad ("ALSA: seq: midi:
> Serialize output teardown with event_input") which fixed the same issue
> in the output direction, but updated to use RCU following Takashi Iwai's
> proposed follow-on patch [1].
>
> With this change in place, midisynth_unsubscribe() clears the input file
> so snd_midi_input_event() will not re-trigger the stream and will be
> quiesced by the cancel_work_sync() in snd_rawmidi_input_trigger().
>
> [1] https://lore.kernel.org/linux-sound/20260813144224.753399-1-tiwai@suse.de/
>
> Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
> Signed-off-by: John Keeping <jkeeping@inmusicbrands.com>
> ---
> Changes in v2:
> - Switch to using RCU following Takashi's suggestion
Applied to for-next branch now. Thanks.
Takashi
prev parent reply other threads:[~2026-08-13 16:20 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-13 15:08 [PATCH v2] ALSA: seq: midi: Serialize input teardown with event_input John Keeping
2026-08-13 16:20 ` Takashi Iwai [this message]
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=874igyxa9t.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=jkeeping@inmusicbrands.com \
--cc=kees@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=perex@perex.cz \
--cc=rollkingzzc@gmail.com \
--cc=tiwai@suse.com \
--cc=u.kleine-koenig@baylibre.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.