From patchwork Wed Apr 26 17:17:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87908 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp397648vqo; Wed, 26 Apr 2023 10:19:35 -0700 (PDT) X-Google-Smtp-Source: AKy350Y+qKijRtYhsfoGqKzkRmHWlo79wXZLy+Gxlq8396rbqz0Pd7Qj4DiZmz1ZobqhAieR2+/q X-Received: by 2002:a17:902:da90:b0:19e:500b:517a with SMTP id j16-20020a170902da9000b0019e500b517amr24466217plx.69.1682529575084; Wed, 26 Apr 2023 10:19:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529575; cv=none; d=google.com; s=arc-20160816; b=g/wC6wsqC5A4DEu91LnH/Q2IBKXXvH83AeSIKdAk4XGelt8fgxxmpvlQZb1zcesrUQ E0u/8SPjc5118v9rKXzPjs/GOYxbi7Ir2yljeqTp6CnKjjEJJEoXOgzUzZjYfK3xmcOZ j6YMHnWLR2CxoAorAUeMcbGEcXA5cB2gXpHSUDU5qM6LjFGmsXUSbJ8ZQkQmZ4VuHDM1 Wizg9QvMlpDpSpc2xCiFN40Tq31VrvG5KLugLiG277RlymgMcVliQ9/JT906ieLAonYM 1GM8KvrfsU9mID4QZmre33qjBFcOWzOZ/XYa7dGjTQXpxGYSk277dyKxZeBRrMeHBALO lrRw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=VuWudvhM9VbqbCC2DYMfBoL7XmT+9n6ha3SGTwIqBLM=; b=t3gtlVXJrwoATnFhl4N95Ab1jMWRsL3vLYiEgxSIR1Ju5+4hUkQt/JG+xvwEb/Z/Ef tDe+JuYt/oRlxD8Yij7aP55igkG2We6B89V7TVCF964EerhA7svz490T+KUevJXpqgOA fjyisecY7ouKiX+TWJ1Z3Xbaxj7l0eYPNIGXAnCv4Jaog5BW2rEOimripCQi8DqN0oG4 Pg85puc5KjGUiSEaDyWn9+5qR2z4+UXX8blUBz86MgRHF+I/rwinhqTLPUsQA0PLLopb u0JaGedvsiUrF+3c32lVCupfHVcCmKFjHhurzh3QujTbDGyKCJFc7KGgI6lfAuLoPDBv g4cg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w15-20020a1709026f0f00b001a95d336558si10940920plk.594.2023.04.26.10.19.19; Wed, 26 Apr 2023 10:19:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234812AbjDZRR4 (ORCPT + 99 others); Wed, 26 Apr 2023 13:17:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232184AbjDZRRw (ORCPT ); Wed, 26 Apr 2023 13:17:52 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 73486525D for ; Wed, 26 Apr 2023 10:17:51 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 08D1963049 for ; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 623EBC433D2; Wed, 26 Apr 2023 17:17:50 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim5-005KXf-1H; Wed, 26 Apr 2023 13:17:49 -0400 Message-ID: <20230426171749.213807197@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:04 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Zheng Yejian Subject: [for-next][PATCH 01/11] ring-buffer: Clearly check null ptr returned by rb_set_head_page() References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260131953486561?= X-GMAIL-MSGID: =?utf-8?q?1764260131953486561?= From: Zheng Yejian In error case, 'buffer_page' returned by rb_set_head_page() is NULL, currently check '&buffer_page->list' is equivalent to check 'buffer_page' due to 'list' is the first member of 'buffer_page', but suppose it is not some time, 'head_page' would be wild memory while check would be bypassed. Link: https://lore.kernel.org/linux-trace-kernel/20230414071729.57312-1-zhengyejian1@huawei.com Cc: Signed-off-by: Zheng Yejian Signed-off-by: Steven Rostedt (Google) --- kernel/trace/ring_buffer.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 2d5c3caff32d..58be5b409f72 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -2054,10 +2054,11 @@ rb_insert_pages(struct ring_buffer_per_cpu *cpu_buffer) struct list_head *head_page, *prev_page, *r; struct list_head *last_page, *first_page; struct list_head *head_page_with_bit; + struct buffer_page *hpage = rb_set_head_page(cpu_buffer); - head_page = &rb_set_head_page(cpu_buffer)->list; - if (!head_page) + if (!hpage) break; + head_page = &hpage->list; prev_page = head_page->prev; first_page = pages->next; From patchwork Wed Apr 26 17:17:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87917 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp402138vqo; Wed, 26 Apr 2023 10:28:12 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5dw19cNhzLWX67o1k9+Gb2RlzZ6yKSdlVTgr5YMOCKgAGOmWEAD3zdNPKcXoTgPlnita1H X-Received: by 2002:a05:6a20:7f87:b0:f6:d60d:dbbd with SMTP id d7-20020a056a207f8700b000f6d60ddbbdmr4755117pzj.61.1682530092015; Wed, 26 Apr 2023 10:28:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682530092; cv=none; d=google.com; s=arc-20160816; b=hAQ0niZqITQs2/irI9VqqYqJnkON8Ely2nYuRKHndgB+upZxSnTkr1pZXBiI+y+BGn eUEZgfA6mMgh+KxsjjHPHCjDNT7KPLrGIxCG8mqkcpbvZprm4b0VnxmmvkgAEMbTcZJD N1lW0vGVHI/brqPDyWCAol1XDFnoN/APkj0Z0/AAmatepNoubK/SGVVc73Tda9SlgzM9 6c0MPr39zEn5ky3j9UEhnxlqdjoyip34pKbE5wPHj/9XUt8lHUIKhNEP5nn+ZbLpwqk1 F/sVvYjm2CXzJi8Ws35oQsps5V00eJh2kgI/p0ffaztZG9P/LWSejamDoyePKy+K93KU zWrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=z9IUt9qimQj2Uynqb1bii58wtgNIXVOzrbIuW5hTnWo=; b=Vt2EauFKjmFNOvena9j1jUXt/SbjTNhOELUywApzjkpRzLcV9kVpbiJjqZ9fC8i5kR o4ML2bsw3L2hqWb9p/IB6IPCybcgsKqkiVYHLbvHRewvhet8ARWsk08kQSnEEIk6cav1 VvNrpKrXh7VxjxI6ehxobbZw2E0O9l+rDMLBS4hHidymPrwQPiBqBrb7A3vyN1toSdJJ T3kV88ElsdJxzP6zUivRCmUCnfo0zTawe7riXt79b81Abi8zGWaMzUlr7jmGqpBleTR1 xVw3Y4zxfSjfjRFXOLXB8ALHmoW9rzcN2RdAteCyxOwNunv5wXKBI24G2eIrVT/27+Hy H9HQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i184-20020a6387c1000000b00525019d1f8bsi11090382pge.346.2023.04.26.10.27.53; Wed, 26 Apr 2023 10:28:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234835AbjDZRR6 (ORCPT + 99 others); Wed, 26 Apr 2023 13:17:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233187AbjDZRRw (ORCPT ); Wed, 26 Apr 2023 13:17:52 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9A8D955B1 for ; Wed, 26 Apr 2023 10:17:51 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 395F863153 for ; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 97BECC4339C; Wed, 26 Apr 2023 17:17:50 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim5-005KYD-1v; Wed, 26 Apr 2023 13:17:49 -0400 Message-ID: <20230426171749.416626191@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:05 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Beau Belgrave Subject: [for-next][PATCH 02/11] tracing/user_events: Set event filter_type from type References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260673565861271?= X-GMAIL-MSGID: =?utf-8?q?1764260673565861271?= From: Beau Belgrave Users expect that events can be filtered by the kernel. User events currently sets all event fields as FILTER_OTHER which limits to binary filters only. When strings are being used, functionality is reduced. Use filter_assign_type() to find the most appropriate filter type for each field in user events to ensure full kernel capabilities. Link: https://lkml.kernel.org/r/20230419214140.4158-2-beaub@linux.microsoft.com Signed-off-by: Beau Belgrave Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_events_user.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index cc8c6d8b69b5..eadb58a3efba 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -918,6 +918,9 @@ static int user_event_add_field(struct user_event *user, const char *type, field->is_signed = is_signed; field->filter_type = filter_type; + if (filter_type == FILTER_OTHER) + field->filter_type = filter_assign_type(type); + list_add(&field->link, &user->fields); /* From patchwork Wed Apr 26 17:17:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87910 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp397814vqo; Wed, 26 Apr 2023 10:19:51 -0700 (PDT) X-Google-Smtp-Source: AKy350aN3o2mc3KTwxGFw8xYpJiJbXe8Nl1BXDw8oHvz/zvJ9kc+NNtR0aDqP5Jj5dZ9dUDuT7aE X-Received: by 2002:a05:6a21:6da2:b0:f2:abec:709 with SMTP id wl34-20020a056a216da200b000f2abec0709mr23121517pzb.18.1682529591409; Wed, 26 Apr 2023 10:19:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529591; cv=none; d=google.com; s=arc-20160816; b=c+DZbqa7r2OGi0NOJkZAmMaRVs1ZjoIY1LnfimGzU4qjP0Dy2QCCMCNiLkPWc+4poG 28fBpM8eeeEf5sXGmyHMv/8D5RiSLf5hq+QROss9FP5kAZCD3lhycyrXWCE0s5mrBpOO 4PU+wHJAyE6OpnE2fSKP9UENUe2j0fNEldiKsI2jnm7uzKg6un1hZ/heBGMxnJohaAVt gdZvO6yxMcGGDckHKUJJDiOT3B0e+w77mQJfQlWVSS/NEOcRSVZGX3VbUImBLfe1iEGD jloGpL2I5ng7Qwl2Dgm0mebCmAxEQEVhBRyuIjHmlULe8iM4tIujtfI/My3Ftcmzs22Y VRfQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=YXgvoT1U8jK2S2CCgrOInywM62oMuI7rkuVMESDW5bk=; b=uQBktldumFIL/ZDi/hJMddJkRUj4MWuFLMfCg3U/OwYQcHk7FeSUUWF6n34dOg7Wpu f8nnySiA85v6YGGkGqprlHUb7wk/hnybaDfQXes3H00CJrQZtcltXfXIygzIcKJZORpF XDUSfXbdmcBBjmriq5335xDoy/SfD++2ZNe3sEFWydgYPjIr6aL/8lDPewhAZeeiGGwP pR2HJNj/tAjxvLM9BNClQNdNl1djijyfvvACqhD8yjPlEvxU/egGoaamMM4OT1WUIpQp OsdrD+Khd20zjUnnikLYgjHVoV8shlcUxVXKBiPLJ+fh0lMWDFwxRM0VDQr2uKCyOi6V cACw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f16-20020a63f110000000b0051b4eaac57esi16748736pgi.583.2023.04.26.10.19.36; Wed, 26 Apr 2023 10:19:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234893AbjDZRSF (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234698AbjDZRRw (ORCPT ); Wed, 26 Apr 2023 13:17:52 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C07D4659C for ; Wed, 26 Apr 2023 10:17:51 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 561556307A for ; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B93DDC433A0; Wed, 26 Apr 2023 17:17:50 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim5-005KYl-2a; Wed, 26 Apr 2023 13:17:49 -0400 Message-ID: <20230426171749.616376240@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:06 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Doug Cook , Beau Belgrave Subject: [for-next][PATCH 03/11] tracing: Fix print_fields() for __dyn_loc/__rel_loc References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260148811321160?= X-GMAIL-MSGID: =?utf-8?q?1764260148811321160?= From: Beau Belgrave Both print_fields() and print_array() do not handle if dynamic data ends at the last byte of the payload for both __dyn_loc and __rel_loc field types. For __rel_loc, the offset was off by 4 bytes, leading to incorrect strings and data being printed out. In print_array() the buffer pos was missed from being advanced, which results in the first payload byte being used as the offset base instead of the field offset. Advance __rel_loc offset by 4 to ensure correct offset and advance pos to the field offset to ensure correct data is displayed when printing arrays. Change >= to > when checking if data is in-bounds, since it's valid for dynamic data to include the last byte of the payload. Example outputs for event format: field:unsigned short common_type; offset:0; size:2; signed:0; field:unsigned char common_flags; offset:2; size:1; signed:0; field:unsigned char common_preempt_count; offset:3; size:1; signed:0; field:int common_pid; offset:4; size:4; signed:1; field:__rel_loc char text[]; offset:8; size:4; signed:1; Output before: tp_rel_loc: text= Output after: tp_rel_loc: text=Test Link: https://lkml.kernel.org/r/20230419214140.4158-3-beaub@linux.microsoft.com Fixes: 80a76994b2d8 ("tracing: Add "fields" option to show raw trace event fields") Reported-by: Doug Cook Signed-off-by: Beau Belgrave Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_output.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 780c6971c944..952cc8aa8e59 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -819,13 +819,15 @@ static void print_array(struct trace_iterator *iter, void *pos, len = *(int *)pos >> 16; if (field) - offset += field->offset; + offset += field->offset + sizeof(int); - if (offset + len >= iter->ent_size) { + if (offset + len > iter->ent_size) { trace_seq_puts(&iter->seq, ""); return; } + pos = (void *)iter->ent + offset; + for (i = 0; i < len; i++, pos++) { if (i) trace_seq_putc(&iter->seq, ','); @@ -861,9 +863,9 @@ static void print_fields(struct trace_iterator *iter, struct trace_event_call *c len = *(int *)pos >> 16; if (field->filter_type == FILTER_RDYN_STRING) - offset += field->offset; + offset += field->offset + sizeof(int); - if (offset + len >= iter->ent_size) { + if (offset + len > iter->ent_size) { trace_seq_puts(&iter->seq, ""); break; } From patchwork Wed Apr 26 17:17:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87909 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp397774vqo; Wed, 26 Apr 2023 10:19:47 -0700 (PDT) X-Google-Smtp-Source: AKy350bYXHeThYeDc/V5/vGowvgJG3GoIyTc/YXc1jIKZJrroTXlxheko1+9v5bAr9zBcBIMHoKr X-Received: by 2002:a05:6a21:798:b0:c6:c0c1:b1fe with SMTP id mg24-20020a056a21079800b000c6c0c1b1femr23561595pzb.57.1682529586809; Wed, 26 Apr 2023 10:19:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529586; cv=none; d=google.com; s=arc-20160816; b=F2WP3tHy0hIuekKvdqo4wvu3+MevCkXVYvI5DBJfC6uEXjDFvPZ34d8awKMzoKVJPV pB4B22x0VtJs6/RUT5yNImQEWQptfA2Y3vZ+W3Gu0Xlen+kA+7ez4mjcMt6ikol5H06H GoOdi3t1vDdtYcsrcEitQ1EL8Bl+iILDsSJd3+uIV8lg4jwgLKVVOPsiqwg+jmD1MkA3 nKTFdeCLLtReZ/dC/N2q3QDMyc2MAeE/f9A9YpxmORpAb2c0qeSU+5QEfV9LLZFdRKOd OpM5oz03cPIL7hTBot1fCmxDv8659dCd8LWBQDcSxe4LgKpG/FHp1HP4iSItSN/ZHtSU VY1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=Fj3O8Wkn1ABsQB0hg/xqdYc0OsL2aWiXoQtz2xhsL5g=; b=O9z/aTKg9UHRkSXRAO3wVm+lPWJ/v1MFbhrL4Povs6lHXezOGvCQ00osUAmTpJhFOn p7Jdqquv3yAro/neBXKD02OLZ0CjIGlHOffH7poEgjF9WUhC4tMMUxpIhRY/G48uvq0L n6kI5ELl3Lsq5vptrRJzhv23izoodUBDATZeMSK3lxJxQ0LRojOtNPxWKY5+Fj6E7lQq Wg50XdyZlxaGUIYsClAQUTdQGyZIsrIJEUHgAONFr+qDGHEdo0CvaUB9WYQ0vTiq4SzQ zb/CjuVFSSPfMeaYsn2UcEDVT8W/UBS38tjlBsALTOzTeMckJpznJbDM89s3o54UCAl6 QmZw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v20-20020a17090a899400b00246cad7fab9si16112013pjn.180.2023.04.26.10.19.31; Wed, 26 Apr 2023 10:19:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234867AbjDZRSC (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234139AbjDZRRw (ORCPT ); Wed, 26 Apr 2023 13:17:52 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C18965B7 for ; Wed, 26 Apr 2023 10:17:52 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 9BB9A636FF for ; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0FD34C433EF; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim6-005KZJ-02; Wed, 26 Apr 2023 13:17:50 -0400 Message-ID: <20230426171749.823208218@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:07 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Sergey Senozhatsky , Petr Mladek , Yosry Ahmed Subject: [for-next][PATCH 04/11] seq_buf: Add seq_buf_do_printk() helper References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260143959016385?= X-GMAIL-MSGID: =?utf-8?q?1764260143959016385?= From: Sergey Senozhatsky Sometimes we use seq_buf to format a string buffer, which we then pass to printk(). However, in certain situations the seq_buf string buffer can get too big, exceeding the PRINTKRB_RECORD_MAX bytes limit, and causing printk() to truncate the string. Add a new seq_buf helper. This helper prints the seq_buf string buffer line by line, using \n as a delimiter, rather than passing the whole string buffer to printk() at once. Link: https://lkml.kernel.org/r/20230415100110.1419872-1-senozhatsky@chromium.org Cc: Andrew Morton Signed-off-by: Sergey Senozhatsky Reviewed-by: Petr Mladek Tested-by: Yosry Ahmed Signed-off-by: Steven Rostedt (Google) --- include/linux/seq_buf.h | 2 ++ lib/seq_buf.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/include/linux/seq_buf.h b/include/linux/seq_buf.h index 5b31c5147969..515d7fcb9634 100644 --- a/include/linux/seq_buf.h +++ b/include/linux/seq_buf.h @@ -159,4 +159,6 @@ extern int seq_buf_bprintf(struct seq_buf *s, const char *fmt, const u32 *binary); #endif +void seq_buf_do_printk(struct seq_buf *s, const char *lvl); + #endif /* _LINUX_SEQ_BUF_H */ diff --git a/lib/seq_buf.c b/lib/seq_buf.c index 0a68f7aa85d6..45c450f423fa 100644 --- a/lib/seq_buf.c +++ b/lib/seq_buf.c @@ -93,6 +93,38 @@ int seq_buf_printf(struct seq_buf *s, const char *fmt, ...) } EXPORT_SYMBOL_GPL(seq_buf_printf); +/** + * seq_buf_do_printk - printk seq_buf line by line + * @s: seq_buf descriptor + * @lvl: printk level + * + * printk()-s a multi-line sequential buffer line by line. The function + * makes sure that the buffer in @s is nul terminated and safe to read + * as a string. + */ +void seq_buf_do_printk(struct seq_buf *s, const char *lvl) +{ + const char *start, *lf; + + if (s->size == 0 || s->len == 0) + return; + + seq_buf_terminate(s); + + start = s->buffer; + while ((lf = strchr(start, '\n'))) { + int len = lf - start + 1; + + printk("%s%.*s", lvl, len, start); + start = ++lf; + } + + /* No trailing LF */ + if (start < s->buffer + s->len) + printk("%s%s\n", lvl, start); +} +EXPORT_SYMBOL_GPL(seq_buf_do_printk); + #ifdef CONFIG_BINARY_PRINTF /** * seq_buf_bprintf - Write the printf string from binary arguments From patchwork Wed Apr 26 17:17:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87916 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp400993vqo; Wed, 26 Apr 2023 10:25:44 -0700 (PDT) X-Google-Smtp-Source: AKy350agsVyLVVBtmfnQPkHuCzRcHlXPJn5SHJ0HDcRvrnlRF0KLHBOjDNZbvMyPe5uaKr4WQ+IK X-Received: by 2002:a05:6a20:2d23:b0:f1:c63a:f7fa with SMTP id g35-20020a056a202d2300b000f1c63af7famr24319598pzl.15.1682529944133; Wed, 26 Apr 2023 10:25:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529944; cv=none; d=google.com; s=arc-20160816; b=ANckbTqLQFSRAhGASuvOqQHvG2N+7CL6+Bp9m1qzeBTklF3NWhdZxDgrf2A6P2W/ze 4fKvjsQHQbSCU9ufgPP4TWWHX+Wj8UILGqjD8TZYoV8og+b17jQws6XLfBEqfuXvCXRB EQlrKwV9kgnXt7TG9ellY5JImre2AZkdx8G/1lXSD6x3ygW/uYAVXfCj+GhzsZMbxJ9w xca1j+8RW99/+/zWQ8MTJCSiL/b/sPYyNaozrsWb45s268U12Kr0pkZykBC4I21YJjHj xa+YOOxepC2eSCu9MATpktbCnRRUiqOtSKjmeg466FTTI0xcaKhBsDN4nTalY7SFSCYA K7MQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=0d/Ih+W5YoZVKOdzntQXckNm4hZcyTWWgzAHP81u5Bs=; b=hh+f58YNrl9QIu8pyktvaVjKlv2E6ZR+QycPARwDbuc6KwaXDQyboMktmJtzeDC5db 2jK8wHBF7QW/+AXT8NNvSCnFmifcWABwYY02i8rHtZyFMrGoVG8Iq9l9gFzNPcpYP2fi zZxALRce0uoZ4Bqkp1lPxZMA6gqBI5CcueeK1YJ6y7Ud5k8U5gi7VwNKhBF76jC72TgM wCfwdTJxnuNzQuxivDE2frHxjV5758yAGiluMDUtpwZGZ7/152O8XirIGEdUhly1rYMm xVj0VrUbhYimsUh59WO796aGudPbVNDTpHtYrl6n1XokIu/LF4ivsFdDe2DUvydVwihi 0Phg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id bk13-20020a056a02028d00b005192652814bsi16584165pgb.541.2023.04.26.10.25.27; Wed, 26 Apr 2023 10:25:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234850AbjDZRSO (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234727AbjDZRRx (ORCPT ); Wed, 26 Apr 2023 13:17:53 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7034F6A54 for ; Wed, 26 Apr 2023 10:17:52 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id A31286370D for ; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 17ED6C433A4; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim6-005KZr-0g; Wed, 26 Apr 2023 13:17:50 -0400 Message-ID: <20230426171750.028699848@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:08 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Doug Cook , Beau Belgrave Subject: [for-next][PATCH 05/11] tracing/user_events: Ensure write index cannot be negative References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260518989107942?= X-GMAIL-MSGID: =?utf-8?q?1764260518989107942?= From: Beau Belgrave The write index indicates which event the data is for and accesses a per-file array. The index is passed by user processes during write() calls as the first 4 bytes. Ensure that it cannot be negative by returning -EINVAL to prevent out of bounds accesses. Update ftrace self-test to ensure this occurs properly. Link: https://lkml.kernel.org/r/20230425225107.8525-2-beaub@linux.microsoft.com Fixes: 7f5a08c79df3 ("user_events: Add minimal support for trace_event into ftrace") Reported-by: Doug Cook Signed-off-by: Beau Belgrave Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_events_user.c | 3 +++ tools/testing/selftests/user_events/ftrace_test.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index eadb58a3efba..546d47a57520 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -1824,6 +1824,9 @@ static ssize_t user_events_write_core(struct file *file, struct iov_iter *i) if (unlikely(copy_from_iter(&idx, sizeof(idx), i) != sizeof(idx))) return -EFAULT; + if (idx < 0) + return -EINVAL; + rcu_read_lock_sched(); refs = rcu_dereference_sched(info->refs); diff --git a/tools/testing/selftests/user_events/ftrace_test.c b/tools/testing/selftests/user_events/ftrace_test.c index aceafacfb126..91272f9d6fce 100644 --- a/tools/testing/selftests/user_events/ftrace_test.c +++ b/tools/testing/selftests/user_events/ftrace_test.c @@ -296,6 +296,11 @@ TEST_F(user, write_events) { ASSERT_NE(-1, writev(self->data_fd, (const struct iovec *)io, 3)); after = trace_bytes(); ASSERT_GT(after, before); + + /* Negative index should fail with EINVAL */ + reg.write_index = -1; + ASSERT_EQ(-1, writev(self->data_fd, (const struct iovec *)io, 3)); + ASSERT_EQ(EINVAL, errno); } TEST_F(user, write_fault) { From patchwork Wed Apr 26 17:17:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87913 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp398831vqo; Wed, 26 Apr 2023 10:21:41 -0700 (PDT) X-Google-Smtp-Source: AKy350Zmt/H1lPq9KRMhKwX/BrV5sXLHjE1WbWQqZPgVPF/EatyyeRKsikrQK5bUW9B+KKvqVfg3 X-Received: by 2002:a17:903:294c:b0:1a2:23f7:20f with SMTP id li12-20020a170903294c00b001a223f7020fmr18341955plb.28.1682529700828; Wed, 26 Apr 2023 10:21:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529700; cv=none; d=google.com; s=arc-20160816; b=fKuwQizjOFD3qUMjKU57VM7VxNPgSVO8K+b98nrymP1U22iYFwCWL5yj51cttKO+++ 8iJKZ59uqRIRZ/rcJifOSw0qgLxAZ4MN3YFZ10B1JwUMqN79JB5iAcRtc3+kMcUiqz8O /iAe16u5HzQEPtQLbH7yYbq4RhnMv71KXd/kBl4eWt13IPPF0nVLkrCWojA/FPe/t94H APmsa/x9s33ktUYx6oaL+mx6E8ZHg+SUCoCYb8N0uDMluDZzSyfivQUD/S2w/FdCBGv2 FSSovtTCGXAGz5vn89ndE1Ypb1bu8yqrbi+kFbTB9WmmHw55uV56oQMk8PXj2HnaFAl5 CwgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=lWnb4R9naH/p7fwoi1cohkC7ysD3Trv1o3hqkU6N3ko=; b=tflghLJNmnRmAOKfBjILWQ4TOBb+bICs8Bcji6mwCfafNCTAs1d/iuKlSDp5nNqj4n SC5AdCNUeI+wX6X9e61PofCBk1iOzl/AX5w4haP79lc/8VEPnAj8whawSn1Q/8pdbrBF bX39Qh8ddwDNfVrywlwYqHQynqQlo4iyS+VRtqOl2g5uOz3te7Cup7QkgfGw3BrspW+i naKqr/2BGP5KK8M6eHvbZ40vSpn1+qdRYNaLkxQMOHhKe83sxeBSL1viVLfSCX6QcOiD umsad2w7b8UFYfqTVeckhFEOt0lbpOy9X7vySYdoHpPN3ooUVMBc8XK9pj5BqO2OAM/0 d0rQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f11-20020a170902ce8b00b001a6e5be610esi14106812plg.297.2023.04.26.10.21.25; Wed, 26 Apr 2023 10:21:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235036AbjDZRSR (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234751AbjDZRRx (ORCPT ); Wed, 26 Apr 2023 13:17:53 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9AD92701 for ; Wed, 26 Apr 2023 10:17:52 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id EAD4E62FEA for ; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5C5E9C433D2; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim6-005KaP-1K; Wed, 26 Apr 2023 13:17:50 -0400 Message-ID: <20230426171750.231148604@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:09 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Doug Cook , Beau Belgrave Subject: [for-next][PATCH 06/11] tracing/user_events: Ensure bit is cleared on unregister References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260263358123768?= X-GMAIL-MSGID: =?utf-8?q?1764260263358123768?= From: Beau Belgrave If an event is enabled and a user process unregisters user_events, the bit is left set. Fix this by always clearing the bit in the user process if unregister is successful. Update abi self-test to ensure this occurs properly. Link: https://lkml.kernel.org/r/20230425225107.8525-3-beaub@linux.microsoft.com Suggested-by: Doug Cook Signed-off-by: Beau Belgrave Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_events_user.c | 34 +++++++++++++++++++ .../testing/selftests/user_events/abi_test.c | 9 +++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index 546d47a57520..4f9ae63dfc5d 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -2149,6 +2149,35 @@ static long user_unreg_get(struct user_unreg __user *ureg, return ret; } +static int user_event_mm_clear_bit(struct user_event_mm *user_mm, + unsigned long uaddr, unsigned char bit) +{ + struct user_event_enabler enabler; + int result; + + memset(&enabler, 0, sizeof(enabler)); + enabler.addr = uaddr; + enabler.values = bit; +retry: + /* Prevents state changes from racing with new enablers */ + mutex_lock(&event_mutex); + + /* Force the bit to be cleared, since no event is attached */ + mmap_read_lock(user_mm->mm); + result = user_event_enabler_write(user_mm, &enabler, false); + mmap_read_unlock(user_mm->mm); + + mutex_unlock(&event_mutex); + + if (result) { + /* Attempt to fault-in and retry if it worked */ + if (!user_event_mm_fault_in(user_mm, uaddr)) + goto retry; + } + + return result; +} + /* * Unregisters an enablement address/bit within a task/user mm. */ @@ -2193,6 +2222,11 @@ static long user_events_ioctl_unreg(unsigned long uarg) mutex_unlock(&event_mutex); + /* Ensure bit is now cleared for user, regardless of event status */ + if (!ret) + ret = user_event_mm_clear_bit(mm, reg.disable_addr, + reg.disable_bit); + return ret; } diff --git a/tools/testing/selftests/user_events/abi_test.c b/tools/testing/selftests/user_events/abi_test.c index e0323d3777a7..5125c42efe65 100644 --- a/tools/testing/selftests/user_events/abi_test.c +++ b/tools/testing/selftests/user_events/abi_test.c @@ -109,13 +109,16 @@ TEST_F(user, enablement) { ASSERT_EQ(0, change_event(false)); ASSERT_EQ(0, self->check); - /* Should not change after disable */ + /* Ensure kernel clears bit after disable */ ASSERT_EQ(0, change_event(true)); ASSERT_EQ(1, self->check); ASSERT_EQ(0, reg_disable(&self->check, 0)); + ASSERT_EQ(0, self->check); + + /* Ensure doesn't change after unreg */ + ASSERT_EQ(0, change_event(true)); + ASSERT_EQ(0, self->check); ASSERT_EQ(0, change_event(false)); - ASSERT_EQ(1, self->check); - self->check = 0; } TEST_F(user, bit_sizes) { From patchwork Wed Apr 26 17:17:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87912 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp398604vqo; Wed, 26 Apr 2023 10:21:19 -0700 (PDT) X-Google-Smtp-Source: AKy350YjrHeCpahkenoV3lxF3XInI/rAolGsrNXmwpU5bl4lxJhP22q7kV8b1Dfn2YgHLpxYAXY8 X-Received: by 2002:a17:90b:1d09:b0:23b:2c51:6e7 with SMTP id on9-20020a17090b1d0900b0023b2c5106e7mr21507065pjb.21.1682529679323; Wed, 26 Apr 2023 10:21:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529679; cv=none; d=google.com; s=arc-20160816; b=LjKiXxJdSygh/5ZRzcD5nhjhvFeEzXMGDKKqTrXpnxkA7sFCrHU2JqTgYYUGcMNwLt e+SElJKvecz8xRXEQ39qw772PCF8Z37MbScc/5XT4gEpSiIbBr70XobMwGOwui18zuuD MKltuYUlKEaa8q8TAYuOkD2vzUfm+Z8ZnWHV/vr8hSFpxVI1xKu2/jwhoRClLcqwI32b g9VT/fINMu4LDG2UBcJC39vKOzkGP+V3aKzRG5SknoH76hoBKW5GBtBQev9/t283ttZc 8K9RWu3I711SHDacD/DC7UogfPHCC53cey2VmJz6EPkQBNAY9vU+D8gg9N6TBoeXT49B L4sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=eMFJKkZAh+5BjfNyliG6Cepuu7nurRdwsb+XvBbp8mg=; b=cEuOVHwyUTu3WDAyi0QN2DctokvwndES0ZMj0BXaa9IoQTjYZxj1XIlEyiVyFo00yM 2uAMGaM4I+UIEk8o+Z5v9r/T7/Pt9qpvXUzsSEGS+BBucLYUpqO0RJfuyOZZt4q6eqxU a83HSS6WiUNaVfIZQq4CjH5AN3rENN4DMuJBI4QdRgjelJLMKhxGmEMijUzOVQ1z7mdH pfPLFtfsCzD3RFW5gQZ0jH3V315J85IjkVkQERiAUc9TV/1Qd1d7YyxYFKYrDiwfeJzH UoAfcaYq+Q/eFZKWmenGtTViSyYufk/kHEEHw47lJ/aYIBKIrNR3VCGesOTfZzPPZKjv FkzA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f16-20020a63f110000000b0051b4eaac57esi16748736pgi.583.2023.04.26.10.21.03; Wed, 26 Apr 2023 10:21:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235129AbjDZRS0 (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234754AbjDZRRy (ORCPT ); Wed, 26 Apr 2023 13:17:54 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 22ABF76BC for ; Wed, 26 Apr 2023 10:17:53 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2718161B36 for ; Wed, 26 Apr 2023 17:17:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 91DF5C433AC; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim6-005Kaz-1z; Wed, 26 Apr 2023 13:17:50 -0400 Message-ID: <20230426171750.432594181@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:10 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Doug Cook , Beau Belgrave Subject: [for-next][PATCH 07/11] tracing/user_events: Prevent same address and bit per process References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260240903423299?= X-GMAIL-MSGID: =?utf-8?q?1764260240903423299?= From: Beau Belgrave User processes register an address and bit pair for events. If the same address and bit pair are registered multiple times in the same process, it can cause undefined behavior when events are enabled/disabled. When more than one are used, the bit could be turned off by another event being disabled, while the original event is still enabled. Prevent undefined behavior by checking the current mm to see if any event has already been registered for the address and bit pair. Return EADDRINUSE back to the user process if it's already being used. Update ftrace self-test to ensure this occurs properly. Link: https://lkml.kernel.org/r/20230425225107.8525-4-beaub@linux.microsoft.com Suggested-by: Doug Cook Signed-off-by: Beau Belgrave Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_events_user.c | 41 +++++++++++++++++++ .../selftests/user_events/ftrace_test.c | 9 +++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index 4f9ae63dfc5d..a29cd13caf55 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -419,6 +419,21 @@ static int user_event_enabler_write(struct user_event_mm *mm, return 0; } +static bool user_event_enabler_exists(struct user_event_mm *mm, + unsigned long uaddr, unsigned char bit) +{ + struct user_event_enabler *enabler; + struct user_event_enabler *next; + + list_for_each_entry_safe(enabler, next, &mm->enablers, link) { + if (enabler->addr == uaddr && + (enabler->values & ENABLE_VAL_BIT_MASK) == bit) + return true; + } + + return false; +} + static void user_event_enabler_update(struct user_event *user) { struct user_event_enabler *enabler; @@ -657,6 +672,22 @@ void user_event_mm_dup(struct task_struct *t, struct user_event_mm *old_mm) user_event_mm_remove(t); } +static bool current_user_event_enabler_exists(unsigned long uaddr, + unsigned char bit) +{ + struct user_event_mm *user_mm = current_user_event_mm(); + bool exists; + + if (!user_mm) + return false; + + exists = user_event_enabler_exists(user_mm, uaddr, bit); + + user_event_mm_put(user_mm); + + return exists; +} + static struct user_event_enabler *user_event_enabler_create(struct user_reg *reg, struct user_event *user, int *write_result) @@ -2048,6 +2079,16 @@ static long user_events_ioctl_reg(struct user_event_file_info *info, if (ret) return ret; + /* + * Prevent users from using the same address and bit multiple times + * within the same mm address space. This can cause unexpected behavior + * for user processes that is far easier to debug if this is explictly + * an error upon registering. + */ + if (current_user_event_enabler_exists((unsigned long)reg.enable_addr, + reg.enable_bit)) + return -EADDRINUSE; + name = strndup_user((const char __user *)(uintptr_t)reg.name_args, MAX_EVENT_DESC); diff --git a/tools/testing/selftests/user_events/ftrace_test.c b/tools/testing/selftests/user_events/ftrace_test.c index 91272f9d6fce..7c99cef94a65 100644 --- a/tools/testing/selftests/user_events/ftrace_test.c +++ b/tools/testing/selftests/user_events/ftrace_test.c @@ -219,7 +219,12 @@ TEST_F(user, register_events) { ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); ASSERT_EQ(0, reg.write_index); - /* Multiple registers should result in same index */ + /* Multiple registers to the same addr + bit should fail */ + ASSERT_EQ(-1, ioctl(self->data_fd, DIAG_IOCSREG, ®)); + ASSERT_EQ(EADDRINUSE, errno); + + /* Multiple registers to same name should result in same index */ + reg.enable_bit = 30; ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSREG, ®)); ASSERT_EQ(0, reg.write_index); @@ -242,6 +247,8 @@ TEST_F(user, register_events) { /* Unregister */ ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); + unreg.disable_bit = 30; + ASSERT_EQ(0, ioctl(self->data_fd, DIAG_IOCSUNREG, &unreg)); /* Delete should work only after close and unregister */ close(self->data_fd); From patchwork Wed Apr 26 17:17:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87923 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp404508vqo; Wed, 26 Apr 2023 10:32:18 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5olOvz2xQVv5So+yTA8I3BcyzGhwyiIiPv6PBDeZeJdsDZ2jWXDwI4CEkFvSO/O32hZTTb X-Received: by 2002:a05:6a21:9712:b0:f8:1904:532b with SMTP id ub18-20020a056a21971200b000f81904532bmr1980570pzb.21.1682530338650; Wed, 26 Apr 2023 10:32:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682530338; cv=none; d=google.com; s=arc-20160816; b=E83JnopISBv84+WEMPbKYktSUEXqBP4klfAsRDTjNbyN31tK/wm/iZ9a7p6ML9P6R2 GXbDCDHbB9QHL+pBEL4uhb3ngpyDgBbNZStgSLARMiNmJbM8ZLf99THwdxNTPlFhGyVi k6b3LcdsugOTr2eIb7LovL12sSQcTQNahTiNyOHqLxLYRePfL3iIMXZh1O4sZX0mEAT4 AvVZWKgOfPGKN02QVHIvOZiIEaBAXE5xeQWf+5IsvwXMDZ9cJHE2BZ7fSt8lhgwA+RsE 93x8Jxgw67GG6YC/9kj9HWkXYdpfr8DlC1uqzN2Qaaq30FH0ICbeuIJM1/MOiG914jxq 84gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=9fngIok6xSFOreRPx8/aXQ/2hCxe4crIgsh44I1mxz8=; b=Hks+nnHCaFGHfTIfrDGtoS1gj3z5EB4RyxOFq2kU6dnoRGVS4qfsH/w1W03XVTCd6D KoGPiIIZiQnv8bRMJuPJJd+xXOCDlz1PVUGYHJlz1+fbq/HrLBW9HhjGOCDvsECg+40D Pg4iomvxIcm5C2ny4jgPexk4bNaD50O2ZEloqT1C+w6FFISm4lWlRgmiiHOydFJgo4qh wKi2LFIuKk5bupVRhHBpDGtN7u+KENPy/9c5hpjXYTNXiPl9/nCBYieBIwjmELK1lbNs V/HGv9n1aziEw14TfF8uirwE780d57mNjEKT23Rt2UARYZeJ5ryaYsfNpAjOTNTHf6s2 MGOA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id 10-20020a63124a000000b0051f0d0d6359si12857079pgs.118.2023.04.26.10.32.03; Wed, 26 Apr 2023 10:32:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234903AbjDZRSH (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40628 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234750AbjDZRRx (ORCPT ); Wed, 26 Apr 2023 13:17:53 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70D11768F for ; Wed, 26 Apr 2023 10:17:52 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id D75036367A for ; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id B1DFEC433EF; Wed, 26 Apr 2023 17:17:51 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim6-005KbY-2e; Wed, 26 Apr 2023 13:17:50 -0400 Message-ID: <20230426171750.635695746@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:11 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Beau Belgrave Subject: [for-next][PATCH 08/11] tracing/user_events: Limit max fault-in attempts References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260932335692403?= X-GMAIL-MSGID: =?utf-8?q?1764260932335692403?= From: Beau Belgrave When event enablement changes, user_events attempts to update a bit in the user process. If a fault is hit, an attempt to fault-in the page and the write is retried if the page made it in. While this normally requires a couple attempts, it is possible a bad user process could attempt to cause infinite loops. Ensure fault-in attempts either sync or async are limited to a max of 10 attempts for each update. When the max is hit, return -EFAULT so another attempt is not made in all cases. Link: https://lkml.kernel.org/r/20230425225107.8525-5-beaub@linux.microsoft.com Suggested-by: Steven Rostedt (Google) Signed-off-by: Beau Belgrave Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_events_user.c | 49 +++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index a29cd13caf55..b1ecd7677642 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -123,6 +123,7 @@ struct user_event_enabler_fault { struct work_struct work; struct user_event_mm *mm; struct user_event_enabler *enabler; + int attempt; }; static struct kmem_cache *fault_cache; @@ -266,11 +267,19 @@ static void user_event_enabler_destroy(struct user_event_enabler *enabler) kfree(enabler); } -static int user_event_mm_fault_in(struct user_event_mm *mm, unsigned long uaddr) +static int user_event_mm_fault_in(struct user_event_mm *mm, unsigned long uaddr, + int attempt) { bool unlocked; int ret; + /* + * Normally this is low, ensure that it cannot be taken advantage of by + * bad user processes to cause excessive looping. + */ + if (attempt > 10) + return -EFAULT; + mmap_read_lock(mm->mm); /* Ensure MM has tasks, cannot use after exit_mm() */ @@ -289,7 +298,7 @@ static int user_event_mm_fault_in(struct user_event_mm *mm, unsigned long uaddr) static int user_event_enabler_write(struct user_event_mm *mm, struct user_event_enabler *enabler, - bool fixup_fault); + bool fixup_fault, int *attempt); static void user_event_enabler_fault_fixup(struct work_struct *work) { @@ -298,9 +307,10 @@ static void user_event_enabler_fault_fixup(struct work_struct *work) struct user_event_enabler *enabler = fault->enabler; struct user_event_mm *mm = fault->mm; unsigned long uaddr = enabler->addr; + int attempt = fault->attempt; int ret; - ret = user_event_mm_fault_in(mm, uaddr); + ret = user_event_mm_fault_in(mm, uaddr, attempt); if (ret && ret != -ENOENT) { struct user_event *user = enabler->event; @@ -329,7 +339,7 @@ static void user_event_enabler_fault_fixup(struct work_struct *work) if (!ret) { mmap_read_lock(mm->mm); - user_event_enabler_write(mm, enabler, true); + user_event_enabler_write(mm, enabler, true, &attempt); mmap_read_unlock(mm->mm); } out: @@ -341,7 +351,8 @@ static void user_event_enabler_fault_fixup(struct work_struct *work) } static bool user_event_enabler_queue_fault(struct user_event_mm *mm, - struct user_event_enabler *enabler) + struct user_event_enabler *enabler, + int attempt) { struct user_event_enabler_fault *fault; @@ -353,6 +364,7 @@ static bool user_event_enabler_queue_fault(struct user_event_mm *mm, INIT_WORK(&fault->work, user_event_enabler_fault_fixup); fault->mm = user_event_mm_get(mm); fault->enabler = enabler; + fault->attempt = attempt; /* Don't try to queue in again while we have a pending fault */ set_bit(ENABLE_VAL_FAULTING_BIT, ENABLE_BITOPS(enabler)); @@ -372,7 +384,7 @@ static bool user_event_enabler_queue_fault(struct user_event_mm *mm, static int user_event_enabler_write(struct user_event_mm *mm, struct user_event_enabler *enabler, - bool fixup_fault) + bool fixup_fault, int *attempt) { unsigned long uaddr = enabler->addr; unsigned long *ptr; @@ -383,6 +395,8 @@ static int user_event_enabler_write(struct user_event_mm *mm, lockdep_assert_held(&event_mutex); mmap_assert_locked(mm->mm); + *attempt += 1; + /* Ensure MM has tasks, cannot use after exit_mm() */ if (refcount_read(&mm->tasks) == 0) return -ENOENT; @@ -398,7 +412,7 @@ static int user_event_enabler_write(struct user_event_mm *mm, if (!fixup_fault) return -EFAULT; - if (!user_event_enabler_queue_fault(mm, enabler)) + if (!user_event_enabler_queue_fault(mm, enabler, *attempt)) pr_warn("user_events: Unable to queue fault handler\n"); return -EFAULT; @@ -439,15 +453,19 @@ static void user_event_enabler_update(struct user_event *user) struct user_event_enabler *enabler; struct user_event_mm *mm = user_event_mm_get_all(user); struct user_event_mm *next; + int attempt; while (mm) { next = mm->next; mmap_read_lock(mm->mm); rcu_read_lock(); - list_for_each_entry_rcu(enabler, &mm->enablers, link) - if (enabler->event == user) - user_event_enabler_write(mm, enabler, true); + list_for_each_entry_rcu(enabler, &mm->enablers, link) { + if (enabler->event == user) { + attempt = 0; + user_event_enabler_write(mm, enabler, true, &attempt); + } + } rcu_read_unlock(); mmap_read_unlock(mm->mm); @@ -695,6 +713,7 @@ static struct user_event_enabler struct user_event_enabler *enabler; struct user_event_mm *user_mm; unsigned long uaddr = (unsigned long)reg->enable_addr; + int attempt = 0; user_mm = current_user_event_mm(); @@ -715,7 +734,8 @@ static struct user_event_enabler /* Attempt to reflect the current state within the process */ mmap_read_lock(user_mm->mm); - *write_result = user_event_enabler_write(user_mm, enabler, false); + *write_result = user_event_enabler_write(user_mm, enabler, false, + &attempt); mmap_read_unlock(user_mm->mm); /* @@ -735,7 +755,7 @@ static struct user_event_enabler if (*write_result) { /* Attempt to fault-in and retry if it worked */ - if (!user_event_mm_fault_in(user_mm, uaddr)) + if (!user_event_mm_fault_in(user_mm, uaddr, attempt)) goto retry; kfree(enabler); @@ -2195,6 +2215,7 @@ static int user_event_mm_clear_bit(struct user_event_mm *user_mm, { struct user_event_enabler enabler; int result; + int attempt = 0; memset(&enabler, 0, sizeof(enabler)); enabler.addr = uaddr; @@ -2205,14 +2226,14 @@ static int user_event_mm_clear_bit(struct user_event_mm *user_mm, /* Force the bit to be cleared, since no event is attached */ mmap_read_lock(user_mm->mm); - result = user_event_enabler_write(user_mm, &enabler, false); + result = user_event_enabler_write(user_mm, &enabler, false, &attempt); mmap_read_unlock(user_mm->mm); mutex_unlock(&event_mutex); if (result) { /* Attempt to fault-in and retry if it worked */ - if (!user_event_mm_fault_in(user_mm, uaddr)) + if (!user_event_mm_fault_in(user_mm, uaddr, attempt)) goto retry; } From patchwork Wed Apr 26 17:17:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87911 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp398057vqo; Wed, 26 Apr 2023 10:20:14 -0700 (PDT) X-Google-Smtp-Source: AKy350Y217s0pNa9LOUmI+bekAoJcv7kTcbEmIx3hXdla4VeoBBCEibCGy0nOLW1kQvnzCDh7FmN X-Received: by 2002:a17:903:187:b0:1a9:3393:edcd with SMTP id z7-20020a170903018700b001a93393edcdmr26432998plg.54.1682529613741; Wed, 26 Apr 2023 10:20:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529613; cv=none; d=google.com; s=arc-20160816; b=oSTLHOEpqWqj4mRaGauzUuveQ57lPunyBfApJNM2fAuxr9KHGSyMKyOMPwr8UTkkdg QZZ9JyzlyaRBZWoGoBRt8+2y/A7Ukh2zm4RT/orSKLXnpb4RTVdAFK1Y/HxICE6erfTf kxtwGfDJS9HLwPh/J2LlUs4MGTTe/PGJdlqNcLYGdqbfxwSQBP5xTaB/i6mIRkQCbNxP LXAO4+HxwO/xmkDFy50yME73N0erOwTrOyKaC1/JkGGiwdOYck67fHd8JAsVHiwb4xE3 T8irKQeKSB9kv7NifANeus8+TtJEleaVRhP2HxxJHHRuEfOHtq8uCNOnVhD6qn2BSzU3 L+Gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=KckU3d5JwRHZgsa0RX44sxqcTs8PIRcRjFqgrVX9VnU=; b=QVzGEl9/RKAxq7o0Z4wYnJxUpO0yrexCzaWbKLUr9nT8yV2iqi1frMFNmqM7BJGXiQ pWtv1c9QEC2pC+9xV8Fam/nAJnOdinrRHQxLWBWNe+W9JEK9yEF7k6f8O0LB789V+kvx RuiipHxS0Cw1GRKJiiNaM8nqkSgRyyzhxq4ZfXRBTpIni1qlsuvY9ckQYmQFZO7f8T8M zOa2fmeOTQBrFPqB3T9hyNAe3mIszalOjK+fIaJqNMz5XFwZfZpPgHnJkSrP4RFIb+s9 AOxkuelza9VaXZSerUVOIZ29ceXnHGvdXK+FNvMVCK3HAVAZ6uLhUnihnB9Q6oxwxKL2 DRiA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ki6-20020a170903068600b001a9785282fbsi7711184plb.35.2023.04.26.10.19.55; Wed, 26 Apr 2023 10:20:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234916AbjDZRSK (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234745AbjDZRRx (ORCPT ); Wed, 26 Apr 2023 13:17:53 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA25D76A1 for ; Wed, 26 Apr 2023 10:17:52 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 2C1F663712 for ; Wed, 26 Apr 2023 17:17:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 07E1EC433EF; Wed, 26 Apr 2023 17:17:52 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim7-005Kc7-04; Wed, 26 Apr 2023 13:17:51 -0400 Message-ID: <20230426171750.842971434@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:12 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Hao Zeng Subject: [for-next][PATCH 09/11] recordmcount: Fix memory leaks in the uwrite function References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260172104867496?= X-GMAIL-MSGID: =?utf-8?q?1764260172104867496?= From: Hao Zeng Common realloc mistake: 'file_append' nulled but not freed upon failure Link: https://lkml.kernel.org/r/20230426010527.703093-1-zenghao@kylinos.cn Signed-off-by: Hao Zeng Suggested-by: Steven Rostedt Signed-off-by: Steven Rostedt (Google) --- scripts/recordmcount.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/recordmcount.c b/scripts/recordmcount.c index e30216525325..40ae6b2c7a6d 100644 --- a/scripts/recordmcount.c +++ b/scripts/recordmcount.c @@ -110,6 +110,7 @@ static ssize_t uwrite(void const *const buf, size_t const count) { size_t cnt = count; off_t idx = 0; + void *p = NULL; file_updated = 1; @@ -117,7 +118,10 @@ static ssize_t uwrite(void const *const buf, size_t const count) off_t aoffset = (file_ptr + count) - file_end; if (aoffset > file_append_size) { - file_append = realloc(file_append, aoffset); + p = realloc(file_append, aoffset); + if (!p) + free(file_append); + file_append = p; file_append_size = aoffset; } if (!file_append) { From patchwork Wed Apr 26 17:17:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87914 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp398911vqo; Wed, 26 Apr 2023 10:21:51 -0700 (PDT) X-Google-Smtp-Source: AKy350ZxMNRLUTT/PlEXdHg9M/NVSmHpRsKT9uTftCW8BN/iS3MuKRxc6A++DLxjIXkH6HAw2Ggi X-Received: by 2002:a17:903:2444:b0:19e:6cb9:4c8f with SMTP id l4-20020a170903244400b0019e6cb94c8fmr28193357pls.41.1682529711510; Wed, 26 Apr 2023 10:21:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682529711; cv=none; d=google.com; s=arc-20160816; b=bJr4dBwcvezlx3ppFbip2Mzcbvd8GN9/RmotrkoouDwwc7kiQIb0GceLEQPfLnv4Ci pHsnWleOfPLIkhCIQbCt13NB82NzqDOMCUiYHS4kiEKJ3zbp1k6NFHOkpMiBud7qA5T8 K4t15R7qOImLrpbFjVfK+MVojrC/BMNKQoEaESk9ja6UAUkz356uIqqyTsECMhW+Uz8r 6R9eIJWN+xWmze+8GUgiOtdbgmLAySuNHwzPkHokfaBZmTwUA6vzdQj3LjJbDZaKp9Y+ n73lVWveJXWM4Bah4/HfGx7AQyD0urNJnNa1p2Y5SVTnUFrRTGxsGjOXo+G24V/6FvT4 tGMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=jTKK9zrC+6RviLuT4xCTeYHT0VuBjna8rVVx135VUA0=; b=OI8BHas+xHtfnys7/Q2RdlNXAAs097F347R0oank8jR6M79aGD7nyJ6NR+lH8zqlsc iuWzycxtX/yzj+hiFCrwZhSwY+ozHMXgm23W7YHUIz6ZwH4+ziK+kziGtAb4Ng5zrU5T MlF0T3G3QLVZh0RXpqjkj8Se+h6pjxleMcfwRPdaEiG7DcO25WUmqp3nNBEC//e9JZgw VYP9YmAGod5K9MiYl3AYs/9B2hGnOyrDLlrdSoeLSpqOQVkFy+DmCYlDEWogU+VkgiCO 57eXyeb8jJ9dppZv2f0gidrJIUVA2MUIj7qrmoLFXFUfgbpwHBkvMkhcKwnh/DgnkCTP pZYQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id z7-20020a170903018700b001a996ae1bcfsi3557779plg.76.2023.04.26.10.21.36; Wed, 26 Apr 2023 10:21:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235072AbjDZRSU (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234756AbjDZRRy (ORCPT ); Wed, 26 Apr 2023 13:17:54 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 21883525D; Wed, 26 Apr 2023 10:17:53 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 5352F63706; Wed, 26 Apr 2023 17:17:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2D009C4339B; Wed, 26 Apr 2023 17:17:52 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim7-005Kcf-0k; Wed, 26 Apr 2023 13:17:51 -0400 Message-ID: <20230426171751.044554153@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:13 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , stable@vger.kernel.org, npiggin@gmail.com, Cheng-Jui Wang , Tze-nan Wu Subject: [for-next][PATCH 10/11] ring-buffer: Ensure proper resetting of atomic variables in ring_buffer_reset_online_cpus References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260274544850113?= X-GMAIL-MSGID: =?utf-8?q?1764260274544850113?= From: Tze-nan Wu In ring_buffer_reset_online_cpus, the buffer_size_kb write operation may permanently fail if the cpu_online_mask changes between two for_each_online_buffer_cpu loops. The number of increases and decreases on both cpu_buffer->resize_disabled and cpu_buffer->record_disabled may be inconsistent, causing some CPUs to have non-zero values for these atomic variables after the function returns. This issue can be reproduced by "echo 0 > trace" while hotplugging cpu. After reproducing success, we can find out buffer_size_kb will not be functional anymore. To prevent leaving 'resize_disabled' and 'record_disabled' non-zero after ring_buffer_reset_online_cpus returns, we ensure that each atomic variable has been set up before atomic_sub() to it. Link: https://lore.kernel.org/linux-trace-kernel/20230426062027.17451-1-Tze-nan.Wu@mediatek.com Cc: stable@vger.kernel.org Cc: Cc: npiggin@gmail.com Fixes: b23d7a5f4a07 ("ring-buffer: speed up buffer resets by avoiding synchronize_rcu for each CPU") Reviewed-by: Cheng-Jui Wang Signed-off-by: Tze-nan Wu Signed-off-by: Steven Rostedt (Google) --- kernel/trace/ring_buffer.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 58be5b409f72..9a0cb94c3972 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c @@ -5326,6 +5326,9 @@ void ring_buffer_reset_cpu(struct trace_buffer *buffer, int cpu) } EXPORT_SYMBOL_GPL(ring_buffer_reset_cpu); +/* Flag to ensure proper resetting of atomic variables */ +#define RESET_BIT (1 << 30) + /** * ring_buffer_reset_online_cpus - reset a ring buffer per CPU buffer * @buffer: The ring buffer to reset a per cpu buffer of @@ -5342,20 +5345,27 @@ void ring_buffer_reset_online_cpus(struct trace_buffer *buffer) for_each_online_buffer_cpu(buffer, cpu) { cpu_buffer = buffer->buffers[cpu]; - atomic_inc(&cpu_buffer->resize_disabled); + atomic_add(RESET_BIT, &cpu_buffer->resize_disabled); atomic_inc(&cpu_buffer->record_disabled); } /* Make sure all commits have finished */ synchronize_rcu(); - for_each_online_buffer_cpu(buffer, cpu) { + for_each_buffer_cpu(buffer, cpu) { cpu_buffer = buffer->buffers[cpu]; + /* + * If a CPU came online during the synchronize_rcu(), then + * ignore it. + */ + if (!(atomic_read(&cpu_buffer->resize_disabled) & RESET_BIT)) + continue; + reset_disabled_cpu_buffer(cpu_buffer); atomic_dec(&cpu_buffer->record_disabled); - atomic_dec(&cpu_buffer->resize_disabled); + atomic_sub(RESET_BIT, &cpu_buffer->resize_disabled); } mutex_unlock(&buffer->mutex); From patchwork Wed Apr 26 17:17:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steven Rostedt X-Patchwork-Id: 87919 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp402258vqo; Wed, 26 Apr 2023 10:28:26 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ6p9eF+KgdwvJyTTquiVBDspGNok+Pwi1jF6x8+dToL9DrDPQ7UNgrfQwSxEaLbrcnS7Uth X-Received: by 2002:a05:6a21:78a2:b0:f5:e533:4dc2 with SMTP id bf34-20020a056a2178a200b000f5e5334dc2mr4009302pzc.12.1682530106529; Wed, 26 Apr 2023 10:28:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682530106; cv=none; d=google.com; s=arc-20160816; b=a6j67fLsfx2bWySdJNemJ7fFxcutlB+07GZ0WM0Ki3z7RUOu1IPClrt/4gkcs9Gj/J ZI02oA5elC6GbVNO+xIPhoNACowcnWVoLgfehag9BHZ4o2M5Pvs8fp7H5nE5TnziYpZG Qz9CY2XXfx8/Ia3sjqzwoi+XpX7REYHLXA6rDasfQTujFODkEZlI3bfGcM629eexKLJr T64mtnRNdkBE3dB+LpQ71Xs4enRr96DfLupDj7kv/tYYY1RV+cROssN2/qke6/5r+LY1 62yfcbqT2lFnMx/yh4HD7cJuF4EUP37iLpQv9We2T1QLQZGUta11Y77iImUHrP6g+pbq YvNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:subject:cc:to:from:date :user-agent:message-id; bh=TQJ9p00iFocI28OHCIftCJJDIqwFBzYBlFI4SBfvUWw=; b=Uymq+YXegY5VeFw9e12OhK2OaYNFGGPBZTyVwa2qJyz5JNKz9RBkEry6XSaPGW53sT NOIit9ORDs/7v8U9nMZfQsPgTe9HHMiBEugPXGRcjj6hNGtQvNycvSgy4TQdK6lrX5uo VwjhZ4qJyNgDPJNT0GLx/T5YlGtxY3oRP3QkwbJMJ3Jw/z4HcYvPXRuzi5x8Uq8axrmV /ABzvM9Pmm4H6KzumFxGdREddniDRPS1XOBRCw5Tb0YNzJcJtQfNENTVQ5rHc/QVpCCk V2eXj7424po9ffu/XVO3kHKjNmTEIi3SUb8B7C5k9P4JU9wh8OE0LMwYAdLBR4PYQ6rR coWA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h192-20020a636cc9000000b004fb33a76e2csi16434589pgc.834.2023.04.26.10.28.12; Wed, 26 Apr 2023 10:28:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232195AbjDZRSX (ORCPT + 99 others); Wed, 26 Apr 2023 13:18:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40650 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234759AbjDZRRy (ORCPT ); Wed, 26 Apr 2023 13:17:54 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 523BF65B7 for ; Wed, 26 Apr 2023 10:17:53 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 78C8863049 for ; Wed, 26 Apr 2023 17:17:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 53C11C4339E; Wed, 26 Apr 2023 17:17:52 +0000 (UTC) Received: from rostedt by gandalf with local (Exim 4.96) (envelope-from ) id 1prim7-005KdF-1Q; Wed, 26 Apr 2023 13:17:51 -0400 Message-ID: <20230426171751.250610496@goodmis.org> User-Agent: quilt/0.66 Date: Wed, 26 Apr 2023 13:17:14 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Masami Hiramatsu , Mark Rutland , Andrew Morton , Ken Lin Subject: [for-next][PATCH 11/11] tracing: Add missing spaces in trace_print_hex_seq() References: <20230426171703.202523909@goodmis.org> MIME-Version: 1.0 X-Spam-Status: No, score=-4.0 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1764260689078853737?= X-GMAIL-MSGID: =?utf-8?q?1764260689078853737?= From: Ken Lin If the buffer length is larger than 16 and concatenate is set to false, there would be missing spaces every 16 bytes. Example: Before: c5 11 10 50 05 4d 31 40 00 40 00 40 00 4d 31 4000 40 00 After: c5 11 10 50 05 4d 31 40 00 40 00 40 00 4d 31 40 00 40 00 Link: https://lore.kernel.org/linux-trace-kernel/20230426032257.3157247-1-lyenting@google.com Signed-off-by: Ken Lin Signed-off-by: Steven Rostedt (Google) --- kernel/trace/trace_output.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c index 952cc8aa8e59..15f05faaae44 100644 --- a/kernel/trace/trace_output.c +++ b/kernel/trace/trace_output.c @@ -221,8 +221,11 @@ trace_print_hex_seq(struct trace_seq *p, const unsigned char *buf, int buf_len, const char *ret = trace_seq_buffer_ptr(p); const char *fmt = concatenate ? "%*phN" : "%*ph"; - for (i = 0; i < buf_len; i += 16) + for (i = 0; i < buf_len; i += 16) { + if (!concatenate && i != 0) + trace_seq_putc(p, ' '); trace_seq_printf(p, fmt, min(buf_len - i, 16), &buf[i]); + } trace_seq_putc(p, 0); return ret;