From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) (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 7A087258EDE for ; Sat, 4 Apr 2026 10:32:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775298781; cv=none; b=un3Y5WbwpF5WBP6HLhGQOwcFRrPcT/Ji4gn1FKDHpNJdL50DMSn9BRAf6/ilCrUjmpPIIMaQI09TPc47mQRGH3p9by30xbjWkdFpLtJsh9AW48pMQc+4CwAhd1rk6LLz5Nloz165thcj+4T/3IN/0OTm0y65oLcu11LnONiuPG0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775298781; c=relaxed/simple; bh=cFlCBrk5Btt9A1O7MA9Le1CAuW++BN014THB/os1SKs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GGKUr4hXQRTVh3zS7EZ3BzVJayz9HmhDY7PvUaSMQ8ymWClGdnmUCOvdVn4EyL+Zcl9i6kvOLPgIBXCnBk5ktDCurLSAy767L8P6MVa/8EqNZlTdh7wEwJ6azTj37et9raVsSHmxyFve40n1hrektXyEbjFq+UcbHJLmomYOrjc= 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=qNaG9aYn; arc=none smtp.client-ip=209.85.210.180 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="qNaG9aYn" Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-82cd98be655so1783392b3a.0 for ; Sat, 04 Apr 2026 03:32:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775298777; x=1775903577; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=1uJhHvX5gI2mQEV6rLblZbLzC8hmg0na0KXE7+Ixn24=; b=qNaG9aYn/RTK4snVDYefBiqb8k6RskV1CpVnpjfflED+MU2iSOtojsQfu39Xy8UgmR 65cYQAEtc1oR60EwsrIjm70IVfnfOaIWB9SjrJSLHRXeODBfB89E2q/c4GWxCf5iaWC0 aYUZtoJMqJPFisNnugU3cwZ+MetnI5rWY/VlvdIrTkq3UA2PpdqLI0j9Bg7i/f5ETiu9 UMLWvdqJUMeh7BvU3w4erAyYuETkXCyB3LM3E2OP/4sHV/a9WWQkg31q9kOW8gqJ3cDJ nnRFL8ZppG6b+hoc2uly/npBN4ZQZuaOukHFFr+Sq8S5kJYOZdq/SJITNy80Rb2U0FbU AFBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775298777; x=1775903577; h=cc:to:in-reply-to:references: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=1uJhHvX5gI2mQEV6rLblZbLzC8hmg0na0KXE7+Ixn24=; b=GsGyhmIH1Yo7T4XvH1MD46/VoV1T+oDKIyE+ceHcHX+md1SVmSNx66rr9b7b0aVf7o t4LftUkRTEVx+ndZACJ1Q3Ff1G/mrOlskYX42gjy7bKEu/y3E7tYuApFFZsPlbu0hJGs BWmT9rfeCUNnBo/Kjk8poMhS+e8l+2YmGARyyQ/5wgWeaUACP/2JWIQUt4wVVG3+zEgj KRimckylB/1LHN/JnS8+dIZvH4E6r0GFevK/D6/ggKc3Ij/cE0sqNlARXBM75N4X6H3p 1Yg56Wgf0tqYvjCrjTC4Az3fupdxIuQ/udt9fyPpy/DL4IZiSQ15SSg1rucdLH82BxIo lZfA== X-Forwarded-Encrypted: i=1; AJvYcCWcFAQVXkiDky6P4YC2t5XedBdYmPvm7WlPJULjnnJeT74MigM6VarVprJSuzjORiJxU2v00JrTwegUVEE=@vger.kernel.org X-Gm-Message-State: AOJu0YxMu12Eg6cbrRpQzPqqXhuOVmhBlNDS20xgcljsRJogvgZCF0w+ yJUVSW2DpgNkg4Exy/A3L15nPtgL2ZFKGRBssNonauLENBEitY7wp8VM X-Gm-Gg: AeBDievFZHioTqCRFEZTrRO3vs02z//b7zJLhR4V5boHhtWZhjcLC5j6hBy2Lm1igA7 aqfyQeMcqMX24Vf2ko69RKqM2k9GB/E4rfs4JIdPafn7YNzSOm3JMBUrNWZMcb2/gzfD025GNru vv7mihZiZGd8K29fe4JE4Rom1U5wsX7iZjE9eZhfWz4WkW8yIBxUfM9NAq/o8Gt/0Pp0cWUGgCt LHcgCaPpo5+1GvFSw1OLizAMqt4mKLReY9MqxgRs4t6rVXC8Y2OL5lvzv331gjo8Qy0fznycD1l SJOMXXLO6pBQIUWRjDtMCYOuIW9R/9654TriKAiR/WfrEmJAI1o/oV3Fwo/o33bKZ3F8nONyL7N BD7GLuSDlM2v5OAoML/Q2yjLTMxDg7/O4vUlt/Fv5b1FvU2mTq27B5uBSXkA5paYXCdMA6XpYMP +mXKyjl+JI6tkpJZ4vLF3El0y73iPiy2+rwGufA/agj4dw+3w= X-Received: by 2002:a05:6a00:2315:b0:823:1212:8e87 with SMTP id d2e1a72fcca58-82d0db7db66mr5922579b3a.32.1775298777047; Sat, 04 Apr 2026 03:32:57 -0700 (PDT) Received: from junjungu-PC.localdomain ([223.167.147.240]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82cf9b27064sm10475789b3a.9.2026.04.04.03.32.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Apr 2026 03:32:56 -0700 (PDT) From: Felix Gu Date: Sat, 04 Apr 2026 18:32:30 +0800 Subject: [PATCH v3 1/2] i3c: dw: Fix memory leak in dw_i3c_master_i3c_xfers() 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: 7bit Message-Id: <20260404-dw-i3c-2-v3-1-8f7d146549c1@gmail.com> References: <20260404-dw-i3c-2-v3-0-8f7d146549c1@gmail.com> In-Reply-To: <20260404-dw-i3c-2-v3-0-8f7d146549c1@gmail.com> To: Alexandre Belloni , Frank Li , Aniket Cc: linux-i3c@lists.infradead.org, linux-kernel@vger.kernel.org, Felix Gu X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1775298773; l=1890; i=ustc.gu@gmail.com; h=from:subject:message-id; bh=cFlCBrk5Btt9A1O7MA9Le1CAuW++BN014THB/os1SKs=; b=ZVcn3NAsKwKqdlA3PAMNbyOXcW7sBpb5TSv4olRL1t5ZAvEK/kSTN/whCv7OHv9GH6WuvA8pq oPOxHolQDQ1B8mEKNY7nwSoj8oA+LHF8Q4vRvse5EXwVJCPk7kz6EhU X-Developer-Key: i=ustc.gu@gmail.com; a=ed25519; pk=fjUXwmjchVN7Ja6KGP55IXOzFeCl9edaHoQIEUA+/hw= The dw_i3c_master_i3c_xfers() function allocates memory for the xfer structure using dw_i3c_master_alloc_xfer(). If pm_runtime_resume_and_get() fails, the function returns without freeing the allocated xfer, resulting in a memory leak. Since dw_i3c_master_free_xfer() is a thin wrapper around kfree(), use the __free(kfree) cleanup attribute to handle the free automatically on all exit paths. Fixes: 62fe9d06f570 ("i3c: dw: Add power management support") Signed-off-by: Felix Gu --- drivers/i3c/master/dw-i3c-master.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c-master.c index d6bdb32397fb..2e31228b3809 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -924,7 +925,6 @@ static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, struct i3c_master_controller *m = i3c_dev_get_master(dev); struct dw_i3c_master *master = to_dw_i3c_master(m); unsigned int nrxwords = 0, ntxwords = 0; - struct dw_i3c_xfer *xfer; int i, ret = 0; if (!i3c_nxfers) @@ -944,7 +944,7 @@ static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, nrxwords > master->caps.datafifodepth) return -EOPNOTSUPP; - xfer = dw_i3c_master_alloc_xfer(master, i3c_nxfers); + struct dw_i3c_xfer *xfer __free(kfree) = dw_i3c_master_alloc_xfer(master, i3c_nxfers); if (!xfer) return -ENOMEM; @@ -995,7 +995,6 @@ static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc *dev, } ret = xfer->ret; - dw_i3c_master_free_xfer(xfer); pm_runtime_put_autosuspend(master->dev); return ret; -- 2.43.0