From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51724C3DA5D for ; Mon, 22 Jul 2024 20:36:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 61E776B0083; Mon, 22 Jul 2024 16:36:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 5CD5D6B0085; Mon, 22 Jul 2024 16:36:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4BC4F6B0088; Mon, 22 Jul 2024 16:36:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 2F6106B0085 for ; Mon, 22 Jul 2024 16:36:08 -0400 (EDT) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id A3515A08F0 for ; Mon, 22 Jul 2024 20:36:07 +0000 (UTC) X-FDA: 82368545574.18.59A57F4 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by imf24.hostedemail.com (Postfix) with ESMTP id C9ED018000F for ; Mon, 22 Jul 2024 20:36:05 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="gkaxRTB/"; spf=pass (imf24.hostedemail.com: domain of dvyukov@google.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=dvyukov@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721680542; a=rsa-sha256; cv=none; b=I3fWrBYHbrn4SmbCTdaE/zgmZFHIK+GogtfoTRD3K0/Fdz5IDa2bIsHm8kl4x3rUBVEnVu xlpbQDnSIhobvq4kckDPLhdLshenz+ExOEP0pGm8ZnihFLVDH10J1dn/AkIurnjn4C8hm7 mz6CT43g6rjSMmt9HPxiIT/V1QeEtR0= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="gkaxRTB/"; spf=pass (imf24.hostedemail.com: domain of dvyukov@google.com designates 209.85.208.49 as permitted sender) smtp.mailfrom=dvyukov@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721680542; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wA86CUyO9g/UBTDzj6a6yBQ8gAzp68p6n3zkRO96JMs=; b=2OQv6M2n2wfL2g2jT9BwHTJ60zDsEnP+3TBGqDBImK+0z6uXduQraI8dwvbvy+ZrT0/clN 6CfY5Teq5YbjmGgH7IGJP4175XWEI8WDevGj9mGf9rjj3ZuzQD2h/U+q2oJtp/VsmpnbRK gl+jA+nVGzEAGw5QHzrtRl7niADi7NI= Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5a18a5dbb23so1005a12.1 for ; Mon, 22 Jul 2024 13:36:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1721680564; x=1722285364; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=wA86CUyO9g/UBTDzj6a6yBQ8gAzp68p6n3zkRO96JMs=; b=gkaxRTB/KtGHc0Ua3Tspf2taTnWT5GgOwlhoyQcH/fJIWssFQEe/9hM4EHcrzoCUsj dvSgi134vLeVWZGMFW5VSgw4l7UFkgYFmxUSNUaAUY7R7+NaPRtSqpXKp231T/htrVlf D9KjHLzpyF2Ge4z5ORy2Wzxy4NC0aEzpX/VV4l3jVku/971OD6nRw+9RhS/4leMOK85E fSxPiK5i8/HKpBhHXIIGJ0gcU1Z/MZRdFozMmmCTedykxCm5SltPuyyjqOF/L8YLAII5 PCVcY4yFlAKHanWeVPWpZ4CDrO9EVtcIXmebKMciH5pqQIqYuavRtp3hXb9Enory3cGc 3JUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1721680564; x=1722285364; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wA86CUyO9g/UBTDzj6a6yBQ8gAzp68p6n3zkRO96JMs=; b=efeuPh+O7Y5RSxBpanmQPLkS0iclJAlY9xH6tSRwlNuZr1cxtf32gm1gkBgqK6EbTD oTwOliG8jPtfCK+vvxD23IKQQ9Y+nN1wPJGlhC62C+uju06VrHeyVRTBC6pmFM0SIdff ujbF9vomFTtR7ixrOGHOKUoxcIo/HCy8Sd+V4ENAHnNp6zr8iRCOIiGFZxskuHEKOr0l tGn5RWCS4YZZnUAPCWznBn4O3NOuTzxvygq27pTXpaZjxUIoRESwIaBMBlh0xX3vYc5E spqpPC6ADsyLxYKszonpwvyFZ7XHN7YBZOtWg0LIApJSQGcI4zZtWgv3ElcS4663Bj9R TECQ== X-Forwarded-Encrypted: i=1; AJvYcCXHxcYnMA3SOy7Us6tpNrb4nZl5g83qqepzBJegMWMCuGKtPI69JHWHb2wN3JYHaxDuNW4iEzpL5SrvJZNUjf+ZLuE= X-Gm-Message-State: AOJu0YzksGsdD2YwYyQE4sKKCnNnzu4ZEU4gvzR+7y/3dMdsUQkoy4DO cIwim9SRziffeXc+tUilk+euR3VcETvRQSZKlCFVcE2Qspkw5XKBnJ64vYFkh3QKpikmexiFxLq Oh5Qu3+oLjNLybmrAK8719tLJuUZlhZv9X/0l X-Google-Smtp-Source: AGHT+IEL8yHKgDnW66DeLnvb3sin3vG4Bx0NbeMag3+McuwPl/EBlyfvIoepc6XD1POPz+xZeXKEE7gjSZBeTn1mYUQ= X-Received: by 2002:a05:6402:40c1:b0:58b:93:b624 with SMTP id 4fb4d7f45d1cf-5a4a8333773mr317602a12.1.1721680563688; Mon, 22 Jul 2024 13:36:03 -0700 (PDT) MIME-Version: 1.0 References: <20240722202502.70301-1-andrey.konovalov@linux.dev> In-Reply-To: <20240722202502.70301-1-andrey.konovalov@linux.dev> From: Dmitry Vyukov Date: Mon, 22 Jul 2024 22:35:52 +0200 Message-ID: Subject: Re: [PATCH] x86, kcov: ignore stack trace coverage To: andrey.konovalov@linux.dev Cc: Andrew Morton , Andrey Konovalov , Aleksandr Nogikh , Marco Elver , Alexander Potapenko , kasan-dev@googlegroups.com, linux-mm@kvack.org, Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Stat-Signature: 9s1foexq7de8ushkzueepdo8yfz1xqxq X-Rspamd-Queue-Id: C9ED018000F X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1721680565-161998 X-HE-Meta: U2FsdGVkX1+gpk3PkknfdGpkfwieb+9++lIyuFeQG/koxU3m2kfq38goSZFawt6YnNAytnGnAfKrPAi+f18+Ray/EEjoeIdV+Hxshubl3Xpeb3mGN95D+ONv1OOvj7tGVLrEsbOTVyxrRzKjO+V/3DPAM7LEPkB7yXQ9qLYVhrOCYcrIGg+zF567Lw5twJq2CqVziCtbdJcdHoiU3asEltUzVkEGlmetRZM3+ptO5K0fMN0jxEysuT8JiNy/woVzKLI5Bu6V2pqDfS8bUG/tKsAF3vUID4Omr07djQltTScv5Q3c3psVXGAaCZOj5PyMmQnqjdgZD08XNtVxvmVMpvGNlBpi2pW+VT/mUwucxj9MIpII9/8xiUozd/mHU9IxWqKaqBWoTdKumbByJwL3P8ZUvctIu1SpRXxIB7LB2Fr7Rw9CjHqCQvb0UHOM+yw+PoBf553eZu+8S8N+OBq/j7BJO17ldmNXM3N5G1/8xA+7O7fD839H4tx8NzLHsEZD7m4yO+fpRA9SJSt90kR4hNi6QopyLe7wIFggfG8namrsL268iOdXSpO0X0xjYxScAqTwJJwCGyr6zqTPzfrJMrSmklCelcvzLpv0c2b6vFI5zGFr6dx04T4cInHsugIfRCYg/xghQ5aa1ag4u44FCMjMfQKMzucKfNp7sgxEqtQYPiw8cbqN9qfNMcUFiHyqQkpo0uEV2GDYXV/3Nn9JvEQ8RZQhpi2vWYGki01L4hwovHpxBdhLAMXHJLQlBtIluNLIexRRjaem+yJiWT+DGId1V14E+SjjX4zbk7D0f8+DlTFrd32aaNwATxKPc7iGjBoKHpWPPMaYpQxqVW91dU0dLYrkUQsBQ1szZZql6G0oywrCt4U1CQSxvGPbQagNJ3FiWOOPv6O30xx9pmiMSJEIn/QG4vuHlkQlqHYhY2oE86l9yLbeMbwz6qK7NWHeL/J82YInv1NQV+r7XbF nLljjwHy ZhBPyaaB18a+aZM5It2YPhCmkugRLZcJk0DFSHN/cAgKpPoRjvFwhGvvmgsyy3KWwvV2x4/LAOb023Z50duWzmK8UvQWPVO695E7yVhMt8pGXjGtQFCbMSPKXzcvS2f5bho+aUslAv2FLukWVUNtqt0wcODVAa7e9xzRoAkPF/OpVYnWKzM6qfuc6f7tWNvsB3gYfYrq/PSgzCQK1Nql8NyEYJSHhwAELafmwwxtuD3kkV1gmkzYj7ImX5gIh91/51KzmHW68iOo7c+RzW479Ee4UwQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, 22 Jul 2024 at 22:25, wrote: > > From: Andrey Konovalov > > When a multitude of kernel debugging options are enabled, they often > collect and save the current stack trace. The coverage produced by the > related routines is not relevant for the KCOV's intended use case > (guiding the fuzzing process). > > Thus, disable instrumentation of the x86 stack trace collection code. > > KCOV instrumentaion of the generic kernel/stacktrace.c was already > disabled in commit 43e76af85fa7 ("kcov: ignore fault-inject and > stacktrace"). This patch is an x86-specific addition. > > In addition to freeing up the KCOV buffer capacity for holding more > relevant coverage, this patch also speeds up the kernel boot time with > the config from the syzbot USB fuzzing instance by ~25%. > > Fixes: 43e76af85fa7 ("kcov: ignore fault-inject and stacktrace") > Signed-off-by: Andrey Konovalov > > --- > > I'm not sure whether it makes sense to backport this patch to stable > kernels, but I do think that it makes sense to take it into mainline > as a fix: currently, the USB fuzzing instance is choking on the amount > of coverage produced by KCOV and thus doesn't perform well. > > For reference, without this patch, for the following program: > > r0 = syz_usb_connect_ath9k(0x3, 0x5a, &(0x7f0000000080)={{0x12, 0x1, > 0x200, 0xff, 0xff, 0xff, 0x40, 0xcf3, 0x9271, 0x108, 0x1, 0x2, 0x3, 0x1, > [{{0x9, 0x2, 0x48, 0x1, 0x1, 0x0, 0x80, 0xfa, {{0x9, 0x4, 0x0, 0x0, 0x6, > 0xff, 0x0, 0x0, 0x0, "", {{0x9, 0x5, 0x1, 0x2, 0x200, 0x0, 0x0, 0x0, ""}, > {0x9, 0x5, 0x82, 0x2, 0x200, 0x0, 0x0, 0x0, ""}, {0x9, 0x5, 0x83, 0x3, > 0x40, 0x1, 0x0, 0x0, ""}, {0x9, 0x5, 0x4, 0x3, 0x40, 0x1, 0x0, 0x0, ""}, > {0x9, 0x5, 0x5, 0x2, 0x200, 0x0, 0x0, 0x0, ""}, {0x9, 0x5, 0x6, 0x2, > 0x200, 0x0, 0x0, 0x0, ""}}}}}}]}}, 0x0) > > KCOV produces ~500k coverage entries. > > Here are the top ones sorted by the number of occurrences: > > 23027 /home/user/src/arch/x86/kernel/unwind_orc.c:99 > 17335 /home/user/src/arch/x86/kernel/unwind_orc.c:100 > 16460 /home/user/src/arch/x86/include/asm/stacktrace.h:60 (discriminator 3) > 16460 /home/user/src/arch/x86/include/asm/stacktrace.h:60 > 16191 /home/user/src/security/tomoyo/domain.c:183 (discriminator 1) > 16128 /home/user/src/security/tomoyo/domain.c:184 (discriminator 8) > 11384 /home/user/src/arch/x86/kernel/unwind_orc.c:109 > 11155 /home/user/src/arch/x86/include/asm/stacktrace.h:59 > 10997 /home/user/src/arch/x86/kernel/unwind_orc.c:665 > 10768 /home/user/src/include/asm-generic/rwonce.h:67 > 9994 /home/user/src/arch/x86/kernel/unwind_orc.c:390 > 9994 /home/user/src/arch/x86/kernel/unwind_orc.c:389 > ... > > With this patch, the number of entries drops to ~140k. > > (For reference, here are the top entries with this patch applied: > > 16191 /home/user/src/security/tomoyo/domain.c:183 (discriminator 1) > 16128 /home/user/src/security/tomoyo/domain.c:184 (discriminator 8) > 3528 /home/user/src/security/tomoyo/domain.c:173 (discriminator 2) > 3528 /home/user/src/security/tomoyo/domain.c:173 > 3528 /home/user/src/security/tomoyo/domain.c:171 (discriminator 5) > 2877 /home/user/src/lib/vsprintf.c:646 > 2672 /home/user/src/lib/vsprintf.c:651 > 2672 /home/user/src/lib/vsprintf.c:649 > 2230 /home/user/src/lib/vsprintf.c:2559 > ... > > I'm not sure why tomoyo produces such a large number of entries, but > that will require a separate fix anyway if it's unintended.) > --- > arch/x86/kernel/Makefile | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/arch/x86/kernel/Makefile b/arch/x86/kernel/Makefile > index 20a0dd51700a..241e21723fa5 100644 > --- a/arch/x86/kernel/Makefile > +++ b/arch/x86/kernel/Makefile > @@ -40,6 +40,14 @@ KMSAN_SANITIZE_sev.o := n > KCOV_INSTRUMENT_head$(BITS).o := n > KCOV_INSTRUMENT_sev.o := n > > +# These produce large amounts of uninteresting coverage. > +KCOV_INSTRUMENT_dumpstack.o := n > +KCOV_INSTRUMENT_dumpstack_$(BITS).o := n > +KCOV_INSTRUMENT_stacktrace.o := n > +KCOV_INSTRUMENT_unwind_orc.o := n > +KCOV_INSTRUMENT_unwind_frame.o := n > +KCOV_INSTRUMENT_unwind_guess.o := n I've sent something similar recently, I think it should be in tip/x86 queue now: https://lore.kernel.org/all/eaf54b8634970b73552dcd38bf9be6ef55238c10.1718092070.git.dvyukov@google.com/ > CFLAGS_irq.o := -I $(src)/../include/asm/trace > > obj-y += head_$(BITS).o > -- > 2.25.1 >