From nobody Sun Jun 14 11:27:45 2026 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: quoted-printable 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 Reviewed-by: Frank Li --- 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 @@ =20 #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 =3D i3c_dev_get_master(dev); struct dw_i3c_master *master =3D to_dw_i3c_master(m); unsigned int nrxwords =3D 0, ntxwords =3D 0; - struct dw_i3c_xfer *xfer; int i, ret =3D 0; =20 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; =20 - xfer =3D dw_i3c_master_alloc_xfer(master, i3c_nxfers); + struct dw_i3c_xfer *xfer __free(kfree) =3D dw_i3c_master_alloc_xfer(maste= r, i3c_nxfers); if (!xfer) return -ENOMEM; =20 @@ -995,7 +995,6 @@ static int dw_i3c_master_i3c_xfers(struct i3c_dev_desc = *dev, } =20 ret =3D xfer->ret; - dw_i3c_master_free_xfer(xfer); =20 pm_runtime_put_autosuspend(master->dev); return ret; --=20 2.43.0 From nobody Sun Jun 14 11:27:45 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (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 ECE923A4525 for ; Sat, 4 Apr 2026 10:32:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775298782; cv=none; b=FKYAW3VnqvVr3eK5AQRv4TRuuTZS6FLzUNUr8yWe+8BViSAWZiaYq2KcDM1RyCMQWydfMZ8Bb4OPLye8n5rDp+z2K0IbDjs01/flmRUvucNHGsc/s5WSVYNFySCN8x47z4qEsI7Y2zuMj32R1yfLba23KX7iV1hIuGLVlj9b2gk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775298782; c=relaxed/simple; bh=F+6szknsGcTuRf9Kk8Hq2YbBwDyaMpkpTbb9+j63n/A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JD7YMFeMU2TgFTmp86r8KDcxf3s9zXPfRChwlxF2K8rOEOtmTOrqT+tGaMmhngfLAP2Ww5t9CUdrr945/mgw02jyKGSPIo9JKotuOZ4TqH+MulTc1Lf2M4JLluETqw6HDbKi7p6ynOPjT/CmRDsqIZimsqG4Y8JAnKhXAzTEbcI= 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=QNrmLGAT; arc=none smtp.client-ip=209.85.210.172 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="QNrmLGAT" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-82a893d289bso1138261b3a.0 for ; Sat, 04 Apr 2026 03:32:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775298779; x=1775903579; 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=Pk4Y96vmEVK2/Fzs8OZM8UdQsuUdy4dsTicEentXc40=; b=QNrmLGATi8JKD5yvSdjwVrI1dXJSDyQkl0VgTkckXyDNcUMGxBeh+nhsEzHWVuxS/W bGMPIn6N02whvUz1m3O0v9EksHPjFJti5gOEfsbTSyWW420+zIzLFPODUnaMdr6TAPXr pQ0uzwSh8SLDw+FqBuNbLmV9UTDnKDdSFkf24pu/zcIYsD5HaVwylMbj7+s09vD5snkY vBBikh0ZyKzMZ9t7sGrIcrtAOSlztp24v2ufsySsC3yY84Zc/jupzm0/ZVSN99Ber6R9 +JZYxJ16L9Jv6mADEth31jA4iK5EQK3v+IcsXNQiJ0gj02LcsbYnmJYdwUYQ1kP4iJMv 3djQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775298779; x=1775903579; 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=Pk4Y96vmEVK2/Fzs8OZM8UdQsuUdy4dsTicEentXc40=; b=QxIsWkrh8HAaGlL5FpE1jvSiI5Gg2mCUJIFM6/obLIzXwzZ2IFL44dS2m5octIL4s8 3KXoYp2F83e+kH2+z6Gikc+aSDLb6vc+ekVShGXhQ1SxQpw6vk1rdNxkQ8nm+203PJa4 zaSF95ffhWjsYhLxL5oglFeQdF1f/VtiNuCDbzAGf42qWur15DJf6IsrbVdMwDMqNlxd oVRoRprrOoAbby4SvrZzdWQtIt0cwr7Q7VYqMKKW8C1RPeV/NXXcXGMMmznZVhr/W3nb RK3XyEB8nlMg/KAry0ANoP3SFHLk9Jaw5H+xUiJ3v9Ut1kJakzentNY6L9NsH8yRI2OE c2Tw== X-Forwarded-Encrypted: i=1; AJvYcCVHKghcliCT3Iy6zcL/xFvEwxVW9M8nBjC+PRsJEt5SrrGGqJ9NQ0IEzV3I2xLOCrbKKiHct/vGSIzoZnc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywuzo63jV8xckxwpEiQHqV0lcUnFVc+JsO598GdpjfLQ7qyR66Z 2N/PYPDCYA3a+uTUB25eRu0FeQ2/DjE6/Czahxf6UBJIvi9VGMZzDZgc X-Gm-Gg: AeBDievZ9Z1wKV957MR0jQf3SoTcsgXjYr9SqtuB4pqvwg6fIzq/cO0oxVWfhcZsHM3 GR4mObaLy9Up9161yDitqiUoyGBnJfBw7eTiZIwZKzxbCuoxo7dXkODWmDxVhWSSCIcwufKXtJD oRFLn6MxxkjkcurSrXJygPPDOQjuD3l+Sy8miQn36FWz6njSkBelz4TSQOXfq23BYDySmzI+YkU DEOGEWRcm0h1D7maz00nPeEufEdPaud9R9KKLb4q2auDM2S67MKecz2c21uZlXG9eb1cvqN30Cs KP9/rcuFj8lBmfOh8FYDfePtJEIaBsF/FC6zcuxwo5gJHqpARUfuD+YrMGAqbMJJborK1Vaord4 zeVXMZPqlRybinn3Q8f5cf3tcbSEqqBpMnQgD6gEjRzhbD6hudYFx2Q9sPIz1MjMzVkOnDsq0jN YyZSiaLc9HnsYtLvipOXw/yg9R8XKRCCGyfCjZU7+BAfwMS0k= X-Received: by 2002:a05:6a00:1c9c:b0:82c:6b1b:7ad4 with SMTP id d2e1a72fcca58-82d0da454f1mr5730365b3a.3.1775298779048; Sat, 04 Apr 2026 03:32:59 -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.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 04 Apr 2026 03:32:58 -0700 (PDT) From: Felix Gu Date: Sat, 04 Apr 2026 18:32:31 +0800 Subject: [PATCH v3 2/2] i3c: dw: Simplify xfer cleanup with __free(kfree) 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: <20260404-dw-i3c-2-v3-2-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=4745; i=ustc.gu@gmail.com; h=from:subject:message-id; bh=F+6szknsGcTuRf9Kk8Hq2YbBwDyaMpkpTbb9+j63n/A=; b=lQI2UFsOrAlq9E8RBuqRUV+IugSYi920O5J9BGf4FoHLns4ajIrr+vcT2SipVwm2XBHeRI7mz 8zY+pzrXm2ID0emNnB9xCVUOrvk6PuhZFQAClpwZaCuhaAFPbknBvLO X-Developer-Key: i=ustc.gu@gmail.com; a=ed25519; pk=fjUXwmjchVN7Ja6KGP55IXOzFeCl9edaHoQIEUA+/hw= Convert dw-i3c-master to use __free(kfree) guards for struct dw_i3c_xfer allocations. This frees xfer objects automatically on scope exit, and removes the now-unused dw_i3c_master_free_xfer() helper. Signed-off-by: Felix Gu Reviewed-by: Frank Li --- drivers/i3c/master/dw-i3c-master.c | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/drivers/i3c/master/dw-i3c-master.c b/drivers/i3c/master/dw-i3c= -master.c index 2e31228b3809..41ef37115f8b 100644 --- a/drivers/i3c/master/dw-i3c-master.c +++ b/drivers/i3c/master/dw-i3c-master.c @@ -394,11 +394,6 @@ dw_i3c_master_alloc_xfer(struct dw_i3c_master *master,= unsigned int ncmds) return xfer; } =20 -static void dw_i3c_master_free_xfer(struct dw_i3c_xfer *xfer) -{ - kfree(xfer); -} - static void dw_i3c_master_start_xfer_locked(struct dw_i3c_master *master) { struct dw_i3c_xfer *xfer =3D master->xferqueue.cur; @@ -716,7 +711,6 @@ static void dw_i3c_master_bus_cleanup(struct i3c_master= _controller *m) static int dw_i3c_ccc_set(struct dw_i3c_master *master, struct i3c_ccc_cmd *ccc) { - struct dw_i3c_xfer *xfer; struct dw_i3c_cmd *cmd; int ret, pos =3D 0; =20 @@ -726,7 +720,7 @@ static int dw_i3c_ccc_set(struct dw_i3c_master *master, return pos; } =20 - xfer =3D dw_i3c_master_alloc_xfer(master, 1); + struct dw_i3c_xfer *xfer __free(kfree) =3D dw_i3c_master_alloc_xfer(maste= r, 1); if (!xfer) return -ENOMEM; =20 @@ -751,14 +745,11 @@ static int dw_i3c_ccc_set(struct dw_i3c_master *maste= r, if (xfer->cmds[0].error =3D=3D RESPONSE_ERROR_IBA_NACK) ccc->err =3D I3C_ERROR_M2; =20 - dw_i3c_master_free_xfer(xfer); - return ret; } =20 static int dw_i3c_ccc_get(struct dw_i3c_master *master, struct i3c_ccc_cmd= *ccc) { - struct dw_i3c_xfer *xfer; struct dw_i3c_cmd *cmd; int ret, pos; =20 @@ -766,7 +757,7 @@ static int dw_i3c_ccc_get(struct dw_i3c_master *master,= struct i3c_ccc_cmd *ccc) if (pos < 0) return pos; =20 - xfer =3D dw_i3c_master_alloc_xfer(master, 1); + struct dw_i3c_xfer *xfer __free(kfree) =3D dw_i3c_master_alloc_xfer(maste= r, 1); if (!xfer) return -ENOMEM; =20 @@ -791,7 +782,6 @@ static int dw_i3c_ccc_get(struct dw_i3c_master *master,= struct i3c_ccc_cmd *ccc) ret =3D xfer->ret; if (xfer->cmds[0].error =3D=3D RESPONSE_ERROR_IBA_NACK) ccc->err =3D I3C_ERROR_M2; - dw_i3c_master_free_xfer(xfer); =20 return ret; } @@ -838,12 +828,15 @@ static int dw_i3c_master_send_ccc_cmd(struct i3c_mast= er_controller *m, static int dw_i3c_master_daa(struct i3c_master_controller *m) { struct dw_i3c_master *master =3D to_dw_i3c_master(m); - struct dw_i3c_xfer *xfer; struct dw_i3c_cmd *cmd; u32 olddevs, newdevs; u8 last_addr =3D 0; int ret, pos; =20 + struct dw_i3c_xfer *xfer __free(kfree) =3D dw_i3c_master_alloc_xfer(maste= r, 1); + if (!xfer) + return -ENOMEM; + ret =3D pm_runtime_resume_and_get(master->dev); if (ret < 0) { dev_err(master->dev, @@ -877,15 +870,8 @@ static int dw_i3c_master_daa(struct i3c_master_control= ler *m) ret =3D 0; } =20 - xfer =3D dw_i3c_master_alloc_xfer(master, 1); - if (!xfer) { - ret =3D -ENOMEM; - goto rpm_out; - } - pos =3D dw_i3c_master_get_free_pos(master); if (pos < 0) { - dw_i3c_master_free_xfer(xfer); ret =3D pos; goto rpm_out; } @@ -910,8 +896,6 @@ static int dw_i3c_master_daa(struct i3c_master_controll= er *m) i3c_master_add_i3c_dev_locked(m, master->devs[pos].addr); } =20 - dw_i3c_master_free_xfer(xfer); - rpm_out: pm_runtime_put_autosuspend(master->dev); return ret; @@ -1083,7 +1067,6 @@ static int dw_i3c_master_i2c_xfers(struct i2c_dev_des= c *dev, struct i3c_master_controller *m =3D i2c_dev_get_master(dev); struct dw_i3c_master *master =3D to_dw_i3c_master(m); unsigned int nrxwords =3D 0, ntxwords =3D 0; - struct dw_i3c_xfer *xfer; int i, ret =3D 0; =20 if (!i2c_nxfers) @@ -1103,7 +1086,7 @@ static int dw_i3c_master_i2c_xfers(struct i2c_dev_des= c *dev, nrxwords > master->caps.datafifodepth) return -EOPNOTSUPP; =20 - xfer =3D dw_i3c_master_alloc_xfer(master, i2c_nxfers); + struct dw_i3c_xfer *xfer __free(kfree) =3D dw_i3c_master_alloc_xfer(maste= r, i2c_nxfers); if (!xfer) return -ENOMEM; =20 @@ -1112,7 +1095,6 @@ static int dw_i3c_master_i2c_xfers(struct i2c_dev_des= c *dev, dev_err(master->dev, "<%s> cannot resume i3c bus master, err: %d\n", __func__, ret); - dw_i3c_master_free_xfer(xfer); return ret; } =20 @@ -1144,7 +1126,6 @@ static int dw_i3c_master_i2c_xfers(struct i2c_dev_des= c *dev, dw_i3c_master_dequeue_xfer(master, xfer); =20 ret =3D xfer->ret; - dw_i3c_master_free_xfer(xfer); =20 pm_runtime_put_autosuspend(master->dev); return ret; --=20 2.43.0