From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794585812; b=qUTFFcWPg0A2LjejV/KmYgx04cOJX4YoT9okVwRGizf7UiSM5Nr8/5BQUiwSu9BxREPJ qHEc0R1Rz04DCOkxkE/+yNqh5EUapF/gUsKli2hh0+RAHKgZwluOed6KIXUCB+pTMgLWe VOeFhJiAPW7tSf7FxzoyukTXo8IpCpNL1QS0eE50qW4Pfxsrd9XhBT/hiTWograJaPIoJ dKRjb8K6DCRzH2Bv2N7l0IcDl1sBkFJcVT/j6u4L6RBqfzuBVU/uHxLeg8aXjmiea+QFh JjltzLiPLavlGk/uvu6Lski8G4u17CtOpSmpjOEptqX+OWVgzKxyYObID1F28xAUbQQ== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794585812; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:User-Agent:X-stable:X-Patchwork-Hint: MIME-Version:Content-Transfer-Encoding; bh=9a81qBfQNvFt3BB4om6ioZav5b00/JrtcSkb2hgeVGs=; b=AJRDyQZzLeNCApRdDCxsMt+GDn3BPfycP740fdYkHIdpprcA/OUmXinK+Sjvw4rCqzrt BjmXFYOxIzfOxGnx4uN5blnKsTvL6Loef4P5vvm9ClQygP36fl66w/ZDq3QiYL+U7R2VA xwcht2tvNk/ubLbIXOlARilgItY/rTePG6MhW6wXrS91d6yTCB6IlFjvIk174FZV5NF6x rEhx8CkqSf6v3Y5BF7viuFR5QP06FFJPPGkyMLSfMp2BLzjxHR7oG+B1+tB0IRU0xWIHP 6qNwwQaiym04GMMTU/NN4tx/UKLLoC29fMAYcdDpI8cC6cz7kG1gU3bObcW0oJoNOHA== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=linuxfoundation.org header.i=@linuxfoundation.org header.a=rsa-sha256 header.s=korg header.b=dZUooWAY; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E51A4606BA98; Fri, 13 Nov 2026 16:03:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.a=rsa-sha256 header.s=korg header.b=dZUooWAY Received: by smtp.kernel.org (Postfix) with ESMTPSA id 49E6F1F000C5; Fri, 13 Nov 2026 16:03:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1794585811; bh=9a81qBfQNvFt3BB4om6ioZav5b00/JrtcSkb2hgeVGs=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=dZUooWAYTZa9X3qbHgn4b4SF8WvtC70EvjUi4mi4CAixPSza+Efb9MceylXym1n/d TqDkr0GncupoLu0TazerzmfiXvfo6O8zhsJLLiKZqQvGhwnOd1ejlqrXoWVtJp/ktl xlm34OulGXd9Pr84Kle3eVxjhXVtQBvVPViebRoE= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Bin Yu , Cheng Wen , YuanZhe Liu <25031212351@stu.xidian.edu.cn>, Takashi Iwai , Sasha Levin Subject: [PATCH 7.3 395/507] ALSA: usx2y: Refuse a retried DSP load after a failure Date: Fri, 13 Nov 2026 10:51:39 -0500 Message-ID: <20261113153810.135639625@linuxfoundation.org> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261113153753.358973689@linuxfoundation.org> References: <20261113153753.358973689@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore X-Mailing-List: stable@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 7.3-stable review patch. If anyone has any objections, please let me know. ------------------ From: YuanZhe Liu <25031212351@stu.xidian.edu.cn> [ Upstream commit 1f8101b6adc87a3ddbd51fcb6609251591758026 ] snd_usx2y_hwdep_dsp_load() sets up the asynchronous sequence URBs and the interrupt URB when the FPGA firmware image with index 1 is loaded, and then creates the ALSA devices. If usx2y_in04_init() or usx2y_create_alsa_devices() fails, the URBs that were already set up are left in place. The core keeps the index unloaded when the callback fails, so user space may issue the same request again. The second attempt then enters usx2y_async_seq04_init() or usx2y_in04_init() with the URBs still allocated and trips WARN_ON(usx2y->as04.buffer) or WARN_ON(usx2y->in04_urb). The URBs cannot be released at this point: the card may already have registered PCM devices that user space can still open, and the disconnect handler accesses the URBs without holding the DSP lock. Mark the chip as hung instead, so that a retried request is refused with -ENODEV and the assertions keep their meaning. The URBs are released by snd_usx2y_card_private_free() when the card is freed. A failing usx2y_async_seq04_init() still releases its own URBs, so that path remains retryable. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Cc: stable@vger.kernel.org Co-developed-by: Bin Yu Signed-off-by: Bin Yu Co-developed-by: Cheng Wen Signed-off-by: Cheng Wen Signed-off-by: YuanZhe Liu <25031212351@stu.xidian.edu.cn> Link: https://patch.msgid.link/20261031191557.8460-1-25031212351@stu.xidian.edu.cn Signed-off-by: Takashi Iwai Signed-off-by: Sasha Levin --- sound/usb/usx2y/usX2Yhwdep.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sound/usb/usx2y/usX2Yhwdep.c b/sound/usb/usx2y/usX2Yhwdep.c index 7f153a2fcdd81..3800c5b5887c8 100644 --- a/sound/usb/usx2y/usX2Yhwdep.c +++ b/sound/usb/usx2y/usX2Yhwdep.c @@ -179,6 +179,9 @@ static int snd_usx2y_hwdep_dsp_load(struct snd_hwdep *hw, int lret, err; char *buf; + if (priv->chip_status & USX2Y_STAT_CHIP_HUP) + return -ENODEV; + buf = memdup_user(dsp->image, dsp->length); if (IS_ERR(buf)) return PTR_ERR(buf); @@ -201,11 +204,13 @@ static int snd_usx2y_hwdep_dsp_load(struct snd_hwdep *hw, err = usx2y_in04_init(priv); if (err) { dev_err(&dev->dev, "usx2y_in04_init error\n"); + priv->chip_status |= USX2Y_STAT_CHIP_HUP; return err; } err = usx2y_create_alsa_devices(hw->card); if (err) { dev_err(&dev->dev, "usx2y_create_alsa_devices error %i\n", err); + priv->chip_status |= USX2Y_STAT_CHIP_HUP; return err; } priv->chip_status |= USX2Y_STAT_CHIP_INIT; -- 2.53.0