From nobody Sun Jun 14 04:09:16 2026 Received: from mail-qv1-f45.google.com (mail-qv1-f45.google.com [209.85.219.45]) (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 8EC9E2FC01B for ; Sun, 3 May 2026 21:26:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777843566; cv=none; b=HFc3abtvkano5qDMdeVKgw62nwhpknK1XjlpCQDk/8X/r691vEdre/inWHpyb8DZKuOGi1kWkfkIVZyiqYEaIFs8PGq/DRjlmQvMTGnLR4JsKUv8Z3FQP4fhaSB/OFdin8w4TmE1e4fXCyL1AwxBl0IcKbybHEAiIEWM86IPNwA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777843566; c=relaxed/simple; bh=sOT0U3Jr3NVXuqY9Wh2yfJA9ZyQakgYnhkg0dlBZBZ8=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=LcjqDaaFWhOQ3xANRHAH4XetQH5qstEq/7nqx/BnnPL4Owp33UqVuES9HgF9U3uYAKPcvwsANkStJepXowfbKj/q9Jje56dLYlYA0ChwWqLWa6dqgLQpNhkJm095LHsk6/XO6XHzjqOKd/b74wpEZA5uapsU4QMm9GJG1AQtAMs= 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=Zj425PrW; arc=none smtp.client-ip=209.85.219.45 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="Zj425PrW" Received: by mail-qv1-f45.google.com with SMTP id 6a1803df08f44-8b3d6b215cfso59401846d6.3 for ; Sun, 03 May 2026 14:26:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777843564; x=1778448364; 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; bh=iWPnmaRjwthBH35p5wi/v2yBfUH+F59G77Czz7mgGmQ=; b=Zj425PrW0SliUwhWWQqrmIkAwPxfeFW3mR6O6PyphoDif8tCdhgmL5f745lg+cra+k P9tXFPZxs6tUlMuOitp8fmgWqkQI0KrFlb1o/rTfMCrUks9qzW8c0MqfuhEvo6zkuhQZ 0vB5UBJCyUMCQlGCr+ZoX+f2ZTimRhYQUUxz/8WJmcfpJV29p/mHRdzKuNifLkPTmt0+ KBg6QzXrYHeVvTnnT7guaJgiWdbPDrfjZnLdoRj8dHAfkXvLCbdFM0SYiwt3PM7DI08U 6PY+FOt4SaYqv3EC9a2b9xiCzoQ0ar95WwwTvGrX5ixctCkWS62aL8NW15OIWjUXMI87 5lrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777843564; x=1778448364; 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; bh=iWPnmaRjwthBH35p5wi/v2yBfUH+F59G77Czz7mgGmQ=; b=TTiTu2IX6BpTpzXv6kw4nqcyIbXRlSPSAA6s61XsXncw5Kp1BQXFlWinEPNCQD8fBg 4/wbTR4g1jwJiZ4Jy+BhaR9xzW07nSvoClNuvyBbzpGsk5PCtdp5CahB2RusnBwbT78U ob/ba6WElZtn19dEGAy+CNS/8Gtj7iVHCdns4Ih3kcxv8X/QJF8M3zfqopEZnLAuUnps t34bqU62xW+do1/nHuDKzeF/4wchxlV3DMYD58BUGxyqYe4A03n2mVbaUp/46SfTKa2F Irk+XgwaAel6bPcashjMWHUdp0hHPyvnNIFyKWJxbesLFnZBD6eGKleBhs2HbPGuxn0j 9OBA== X-Forwarded-Encrypted: i=1; AFNElJ+rmqgsLEow2Pb5+d5uYxbAbptZ3WrlASm8HMKDcNGMj4ZK7oiXZoDuoxpjURM0sB2lFFnL2p4l5pFUTuk=@vger.kernel.org X-Gm-Message-State: AOJu0YxUxzWjAHTQwAZ1+uE+k3vpbsyoFoPPjS1K907enAAdzOl4vhhD YDGzViWijR7MOnTgXusYBPNDV81Q6KtQ+ceenDHEd9ojF/voulIb32DO X-Gm-Gg: AeBDieu+WuPPkSG2wWB2wrU34lV4K63eEPbtTBRf32VXmgmTfiP0GGCUExUCK0fd3Iz YGlA59Xgja2kFtU1Ojc+osNlLcgscO4LaNMugdB9HgP5DfWaD7iOJuLMLwPuICRh6QP1LLkAqVs u5SSqhGmP3Zg98aeWc1e3NwTLpfv4VChXk/QHzJiOa9d1Ucd81DF5wlL2YWp9SKKUiavuc7+mqr SgMgderhlh8o4jUluEYLkaM9Si3SHNcw3N/bs5HoQuoEqW3GNLIuQCtiH6V7tdFAk7PXKpy5S1W hsaZjpQeYT34eeoIoUvWoOiP/hJ2nMXKxcifUTINyIu1Zfele3mlav5ZhzUXDH0RQaJ2Ku8Ws6P ZSWxQqVuqTn8LqHrdPaB0f6XWUAGq4S/ssmPMKMKRV385W12jKMKbZ/x3vQIBCoOBH9gs0I77IX V2qi738V0oH6Woechl7EkWOjPmjQYjYZtA9yUeKb9z+K7ANEWtD1A= X-Received: by 2002:a05:620a:284d:b0:8cd:9231:8b54 with SMTP id af79cd13be357-8fd18c2d83fmr1209987085a.62.1777843564505; Sun, 03 May 2026 14:26:04 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id af79cd13be357-8fc2c24ff43sm864107885a.29.2026.05.03.14.26.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 03 May 2026 14:26:03 -0700 (PDT) From: Yuho Choi To: Dinh Nguyen , Borislav Petkov , Tony Luck Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH v2] EDAC/altera: Fix SDMMC PortB OF node reference leak Date: Sun, 3 May 2026 17:25:58 -0400 Message-ID: <20260503212558.2811480-1-dbgh9129@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" of_find_compatible_node() returns a device node with its refcount incremented. altr_portb_setup() looks up the SDMMC ECC node but does not drop that reference on error paths or after successful setup. Route those exits through an of_node_put() cleanup path. Also free the EDAC control info if devres_open_group() fails after dci has been allocated, and release the devres group before freeing dci because altdev is stored in dci->pvt_info. Fixes: 911049845d70 ("EDAC, altera: Add Arria10 SD-MMC EDAC support") Signed-off-by: Yuho Choi Acked-by: Dinh Nguyen --- Changes since v1: - Free the EDAC control info when devres_open_group() fails after dci has been allocated. - Release the PortB devres group before freeing dci so altdev->ddev remains valid during devres cleanup. - Keep the !dci failure path limited to dropping the OF node reference. drivers/edac/altera_edac.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 4edd2088c2db..1b050e35ec4b 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -1526,15 +1526,18 @@ static int altr_portb_setup(struct altr_edac_device= _dev *device) edac_printk(KERN_ERR, EDAC_DEVICE, "%s: Unable to allocate PortB EDAC device\n", ecc_name); - return -ENOMEM; + rc =3D -ENOMEM; + goto out_put_node; } =20 /* Initialize the PortB EDAC device structure from PortA structure */ altdev =3D dci->pvt_info; *altdev =3D *device; =20 - if (!devres_open_group(&altdev->ddev, altr_portb_setup, GFP_KERNEL)) - return -ENOMEM; + if (!devres_open_group(&altdev->ddev, altr_portb_setup, GFP_KERNEL)) { + rc =3D -ENOMEM; + goto err_free_ctl; + } =20 /* Update PortB specific values */ altdev->edac_dev_name =3D ecc_name; @@ -1607,13 +1610,17 @@ static int altr_portb_setup(struct altr_edac_device= _dev *device) =20 devres_remove_group(&altdev->ddev, altr_portb_setup); =20 - return 0; + rc =3D 0; + goto out_put_node; =20 err_release_group_1: - edac_device_free_ctl_info(dci); devres_release_group(&altdev->ddev, altr_portb_setup); +err_free_ctl: + edac_device_free_ctl_info(dci); edac_printk(KERN_ERR, EDAC_DEVICE, "%s:Error setting up EDAC device: %d\n", ecc_name, rc); +out_put_node: + of_node_put(np); return rc; } =20 --=20 2.43.0