From nobody Sun Oct 5 16:14:15 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 53DE9248F7A for ; Sat, 2 Aug 2025 16:28:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754152086; cv=none; b=LZcCsLL3QiflGPjcelzkDIjERBiTGUUERvAbMRCmV6NmGmll7/0R7vN6VcKhcnMh1q6zX7z6Gwm1cKMaEylNDYtBd+/vIKWzDBhf+JWKKAIbuqMdB3bTxRXgcufdly5MLUBLG7xEISHNJ+CJdAAB1t1cEDeqVafTCqtNLIZlEj8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754152086; c=relaxed/simple; bh=/X/3LJzyJmj4yt21bKc0lShFVhAXzhSf2zE7HC3zBXI=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=M54yLDHfoVJA+HhVbiGxpW9xdhMY7fvOElhz0rxrtxW2hP5UhNmiSUokclQ2VsPx7tD69jCW0GljdepBSArONFZR0H4hmC3aDVMsMv0fuBDg4ijBv62Gh9HE6o/YMGJcEqJfxzd0FI9sj8N7yExTNZK8J5lgq/sMbZg3YzQzhgs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ee1n5DcT; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ee1n5DcT" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3155DC4CEFB; Sat, 2 Aug 2025 16:28:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1754152086; bh=/X/3LJzyJmj4yt21bKc0lShFVhAXzhSf2zE7HC3zBXI=; h=Date:From:To:Cc:Subject:References:From; b=ee1n5DcTNsLBF5xtrz5TKrFCgLphP1UnlH7e9He+peyGKZVlBLech0qqmHr9Bgi/D YXdOFJKUA7UGLGJ/EoC+BnVvEjCnon1nzkE23REhbKbHz4wEDOFeJXBBGiRcWtfyyi LTJ2Z5yoMlxGzBGyFtLmjC6WqOOe1uqJQPS5D0jojp3218tDURx61Mj1Ob76efPqMK /FTrLEF9el1JrVoYY5Tj4bmtPtboT32RLsi4Bh6ZsylI97pONDsYfpcObbYtZLjLN2 OAx9jJQMRLS/Ojtt4dNOqjGf5mD9Uiv3eljaSVpMbXGVajGHEs1/o4JzlvmW6NGuw8 VpSpOPl+B4Z/A== Received: from rostedt by gandalf with local (Exim 4.98.2) (envelope-from ) id 1uiF5x-00000008SY5-2rdz; Sat, 02 Aug 2025 12:28:29 -0400 Message-ID: <20250802162829.535471385@kernel.org> User-Agent: quilt/0.68 Date: Sat, 02 Aug 2025 12:27:38 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Tomas Glozar , John Kacur , Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton Subject: [for-next][PATCH 4/6] tracing: Use __free(kfree) in trace.c to remove gotos References: <20250802162734.529626660@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Steven Rostedt There's a couple of locations that have goto out in trace.c for the only purpose of freeing a variable that was allocated. These can be replaced with __free(kfree). Cc: Masami Hiramatsu Cc: Mark Rutland Cc: Mathieu Desnoyers Cc: Andrew Morton Link: https://lore.kernel.org/20250801203858.040892777@kernel.org Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace.c | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 4299e89ed04e..d0b1964648c1 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -5042,7 +5042,7 @@ tracing_cpumask_read(struct file *filp, char __user *= ubuf, size_t count, loff_t *ppos) { struct trace_array *tr =3D file_inode(filp)->i_private; - char *mask_str; + char *mask_str __free(kfree) =3D NULL; int len; =20 len =3D snprintf(NULL, 0, "%*pb\n", @@ -5053,16 +5053,10 @@ tracing_cpumask_read(struct file *filp, char __user= *ubuf, =20 len =3D snprintf(mask_str, len, "%*pb\n", cpumask_pr_args(tr->tracing_cpumask)); - if (len >=3D count) { - count =3D -EINVAL; - goto out_err; - } - count =3D simple_read_from_buffer(ubuf, count, ppos, mask_str, len); - -out_err: - kfree(mask_str); + if (len >=3D count) + return -EINVAL; =20 - return count; + return simple_read_from_buffer(ubuf, count, ppos, mask_str, len); } =20 int tracing_set_cpumask(struct trace_array *tr, @@ -10739,7 +10733,8 @@ ssize_t trace_parse_run_command(struct file *file, = const char __user *buffer, size_t count, loff_t *ppos, int (*createfn)(const char *)) { - char *kbuf, *buf, *tmp; + char *kbuf __free(kfree) =3D NULL; + char *buf, *tmp; int ret =3D 0; size_t done =3D 0; size_t size; @@ -10754,10 +10749,9 @@ ssize_t trace_parse_run_command(struct file *file,= const char __user *buffer, if (size >=3D WRITE_BUFSIZE) size =3D WRITE_BUFSIZE - 1; =20 - if (copy_from_user(kbuf, buffer + done, size)) { - ret =3D -EFAULT; - goto out; - } + if (copy_from_user(kbuf, buffer + done, size)) + return -EFAULT; + kbuf[size] =3D '\0'; buf =3D kbuf; do { @@ -10773,8 +10767,7 @@ ssize_t trace_parse_run_command(struct file *file, = const char __user *buffer, /* This can accept WRITE_BUFSIZE - 2 ('\n' + '\0') */ pr_warn("Line length is too long: Should be less than %d\n", WRITE_BUFSIZE - 2); - ret =3D -EINVAL; - goto out; + return -EINVAL; } } done +=3D size; @@ -10787,17 +10780,12 @@ ssize_t trace_parse_run_command(struct file *file= , const char __user *buffer, =20 ret =3D createfn(buf); if (ret) - goto out; + return ret; buf +=3D size; =20 } while (done < count); } - ret =3D done; - -out: - kfree(kbuf); - - return ret; + return done; } =20 #ifdef CONFIG_TRACER_MAX_TRACE --=20 2.47.2