From nobody Thu Apr 2 07:43:57 2026 Received: from mail-dl1-f54.google.com (mail-dl1-f54.google.com [74.125.82.54]) (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 E94752E7179 for ; Mon, 30 Mar 2026 04:00:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774843245; cv=none; b=dLVhpEqy1rtsxX1EEZKu3amnJ04BguLemWwtFRC1jqQMxy3dNXyqk3m2xMwU83HRTDgxPPQYn4q+gc8pLpO4yWL2hdcFerkAuRlkb3W4GpJI1T798qfRvHPxQ71w6EjwceurPXR0eAhvIuMJCgZq2sS9tvC4j7ur3ed++9KXdwU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774843245; c=relaxed/simple; bh=PlmjxGt4JGDRqDssZg/k5xlqGZcdiyv/+rwibqyvJPk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=hOVSJvFpe0Q5lSYQae3jC1qkiYTQHHZA+eBdzV/0o6I12rbDpqU49MsOHiNf1vzavTXoVwcESEpq1yGtDTeYchHD/b4vaBAfds7TLqCYs29WJU1hFTvfpYCCF3OazA8vcICg7mMjh7QJAq15ItE6UnSoIqt8kGd9Of2t2ri0aNA= 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=nSA/cKKq; arc=none smtp.client-ip=74.125.82.54 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="nSA/cKKq" Received: by mail-dl1-f54.google.com with SMTP id a92af1059eb24-12a74039dc6so2992687c88.0 for ; Sun, 29 Mar 2026 21:00:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774843243; x=1775448043; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=2MiznXVnaOQN1Ty0L+R2YmSXm0gykn8v0J+C8W1yOKA=; b=nSA/cKKqEzUOun+9QiFOdpV+7B87zgxQ4lgdCDGuOzYw382Xv5jxMiQeyzob6QsMOW 3fxUxAhrzXeHsqCCPbCx3m+vRpLLn+ZJWvKS46mK+/hZJVfHTlpi9JjU8k1dPptG5IIl 1t/jTAF4OnpJxfI61CcycuL/DBDzBAUWXrUnjYiLiEXmNpbZD3i27k6k6+uk9TWNHuta zb4fNY8izJIb3574PoYey9D/JXKGlSksN2PkAUJI3VvrcyrBQqXebgg+8MVWpjeMaZ/F lkW3v/phqEQmARHsbTCmtOjtfK7Z6Iey1o+wgwEUyxR6EUUZhT7kQUblFTNE7ll45RYm 2PDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774843243; x=1775448043; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=2MiznXVnaOQN1Ty0L+R2YmSXm0gykn8v0J+C8W1yOKA=; b=Wx6BTyWOfgry905Jxyh1HfmIVFznEOLu3d9q4fDl3UBv+3KemosNYDUSlTKWru1nSG Z+4haJEqjuKa87qtyOry6IvMUtei/FxKzv32ii4NdNgv/vUKYxmHJ7tlfDxu+jjAejUw 6Pxq6u9DkDc1DORtmLs03/dYGjRAOHus7awcO6Z4QIRfdPna4ry38+O6BzZKUHlzuB/m TILG5yepkcIuK2o1o3+KalVUmNCvKypkaN0UNCAFJF1KgENt3fbklEqAxPvYuwN/erGE 9UTGz2jWHJdNBwr1wkM27hedQMtvmdnGKXpXwQmvf+PEE1Dc/mRYb2E1nEpur0yB6NDL 2wWA== X-Forwarded-Encrypted: i=1; AJvYcCWJYvN87FUCf9HTjRY8A3EsGXg5rznES6HDfrfSZxYD36qr+lGymxQqk/PXNTDUlJGrd9sm47SyKJDiPfQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yx1Bmpcpn+os0YBRYpxiHPAmZXn5Jv2/66opCGY97J/GQJR6hJz ZWUX7aqMG7J5abTts4yZ4JF6bDIIDpBN+rMM9ltKdTDrtiqNQ6vX6fik X-Gm-Gg: ATEYQzxscGP03lE69XVF8iHWvX1mumzw7XvA+sDzfVJnX9pElhGuStSObwOmlTyvJVh cnjTU2P9sS2x0QFNenkY5bjk/jQIgwdeiJ0Nuz20CF/SW8vTJE0lppV0vS8LNgoG7PQKtf3r9fY VfTYU3faSH5msQuC9gVuJSos8EGACgPHR0/+0sqSuKKymPvkWKpl77iu11xFLBSIUfAEF6ldhQu 3cfXbkmozIWHXb797heyTzYTVtRbWxqXUQuIf52Ss7W+MsuF6wnpAY3lhjHVDeNLF14tl1uTWt4 Fbr4c9xoblihiMIzdUwfM1n7IZeQX8V4JSapzweexNHKZ/iylYG45Q5BrwcDXJYjSUHeVWfmE+m fZ7Mv0Rfh4AIsS9WJ6NbZpIlvqqs+HhTABB3vKfbZqC/o3Iujj9r9njdZWYrAjniJyiu+z39qad ve4p+X4tEwI1KISoF9qmwAS0xzU7i+INPrAMfHCOs0lLoO6ZO701iI+Ocrsxefi5oY2EgSIbzM9 t3Mf1i9Ff2A5VQ= X-Received: by 2002:a05:7022:6887:b0:12a:8ea4:24d with SMTP id a92af1059eb24-12ab28d13fcmr5818158c88.19.1774843242791; Sun, 29 Mar 2026 21:00:42 -0700 (PDT) Received: from [192.168.1.18] (177-4-161-254.user3p.v-tal.net.br. [177.4.161.254]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-12ab970da7fsm6715590c88.0.2026.03.29.21.00.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 29 Mar 2026 21:00:42 -0700 (PDT) From: =?utf-8?q?C=C3=A1ssio_Gabriel?= Date: Mon, 30 Mar 2026 01:00:34 -0300 Subject: [PATCH] ALSA: aoa: i2sbus: fix OF node lifetime handling Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260330-aoa-i2sbus-ofnode-lifetime-v1-1-51c309f4ff06@gmail.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/yXMywrCMBBG4Vcps3agTr1QX0W6SJM/OqKJZFoRS t/dqHA23+YsZCgKo1OzUMFLTXOq2G4a8leXLmAN1SStHNpOenbZsYqNs3GOKQfwXSMmfYD3Rwm 73qOrUR08C6K+f/Pz8LfN4w1++h5pXT/b61n9fgAAAA== X-Change-ID: 20260329-aoa-i2sbus-ofnode-lifetime-572d49ce3ce3 To: Johannes Berg , Takashi Iwai , Jaroslav Kysela Cc: linuxppc-dev@lists.ozlabs.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, =?utf-8?q?C=C3=A1ssio_Gabriel?= X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3170; i=cassiogabrielcontato@gmail.com; h=from:subject:message-id; bh=PlmjxGt4JGDRqDssZg/k5xlqGZcdiyv/+rwibqyvJPk=; b=owGbwMvMwCV2IdZeKur/u2bG02pJDJknv2aUvCrkz2m7q6S9zJlV0mjjbw39tPLC1LoTJw9F6 7Lax3F3lLIwiHExyIopsqxOWmS5p+vB1fq4FR4wc1iZQIYwcHEKwERqjzAynF77b78RV7eAssbv 3Xds3ddcPeUtXO93Nqqg4xfrq2WzyhkZLuyVq/7X+cN3hj5Tt3ixb1ioyod3Pg191cV6F04/2Gn GAwA= X-Developer-Key: i=cassiogabrielcontato@gmail.com; a=openpgp; fpr=AB62A239BC8AE0D57F5EA848D05D3F1A5AFFEE83 i2sbus_add_dev() keeps the matched "sound" child pointer after for_each_child_of_node() has dropped the iterator reference. Take an extra reference before saving that node and drop it after the layout-id/device-id lookup is complete. The function also stores np in dev->sound.ofdev.dev.of_node without taking a reference for the embedded soundbus device. Since i2sbus overrides the embedded platform device release callback, balance that reference explicitly in the local error path and in i2sbus_release_dev(). Fixes: f3d9478b2ce4 ("[ALSA] snd-aoa: add snd-aoa") Cc: stable@vger.kernel.org Signed-off-by: C=C3=A1ssio Gabriel --- sound/aoa/soundbus/i2sbus/core.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sound/aoa/soundbus/i2sbus/core.c b/sound/aoa/soundbus/i2sbus/c= ore.c index 22c956267f4e..833c44c0a950 100644 --- a/sound/aoa/soundbus/i2sbus/core.c +++ b/sound/aoa/soundbus/i2sbus/core.c @@ -84,6 +84,7 @@ static void i2sbus_release_dev(struct device *dev) for (i =3D aoa_resource_i2smmio; i <=3D aoa_resource_rxdbdma; i++) free_irq(i2sdev->interrupts[i], i2sdev); i2sbus_control_remove_dev(i2sdev->control, i2sdev); + of_node_put(i2sdev->sound.ofdev.dev.of_node); mutex_destroy(&i2sdev->lock); kfree(i2sdev); } @@ -147,7 +148,6 @@ static int i2sbus_get_and_fixup_rsrc(struct device_node= *np, int index, } =20 /* Returns 1 if added, 0 for otherwise; don't return a negative value! */ -/* FIXME: look at device node refcounting */ static int i2sbus_add_dev(struct macio_dev *macio, struct i2sbus_control *control, struct device_node *np) @@ -178,8 +178,9 @@ static int i2sbus_add_dev(struct macio_dev *macio, i =3D 0; for_each_child_of_node(np, child) { if (of_node_name_eq(child, "sound")) { + of_node_put(sound); i++; - sound =3D child; + sound =3D of_node_get(child); } } if (i =3D=3D 1) { @@ -205,6 +206,7 @@ static int i2sbus_add_dev(struct macio_dev *macio, } } } + of_node_put(sound); /* for the time being, until we can handle non-layout-id * things in some fabric, refuse to attach if there is no * layout-id property or we haven't been forced to attach. @@ -219,7 +221,7 @@ static int i2sbus_add_dev(struct macio_dev *macio, mutex_init(&dev->lock); spin_lock_init(&dev->low_lock); dev->sound.ofdev.archdata.dma_mask =3D macio->ofdev.archdata.dma_mask; - dev->sound.ofdev.dev.of_node =3D np; + dev->sound.ofdev.dev.of_node =3D of_node_get(np); dev->sound.ofdev.dev.dma_mask =3D &dev->sound.ofdev.archdata.dma_mask; dev->sound.ofdev.dev.parent =3D &macio->ofdev.dev; dev->sound.ofdev.dev.release =3D i2sbus_release_dev; @@ -327,6 +329,7 @@ static int i2sbus_add_dev(struct macio_dev *macio, for (i=3D0;i<3;i++) release_and_free_resource(dev->allocated_resource[i]); mutex_destroy(&dev->lock); + of_node_put(dev->sound.ofdev.dev.of_node); kfree(dev); return 0; } --- base-commit: bea8d9e445caf009ccadc17c353cc82f07885dd6 change-id: 20260329-aoa-i2sbus-ofnode-lifetime-572d49ce3ce3 Best regards, -- =20 C=C3=A1ssio Gabriel