Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp341631pxv; Wed, 30 Jun 2021 06:55:19 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxp2J5o0a+fmIuS02JzZjSaaiSHg/VAqHuXx721wrqeQOg9qIvlRopieDp1+Oh4N5qCc6nm X-Received: by 2002:a02:b11b:: with SMTP id r27mr8853907jah.99.1625061319449; Wed, 30 Jun 2021 06:55:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625061319; cv=none; d=google.com; s=arc-20160816; b=N/mhkPVE+UhhsXk6eAIR78PuWFxoCgFLcO5/AsCv7fdu0nVyO43z1uK6gcqBE0wY2W T8nxxQbr61JAwd9Iy2wl/MjLO5aOAmUDjAGcailZ0lWuP1K4GYJz1rLmLKdIZYIxyVTK GQm4I7xtawagI7l7eK0M8nCdSG7zsOZl+GPgvHJy7dCnnTiRi93Lr9FpDTl3EHhvzLSc Mh0U86Mcl/21XtLouIVEK/oNpIeGbP5Jc6Hk3Ii2kP3PmLKCCSQkNiUcUBpr31eHDA4n D+GMemVKXncFr4HLfcOYPW5Pg4g1SbPTkbAecBMcCXUp5m0SgyaitUZc5hYm9K5jSfJ4 b75Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:robot-unsubscribe :robot-id:message-id:mime-version:cc:subject:to:reply-to:sender:from :dkim-signature:dkim-signature:date; bh=QlgFrmuXYHshiJXHDoBNufwcE3iCKBEKLkTsM2VxV0A=; b=r6PlV0s/gtVCZKySp4sNZ4UTPn7AH5El8ze/s6IURAL1hBXxOsLx2LKHURN/ykle93 b8QbSI8OHajFZgcIWbzBDYXOIQcX+hmw7bvn1CqY9CEafat+UCrc2RPfhYjw3XsuMFut ahbe1h/DIHxyZqNRap4WWkc7a1gL64ADf7J23+lgcCiGINCyWcx0krM/xSGBNWywpGAK OY1/mR0D6jzpZgCeHBvllgLVSjwV5p+RG0Y3ltfBRiVJQVEvTq2tYMOGI11FkYo/OPfy mSD42OIynL+fQMniHQXMiQ1bgrzwv2r5wUSWMa02Wn3cFWpppn+8kUaXPsimyQdrGL63 jvyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=kUNbxWTn; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k14si21714685ion.22.2021.06.30.06.55.06; Wed, 30 Jun 2021 06:55:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=kUNbxWTn; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236638AbhF3NzZ (ORCPT + 99 others); Wed, 30 Jun 2021 09:55:25 -0400 Received: from Galois.linutronix.de ([193.142.43.55]:33020 "EHLO galois.linutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236127AbhF3NvY (ORCPT ); Wed, 30 Jun 2021 09:51:24 -0400 Date: Wed, 30 Jun 2021 13:48:16 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1625060897; h=from:from:sender:sender:reply-to: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:content-transfer-encoding; bh=QlgFrmuXYHshiJXHDoBNufwcE3iCKBEKLkTsM2VxV0A=; b=kUNbxWTnGQJv1R4jSvLTv+JW9FnLtZsqamSORJzMwxq7e4H/6JH3jiqA309B6OsjckqhtH vmD0bDOeg9i+0wX8eO0xK4QPZcZMZ2/83rVsCuwsHYRq2KnMDvobmtmj5qJsrjBiq4RS8k Ly9YQZA4l66AwIqmZLH+5C+8OQVl8frqdjKtFwKP0DIT/wRp40al8EuzY/e67SgH0h6VHF th461+XDPOQZolgmx2B5dK2zpyXixOWgbFwTJ266oYnzYxdwhLuh5Lox+W2ryhtvZa2Dtf PmEfAAssvjP5e6jN4APCmRx5DCApw/zzYpVIgBy/3ekinIQl1AX4Ky+X9JHR0w== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1625060897; h=from:from:sender:sender:reply-to: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:content-transfer-encoding; bh=QlgFrmuXYHshiJXHDoBNufwcE3iCKBEKLkTsM2VxV0A=; b=4atIw9fuIvEw2a//Y6LCd2EMNguUF5tto0wJL/jUFuYDHqrR7ovJH02GvfZ57ylLtyF2JD 4+IMOreZe+vhbVDQ== From: "tip-bot2 for Marco Elver" Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: locking/urgent] kcsan: Document "value changed" line Cc: Marco Elver , "Paul E. McKenney" , x86@kernel.org, linux-kernel@vger.kernel.org MIME-Version: 1.0 Message-ID: <162506089664.395.11910199913057335235.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The following commit has been merged into the locking/urgent branch of tip: Commit-ID: b930226f3db870cfb683c2744aeb0d29deb4cddc Gitweb: https://git.kernel.org/tip/b930226f3db870cfb683c2744aeb0d29deb4cddc Author: Marco Elver AuthorDate: Wed, 14 Apr 2021 13:28:25 +02:00 Committer: Paul E. McKenney CommitterDate: Tue, 18 May 2021 10:58:15 -07:00 kcsan: Document "value changed" line Update the example reports based on the latest reports generated by kcsan_test module, which now include the "value changed" line. Add a brief description of the "value changed" line. Signed-off-by: Marco Elver Signed-off-by: Paul E. McKenney --- Documentation/dev-tools/kcsan.rst | 88 +++++++++++------------------- 1 file changed, 35 insertions(+), 53 deletions(-) diff --git a/Documentation/dev-tools/kcsan.rst b/Documentation/dev-tools/kcsan.rst index 8089466..d1efd9c 100644 --- a/Documentation/dev-tools/kcsan.rst +++ b/Documentation/dev-tools/kcsan.rst @@ -27,75 +27,57 @@ Error reports A typical data race report looks like this:: ================================================================== - BUG: KCSAN: data-race in generic_permission / kernfs_refresh_inode - - write to 0xffff8fee4c40700c of 4 bytes by task 175 on cpu 4: - kernfs_refresh_inode+0x70/0x170 - kernfs_iop_permission+0x4f/0x90 - inode_permission+0x190/0x200 - link_path_walk.part.0+0x503/0x8e0 - path_lookupat.isra.0+0x69/0x4d0 - filename_lookup+0x136/0x280 - user_path_at_empty+0x47/0x60 - vfs_statx+0x9b/0x130 - __do_sys_newlstat+0x50/0xb0 - __x64_sys_newlstat+0x37/0x50 - do_syscall_64+0x85/0x260 - entry_SYSCALL_64_after_hwframe+0x44/0xa9 - - read to 0xffff8fee4c40700c of 4 bytes by task 166 on cpu 6: - generic_permission+0x5b/0x2a0 - kernfs_iop_permission+0x66/0x90 - inode_permission+0x190/0x200 - link_path_walk.part.0+0x503/0x8e0 - path_lookupat.isra.0+0x69/0x4d0 - filename_lookup+0x136/0x280 - user_path_at_empty+0x47/0x60 - do_faccessat+0x11a/0x390 - __x64_sys_access+0x3c/0x50 - do_syscall_64+0x85/0x260 - entry_SYSCALL_64_after_hwframe+0x44/0xa9 + BUG: KCSAN: data-race in test_kernel_read / test_kernel_write + + write to 0xffffffffc009a628 of 8 bytes by task 487 on cpu 0: + test_kernel_write+0x1d/0x30 + access_thread+0x89/0xd0 + kthread+0x23e/0x260 + ret_from_fork+0x22/0x30 + + read to 0xffffffffc009a628 of 8 bytes by task 488 on cpu 6: + test_kernel_read+0x10/0x20 + access_thread+0x89/0xd0 + kthread+0x23e/0x260 + ret_from_fork+0x22/0x30 + + value changed: 0x00000000000009a6 -> 0x00000000000009b2 Reported by Kernel Concurrency Sanitizer on: - CPU: 6 PID: 166 Comm: systemd-journal Not tainted 5.3.0-rc7+ #1 - Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 + CPU: 6 PID: 488 Comm: access_thread Not tainted 5.12.0-rc2+ #1 + Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014 ================================================================== The header of the report provides a short summary of the functions involved in the race. It is followed by the access types and stack traces of the 2 threads -involved in the data race. +involved in the data race. If KCSAN also observed a value change, the observed +old value and new value are shown on the "value changed" line respectively. The other less common type of data race report looks like this:: ================================================================== - BUG: KCSAN: data-race in e1000_clean_rx_irq+0x551/0xb10 - - race at unknown origin, with read to 0xffff933db8a2ae6c of 1 bytes by interrupt on cpu 0: - e1000_clean_rx_irq+0x551/0xb10 - e1000_clean+0x533/0xda0 - net_rx_action+0x329/0x900 - __do_softirq+0xdb/0x2db - irq_exit+0x9b/0xa0 - do_IRQ+0x9c/0xf0 - ret_from_intr+0x0/0x18 - default_idle+0x3f/0x220 - arch_cpu_idle+0x21/0x30 - do_idle+0x1df/0x230 - cpu_startup_entry+0x14/0x20 - rest_init+0xc5/0xcb - arch_call_rest_init+0x13/0x2b - start_kernel+0x6db/0x700 + BUG: KCSAN: data-race in test_kernel_rmw_array+0x71/0xd0 + + race at unknown origin, with read to 0xffffffffc009bdb0 of 8 bytes by task 515 on cpu 2: + test_kernel_rmw_array+0x71/0xd0 + access_thread+0x89/0xd0 + kthread+0x23e/0x260 + ret_from_fork+0x22/0x30 + + value changed: 0x0000000000002328 -> 0x0000000000002329 Reported by Kernel Concurrency Sanitizer on: - CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.3.0-rc7+ #2 - Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014 + CPU: 2 PID: 515 Comm: access_thread Not tainted 5.12.0-rc2+ #1 + Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014 ================================================================== This report is generated where it was not possible to determine the other racing thread, but a race was inferred due to the data value of the watched -memory location having changed. These can occur either due to missing -instrumentation or e.g. DMA accesses. These reports will only be generated if -``CONFIG_KCSAN_REPORT_RACE_UNKNOWN_ORIGIN=y`` (selected by default). +memory location having changed. These reports always show a "value changed" +line. A common reason for reports of this type are missing instrumentation in +the racing thread, but could also occur due to e.g. DMA accesses. Such reports +are shown only if ``CONFIG_KCSAN_REPORT_RACE_UNKNOWN_ORIGIN=y``, which is +enabled by default. Selective analysis ~~~~~~~~~~~~~~~~~~