Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp173487pxy; Tue, 20 Apr 2021 15:47:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwu+8CjnkYurPNsmIjVq0dsi/lup4aHaRb1hc8Y32oSr44JK2h3Y0RaB/Vq73aQKqOSXPOL X-Received: by 2002:a05:6402:1157:: with SMTP id g23mr34916103edw.303.1618958852156; Tue, 20 Apr 2021 15:47:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618958852; cv=none; d=google.com; s=arc-20160816; b=HHyiFyRr5kmOyFr0HND4GQFJ5z7VDCVDTbFGSvuBwBlQyGDumhfKUf26ZjF6Dq4r+o j/RIWFIjH+YGxepjUmuhoUD98n+nkz9W/e0wIjewaHDGROq6hQfZZWkPRO4dPeFWEIuP oJwpupbBzdi55s9cd7erCAuiEvsrMX35mOBx1mc70lmX36lkWvl5KUibWQNIg5uALDvn M1nqg++o08TFt49ahdgCHFZGH35y7/zPMFdyMiptLoInfh6b2u69hqXTj7JrLho+72Ia RNO0fW+RJIOjdkyJKU7tjaYIm7KjypPTZKvNw3AkjA6l4QNKs3229QdGq06Qki3ufkmE WBNg== 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=Cqcr/bWRc5duDemxdRvUOo4OnGCAh1SF+Fi9sGC5Wd8=; b=ptX9y2C6qHX3bOWLmL4zA9ikd8lYtrt8IkhLgHJZrLbY/L7BjkKcM3JvJvbTpAxBoE 6viipV7ZzpGUs6cis5GpqcXte34h4R7I87k64W+6QbcOKi8oMPrL+2mENdHX6okzTplY NM4+kP1vPmbQvlV0DkO7TcvPHqqaA3ps458fPQ+WjBaMBU5hludWqp5l6oPBFAy03Dsq wu+Z2chYnmQKaQpiJ5G64pBpNTNDcvWM2PhX0FxUqrYDYTuTUSM1Udb3mnSe0J1sDwKW RXWPSPNr36vNYSgW7F3DxhsEf2v1t6drvRwshvyMDE1Fhu4XCN/B82Zyt3axnG/pOu4a MGdg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b="s/ZBszYf"; 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 dn6si297486edb.367.2021.04.20.15.46.43; Tue, 20 Apr 2021 15:47:32 -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="s/ZBszYf"; 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 S234276AbhDTWnp (ORCPT + 99 others); Tue, 20 Apr 2021 18:43:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47930 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233964AbhDTWno (ORCPT ); Tue, 20 Apr 2021 18:43:44 -0400 Received: from mail-ot1-x32d.google.com (mail-ot1-x32d.google.com [IPv6:2607:f8b0:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5152C06138B for ; Tue, 20 Apr 2021 15:43:10 -0700 (PDT) Received: by mail-ot1-x32d.google.com with SMTP id f75-20020a9d03d10000b0290280def9ab76so32189364otf.12 for ; Tue, 20 Apr 2021 15:43:10 -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=Cqcr/bWRc5duDemxdRvUOo4OnGCAh1SF+Fi9sGC5Wd8=; b=s/ZBszYfUDnLnbfPXzdmgOC0AnAVPWMWphCCaPB1wr9OtDId6AXBjvncMUDxH8+wsX 0OBlqVfrd2e1MFxKryblRftDWNJxbCT4oV7oK3gnxp130xBwTnpYSh2wIZXWcTfJl+6z QVj4hT/U7jZceybRfsE6Gs8SXLsydBXiNxAFKdebxgtG0Ei7zOC1AgbLSZAd0+xn0p1l N1GRfnmYbReeGEAUp33wNbxTgxdMH04yXetwt2wbkK7imPuSQCqjZPE/JomkwarYg4f2 kEcBq5B6+Wc8W8+f0m+LNHvt3LBakGCAis5XUuASYDennQkK1eJ5u/9DpZ7MuLS1wGpI SjzA== 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=Cqcr/bWRc5duDemxdRvUOo4OnGCAh1SF+Fi9sGC5Wd8=; b=YykN88QAYpwrH5sFwKaqr0weJoUFpNfAWSblHas8FsRAmexAa2esTYrTHVuzKDHLLC IVMIB94IMWzaUEMccnNqrlQWkvXhqHjkyqpiM6If8Mygz53TUdxMn1lz3rg/9DSccn5v osBq1OF7rNMU+9uThlBJ+UzSbrMy772aCKcoaQfxQN0D39RcjEMVCsYI2ylFH0OfV/pf 4IWknHhHCtwfp2mmebiDKF0uLBESXhVSiZp+zG086IP1mQUABAmMjF+8HAa+qpiKfOq1 g1CwfUigueTebhiE0QHSOL8E3lMPPAyiZBhW7XEaAImlq+a92WuJ/iX2LXztEygEeNnI YNTg== X-Gm-Message-State: AOAM533iDxuXKwABLhLE0Zr16/0KYZKx9kYRs0TYoYQdcOh/l5310/sM hx0qKhqbwT1bYeo5kmOF3T9RjR6YtzfzJDmyAdVgyw== X-Received: by 2002:a9d:1ea9:: with SMTP id n38mr16170709otn.233.1618958589742; Tue, 20 Apr 2021 15:43:09 -0700 (PDT) MIME-Version: 1.0 References: <20210408103605.1676875-1-elver@google.com> <20210408103605.1676875-6-elver@google.com> <1fbf3429-42e5-0959-9a5c-91de80f02b6a@samsung.com> In-Reply-To: <1fbf3429-42e5-0959-9a5c-91de80f02b6a@samsung.com> From: Marco Elver Date: Wed, 21 Apr 2021 00:42:58 +0200 Message-ID: Subject: Re: [PATCH v4 05/10] signal: Introduce TRAP_PERF si_code and si_perf to siginfo To: Marek Szyprowski Cc: Peter Zijlstra , 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 , Oleg Nesterov , kasan-dev , linux-arch , linux-fsdevel , LKML , "the arch/x86 maintainers" , "open list:KERNEL SELFTEST FRAMEWORK" , Geert Uytterhoeven , Bartlomiej Zolnierkiewicz Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 20 Apr 2021 at 23:26, Marek Szyprowski wrote: > > Hi Marco, > > On 08.04.2021 12:36, Marco Elver wrote: > > Introduces the TRAP_PERF si_code, and associated siginfo_t field > > si_perf. These will be used by the perf event subsystem to send signals > > (if requested) to the task where an event occurred. > > > > Acked-by: Geert Uytterhoeven # m68k > > Acked-by: Arnd Bergmann # asm-generic > > Signed-off-by: Marco Elver > > This patch landed in linux-next as commit fb6cc127e0b6 ("signal: > Introduce TRAP_PERF si_code and si_perf to siginfo"). It causes > regression on my test systems (arm 32bit and 64bit). Most systems fails > to boot in the given time frame. I've observed that there is a timeout > waiting for udev to populate /dev and then also during the network > interfaces configuration. Reverting this commit, together with > 97ba62b27867 ("perf: Add support for SIGTRAP on perf events") to let it > compile, on top of next-20210420 fixes the issue. Thanks, this is weird for sure and nothing in particular stands out. I have questions: -- Can you please share your config? -- Also, can you share how you run this? Can it be reproduced in qemu? -- How did you derive this patch to be at fault? Why not just 97ba62b27867, given you also need to revert it? If you are unsure which patch exactly it is, can you try just reverting 97ba62b27867 and see what happens? Thanks, -- Marco > > --- > > arch/m68k/kernel/signal.c | 3 +++ > > arch/x86/kernel/signal_compat.c | 5 ++++- > > fs/signalfd.c | 4 ++++ > > include/linux/compat.h | 2 ++ > > include/linux/signal.h | 1 + > > include/uapi/asm-generic/siginfo.h | 6 +++++- > > include/uapi/linux/signalfd.h | 4 +++- > > kernel/signal.c | 11 +++++++++++ > > 8 files changed, 33 insertions(+), 3 deletions(-) > > > > diff --git a/arch/m68k/kernel/signal.c b/arch/m68k/kernel/signal.c > > index 349570f16a78..a4b7ee1df211 100644 > > --- a/arch/m68k/kernel/signal.c > > +++ b/arch/m68k/kernel/signal.c > > @@ -622,6 +622,9 @@ static inline void siginfo_build_tests(void) > > /* _sigfault._addr_pkey */ > > BUILD_BUG_ON(offsetof(siginfo_t, si_pkey) != 0x12); > > > > + /* _sigfault._perf */ > > + BUILD_BUG_ON(offsetof(siginfo_t, si_perf) != 0x10); > > + > > /* _sigpoll */ > > BUILD_BUG_ON(offsetof(siginfo_t, si_band) != 0x0c); > > BUILD_BUG_ON(offsetof(siginfo_t, si_fd) != 0x10); > > diff --git a/arch/x86/kernel/signal_compat.c b/arch/x86/kernel/signal_compat.c > > index a5330ff498f0..0e5d0a7e203b 100644 > > --- a/arch/x86/kernel/signal_compat.c > > +++ b/arch/x86/kernel/signal_compat.c > > @@ -29,7 +29,7 @@ static inline void signal_compat_build_tests(void) > > BUILD_BUG_ON(NSIGFPE != 15); > > BUILD_BUG_ON(NSIGSEGV != 9); > > BUILD_BUG_ON(NSIGBUS != 5); > > - BUILD_BUG_ON(NSIGTRAP != 5); > > + BUILD_BUG_ON(NSIGTRAP != 6); > > BUILD_BUG_ON(NSIGCHLD != 6); > > BUILD_BUG_ON(NSIGSYS != 2); > > > > @@ -138,6 +138,9 @@ static inline void signal_compat_build_tests(void) > > BUILD_BUG_ON(offsetof(siginfo_t, si_pkey) != 0x20); > > BUILD_BUG_ON(offsetof(compat_siginfo_t, si_pkey) != 0x14); > > > > + BUILD_BUG_ON(offsetof(siginfo_t, si_perf) != 0x18); > > + BUILD_BUG_ON(offsetof(compat_siginfo_t, si_perf) != 0x10); > > + > > CHECK_CSI_OFFSET(_sigpoll); > > CHECK_CSI_SIZE (_sigpoll, 2*sizeof(int)); > > CHECK_SI_SIZE (_sigpoll, 4*sizeof(int)); > > diff --git a/fs/signalfd.c b/fs/signalfd.c > > index 456046e15873..040a1142915f 100644 > > --- a/fs/signalfd.c > > +++ b/fs/signalfd.c > > @@ -134,6 +134,10 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, > > #endif > > new.ssi_addr_lsb = (short) kinfo->si_addr_lsb; > > break; > > + case SIL_PERF_EVENT: > > + new.ssi_addr = (long) kinfo->si_addr; > > + new.ssi_perf = kinfo->si_perf; > > + break; > > case SIL_CHLD: > > new.ssi_pid = kinfo->si_pid; > > new.ssi_uid = kinfo->si_uid; > > diff --git a/include/linux/compat.h b/include/linux/compat.h > > index 6e65be753603..c8821d966812 100644 > > --- a/include/linux/compat.h > > +++ b/include/linux/compat.h > > @@ -236,6 +236,8 @@ typedef struct compat_siginfo { > > char _dummy_pkey[__COMPAT_ADDR_BND_PKEY_PAD]; > > u32 _pkey; > > } _addr_pkey; > > + /* used when si_code=TRAP_PERF */ > > + compat_u64 _perf; > > }; > > } _sigfault; > > > > diff --git a/include/linux/signal.h b/include/linux/signal.h > > index 205526c4003a..1e98548d7cf6 100644 > > --- a/include/linux/signal.h > > +++ b/include/linux/signal.h > > @@ -43,6 +43,7 @@ enum siginfo_layout { > > SIL_FAULT_MCEERR, > > SIL_FAULT_BNDERR, > > SIL_FAULT_PKUERR, > > + SIL_PERF_EVENT, > > SIL_CHLD, > > SIL_RT, > > SIL_SYS, > > diff --git a/include/uapi/asm-generic/siginfo.h b/include/uapi/asm-generic/siginfo.h > > index d2597000407a..d0bb9125c853 100644 > > --- a/include/uapi/asm-generic/siginfo.h > > +++ b/include/uapi/asm-generic/siginfo.h > > @@ -91,6 +91,8 @@ union __sifields { > > char _dummy_pkey[__ADDR_BND_PKEY_PAD]; > > __u32 _pkey; > > } _addr_pkey; > > + /* used when si_code=TRAP_PERF */ > > + __u64 _perf; > > }; > > } _sigfault; > > > > @@ -155,6 +157,7 @@ typedef struct siginfo { > > #define si_lower _sifields._sigfault._addr_bnd._lower > > #define si_upper _sifields._sigfault._addr_bnd._upper > > #define si_pkey _sifields._sigfault._addr_pkey._pkey > > +#define si_perf _sifields._sigfault._perf > > #define si_band _sifields._sigpoll._band > > #define si_fd _sifields._sigpoll._fd > > #define si_call_addr _sifields._sigsys._call_addr > > @@ -253,7 +256,8 @@ typedef struct siginfo { > > #define TRAP_BRANCH 3 /* process taken branch trap */ > > #define TRAP_HWBKPT 4 /* hardware breakpoint/watchpoint */ > > #define TRAP_UNK 5 /* undiagnosed trap */ > > -#define NSIGTRAP 5 > > +#define TRAP_PERF 6 /* perf event with sigtrap=1 */ > > +#define NSIGTRAP 6 > > > > /* > > * There is an additional set of SIGTRAP si_codes used by ptrace > > diff --git a/include/uapi/linux/signalfd.h b/include/uapi/linux/signalfd.h > > index 83429a05b698..7e333042c7e3 100644 > > --- a/include/uapi/linux/signalfd.h > > +++ b/include/uapi/linux/signalfd.h > > @@ -39,6 +39,8 @@ struct signalfd_siginfo { > > __s32 ssi_syscall; > > __u64 ssi_call_addr; > > __u32 ssi_arch; > > + __u32 __pad3; > > + __u64 ssi_perf; > > > > /* > > * Pad strcture to 128 bytes. Remember to update the > > @@ -49,7 +51,7 @@ struct signalfd_siginfo { > > * comes out of a read(2) and we really don't want to have > > * a compat on read(2). > > */ > > - __u8 __pad[28]; > > + __u8 __pad[16]; > > }; > > > > > > diff --git a/kernel/signal.c b/kernel/signal.c > > index f2718350bf4b..7061e4957650 100644 > > --- a/kernel/signal.c > > +++ b/kernel/signal.c > > @@ -1199,6 +1199,7 @@ static inline bool has_si_pid_and_uid(struct kernel_siginfo *info) > > case SIL_FAULT_MCEERR: > > case SIL_FAULT_BNDERR: > > case SIL_FAULT_PKUERR: > > + case SIL_PERF_EVENT: > > case SIL_SYS: > > ret = false; > > break; > > @@ -2531,6 +2532,7 @@ static void hide_si_addr_tag_bits(struct ksignal *ksig) > > case SIL_FAULT_MCEERR: > > case SIL_FAULT_BNDERR: > > case SIL_FAULT_PKUERR: > > + case SIL_PERF_EVENT: > > ksig->info.si_addr = arch_untagged_si_addr( > > ksig->info.si_addr, ksig->sig, ksig->info.si_code); > > break; > > @@ -3341,6 +3343,10 @@ void copy_siginfo_to_external32(struct compat_siginfo *to, > > #endif > > to->si_pkey = from->si_pkey; > > break; > > + case SIL_PERF_EVENT: > > + to->si_addr = ptr_to_compat(from->si_addr); > > + to->si_perf = from->si_perf; > > + break; > > case SIL_CHLD: > > to->si_pid = from->si_pid; > > to->si_uid = from->si_uid; > > @@ -3421,6 +3427,10 @@ static int post_copy_siginfo_from_user32(kernel_siginfo_t *to, > > #endif > > to->si_pkey = from->si_pkey; > > break; > > + case SIL_PERF_EVENT: > > + to->si_addr = compat_ptr(from->si_addr); > > + to->si_perf = from->si_perf; > > + break; > > case SIL_CHLD: > > to->si_pid = from->si_pid; > > to->si_uid = from->si_uid; > > @@ -4601,6 +4611,7 @@ static inline void siginfo_buildtime_checks(void) > > CHECK_OFFSET(si_lower); > > CHECK_OFFSET(si_upper); > > CHECK_OFFSET(si_pkey); > > + CHECK_OFFSET(si_perf); > > > > /* sigpoll */ > > CHECK_OFFSET(si_band); > > Best regards > -- > Marek Szyprowski, PhD > Samsung R&D Institute Poland >