From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.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 B213D30568E for ; Fri, 17 Jul 2026 10:35:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784284519; cv=none; b=Iup3gr3F5hPcgOLDltmlEh080hsWj/lAWHJYBxiCz8rdulW6MmftqsDSrH66zupXkiiVtWBE6FGd6MJKZLkJfZ0fdJpHKMnp6zi0RP1Dt7jQGzVGFMV7rwJwR6fH96f56iBIUphHSwMVrfNZjGBl6mX+PmqGH7eTaPVVa0FA7pk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784284519; c=relaxed/simple; bh=JuQ4q7hxeKlY4GY6NrrglhzlUg+r0gikvL5tbMMS/9Y=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=dGOLy/SFT8TFsXK139aBXnfWQXR0Q1b2v7aIMd/XD9YlQfuMbogTWjOsY8envgUW8JjfZwjIb8VJ73Y68sEV1RErzmuEHfDlJy5J7DWCDukzgIFuDW9iefC5za58ilK4Y11S8cl1/U1ScrFAnYvDTkK2+gTbiBTsM88Ad0p+i3s= 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=JAE4oReq; arc=none smtp.client-ip=209.85.216.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="JAE4oReq" Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-381ed661712so7844595a91.2 for ; Fri, 17 Jul 2026 03:35:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784284516; x=1784889316; 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=97ExHNuIoUrJIKM3oCIPS5xjpmF2yFk3sg4kSKRU0dA=; b=JAE4oReqj/83fBBA9VLt0LAsBkh8wv7OqmnCXhfF6FzlXCRIFdtqIoZBj2oPbeLYux pNiGSDrZ86V8G5OmQZbr17OnKjGsEEmkeajuwkvgBNYY3bH4hdNm7Q4N9n2q3x2qp6Sv GzlyKlrqhRv9btAvsvI1URv+3BGgGGxw9Wr9zO0yE5fdim9oVib71TYrTciRAEFXsjg5 mM7KbBU/hDKBx6L4ESMmsNivLr/9k8m2ZZfca/8oTYpNnQIUmy1nMuqy986Kw585jLu1 uOhTEYEVPilXUy+8ZLI0vJoRigTqMEDWZ5138r3iqEQ9keoiAjp1qUnVyjleIH8nWJLg 4JDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784284516; x=1784889316; 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=97ExHNuIoUrJIKM3oCIPS5xjpmF2yFk3sg4kSKRU0dA=; b=gM8VzahsO6fex9CHfOneGh9LF8CLUlKCJIyjLGNUYOJDRatQ793H7PHl8OaJQuVgeL KN6IxDL/IA4npnSLtwekQgkUKH9hLLurVvcX31xZMnO060AWcZ54gDORQcgfmsNnGlxD FeFlztWkZy5+ah760g4ZYqlxlndHfxcJqOtbmQzLGiifsY7YCIUY1nlCcIXN/GVkBnlX IP4uB5Tr4NelT/kx5BiTcj2HUY8S2XSXmlcFzUxgreP0ooqeBRzo1JAE073HPU7VyLv9 5m7lAtvaf9pJRWuZS0MsZID9l8mJOS/BW4cJ+lHOIoyRE6P7dbI5OTIsFywKKEWmanf7 u+1Q== X-Forwarded-Encrypted: i=1; AHgh+RoTZRjYiff+v4xUNSn+ot64UF+kSkehVaX6fa/Irg5ItrfvYfBFJkiD3vU0/8fGBUO0CVnvj2tMk64SdL4=@vger.kernel.org X-Gm-Message-State: AOJu0Yx9Oc29Y06eO+EldmOPL2hAm32thZ1QwvQ4hVwcVZfRt3ljJ8LP U0N223IgXRB5sP0/0vcq8eo8T0mNE7kW5HfIwcEb2Uvo/tJkJQKiFHtF X-Gm-Gg: AfdE7clXqzU0xSbencPybgw4MOIPZzhvnivaL5MRl9tueZgx9ljSC+W4+afR4mWvcml wdKfubgOe38F/S1omINqzrQZ8scGHshGOxHk5aDHZq2V7IGdTSAHOvroi65RlkqEQlRG8hqtGJg sWVEOxGWJkIxVBo1ueMDTA0QJZT1bx2VeEKDk99QFLEJtLd/pVOquOw2U0NvG/cXpqPt3Q6OhGR 87Stzsg1azSgoKzbA7UgZcTtKhYo3lbv4I8ng6PPF/YDPSt6lPFLskQ66sv2oZAKCOrHiTuc1Fv dJFtmJNThQaC6sjWkOQLm1cfviA6etbpU93IfdGlSB08/kn9nw3nU6Q6/sJyHMLAJdwY9gb9m+e VdAU+ykOirrg+Ulsx8oOOLf8J02/NkcgeWIJ59HBrB9dv3VIgoQKL3vCi7JqFx+bnGKljWHZ0D+ w+gDBaG47CpiEINiLAjiI8T2wBBgjzw4HRzwG9I5P8vphjsA== X-Received: by 2002:a17:90b:3dc8:b0:38e:e9b:ffa4 with SMTP id 98e67ed59e1d1-38e4b3e1419mr1858993a91.6.1784284515949; Fri, 17 Jul 2026 03:35:15 -0700 (PDT) Received: from localhost.localdomain ([2409:40e3:2048:47da:f413:dfc6:e61f:2573]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31429ff04absm5461371eec.8.2026.07.17.03.35.11 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Fri, 17 Jul 2026 03:35:15 -0700 (PDT) From: Rounak Das To: dinguyen@kernel.org Cc: bp@alien8.de, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, rounakdas2025@gmail.com, tony.luck@intel.com Subject: [PATCH] EDAC/altera: Fix device node reference leaks in the SDMMC ECC setup Date: Fri, 17 Jul 2026 15:55:49 +0530 Message-ID: <20260717102549.13309-1-rounakdas2025@gmail.com> X-Mailer: git-send-email 2.50.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Under altr_portb_setup() and socfpga_init_sdmmc_ecc(), of_find_compatible_node() was being used to look up the sdmmc-ecc node. This node wasn't being dropped using of_node_put(). altr_portb_setup() did not drop its reference under its success path or on any error path. socfpga_int_sdmmc_ecc() did an early return thereby skipping the common exit label and thus leaking the reference. Add the missing of_node_put() calls in altr_portb_setup(), and route socfpga_init_sdmmc_ecc()'s success path through the common exit label. Signed-off-by: Rounak Das --- drivers/edac/altera_edac.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 68846f583eee..777ba6efcc54 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -1524,6 +1524,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device) dci = edac_device_alloc_ctl_info(sizeof(*altdev), ecc_name, 1, ecc_name, 1, 0, edac_idx); if (!dci) { + of_node_put(np); edac_printk(KERN_ERR, EDAC_DEVICE, "%s: Unable to allocate PortB EDAC device\n", ecc_name); @@ -1534,8 +1535,10 @@ static int altr_portb_setup(struct altr_edac_device_dev *device) altdev = dci->pvt_info; *altdev = *device; - if (!devres_open_group(device->edac->dev, altr_portb_setup, GFP_KERNEL)) + if (!devres_open_group(device->edac->dev, altr_portb_setup, GFP_KERNEL)) { + of_node_put(np); return -ENOMEM; + } /* Update PortB specific values */ altdev->edac_dev_name = ecc_name; @@ -1600,6 +1603,8 @@ static int altr_portb_setup(struct altr_edac_device_dev *device) rc = -ENOMEM; goto err_release_group_1; } + of_node_put(np); + altr_create_edacdev_dbgfs(dci, prv); list_add(&altdev->next, &altdev->edac->a10_ecc_devices); @@ -1609,6 +1614,7 @@ static int altr_portb_setup(struct altr_edac_device_dev *device) return 0; err_release_group_1: + of_node_put(np); edac_device_free_ctl_info(dci); devres_release_group(device->edac->dev, altr_portb_setup); edac_printk(KERN_ERR, EDAC_DEVICE, @@ -1638,7 +1644,7 @@ static int __init socfpga_init_sdmmc_ecc(struct altr_edac_device_dev *device) goto exit; /* Setup portB */ - return altr_portb_setup(device); + rc = altr_portb_setup(device); exit: of_node_put(child); -- 2.50.1 (Apple Git-155)