Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp36206pxf; Wed, 24 Mar 2021 20:09:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxNMxGf+dZFp4zkigSbvatOloseBxezrmfg8sjQlia2WzuXuy6xc5RVOTNhjhbbM3eeC8NP X-Received: by 2002:aa7:dc15:: with SMTP id b21mr6700048edu.350.1616641740275; Wed, 24 Mar 2021 20:09:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616641740; cv=none; d=google.com; s=arc-20160816; b=eFThDGqd+Lsxy0oFpDNgzFxNkeEsKe/sexsCh4EFhq6gap37BTfeLdniw7HbKGVgPB vZzr7idWYMOBqDZjjZnUo32Z4sRr9CBFeUKyzdab29fBbGE/jOkxLfD5/cFSE62g10E8 DOQW04I5uQX21OXjGuAo8wjWZoDmkCYkOvAAJU5ncZ9k/Fhj8nddCobi87S22Fx++wuJ DLAVCBbC5uurVt1maaG5y1X6th5S3W8R3XikHCyrYOtphw3O0AH9Clc/gCNIsbYJf9RO CUiJXNpoNuE8pInBRM+T4IrLXrjhImwHZ+VvP5nKpGivhfIqflkuaz/H6kzaRlzSUK5e 0f0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=OfhOIdD0/JF1R4rl2yl8LbcQIZX0RUkjo+PIbGE7ciE=; b=EdwxCkWSxxAdRGhf0tF1p4en59B+todR8nx873P0zbRkT1iAR5jErfeiAxb6UWWaVb K7yBwLHG6V8o3iuL5gHk5uRypexusZ1eAFpK65oydE4TED+aR65rg7KDxcikjdPIi/N9 QBX1a1iy/ofyAY3Txhh3N5LIOgArXjClFkGYOQCmEzBUA1oA8eHNyZtDFzRJ/JZ0qTkN qVpahF93DV9neBwDKV2DsD5AatNDzbUE7xjbwLtAOfrRox9WkyXn7KD9/7QwKlkH9tVb 849ysY7RpAHZE3Yw8F7zl88hghgSx3eIwgbDU1iZ6rv0vCeknV+AEUb5m/T/QiaFXZ0r o11A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=kIHyqH8J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id bs1si3390046edb.64.2021.03.24.20.08.37; Wed, 24 Mar 2021 20:09:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=kIHyqH8J; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235941AbhCXOFZ (ORCPT + 99 others); Wed, 24 Mar 2021 10:05:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235937AbhCXOFN (ORCPT ); Wed, 24 Mar 2021 10:05:13 -0400 Received: from mail-oi1-x22f.google.com (mail-oi1-x22f.google.com [IPv6:2607:f8b0:4864:20::22f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8BC61C0613DE for ; Wed, 24 Mar 2021 07:05:13 -0700 (PDT) Received: by mail-oi1-x22f.google.com with SMTP id n8so20881643oie.10 for ; Wed, 24 Mar 2021 07:05:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=OfhOIdD0/JF1R4rl2yl8LbcQIZX0RUkjo+PIbGE7ciE=; b=kIHyqH8JFqLF0l4tVjAXu/sDM7iO8ss5W7oPbFSR+Bn7bdjw8XPZ8DzVZ0pXACYIug qej0C40RTpmUdDOXTstZhp7o/4HIfBz5cmPb7OdHwtnOA1D17xLmO8kfJmUZpflPVgC6 uE+W69lYB6c55FX+05RO8s69fjyyAw+ZxaUGJQiU99Ad6F4PLxJ2iYJgPcpew1hynsfq D3uO41v+JiL2vRWHp1vkjYLUNfx3T1jM9iiCUo0Tj904SMJVraupg67zLibhTU+MIVYm nB5vdFrZq9zkoHPiuSNX2xc4DdZ+vBuSVbLLitsupYGNTzEFGGsjHhxTxjsREvVYkR1k JpPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=OfhOIdD0/JF1R4rl2yl8LbcQIZX0RUkjo+PIbGE7ciE=; b=oPSAiBGWYa63owWBlD8E7rh+9tEDZOjYe/xYQUPSmGeivyxg/OlR6Ii+BiFAOHoTek wfzsOyKMZ+xgv23TSs1GiKmH8Mp/aNJGRIpatr5mEQFYlTjzwnAZ+COBJk1c2MjVvILg B9eSFswAxqZiyb7WJQF37C51uVZnpNcHfmEE3M+m0I6xMaG5IIiGjzFO57Oa8cE4JLha Ofm4BSgO8L80h/afBoPZHRnRNQJQmuquZWjAxeOagX3aPjXXDwurS5Bdl1NISI1lPClT 5TVe4kw0JyGdZhEwvbgfKxlXgTNywKZiUO81aMngSVi5ae++AKxGPon3kgcHUB+CUMGd UAKQ== X-Gm-Message-State: AOAM533N705OJXCGrmRlJWKaAypff+bRDduhUcgnSbUWWUvebh6DbxAK A+4frYd2Qqsx8NXRm+QmZSSISg/WVMdQrDfdweOhsQ== X-Received: by 2002:aca:44d6:: with SMTP id r205mr2482806oia.172.1616594712647; Wed, 24 Mar 2021 07:05:12 -0700 (PDT) MIME-Version: 1.0 References: <20210324112503.623833-1-elver@google.com> <20210324112503.623833-8-elver@google.com> In-Reply-To: From: Marco Elver Date: Wed, 24 Mar 2021 15:05:01 +0100 Message-ID: Subject: Re: [PATCH v3 07/11] perf: Add breakpoint information to siginfo on SIGTRAP To: Peter Zijlstra Cc: Alexander Shishkin , Arnaldo Carvalho de Melo , Ingo Molnar , Jiri Olsa , Mark Rutland , Namhyung Kim , Thomas Gleixner , Alexander Potapenko , Al Viro , Arnd Bergmann , Christian Brauner , Dmitry Vyukov , Jann Horn , Jens Axboe , Matt Morehouse , Peter Collingbourne , Ian Rogers , kasan-dev , linux-arch , linux-fsdevel , LKML , "the arch/x86 maintainers" , "open list:KERNEL SELFTEST FRAMEWORK" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, 24 Mar 2021 at 15:01, Peter Zijlstra wrote: > > One last try, I'll leave it alone now, I promise :-) This looks like it does what you suggested, thanks! :-) I'll still need to think about it, because of the potential problem with modify-signal-races and what the user's synchronization story would look like then. > --- a/include/linux/perf_event.h > +++ b/include/linux/perf_event.h > @@ -778,6 +778,9 @@ struct perf_event { > void *security; > #endif > struct list_head sb_list; > + > + unsigned long si_uattr; > + unsigned long si_data; > #endif /* CONFIG_PERF_EVENTS */ > }; > > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -5652,13 +5652,17 @@ static long _perf_ioctl(struct perf_even > return perf_event_query_prog_array(event, (void __user *)arg); > > case PERF_EVENT_IOC_MODIFY_ATTRIBUTES: { > + struct perf_event_attr __user *uattr; > struct perf_event_attr new_attr; > - int err = perf_copy_attr((struct perf_event_attr __user *)arg, > - &new_attr); > + int err; > > + uattr = (struct perf_event_attr __user *)arg; > + err = perf_copy_attr(uattr, &new_attr); > if (err) > return err; > > + event->si_uattr = (unsigned long)uattr; > + > return perf_event_modify_attr(event, &new_attr); > } > default: > @@ -6399,7 +6403,12 @@ static void perf_sigtrap(struct perf_eve > clear_siginfo(&info); > info.si_signo = SIGTRAP; > info.si_code = TRAP_PERF; > - info.si_errno = event->attr.type; > + info.si_addr = (void *)event->si_data; > + > + info.si_perf = event->si_uattr; > + if (event->parent) > + info.si_perf = event->parent->si_uattr; > + > force_sig_info(&info); > } > > @@ -6414,8 +6423,8 @@ static void perf_pending_event_disable(s > WRITE_ONCE(event->pending_disable, -1); > > if (event->attr.sigtrap) { > - atomic_set(&event->event_limit, 1); /* rearm event */ > perf_sigtrap(event); > + atomic_set_release(&event->event_limit, 1); /* rearm event */ > return; > } > > @@ -9121,6 +9130,7 @@ static int __perf_event_overflow(struct > if (events && atomic_dec_and_test(&event->event_limit)) { > ret = 1; > event->pending_kill = POLL_HUP; > + event->si_data = data->addr; > > perf_event_disable_inatomic(event); > } > @@ -12011,6 +12021,8 @@ SYSCALL_DEFINE5(perf_event_open, > goto err_task; > } > > + event->si_uattr = (unsigned long)attr_uptr; > + > if (is_sampling_event(event)) { > if (event->pmu->capabilities & PERF_PMU_CAP_NO_INTERRUPT) { > err = -EOPNOTSUPP;