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 D238EE77188 for ; Fri, 10 Jan 2025 09:23:24 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4EF198D0003; Fri, 10 Jan 2025 04:23:24 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 477228D0002; Fri, 10 Jan 2025 04:23:24 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 317E78D0003; Fri, 10 Jan 2025 04:23:24 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id BB3938D0002 for ; Fri, 10 Jan 2025 04:23:23 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 744EA160954 for ; Fri, 10 Jan 2025 09:23:23 +0000 (UTC) X-FDA: 82991003886.17.0195A22 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by imf07.hostedemail.com (Postfix) with ESMTP id 9EFB940006 for ; Fri, 10 Jan 2025 09:23:21 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=pvB4qSgy; spf=pass (imf07.hostedemail.com: domain of elver@google.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=elver@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736501001; a=rsa-sha256; cv=none; b=rJuC6WQVNUD7BKmKZ92HqA28Q6bqp/3yJLUqQhop2F8QlpUaPql/mZTq2/iUiSPg4wKz62 i2PoaRu3APh6h5fmP3YifpWlKremQeCceJ5fkwlU1yaMXFNopJSUop7LLC06ivvUdvNbxQ nmU5tYFVLQyamfxcj2BmpspQ2Pb09vg= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=pvB4qSgy; spf=pass (imf07.hostedemail.com: domain of elver@google.com designates 209.85.216.49 as permitted sender) smtp.mailfrom=elver@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=1736501001; 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=/8n2ma/ziuKr5ZfTxLhXrZB/sBg/b3H77RWqJjKv6Y0=; b=ohdlPSZEDGmkyHLvp/M2zLOr54of9p1JAtDTAu1qOxCr734IqTF1XMe1McS7qRwlOcJWwy +x96QKOlyZBvlA6i4SNi6ma48t29dKNm3U5DZvo8hQqJV4TBhKdPHn9Rf2/gzDgGCBM162 z5bBAU8CGWQGNnPfTKLrt0eIxeXieK4= Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-2eed82ca5b4so2971166a91.2 for ; Fri, 10 Jan 2025 01:23:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736501000; x=1737105800; 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=/8n2ma/ziuKr5ZfTxLhXrZB/sBg/b3H77RWqJjKv6Y0=; b=pvB4qSgy/KeBwI01whFmBh6k3CXIR7eUaYWwS3rx+Rp92PrhJccyZ19TTBiixPoFM2 ptk1OR94q3jo3yvIUqg2BbfgbwNu3GsUcHJWpvgzckhByNNK8GJTiYrFaSU8EWuJLgAu j7fnuWWEd3/1et5iLfGEOg1D/UPbXCRhClXoei0s/N4EYydh/qVL55/rQAa24keJbwFz gDJZBc8nF7H+0MJpxTsmctTZf2nCT8ZZAUqrIiaDVJamdCyzl86jw3jXme5Kqb1+9EzG 2cB5PGKl2tf2i47bnZTQ54z65phk7P9ebGq2uTWrWHy+msNfDvj2HNkYOIKplG/hEoMC KHpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736501000; x=1737105800; 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=/8n2ma/ziuKr5ZfTxLhXrZB/sBg/b3H77RWqJjKv6Y0=; b=nBAgfNMghidjAsqn/wzYFR14LgafHzlcoIaiUyafHZpV8JB60keCP+fEt/hmuKRRx3 xV+zyD60DnuyTAQYY6stks8KJU4ejQK5rh+EBwoqJ6143A4kRF9Op0n9kRQxPKJHu+Nx NaoNjWpjVbG837gDoa99Opp5sNMfVP7EABvDzKShZFzf6aBfZ6D6Yr5fLf9BW1k2SptA Cp9a/IHgOozmdmjFN49+7fMtWUM0pNKI/OWKsQx1/1C1ZQIMU9N/+zHN5rAYNkKULdSP liL76P+OUr2fU4/p9PJC3bSNj/O1z1BlvPOBVxdWQA+EBa5c0+clWrd37Te4Wmxydqiw KnqA== X-Forwarded-Encrypted: i=1; AJvYcCXKKcO3IBiQG5iKtxjYCfkpyvf6ityNBsxb5BmYZwPthv09nhKNfQ0tUd0nhq8v6sX97ER102FX7Q==@kvack.org X-Gm-Message-State: AOJu0Yx0ENzaT38lgJt++mAzpYUBtqJ1ajfP2T+dm/zyhyrHYEJOMNu2 DwXTrzDk8jZB9DdaqLr7hvWDwt7SMAPTK+dVdZgKD75PcfQCp1cTXV/iM+bnKG8TJqVT3EynNyr z7RQ/akC+fkwVJvhMaqre9lLMmRnQjRNx+Q9K X-Gm-Gg: ASbGnct7JxE8fec7GccwGmLErRu2FVCI1QGJKZW82prawtJ31r2OJRjHp5fvuu7z8Z2 Djf28lm8wp4M7hZH/BOOiHCII36Czj/zTOIvsQxgE6pKxfY9jtuEv9NyXqzTwrAYBUdBe8w== X-Google-Smtp-Source: AGHT+IEav7llRQkaGRkKqlm4jpxalFoMFJLbH+c+XE/B2dEdXVu/vLKg6ejDqUmr3L00UB4/cFzFuVkFajos5hgHzXU= X-Received: by 2002:a17:90b:5483:b0:2ea:3d2e:a0d7 with SMTP id 98e67ed59e1d1-2f548f2a897mr15945376a91.15.1736501000183; Fri, 10 Jan 2025 01:23:20 -0800 (PST) MIME-Version: 1.0 References: <20250110073056.2594638-1-quic_jiangenj@quicinc.com> In-Reply-To: <20250110073056.2594638-1-quic_jiangenj@quicinc.com> From: Marco Elver Date: Fri, 10 Jan 2025 10:22:44 +0100 X-Gm-Features: AbW1kvbwJdd-Q4HHGj93BJhXupMaNDNojdpH0KA2V7DRnVCIXbRzJRAefX-Qlpc Message-ID: Subject: Re: [PATCH] kcov: add unique cover, edge, and cmp modes To: Joey Jiao Cc: dvyukov@google.com, andreyknvl@gmail.com, corbet@lwn.net, akpm@linux-foundation.org, gregkh@linuxfoundation.org, nogikh@google.com, pierre.gondois@arm.com, cmllamas@google.com, quic_zijuhu@quicinc.com, richard.weiyang@gmail.com, tglx@linutronix.de, arnd@arndb.de, catalin.marinas@arm.com, will@kernel.org, dennis@kernel.org, tj@kernel.org, cl@linux.com, ruanjinjie@huawei.com, colyli@suse.de, andriy.shevchenko@linux.intel.com, kernel@quicinc.com, quic_likaid@quicinc.com, kasan-dev@googlegroups.com, workflows@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org Content-Type: text/plain; charset="UTF-8" X-Rspamd-Queue-Id: 9EFB940006 X-Stat-Signature: p5xmxbpmyefdefningoq5uuk3x3f3jtc X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1736501001-356590 X-HE-Meta: U2FsdGVkX19wGq7HRaoj0yg3SAQfjVH6CVY0WANuzAhca+xxBgbNkE8t9GTUSLSiere21596TQZzn81mpjCdigFoc/GlzJnxxxOVbSa9b9vMJ/dtnZ2ZtgtP+mRAs06vCp1Aql6xkqRoWoBapg+9FXLWfj66DJwgHiM/sjqpUtrH0mYLJvBAffAhxm4zBdD4c8sEF6K4IC7xw9CKpnGEw7B/C40vdKYh/okdyf54OklFbf8JMjzanrySITUjbW0yjVsNOfXNZ6tRSwveZMX/weycrxYoSqgUsCBBika8GhfWgAqwYeIJWFKkhjE7SVFsvEQOa1OqhkcCQz5tOSxkxjtBUGO88MQEB+g0lLLip1IGyKQMdj/yuzZvk4GvhNuY7VqDK61tkmNURmQbI+ZloUaY4+6MDEFujexrltHuaI8IlI1WJ4X7g3ciblhqlNwnOV/cFOvZTjKLhkXkgE1RaHb7GAdZtRQ7cf9ZJmRhJymQTbT9x/CaLQpM2zYykRAhcM1nbwBncVJ2OfpKFt9qwnTSziR3u2b86XxvGazciJg+dcsZQ33RrzBHIJw74RzgNHQbFROOW8zl8o5BBhqD4AlPuDwd28dePllkDO1XM9SL5kw0tChxFRvRJ8j506nmJNYYign8j67oxeJ6kmL3i9Q7jdcPR+BOzm/wcEDizfoslimpWZD+XSVp+0YPvIKUYF9RH1ZBvpVHw8SNn2jBYwohcg6BLLe4B7QQlRKEiuuZKa9i0fSaBbvHIl5/RX5M6zgLfjgC/pQamI3eX/lsjuIEW4pMy2bVg6QjRJKFzFnl3flcqdR+oC1VmfqojqC2lgaf9RUDJHxXbIZlWTvMjBKPn9WfTgAhofbce30fOLJKmRstkDmU/12uIJo1cj1YYLfoZKBjIVTLplsG35MoItnWwoGVmTOFjuiQaUE9Bso4y3Txj3K0Hn2k0iXZdvyI+j+9+eeWzeCCafASivw A2/WAVKl 49TJOKP1vZdsD/AmvcmvrqVwGm1/JLTjXi9xt+rqjBCcjLvZ9FSbDyPUgN4j/F5bFAlg47IB5TbXnMCjvjVDW9xl31PAMN1mMmgZNKJyeJXZmkz6vCCbjZnI2MwP7cGUsIbfCJ45RL1tzOYpimOH3awMbbbsEUE506vPrZEP1i2SWLglnMXpVcfo7IrEYKe+T2JdH9EJHqL2fzwnoeV+KajmQbAyKpeoLe1OFcviN6c2nLBgTxpo/uuHJyZmm4v4wcVMJZ6uc/n3VIe3BaJZf6iWXdCsRG68eu2R1BQ3lDkP6yFgrkIbCZBFsw7DEgp8ViOTjcS/uw01J9rMo7K91HI7Bt1Bp6ns5KCuVVXp6yyNtsG3a74PPxC1C2w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.006667, 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 Fri, 10 Jan 2025 at 08:33, Joey Jiao wrote: > > From: "Jiao, Joey" > > The current design of KCOV risks frequent buffer overflows. To mitigate > this, new modes are introduced: KCOV_TRACE_UNIQ_PC, KCOV_TRACE_UNIQ_EDGE, > and KCOV_TRACE_UNIQ_CMP. These modes allow for the recording of unique > PCs, edges, and comparison operands (CMP). There ought to be a cover letter explaining the motivation for this, and explaining why the new modes would help. Ultimately, what are you using KCOV for where you encountered this problem? > Key changes include: > - KCOV_TRACE_UNIQ_[PC|EDGE] can be used together to replace KCOV_TRACE_PC. > - KCOV_TRACE_UNIQ_CMP can be used to replace KCOV_TRACE_CMP mode. > - Introduction of hashmaps to store unique coverage data. > - Pre-allocated entries in kcov_map_init during KCOV_INIT_TRACE to avoid > performance issues with kmalloc. > - New structs and functions for managing memory and unique coverage data. > - Example program demonstrating the usage of the new modes. This should be a patch series, carefully splitting each change into a separate patch. https://docs.kernel.org/process/submitting-patches.html#split-changes > With the new hashmap and pre-alloced memory pool added, cover size can't > be set to higher value like 1MB in KCOV_TRACE_PC or KCOV_TRACE_CMP modes > in 2GB device with 8 procs, otherwise it causes frequent oom. > > For KCOV_TRACE_UNIQ_[PC|EDGE|CMP] modes, smaller cover size like 8KB can > be used. > > Signed-off-by: Jiao, Joey As-is it's hard to review, and the motivation is unclear. A lot of code was moved and changed, and reviewers need to understand why that was done besides your brief explanation above. Generally, KCOV has very tricky constraints, due to being callable from any context, including NMI. This means adding new dependencies need to be carefully reviewed. For one, we can see this in genalloc's header: > * The lockless operation only works if there is enough memory > * available. If new memory is added to the pool a lock has to be > * still taken. So any user relying on locklessness has to ensure > * that sufficient memory is preallocated. > * > * The basic atomic operation of this allocator is cmpxchg on long. > * On architectures that don't have NMI-safe cmpxchg implementation, > * the allocator can NOT be used in NMI handler. So code uses the > * allocator in NMI handler should depend on > * CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG. And you are calling gen_pool_alloc() from __sanitizer_cov_trace_pc. Which means this implementation is likely broken on !CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG architectures (do we have architectures like that, that support KCOV?). There are probably other sharp corners due to the contexts KCOV can run in, but would simply ask you to carefully reason about why each new dependency is safe.