From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f47.google.com (mail-qv1-f47.google.com [209.85.219.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4EAB0226CFE for ; Fri, 7 Aug 2026 00:21:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786062063; cv=none; b=lpXoGd9chmXiRHAj15891RelYGUoLS87UMuDDiaVVeFbCzE758mgsPZOogcGUwy+JWvbiD2HtQs1eqq3bHDqkC6NYVoYHOUmDUWFKG5LHS3RyMufd+zDicSz7MJC62L4B3vqIro1xn8a7yadr95F2s1mH7BOjZtTq3hmlOKqlN8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786062063; c=relaxed/simple; bh=049Z2R+ZU+vBHU9gpj7QoB3yYPHlZIaAgbVoEm2QHBw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=IcMU6aAaIx+O9EThGwPLR1AmMk/chtuCZ8R47uZ3M0pJIT26+jkOWnbznzrATClXe2/UiZtDCCautIXH9a/MqVCHxnJUBk4WrvO9qefoL3xef7X6YauZc3H+myy65o0JVou1bqisMzl8/5lbOzKHi36vJK4nuSoJMGSC2I+1yxE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aqmqtM/i; arc=none smtp.client-ip=209.85.219.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aqmqtM/i" Received: by mail-qv1-f47.google.com with SMTP id 6a1803df08f44-8f1a8e914a9so22661136d6.1 for ; Thu, 06 Aug 2026 17:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786062060; x=1786666860; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=toxh8rwTNL/X7WiYHzoGF/u3b7cgt27qWmy1VXJxv+k=; b=aqmqtM/ioHN4TMJMfpF8zf7sUgV8qoWUb8Tqkojv6oMwcvQc0d0MW06hEgtXqTjic9 C5Q07Ik4Mbzc+W47RWegwrxjIHndxNWr9GMXO5N+Ueh1a75Fy4Ns0r1dxlKEkyo5cEJX 620FpJpg7UHIJ0XBfZYwYWlGJf+Ie2ljwwc49xdOFYZQNBdKJVHlfMW/GJtQhwMMj0M1 Pn65v2YEAumft+13srggVkQpE1SJi6pNpMFy59ba53NGtcJaNQXDMtcJdnowuAFDS+UE eYqJcedrm54WOuGsvxi9yqbKUdeC19Rlvtfqi48+CA9a+x75TyU6FLRw4eRnl9IXfp3y 7zbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786062060; x=1786666860; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=toxh8rwTNL/X7WiYHzoGF/u3b7cgt27qWmy1VXJxv+k=; b=gfnIWNfSoT0WvlZ0g6qSDuV+A1xB2MrpsG5hwMT8AegjlWJPX2iHFCxejFbAbiua1T 5YoCuXq/ZUSrAZs33yuFIPErLlLlCmPHLDKa00LRvoCKFTZOH2PIEYoCF8LwS0PQLrnb U9GhYtXFD8SGx5CS4DYPmy20mPFY32mjAi2krwboANKInMSlW7b1oLO1BKPRlJ3LhS1X MUgaYBcPvjzfC9f82MT1Teoolb7bCGZjFCTu0sFtm48Eh0Wo4Nmf+yi/XoasyMuBPe0r jbhP3Gc3QPIIXDu6fs7j8FDcJ3DzD2lWW8LtdW+jKUZoyeGRfGeJQRvWAn6W9DbGsoLo hLpw== X-Forwarded-Encrypted: i=1; AHgh+RpDXp7A7e7qB0xDh8os+ov2m8CWNKGf0I4mIL5P+WGptUazmaJLCVi3idb1xcpACL6sEsc5WxKAU8EbXns=@vger.kernel.org X-Gm-Message-State: AOJu0Yyf41lD9DGhGx+vVaQGZqREtPhqorqiuo9qh67IeH0AFlUi/Fvp eW6l4pkhlneaD8W96+6LT6TNU2ZyU4wwgyTsr3DMir/bbB1bxxRGDJ5e X-Gm-Gg: AR+sD121t/FeXna8+A21kNPibH2L7QrGHBXgKtDeZJtKp6+09M3XxvEOHcccGIwI+MW nMs9IRKjo2oVh5y/j9I9iDH8SU3k3NYYqR0BXMHbePIpFQ2Q74kskZD8WqmFoes7g84wrjpMj+s k9FteM2HFqGJiug1LY1GYrVgj2j0nze+zhsb8dRmDZ5TnHm5CbKcgM++HgTm0i5gUT70S1URGgH viCKv6y07JUsy17t+fRoETcNQTCBEC/ZGjuNrsHy7iuHIMFYRL1QqRoA9+1vdco6xGXYNqj8R4V /g5PVDtilZzFOLRMApkizM6FId+e0VoXACe21y9VSn+0CBIiequZIBnp2Yt/I9Cggf1OJKHjKoX bJXiRmMfiKWo9lB5Qaq7iOBnm2SBqPTiYZyEYoU8X9mbU65il/0d7gv7Fs+dzMPtAv4/rKxftl1 rO/e1KDEJ/nPgcPojsxsqqhYi6LVzEmXBi+gzvrq5jEbB2QrpuCu3VDa0OTS23MICo+IaUDG1rL XbokQIHtSme26tYKyPROvuWpBL2zVCe4QgOD6HWtwW4Nw9/h/unfIFA9Z7FeE78pqDJ1y4QMIxV bYoG/+c1DYaOFEiim3KMgOIRDa5Btheuc/03ZQ== X-Received: by 2002:a05:6214:29c5:b0:8df:98e0:4594 with SMTP id 6a1803df08f44-908813800f7mr217479286d6.15.1786062059761; Thu, 06 Aug 2026 17:20:59 -0700 (PDT) Received: from ryzen.lan ([2601:644:8000:7a86::e35]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-908800add3dsm64589136d6.39.2026.08.06.17.20.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 17:20:59 -0700 (PDT) From: Rosen Penev To: linux-sound@vger.kernel.org Cc: Vincenzo Frascino , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Michal Simek , Maruthi Srinivas Bayyavarapu , linux-arm-kernel@lists.infradead.org (moderated list:ARM/ZYNQ ARCHITECTURE), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] ASoC: xilinx: formatter_pcm: clear stream pointers on close Date: Thu, 6 Aug 2026 17:20:56 -0700 Message-ID: <20260807002056.42953-1-rosenp@gmail.com> X-Mailer: git-send-email 2.55.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit xlnx_formatter_pcm_close() never clears adata->play_stream or adata->capture_stream, and on reset failure it also skips xlnx_formatter_disable_irqs(), leaving the hardware IOC interrupts enabled while ALSA tears the stream down. A subsequent interrupt then dereferences the dangling substream pointer and calls snd_pcm_period_elapsed() on a closed stream whose runtime has already been freed, causing a WARN_ON or crash. Since the IRQ is never disabled, this repeats on every interrupt. Disable the IRQs before resetting the formatter, and clear the stream pointers in close so the IRQ handlers' NULL checks catch straggler interrupts. Do the cleanup even when the reset fails. Fixes: 6f6c3c36f091 ("ASoC: xlnx: add pcm formatter platform driver") Assisted-by: opencode:deepseek-v4-flash-free Signed-off-by: Rosen Penev --- sound/soc/xilinx/xlnx_formatter_pcm.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/sound/soc/xilinx/xlnx_formatter_pcm.c b/sound/soc/xilinx/xlnx_formatter_pcm.c index 7eba3a0205f1..e1d2f1cadf8d 100644 --- a/sound/soc/xilinx/xlnx_formatter_pcm.c +++ b/sound/soc/xilinx/xlnx_formatter_pcm.c @@ -421,15 +421,19 @@ static int xlnx_formatter_pcm_close(struct snd_soc_component *component, int ret; struct xlnx_pcm_stream_param *stream_data = substream->runtime->private_data; + struct xlnx_pcm_drv_data *adata = dev_get_drvdata(component->dev); + + xlnx_formatter_disable_irqs(stream_data->mmio, substream->stream); + + if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) + adata->play_stream = NULL; + else + adata->capture_stream = NULL; ret = xlnx_formatter_pcm_reset(stream_data->mmio); - if (ret) { + if (ret) dev_err(component->dev, "audio formatter reset failed\n"); - goto err_reset; - } - xlnx_formatter_disable_irqs(stream_data->mmio, substream->stream); -err_reset: kfree(stream_data); return 0; } -- 2.55.0