From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f71.google.com (mail-ed1-f71.google.com [209.85.208.71]) (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 DB0253B4EB7 for ; Tue, 11 Aug 2026 10:39:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.71 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786444791; cv=none; b=RofRDjQwVBQDxvntn8HWDuqLqH866rBs7d6FIFRS/3HxrOkjNXBfs2a4KFRt/5Hk6Yh2Jz3T+ONT5/FoikNDO6zVYn+LIv8VdAxg/UbOdp3wisrQWw33z+cUyP0Bk0VoBqj1+ZWJm8ocaxpyjX8gUx+ULaZ62oTMCHAB8uNrn1c= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786444791; c=relaxed/simple; bh=pdZ35YveRo+OZTyV/eSXth05irUlOjpE1eLwF4n9bO8=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=pBEeVkxZMkfHOi6BI8RIdhJQVX6aftmHOhGN12y2Z/1T2qVi7IresqEer70m6lLyFPLn3OCSEkNtUhne785xMzSiF/C4gnzP3vqr3/PLZ9So2QFjKGyWU2pU+msFUPh1IvtfJXE7w+g3Wn5abjGc06nG1B/iyMF8zEGRojqdtLU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--tarunsahu.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=cRJGlaLy; arc=none smtp.client-ip=209.85.208.71 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--tarunsahu.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="cRJGlaLy" Received: by mail-ed1-f71.google.com with SMTP id 4fb4d7f45d1cf-69e984607e7so2570809a12.2 for ; Tue, 11 Aug 2026 03:39:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1786444788; x=1787049588; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=VGMemQkEC5pRlM4gYZJhKb5X+L3Mgf2+8jXep9XZ59M=; b=cRJGlaLySQVyOq2XUgOFwp8ugrzPRZUyQXDcRFBJbb2kwT1823i78dbhSEEU7j2yCI G9MMaFzX6soWo1Kl9jl4t5bVPXSGcHFhuLLRxBQVtvF0fkkE0kPExGfXmBzuktucE43T npTBKK0mSlQq6+iY0Z+1jO81CZpPduY+Nu1YSjzKsNnRWciqPM4wLupBKSh1ddVLbUlI mJKPPHI0EYFVFnTVyD66jN9+xVzW+n2SIRDU7cfL79kvXRKeGR1LDLrZdtakKdidlKoW R6WICodgUQhs2fZm14cUeYxuoKFSJGna//4AP/St/OWieKvtRd4hmN8M8Q1AZgMVu65D 1qTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786444788; x=1787049588; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=VGMemQkEC5pRlM4gYZJhKb5X+L3Mgf2+8jXep9XZ59M=; b=Y4tTrj385+pKqT7ija5IXbFyFyY7ZefkUa6wFPbYRl0MxuxtrjS1T31GTIEB/d5TRF Or0UAaBpkaDGV1pQIXAELYMFci+y8wmicupzKfno8kjJ+VvbWZ/ja8zByR77+561yyVC PUKQxLUubnNurZwl6ZMazWrVg05NB58Hrfilaay9laRfBrpUK3WZYS5ndZ7bqQ/70Ui/ 6rFlmHv783GzyFF8lmOB9r36xAWpYroblbDumgzcnUVB5KjCmxBR1MnDHu7G2zaue1t+ wZAgOpBauBzPRSh5cqYo8Xj/aOmtwQZquG7f13UEjFT/j+JIFG9g2LOkCVQNneI25pJz qP5A== X-Forwarded-Encrypted: i=1; AHgh+RqZaZMlmt3vPWJu/BjnibfV8K7jG/a0+Jlu61/hhOzOGZI/q8PyxXRsaNm0X5yX2KioxtXK3TTN3VRCAz0=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/PVFBfXjc/WEsGU5DE3WwkOG5APKMwVjYCXWgwucgwXcRGfWW mGcpuUuneqKwRjqYNGyeSmwr+qwTV140Szzrrlt7icxSfMJg2og+P4B4frPldRXESYJn8B7uC9t qfynFm7UDQvR2n9RzBg== X-Received: from edbdm24.prod.google.com ([2002:a05:6402:22d8:b0:6a3:6510:8ace]) (user=tarunsahu job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6402:2417:b0:6a1:ffc4:e4b9 with SMTP id 4fb4d7f45d1cf-6a3644aeb16mr1321144a12.9.1786444787939; Tue, 11 Aug 2026 03:39:47 -0700 (PDT) Date: Tue, 11 Aug 2026 10:39:47 +0000 In-Reply-To: <9e189214-1274-491b-97dc-1b943c6c5cea@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260810162814.1398016-1-tarunsahu@google.com> <20260810162814.1398016-4-tarunsahu@google.com> <9e189214-1274-491b-97dc-1b943c6c5cea@amd.com> Message-ID: <9huzbjb9hrf0.fsf@tarunix.c.googlers.com> Subject: Re: [PATCH 3/4] EDAC/versalnet: use put_device() on device_register() failure From: tarunsahu@google.com To: "Pandey, Radhey Shyam" , Greg Kroah-Hartman , Geoff Levand , "Christophe Leroy (CS GROUP)" , Nicholas Piggin , Michael Ellerman , dmatlack@google.com, Borislav Petkov , Madhavan Srinivasan , Shubhrajyoti Datta , djeffery@redhat.com, Tony Luck , skhawaja@google.com, Russell King , stuart.w.hayes@gmail.com Cc: linuxppc-dev@lists.ozlabs.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, driver-core@lists.linux.dev, linux-edac@vger.kernel.org Content-Type: text/plain; charset="UTF-8" "Pandey, Radhey Shyam" writes: > On 8/10/2026 9:58 PM, Tarun Sahu wrote: >> When device_register() fails, calling kfree(dev) directly bypasses the >> device_release() callback (versal_edac_release) and leaks the allocated >> driver core structures. >> >> Fix this by calling put_device(dev) when device_register() returns an >> error, ensuring proper refcount decrement and release cleanup. >> >> Signed-off-by: Tarun Sahu > > Thanks for the patch. FYI, this issue is already being addressed in an > ongoing series. > https://lore.kernel.org/all/20260724171945.2812749-5-shubhrajyoti.datta@amd.com/ > That is good. Should it go as saperate patch or it fits very well with the above series. I will drop it incase of later. WDYT? ~Tarun > -Radhey > >> --- >> drivers/edac/versalnet_edac.c | 6 ++++-- >> 1 file changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/drivers/edac/versalnet_edac.c b/drivers/edac/versalnet_edac.c >> index 97ec05d68bbb..2912b3658915 100644 >> --- a/drivers/edac/versalnet_edac.c >> +++ b/drivers/edac/versalnet_edac.c >> @@ -829,8 +829,10 @@ static int init_one_mc(struct mc_priv *priv, struct platform_device *pdev, int i >> dev->release = versal_edac_release; >> >> rc = device_register(dev); >> - if (rc) >> + if (rc) { >> + put_device(dev); >> goto err_mc_free; >> + } >> >> mci->pdev = dev; >> mc_init(mci, dev); >> @@ -852,9 +854,9 @@ static int init_one_mc(struct mc_priv *priv, struct platform_device *pdev, int i >> device_unregister(mci->pdev); >> err_mc_free: >> edac_mc_free(mci); >> + return rc; >> err_dev_free: >> kfree(dev); >> - >> return rc; >> } >>