From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yx1-f47.google.com (mail-yx1-f47.google.com [74.125.224.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 193DD3B8D48 for ; Tue, 9 Dec 2025 07:04:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.47 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765263870; cv=none; b=oSWPQNgDjuTu1YehknH+PrKuNaoVkzvvsGk1utI2mEdbEKtE+qQMZmqgPjn8h66TvZT9zdApJFLPvkurooNIIAN0dCV+gtm6kXPBJIB9BmTeblzLVJHOob7DdMDT82zJct3ku6qA5B6uLI0Ziz3Rgn2JFaJ0IzkRiJohMOSp9XA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765263870; c=relaxed/simple; bh=qasdi45vY8iLZ/9xh9brw/rBaED5NrbKL2aZS0u+B3Y=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=uTFmZEbG+fT/Vc96u11GLvNhMfPmn2Ny9JKl0beX9uaCBuxh5Eirj1zUCbIla/32OS3nkc0YE5q0d6Gv5W6K7Uo9q98aI2vPUOfjZXj1tnmqo4SuhJEUYk0/pYGoVkwhKa5DgRyrrQ/EoPkbW9W/hN3Txzt+vkhlmgcpYjZbfDw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tomeuvizoso.net; spf=pass smtp.mailfrom=tomeuvizoso.net; dkim=pass (2048-bit key) header.d=tomeuvizoso-net.20230601.gappssmtp.com header.i=@tomeuvizoso-net.20230601.gappssmtp.com header.b=mBTiqYlr; arc=none smtp.client-ip=74.125.224.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=tomeuvizoso.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=tomeuvizoso.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=tomeuvizoso-net.20230601.gappssmtp.com header.i=@tomeuvizoso-net.20230601.gappssmtp.com header.b="mBTiqYlr" Received: by mail-yx1-f47.google.com with SMTP id 956f58d0204a3-641e942242cso4579915d50.1 for ; Mon, 08 Dec 2025 23:04:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tomeuvizoso-net.20230601.gappssmtp.com; s=20230601; t=1765263866; x=1765868666; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=8HjZZ9kAFRbgW+ipXzreVZcAJO7V/Qz6Xi8HekbDwng=; b=mBTiqYlr1m0o8UoNDG7yqnGfRkQWakNPVc7bv/65pQlf7nTlknWFO8G7wu5NWTYX1z M/9UdFPa7uBp9WTL05LOztoQAU9rxOATHHpOpya4Ijdm9JEE68Ux2wvw/RSInYl+xjN2 s0zRURtW2aVEj5lIbsbND6J96ugLsxF+tAZyFMJ02Nwd0JYlQP7Ej2BEcZNyM2kSsuTI r4/kgbEXAoRG8iyn3efM8obYMxUkxcRr+IuH+CZJwh5o/UKTdMLbLx0vzef0l6oJz5Js ay0s82twBf6MSQXN2ZneW8MyrTZVop4FPnrlVpgiUxRmnVoVSuyDj2jzXxJQG3lKGo5x je2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765263866; x=1765868666; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=8HjZZ9kAFRbgW+ipXzreVZcAJO7V/Qz6Xi8HekbDwng=; b=Wpu1iWres6+QdezRIoFH1BjVs0+rEY0/AjzGQCz0nCoPj3wc5PUBE5dUPUvMA0Syhq FcS616cHDeU8SVSSn5rLBWbfifTrE1e+kKjh0sS03gcwCIHQYLGmjgeruPshf6BWDQ4o KzsgxsDlXCZw71wbY4xi9A6lUAosg7DU0r3JjJ3ecmsYVyySJnIeNQ4lQkf+gEFniLYf sdD0jLqVwomlpACtj9bLpWGn4NbR9ql3OaeiXdxRjEdbi+N16kFThwpfl3v8r1UtbvWl EAD6LwJ0fKO+odYWMsZVbWTqW96+Ek95e3Pt3adHMAsEhFGcxxabtf/Frl2EKBdVFVa9 m+kQ== X-Forwarded-Encrypted: i=1; AJvYcCV6Xelx3A1e1BOPVtti2kWsp6hJNl26lZZ7tcDR4BIpLCQj4561PCVZgHIM4E8pE9Z2nN09F629AIEfs9M=@vger.kernel.org X-Gm-Message-State: AOJu0Yyf8D78CZvQE3HBstmAJJyPMXKRgA4q66PN3oqVfWfLlmQQrAfO hmpLcBSZMrIuq5QM+UfnO6lraSJ9Xsv7Lu+MpPCJNlYgzHlmHNkm5tPuqQjKWcmce0Bi02I9Qki djaedzVw= X-Gm-Gg: AY/fxX4OuYq4ETVn9Mk+5BUw8E7sIF+5GwdU8qJc0jE81KwPQuPpQaHrjMRfytJVATn sFBXo7mhf+nWOEo+YQPnSvUqs77MBnW0R5+ohUw5qUQ2gPJgMnNa8Ouh3wGtNuXP+sFe4oG8Vav tqnnB+clXeitG/Ozam6gRzd1YG0cdcUktZgXNr4dAPpdwmxBC2Ga6g3EsdfhrqSZFE4MAddDw25 mQIABtWR3xCZGGvumQq25iwla9B/0tMWoYI9Wa58o6csn+AQfvvnJ+61xPEpXWZYqr7BqRMt8Xw mBRA/f83eMYMfHuN2F4sD+x3VbQzElUmF3GBN3RJJg2YZusixBGmUelGw9sE5TxJ9pTYVlbkkrb gNy715+o0pGmjLp8iAziWzJ74FWKTxenhW8ljr/HRbifjfgFB7Kzmqv7iYr5AT3RTkOZhV/g5Qw /bL09O+3F1+9vxWlHRZF9Km2zxO3WEIzyjHkii9pJdC2GJjIlcqQ== X-Google-Smtp-Source: AGHT+IGuxrM3gPQKCmDde0UbpQ/AnB9VvDsJ5beQ88qoqrqVGG7KvuOUj+k/JUfsOsI/cCyyy6hSpg== X-Received: by 2002:a05:690e:12cb:b0:63f:2db0:997c with SMTP id 956f58d0204a3-6444e7d605emr8947937d50.68.1765263865711; Mon, 08 Dec 2025 23:04:25 -0800 (PST) Received: from mail-yx1-f53.google.com (mail-yx1-f53.google.com. [74.125.224.53]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-6443f5b1dd6sm6143184d50.21.2025.12.08.23.04.25 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 08 Dec 2025 23:04:25 -0800 (PST) Received: by mail-yx1-f53.google.com with SMTP id 956f58d0204a3-6446705793aso218220d50.2 for ; Mon, 08 Dec 2025 23:04:25 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCUykEQuGNHA4njr1hK/C3hX6cO3Jf7QA+nsFTRT2iuIWL4K3SviHH+CMzfYb9v5gU6U9u2DTNcOb7TtkjA=@vger.kernel.org X-Received: by 2002:a53:acc2:0:20b0:63f:9979:2f9e with SMTP id 956f58d0204a3-6444e757265mr7570067d50.17.1765263864869; Mon, 08 Dec 2025 23:04:24 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20251107024620.912403-1-liqiang01@kylinos.cn> In-Reply-To: <20251107024620.912403-1-liqiang01@kylinos.cn> From: Tomeu Vizoso Date: Tue, 9 Dec 2025 08:04:13 +0100 X-Gmail-Original-Message-ID: X-Gm-Features: AQt7F2oAkfn_gxkpumQ2SS3w1gVg430SLCszFPeOkGYiYsgcWSIDI1ffB1jh-j8 Message-ID: Subject: Re: [PATCH] drm/rocket: Add scheds pointer to file_priv and fix memory leaks To: Li Qiang Cc: ogabbay@kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Are you sure of this? The list should be freed in rocket_job_close(), just before freeing the entity. Regards, Tomeu On Fri, Nov 7, 2025 at 3:46=E2=80=AFAM Li Qiang wrot= e: > > The rocket driver allocates an array of struct drm_gpu_scheduler pointers > for each file via kmalloc_array() in rocket_job_open(). However, the > allocated memory was not stored in rocket_file_priv and therefore never > freed on file close, leading to a memory leak. > > This patch introduces a new `scheds` field in struct rocket_file_priv to > store the allocated pointer array, and frees it properly in > rocket_job_close() after the scheduler entity is destroyed. > > This ensures correct lifetime tracking of scheduler arrays and resolves > the leak detected by code review and potential KASAN reports. > > Signed-off-by: Li Qiang > --- > drivers/accel/rocket/rocket_drv.h | 1 + > drivers/accel/rocket/rocket_job.c | 10 +++++++++- > 2 files changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/accel/rocket/rocket_drv.h b/drivers/accel/rocket/roc= ket_drv.h > index 2c673bb99ccc..759a08596dad 100644 > --- a/drivers/accel/rocket/rocket_drv.h > +++ b/drivers/accel/rocket/rocket_drv.h > @@ -24,6 +24,7 @@ struct rocket_file_priv { > struct mutex mm_lock; > > struct drm_sched_entity sched_entity; > + struct drm_gpu_scheduler **scheds; > }; > > struct rocket_iommu_domain *rocket_iommu_domain_get(struct rocket_file_p= riv *rocket_priv); > diff --git a/drivers/accel/rocket/rocket_job.c b/drivers/accel/rocket/roc= ket_job.c > index acd606160dc9..820d96f010f2 100644 > --- a/drivers/accel/rocket/rocket_job.c > +++ b/drivers/accel/rocket/rocket_job.c > @@ -502,6 +502,9 @@ int rocket_job_open(struct rocket_file_priv *rocket_p= riv) > unsigned int core; > int ret; > > + if (unlikely(!scheds)) > + return -ENOMEM; > + > for (core =3D 0; core < rdev->num_cores; core++) > scheds[core] =3D &rdev->cores[core].sched; > > @@ -509,8 +512,12 @@ int rocket_job_open(struct rocket_file_priv *rocket_= priv) > DRM_SCHED_PRIORITY_NORMAL, > scheds, > rdev->num_cores, NULL); > - if (WARN_ON(ret)) > + if (WARN_ON(ret)) { > + kfree(scheds); > return ret; > + } > + > + rocket_priv->scheds =3D scheds; > > return 0; > } > @@ -520,6 +527,7 @@ void rocket_job_close(struct rocket_file_priv *rocket= _priv) > struct drm_sched_entity *entity =3D &rocket_priv->sched_entity; > > kfree(entity->sched_list); > + kfree(rocket_priv->scheds); > drm_sched_entity_destroy(entity); > } > > -- > 2.25.1 >