From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 13E27EB64DD for ; Thu, 17 Aug 2023 12:26:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1350834AbjHQM0K (ORCPT ); Thu, 17 Aug 2023 08:26:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1350852AbjHQM0D (ORCPT ); Thu, 17 Aug 2023 08:26:03 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FCEA2D4F for ; Thu, 17 Aug 2023 05:26:00 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A27DF63833 for ; Thu, 17 Aug 2023 12:25:59 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DAD5BC433C7; Thu, 17 Aug 2023 12:25:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1692275159; bh=PQ2/X/AtlvaWHfySk7Tb3snsBUdfjq4Kk2LfPPOqlPU=; h=Date:From:To:Cc:Subject:From; b=dEjB04f5myBBRMdiMFKK7cydK7sp8Z2kzGV5Q7BWt9ooj800rgaNr685DDQHk5nbS 3Xz0Gxtb/PIgnTGfaZ+tewMgdVYjayGqCLzU5JM1jl+hvK6UoMFP0jrygPPJUEooQ3 /ki7RI27T8ks18FzesBFbPL6XMEdSenYrMFRzBA+saEN0gMdO7qw10lqzc54aWm8sq ZHb23p+hZO5AVOZYzeKO4uBdd4wStu0PuSXxhDIStFPihzEKXfYxxXlAgYhwciiSHN 9Y/LF+TU/AICCTK/G/Fc5Wo8u52+dvrHcVJo4jwfoAVX6ioOwCSh5DwwiaU/qhRemf D4GnRZD5TAURw== Received: by quaco.ghostprotocols.net (Postfix, from userid 1000) id 73AD7404DF; Thu, 17 Aug 2023 09:25:56 -0300 (-03) Date: Thu, 17 Aug 2023 09:25:56 -0300 From: Arnaldo Carvalho de Melo To: Namhyung Kim , Ian Rogers Cc: Adrian Hunter , Alexander Shishkin , Andi Kleen , Ingo Molnar , Jiri Olsa , K Prateek Nayak , Kan Liang , Leo Yan , Mamatha Inamdar , Mark Rutland , Masami Hiramatsu , Namhyung Kim , Paolo Bonzini , Peter Zijlstra , Ravi Bangoria , Ross Zwisler , Sean Christopherson , Steven Rostedt , Tiezhu Yang , Yang Jihong , Linux Kernel Mailing List Subject: [PATCH 1/1] perf lock: Don't pass an ERR_PTR() directly to perf_session__delete() Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org While debugging a segfault on 'perf lock contention' without an available perf.data file I noticed that it was basically calling: perf_session__delete(ERR_PTR(-1)) Resulting in: (gdb) run lock contention Starting program: /root/bin/perf lock contention [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". failed to open perf.data: No such file or directory (try 'perf record' first) Initializing perf session failed Program received signal SIGSEGV, Segmentation fault. 0x00000000005e7515 in auxtrace__free (session=0xffffffffffffffff) at util/auxtrace.c:2858 2858 if (!session->auxtrace) (gdb) p session $1 = (struct perf_session *) 0xffffffffffffffff (gdb) bt #0 0x00000000005e7515 in auxtrace__free (session=0xffffffffffffffff) at util/auxtrace.c:2858 #1 0x000000000057bb4d in perf_session__delete (session=0xffffffffffffffff) at util/session.c:300 #2 0x000000000047c421 in __cmd_contention (argc=0, argv=0x7fffffffe200) at builtin-lock.c:2161 #3 0x000000000047dc95 in cmd_lock (argc=0, argv=0x7fffffffe200) at builtin-lock.c:2604 #4 0x0000000000501466 in run_builtin (p=0xe597a8 , argc=2, argv=0x7fffffffe200) at perf.c:322 #5 0x00000000005016d5 in handle_internal_command (argc=2, argv=0x7fffffffe200) at perf.c:375 #6 0x0000000000501824 in run_argv (argcp=0x7fffffffe02c, argv=0x7fffffffe020) at perf.c:419 #7 0x0000000000501b11 in main (argc=2, argv=0x7fffffffe200) at perf.c:535 (gdb) So just set it to NULL after using PTR_ERR(session) to decode the error as perf_session__delete(NULL) is supported. Fixes: eef4fee5e52071d5 ("perf lock: Dynamically allocate lockhash_table") Cc: Adrian Hunter Cc: Alexander Shishkin Cc: Andi Kleen Cc: Ian Rogers Cc: Ingo Molnar Cc: Jiri Olsa Cc: K Prateek Nayak Cc: Kan Liang Cc: Leo Yan Cc: Mamatha Inamdar Cc: Mark Rutland Cc: Masami Hiramatsu Cc: Namhyung Kim Cc: Paolo Bonzini Cc: Peter Zijlstra Cc: Ravi Bangoria Cc: Ross Zwisler Cc: Sean Christopherson Cc: Steven Rostedt (VMware) Cc: Tiezhu Yang Cc: Yang Jihong Link: https://lore.kernel.org/lkml/ Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-lock.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index c15386cb10331829..0cf1c5a2e0323341 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -2052,6 +2052,7 @@ static int __cmd_contention(int argc, const char **argv) if (IS_ERR(session)) { pr_err("Initializing perf session failed\n"); err = PTR_ERR(session); + session = NULL; goto out_delete; } -- 2.37.1