From nobody Wed Dec 17 05:55:58 2025 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (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 3384A14A83 for ; Wed, 8 May 2024 03:53:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140396; cv=none; b=j3gxlX19e3FwnO25xzNktEfCXzyaGscdKNx5PCGsGmJ3ormJkg8aZ+0WrjsnF5Xp5YMtBfEYvSr7756IZP3KomvmAzbKtIiGQ1Cg2PbPDqqtnihl/Cvdguy8jFUTxogq7d11aScKQ6wxJNuUoecBCYgIc1xlABiF9P1OZuXeG3s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140396; c=relaxed/simple; bh=QMqkJn+f/ByB+G/3NLfo9IraWlPvx4FuOXniSmKNgUk=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=mYEVtGzmwXpdAyiwmrZmmj+54BCahIX6uHOCTOQ8V14YeWSsXrEK6NP7RPUXFlhflGmnoWJzAsCvmGWxyoVHPs88APZ1Qs+GDFWRkeZpubI+pKc6wE9/TmljiY4/12kHoqbtcp9E/mi6QlyGgP/Imss+CO1dZx1cUDftKrrWLO0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=iWE3yBUn; arc=none smtp.client-ip=209.85.219.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="iWE3yBUn" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-dc6ceade361so9027964276.0 for ; Tue, 07 May 2024 20:53:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1715140393; x=1715745193; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=oOhzXSP6otJeiz7ZBDaSPLWGciNNQafio/HNsvoqc5c=; b=iWE3yBUn4q9qc5Q0zrSomt8CUnuw1EdJsuVjnIyZgBNisvFmDE3hI2iKiPUpZV3uXm zNi94ENyYdedtj7nctgqZmJZTK5rv9ORBgB+mscIG97EG8IISKPKZcybDV/wfFDhrPtq zVcY8C6qzyTECjTUZnFnmLQ9j5WmXzpFgCza2r/C1EiJyT+6zmyaScTRkQtaBzPCUPCl U2sNLfRno8azuujFt7WMyFaXH7Ateww7m3q+PHz8odC7w/ipVmvv8VQjJuxmxegqHPxx f41FmZyE4DOk6sZrj9ItN3bcimiFGN3Kx+CijLLO4ZdhYFY5JFZlOLIUufzpi9hMi9Dt NczA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715140393; x=1715745193; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=oOhzXSP6otJeiz7ZBDaSPLWGciNNQafio/HNsvoqc5c=; b=OW7WLFPkEbEuVc/nHSCgDkV40YrkxU3cNJCBLyXT5gaeYkwp7szMgDdGvDIxhQtGgZ Ploa26KZ38HAeCY3RJByZxSZ4EwGEl8wQvON4+CBIQwP0BBQauAJFdwq87NSeu/po6sg NzBESzvCd5bF5cOCxZZdZzkNv5x5NN3yoAfisJqE92QLKXoDpbgUCLWv2IIDUlZlxgrh +AIsT4MMZ+NO+l9XdwDKRNxz18yL28GNlIGUMuytHESkuuvj0OBgGA+U+4OvU1h24Q7u e56+LOj6V1dlEz8OYOy9wyDsy47Ok+jymAD8KKu4Uik6KIlnAZ+vfA8GuMNX7/9hOst4 7JTg== X-Forwarded-Encrypted: i=1; AJvYcCV6XPw+BrGiRGIlXvYE3siJtG4IhnXuAOrPfV5hJIDCTI29aB+eBGIvKZXCds9MQdkte/fLPv23EQ9SM1wLxTB6tN2tdEYigaP7yAb0 X-Gm-Message-State: AOJu0YxAqzke8DlyM/lhrZbADXzhZ77fYVIVj+WSuxHBgrXKxdz6cRM9 3JM9AGRytbQZsae0ivdDOfP+kiY/1OxpWeYAFHUJzOVhfM84SCyJbAIKIvr4jJX94mRJnyH78a8 5QRultQ== X-Google-Smtp-Source: AGHT+IEgsK4GbMBGYcgoXh83OnGEqcbvFMqSv6z15nT0CT0cVzVJxco0PKLMpw48lVcxJmIuUBGWnChzDWVJ X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:56f9:40dc:113f:ba3]) (user=irogers job=sendgmr) by 2002:a05:6902:1207:b0:dc7:68b5:4f21 with SMTP id 3f1490d57ef6-debb9e38e6bmr489657276.9.1715140393229; Tue, 07 May 2024 20:53:13 -0700 (PDT) Date: Tue, 7 May 2024 20:52:58 -0700 In-Reply-To: <20240508035301.1554434-1-irogers@google.com> Message-Id: <20240508035301.1554434-2-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240508035301.1554434-1-irogers@google.com> X-Mailer: git-send-email 2.45.0.rc1.225.g2a3ae87e7f-goog Subject: [PATCH v1 1/4] perf ui browser: Avoid segv on title From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Leo Yan , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If the title is NULL then it can lead to a segv. Fixes: 769e6a1e15bd ("perf ui browser: Don't save pointer to stack memory") Signed-off-by: Ian Rogers --- tools/perf/ui/browser.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c index c4cdf2ea69b7..19503e838738 100644 --- a/tools/perf/ui/browser.c +++ b/tools/perf/ui/browser.c @@ -203,7 +203,7 @@ void ui_browser__refresh_dimensions(struct ui_browser *= browser) void ui_browser__handle_resize(struct ui_browser *browser) { ui__refresh_dimensions(false); - ui_browser__show(browser, browser->title, ui_helpline__current); + ui_browser__show(browser, browser->title ?: "", ui_helpline__current); ui_browser__refresh(browser); } =20 --=20 2.45.0.rc1.225.g2a3ae87e7f-goog From nobody Wed Dec 17 05:55:58 2025 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (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 7C228168CC for ; Wed, 8 May 2024 03:53:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140397; cv=none; b=PUt6EOLMTE9YnDW/LI0G+mxXXcaGy56KOW8Olatnq/GvSWCJ+YNgrVCRhLYNis/hXMVfeu2JMh2xx39PhJnadoSQhDZy+wgu7oJHHzvIASn96LA7jV5P/g66qt1TOBDX6NkvDT/YalVRFx62RIhwMnHHlqy8AZsscJFTs5i6FjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140397; c=relaxed/simple; bh=aHIl5ajtOsRuKOTphrUaDEcdr7Mjo44/1jnkIBWAkmM=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=DgMTZ/QrXyXktdkIaLNoNz/ezPppcWtvnFJooXKZMsUmS2llNm4kGtdB/9lOZzJoYta0L2fi7hzu1qXattT0/s4jaXBxCYRcjjMWRgemF1GVvbaQvYq4u+oh7XKyOfOR+FPA3AuoxPsMNc95QcNfWEVKVywR2m/MqstQLEP8fjY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=TmjAkqhL; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="TmjAkqhL" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6204c4f4240so52664857b3.3 for ; Tue, 07 May 2024 20:53:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1715140395; x=1715745195; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=NLpi7z8CqpYtGhQQH+K3dVX1FIdgCT+wy4o4hM2y81A=; b=TmjAkqhLjNKDM3sVTrlR85Lv6Ui7Mipe3Gka6io25vKuy0XVjPO7O+eo6q7S8u6ccw 8/CwHqgpmUIrN1AIcuFHqZBPAKVlIgeIUHGygvsDhc76vWcWcxmLPqJTkqncSyn9Qhsm JoQTfAGY1NEEy41NES9rWvQKnWPZ2BjXWzMibd7KtIO0BIi+SvOtwqOtNy4UJP2Va8iL oaRTI0GxCsytrrIFFeL1RmAW4hfFTZMMVXyG/No8OBKQNhXawhA1/H0ekKzfF6Usxdwt +4ZuLmJ8+gpfzzaqsHt+YYAIfO/1pGCgSOgZhXP1MA54RUloCnrpM2WVg+49AfK2zSYu 3dfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715140395; x=1715745195; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NLpi7z8CqpYtGhQQH+K3dVX1FIdgCT+wy4o4hM2y81A=; b=BrWg0DOQ3eXNQcy09w5LnKSF1hrtgGPpC6AbDWj27ZMzuLQvH5oLSiu81bioMLStOQ QaHFsYg/9X1NEStnOkgDyQgURrv7MkGFK+CNaDOyOtstQJCbVUP0JhAHYDI5WsJVp0x6 Nz+xn5kjxgv/pzKN7m9pAeqL3aU1umEJjs8UM7LqSB9rj1fAr2vyHQY7B4LpcIJnCzeX I69jd4s5vMFM/NNEUa584RwU/PQZe/0VjQ995wC28Vbv/clPL/HoIDDuhnZmTDykkY3i lP9WZe1qrw9I8hG953orylv6MctJTL5Pi/gTWgzlFGP0DzMCZueRy5J7mk2zx211RBOD owvw== X-Forwarded-Encrypted: i=1; AJvYcCWPFz5bAtgira+h5uA8KZJdO4JfLTcrh0Au3rmSHFQpx4f/06wh7OqlA95CjOe3sM1Bjf7ZtKByaDUQNgd1Z3bdHlRoFge+nUCVq5+G X-Gm-Message-State: AOJu0YxKZny1fIlE+VcJX4DtNPlQA7TJh8dsP18ZTzEcYjsw2MI9ThPx ySwo/jZ881kYks9A1H0lPgrSZu20EMaGw1xUN+nl+/oWRx7GlzKxnvtxHeCp2AH5cfQwKRffU+4 NGVUy7w== X-Google-Smtp-Source: AGHT+IFrOkRLRqDS7GqMlrxDcpHsAvJyI+R0IRXLkCqe5dHNCgLGD/WBcjQn8SmUgyEm27PVlV5ZhjoZc6rT X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:56f9:40dc:113f:ba3]) (user=irogers job=sendgmr) by 2002:a81:52cc:0:b0:618:8e4b:f4b0 with SMTP id 00721157ae682-62085c3ff7dmr3595067b3.9.1715140395469; Tue, 07 May 2024 20:53:15 -0700 (PDT) Date: Tue, 7 May 2024 20:52:59 -0700 In-Reply-To: <20240508035301.1554434-1-irogers@google.com> Message-Id: <20240508035301.1554434-3-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240508035301.1554434-1-irogers@google.com> X-Mailer: git-send-email 2.45.0.rc1.225.g2a3ae87e7f-goog Subject: [PATCH v1 2/4] perf comm: Fix comm_str__put for reference count checking From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Leo Yan , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Searching for the entry in the array needs to avoid the intermediate pointer with reference count checking. Refactor the array removal to binary search for the entry. Change the array to hold an entry with a reference count (so the intermediate pointer can work) and remove from the array when the reference count on a comm_str falls to 1. Fixes: 13ca628716c6 ("perf comm: Add reference count checking to 'struct co= mm_str'") Signed-off-by: Ian Rogers --- tools/perf/util/comm.c | 45 +++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/tools/perf/util/comm.c b/tools/perf/util/comm.c index 1aa9a08e5b03..233f2b6edf52 100644 --- a/tools/perf/util/comm.c +++ b/tools/perf/util/comm.c @@ -19,6 +19,8 @@ static struct comm_strs { int capacity; } _comm_strs; =20 +static void comm_strs__remove_if_last(struct comm_str *cs); + static void comm_strs__init(void) { init_rwsem(&_comm_strs.lock); @@ -58,22 +60,15 @@ static struct comm_str *comm_str__get(struct comm_str *= cs) =20 static void comm_str__put(struct comm_str *cs) { - if (cs && refcount_dec_and_test(comm_str__refcnt(cs))) { - struct comm_strs *comm_strs =3D comm_strs__get(); - int i; + if (!cs) + return; =20 - down_write(&comm_strs->lock); - for (i =3D 0; i < comm_strs->num_strs; i++) { - if (comm_strs->strs[i] =3D=3D cs) - break; - } - for (; i < comm_strs->num_strs - 1; i++) - comm_strs->strs[i] =3D comm_strs->strs[i + 1]; - - comm_strs->num_strs--; - up_write(&comm_strs->lock); + if (refcount_dec_and_test(comm_str__refcnt(cs))) { RC_CHK_FREE(cs); } else { + if (refcount_read(comm_str__refcnt(cs)) =3D=3D 1) + comm_strs__remove_if_last(cs); + RC_CHK_PUT(cs); } } @@ -107,6 +102,28 @@ static int comm_str__search(const void *_key, const vo= id *_member) return strcmp(key, comm_str__str(member)); } =20 +static void comm_strs__remove_if_last(struct comm_str *cs) +{ + struct comm_strs *comm_strs =3D comm_strs__get(); + + down_write(&comm_strs->lock); + /* + * Are there only references from the array, if so remove the array + * reference under the write lock so that we don't race with findnew. + */ + if (refcount_read(comm_str__refcnt(cs)) =3D=3D 1) { + struct comm_str **entry; + + entry =3D bsearch(comm_str__str(cs), comm_strs->strs, comm_strs->num_str= s, + sizeof(struct comm_str *), comm_str__search); + comm_str__put(*entry); + for (int i =3D entry - comm_strs->strs; i < comm_strs->num_strs - 1; i++) + comm_strs->strs[i] =3D comm_strs->strs[i + 1]; + comm_strs->num_strs--; + } + up_write(&comm_strs->lock); +} + static struct comm_str *__comm_strs__find(struct comm_strs *comm_strs, con= st char *str) { struct comm_str **result; @@ -158,7 +175,7 @@ static struct comm_str *comm_strs__findnew(const char *= str) } } up_write(&comm_strs->lock); - return result; + return comm_str__get(result); } =20 struct comm *comm__new(const char *str, u64 timestamp, bool exec) --=20 2.45.0.rc1.225.g2a3ae87e7f-goog From nobody Wed Dec 17 05:55:58 2025 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (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 7930A17756 for ; Wed, 8 May 2024 03:53:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140399; cv=none; b=fpf0EJrARcvg3VTbr50uXs7Az5Z3ia2LSZX+9udaIjDv6IMq5TJs12pJ8hUam4G0BdwTrxuSwCLGoTmbpLitDte3tpm2T7imOWaK2dIKOV6CxdSoRCAlTYpvcostXRZx2nrkvheyxGgX+B9pVfQuvUvG9I2V9xyq5sE3HE9+QlI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140399; c=relaxed/simple; bh=1gjiKx8CEp6GLpjJeA3XOWVnAQEoANQb0FbmONXrbR0=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=sJOzPQxBawHNJqWMRzPuxlZ4DINnx20dOSw9f/HRVjCcLGkmWjkJbHdNEfeBPBy4o+UJ6LlxwLzkdg0G3oTmKrT8iC6srRL9Tn5e0p8XU4cGQTOnHxvjthUsz88GfvjomFrvlVNPrPktgQO40vt88oF/r2uIFxiI1DNP8F7bRw0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=EV57yJwD; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="EV57yJwD" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-61bed763956so80589987b3.3 for ; Tue, 07 May 2024 20:53:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1715140398; x=1715745198; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=evqEKyKRq93CW7bOGoBWyVHoXocBvIcKIjPummzTEM4=; b=EV57yJwDSoR3biBtmfXMvv3nRCD6OLGkeKIYBrsECK7VOqUarkS8pdRGyfBa4H36x8 5+XABmOQh7dwRaISHOXyPIstAUcwh6xnScsObUsNGglUel+l3IJRMUN+bkO1ykHO7O20 HzgzFi0IKefZ26F0gy2PAIpARoiSrD2eEJb5w8DvfplWYQNVr80c6IwBhO5fG4eQfZjs g3pnEIUoOPk3V6Mzji8XvM+QQmEwM183xSUBIrbi7vh13qLxQX0KBF1Juk5nyJAUMzQP 2hsaRLyDrati/MvtiM6VxEhMEKwnKoze7Wsr+5poCHXPFw99L5xdsrNE6BByDLAMEWpV Kkiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715140398; x=1715745198; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=evqEKyKRq93CW7bOGoBWyVHoXocBvIcKIjPummzTEM4=; b=ixCX/imFjOJLbr9t7VVVL4WGhzg+QDcGi+bZyo3jhYIs93gFZl3eF359z5MbhQgTG3 znxk32wOPkhyuvQsHSM2OoXiDtABTTWRNdgCwLorzsr/vWA8sT5CVRsrgrPT2bU1CRGn TTBMmN7r6tq97Gzd/ivvnHHd1P2WBdyUIKttxkMYsDeQplYgoQ1jucXdSTdvvLMnfGxR uvOUdtguMrM7H95W5d9lhKVNuyeJX5p0Bt1FZKUSu9rBGkuL+r80irTIjaRwse868GfY dRFrMdBG/HtvIhc3zb6J1wOyKo3Y6WMXCPmvvXZDZV6QuL/OlhlqvoPfsRQZ2sQPccdA m9eQ== X-Forwarded-Encrypted: i=1; AJvYcCU0YA6AFQvJ1hfCtj/rjAUGDMxFjwkQgIRHfICRlDdyY2ZYIf50Tj263noVFnnWjL9AQZwKTmLKnatLd7w+7E94Q6JTtin3OO3qVGqQ X-Gm-Message-State: AOJu0YznMiuEcjE8+2XQShRW/sgW4ghsLCJokClPeWzkOJa8yxaQIMBW vVjX5Hl2seFoFBJ2gI2bBfxQSGnHbRWUfxtyXsAAIv92BGDp780Rz6vfRd26UuuUjh6jpQUjEKU s5s+xBA== X-Google-Smtp-Source: AGHT+IFFi6TPEZBiQZat0J8wPmQsKgf7WRxfdVdZ6yCN7mIOFkHcTAwrw61sUraFs85lMk8PIkUKfpdUg5AT X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:56f9:40dc:113f:ba3]) (user=irogers job=sendgmr) by 2002:a05:6902:1083:b0:de5:5225:c3a4 with SMTP id 3f1490d57ef6-debb9d3d713mr439844276.7.1715140397650; Tue, 07 May 2024 20:53:17 -0700 (PDT) Date: Tue, 7 May 2024 20:53:00 -0700 In-Reply-To: <20240508035301.1554434-1-irogers@google.com> Message-Id: <20240508035301.1554434-4-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240508035301.1554434-1-irogers@google.com> X-Mailer: git-send-email 2.45.0.rc1.225.g2a3ae87e7f-goog Subject: [PATCH v1 3/4] perf report: Avoid segv in report__setup_sample_type From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Leo Yan , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In some cases evsel->name is lazily initialized in evsel__name. If not initialized passing NULL to strstr leads to a segv. Fixes: ccb17caecfbd ("perf report: Set PERF_SAMPLE_DATA_SRC bit for Arm SPE= event") Signed-off-by: Ian Rogers --- tools/perf/builtin-report.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 0892b6e3e5e7..69618fb0110b 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -429,7 +429,7 @@ static int report__setup_sample_type(struct report *rep) * compatibility, set the bit if it's an old perf data file. */ evlist__for_each_entry(session->evlist, evsel) { - if (strstr(evsel->name, "arm_spe") && + if (strstr(evsel__name(evsel), "arm_spe") && !(sample_type & PERF_SAMPLE_DATA_SRC)) { evsel->core.attr.sample_type |=3D PERF_SAMPLE_DATA_SRC; sample_type |=3D PERF_SAMPLE_DATA_SRC; --=20 2.45.0.rc1.225.g2a3ae87e7f-goog From nobody Wed Dec 17 05:55:58 2025 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (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 D07651AAA5 for ; Wed, 8 May 2024 03:53:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140402; cv=none; b=DyB9RGCCyCAK8rfP3a8tPpFNmIcJZ+NL58jmN3hjuuYzj/txggiC9utTrxF3Eqk4YeFCVxyOcrAMRsYIMngmGHdT4ICCCjOGewV7ZFyU04T2kJOhWG7hmZLDo4XZPTzmLNs2dwVzV6qy0RrJFqd+k5m4Ki3Vd2iUp4cB8uoUDv4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1715140402; c=relaxed/simple; bh=PkE9IXfyXZEZClS9BF4vcd5Nh75l4NFqr0xzo5i+yl8=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=fNi7I/Hs6KnnS107QHeNUO5JniEQsDrb5mErC23N5QCgkruenePlQKhcANRpl6ExRh0lNlq3Twt19pFqx9BknAdVgrX3MN7tuTZnC6FEGXI9cGBAC8dq8LyhFQrlNI+uXrQx78RTRiMhZWWKI18y3cWreFcY2m0s1I2hB9YC7Cw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=3XEOkwvE; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="3XEOkwvE" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-61be25000a4so79091187b3.2 for ; Tue, 07 May 2024 20:53:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1715140400; x=1715745200; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=T9iBFcMYRLjKmNtSCKVfZQuec+4vBM7qEYaLGnQMh1Q=; b=3XEOkwvEZuu8BWnxgUf9tbmWEEV7zqlQkXMWj0609iuJc22PdaMlbNUjOEoOalQJik LCZ7vvbIDAi+CxoN9dm3pEYj486FGS8u7kfUxVDnjceuLnD0bF20rlI6IrGS0VjNfGSZ Wnm7u5hz5oUbG2Bl0PLM4XG5O9LJtt+2aXsFVsKk2zpCBhVuu+pmToCrL4brUEVhJwzG Sbti/bIy4wnoY3B54A20hsJkmVGF/51GKkKwsHMA6c/7c/DMIrmWU7cqioldqMDET1CL Xxk6z0fe1mncODy1IcPOS0p+i+Pue5HP4TnCczVQM26cFeUG0lCZm/2Z/2DkQgFilvEh XHhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715140400; x=1715745200; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=T9iBFcMYRLjKmNtSCKVfZQuec+4vBM7qEYaLGnQMh1Q=; b=TWn1gifimmPwnRUEzO+jcIWwlu/dBkwqzCxmeMSB25MFiTnGqdBmzmWLT/jlo13eUo gY3GGaFtmsQWyMiz0dUyX0ffRHicSKmuVJ6EPDVprJUElSK1wCG+JgjP6bWfVWG5REpS ZHPeaFlMoFsR8/RknUiqEK1I0awOWjZBtZi5xMPTVp+1xRwtaHPykGNXKKzlMkXmCy+t cbwaMxSqB/9ms6sW2Ip/mkYrjbe0RHKvgROsNbV5egahETRM00rjYL89kYsVl6oQ300Q 5Ui0Lbmji0yx1ZV23QJoCkXgxgwPMdN2WZHaoOIdF1+vIzlhUCB/ZyOt/WK1mHfe4gGC AIjg== X-Forwarded-Encrypted: i=1; AJvYcCWTLDBWQKCC3Cp3YAHZkECQlwkPfSbm26lTaeLa43OCzzQokFuiHFyqIfqenazW+/5re2BoQLjsvrOelg8rEkvGGpiI+NtW5qM8uFfE X-Gm-Message-State: AOJu0YyUi3r/P0nkhvYghvwghzOGLjOBTJKXozHEfdSAcIqYkRvpDDHw Rbj2iPtAETVASq6OPXp+0VgCu+YgMX1j4onLcvtkoYU1jO9i5MBxTy2Q/yCqzBzKgFI+v7lwkz/ HM2+97A== X-Google-Smtp-Source: AGHT+IEbnEA/r7BoFjsBedSpafR2wTGgrqS1AfAn8vl+1v8boeuvJ0jCqkgJ+FlT5VbqFtGmUa+pyGS+jfPj X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:56f9:40dc:113f:ba3]) (user=irogers job=sendgmr) by 2002:a81:4807:0:b0:61b:e1f6:2098 with SMTP id 00721157ae682-62085a6966emr4506397b3.3.1715140399912; Tue, 07 May 2024 20:53:19 -0700 (PDT) Date: Tue, 7 May 2024 20:53:01 -0700 In-Reply-To: <20240508035301.1554434-1-irogers@google.com> Message-Id: <20240508035301.1554434-5-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20240508035301.1554434-1-irogers@google.com> X-Mailer: git-send-email 2.45.0.rc1.225.g2a3ae87e7f-goog Subject: [PATCH v1 4/4] perf thread: Fixes to thread__new From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Leo Yan , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Freeing the thread on failure won't work with reference count checking, use thread__delete. Don't allocate the comm_str, use a stack allocation instead. Fixes: f6005cafebab ("perf thread: Add reference count checking") Signed-off-by: Ian Rogers --- tools/perf/util/thread.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c index 0a473112f881..87c59aa9fe38 100644 --- a/tools/perf/util/thread.c +++ b/tools/perf/util/thread.c @@ -39,12 +39,13 @@ int thread__init_maps(struct thread *thread, struct mac= hine *machine) =20 struct thread *thread__new(pid_t pid, pid_t tid) { - char *comm_str; - struct comm *comm; RC_STRUCT(thread) *_thread =3D zalloc(sizeof(*_thread)); struct thread *thread; =20 if (ADD_RC_CHK(thread, _thread) !=3D NULL) { + struct comm *comm; + char comm_str[32]; + thread__set_pid(thread, pid); thread__set_tid(thread, tid); thread__set_ppid(thread, -1); @@ -56,13 +57,8 @@ struct thread *thread__new(pid_t pid, pid_t tid) init_rwsem(thread__namespaces_lock(thread)); init_rwsem(thread__comm_lock(thread)); =20 - comm_str =3D malloc(32); - if (!comm_str) - goto err_thread; - - snprintf(comm_str, 32, ":%d", tid); + snprintf(comm_str, sizeof(comm_str), ":%d", tid); comm =3D comm__new(comm_str, 0, false); - free(comm_str); if (!comm) goto err_thread; =20 @@ -76,7 +72,7 @@ struct thread *thread__new(pid_t pid, pid_t tid) return thread; =20 err_thread: - free(thread); + thread__delete(thread); return NULL; } =20 --=20 2.45.0.rc1.225.g2a3ae87e7f-goog