From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 8AA841F938 for ; Wed, 29 Jul 2026 00:05:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785283523; cv=none; b=lGmGbKCn4tnvEOFJ0aUINMlE6gQ9c/25UO3KcsLVkFUX12tMY9y1xdTOX892YaupRQ570d1TnxYX1/b/QcbhniOnX+3nuR0S8KxK6czj4A6fXjsytE2C7sUwnAVzq3HsPqoSB9Hdamaf25P2Unoh7oAJEo+uJf9FZrCqrsPO/sQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785283523; c=relaxed/simple; bh=kZoZ5eckDahTNWeJeA3gPg0gBj/LvhcUQmtoV+N0Rdc=; h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version: Content-Type; b=CnhXEVcenhKtvSJ+YeB8tk5jK5cph64X0i+s0rfCT6r+UrV1ycu94fCyBKSpLw4fGkIzbj4q5afqAplcbzFJD4nMy6ItjF1MOF8JNWhNljxXJX1FJ5Jmdic3ZOUzznenTtyWP5jOBnIjkMqCNN83hRwI6FyZYdaGjse0hz05khg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OOOQ3OEY; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OOOQ3OEY" Received: by smtp.kernel.org (Postfix) with ESMTPSA id AAA341F00A3E; Wed, 29 Jul 2026 00:05:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785283521; bh=xdMa0AXRo5OiRkCpKUSgrSL7d0ZdE5vfu9649v8lEvw=; h=Date:From:To:Cc:Subject:References; b=OOOQ3OEYS65dHvH7K67F1+QkSsFZCT2MrsMz9wBJk3fd10Dlv6mBqqKIeloO9I+iZ s+sDE3GlGIP1fl8v7kEbG2BUlNbe16+ced/NZZvYvIIR5cRZYZSJDEBszqAwDVrFt1 f/q/cxfjUhCYhWF3TFyB0SOxw0OZZthjPY3bWH0DYELmHCG9ZPn1tPirkCHhywb8mr ihlO7EnSzkak/xG0z6PgLHUPq9rvAtKBcRWfucTLw7nX8knl0zNCRHzccLHB1eiFag DaRKElryBduPDbCCsmk9ch5YO3kPL7K2VQpmzFkweGLJ0tCuluNDKr4enrtRKSQ3U/ NTm3JsNypzFeA== Received: from rostedt by gandalf with local (Exim 4.99.4) (envelope-from ) id 1woro4-00000006Ucg-1EBV; Tue, 28 Jul 2026 20:05:56 -0400 Message-ID: <20260729000556.148360928@kernel.org> User-Agent: quilt/0.69 Date: Tue, 28 Jul 2026 20:05:29 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Mathieu Desnoyers , Andrew Morton , Pengpeng Hou Subject: [for-next][PATCH 06/16] tracing: Use __free() for expr_str() buffer References: <20260729000523.093060274@kernel.org> 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 From: Pengpeng Hou expr_str() allocates a temporary expression buffer and manually frees it on some error paths. Convert the buffer to __free(kfree) and return it with return_ptr() on success. This keeps ownership handling separate from the later ERR_PTR() conversion and string-bound change. Link: https://patch.msgid.link/20260611055945.22348-2-pengpeng@iscas.ac.cn Signed-off-by: Pengpeng Hou Signed-off-by: Steven Rostedt --- kernel/trace/trace_events_hist.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index a335006923ec..40ae7379cbf5 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -1759,7 +1759,7 @@ static void expr_field_str(struct hist_field *field, char *expr) static char *expr_str(struct hist_field *field, unsigned int level) { - char *expr; + char *expr __free(kfree) = NULL; if (level > 1) return NULL; @@ -1770,7 +1770,7 @@ static char *expr_str(struct hist_field *field, unsigned int level) if (!field->operands[0]) { expr_field_str(field, expr); - return expr; + return_ptr(expr); } if (field->operator == FIELD_OP_UNARY_MINUS) { @@ -1778,16 +1778,15 @@ static char *expr_str(struct hist_field *field, unsigned int level) strcat(expr, "-("); subexpr = expr_str(field->operands[0], ++level); - if (!subexpr) { - kfree(expr); + if (!subexpr) return NULL; - } + strcat(expr, subexpr); strcat(expr, ")"); kfree(subexpr); - return expr; + return_ptr(expr); } expr_field_str(field->operands[0], expr); @@ -1806,13 +1805,12 @@ static char *expr_str(struct hist_field *field, unsigned int level) strcat(expr, "*"); break; default: - kfree(expr); return NULL; } expr_field_str(field->operands[1], expr); - return expr; + return_ptr(expr); } /* -- 2.53.0