Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3966256pxj; Tue, 11 May 2021 16:26:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycB+hrlPMb5cqdQhYEpytUtCUBpskOvW1vh+zjn/JqhhJzyKBRwoiPmFx8kkNzli4R2O4x X-Received: by 2002:a05:6830:1693:: with SMTP id k19mr5761980otr.210.1620775575245; Tue, 11 May 2021 16:26:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620775575; cv=none; d=google.com; s=arc-20160816; b=ceIJsLkYax5DpF2dZbmJqfZvy/jOnSEd2/VDNKFPWz3fWKH78pIxHiAbBJXNYzETTl jZjjrFEQaKcn6OUd1q57onMYDcE/nvx7EQ8hE8RU2mfuPdz0FobDvkt4TPe5a9Ii9NDP U2gVbe3WofFd6kD1IfftlGUwe+/KfXIi9gNLV/qJ9CypjWDfGcRsNfZeejNFVzND+46R hwoY0H2CzjXM8xo5oP1SJ3KuKCUlI0UZAvJr8GYF06lVwdsPwXF4Am9EIA63TJaDQF25 c7pOKdQQsr1iEqiYYLwTlw1NikRfdkUU4q+NM6n0Ua03wqlN/naGoCMoYoyonnPcrpPO CM0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=w4BFcFptaZwSAEORW5nLRFtFiFQt34ExKtSx/d+OTwY=; b=U4GeS1ZipW6suLqzMXzv9RIg3XS5Jbg3SKC0cUY68O7bWbz4wJLH1C17biFZzRHiM/ jyOrDOdy7+DdLNu7+FR7/BX5vG/ZAY69M1B8YlDUrOGZW/8TjHcmlfnEjzgDiyIkn4Ec a5par8mR2xY8EpJ5lH6Qwxji9RrXJh5YxqMFi8h2PlSaZ4WySfoAoLs4XFQvRMB0muHv 5xSUi+T6/LTZrmTnwGchg8QMM5Z4eUAT7Cyy5tAupRRHs1lxUdUnMytTVqo9nCYzoR0T WP6i4ynwQOKMozzC/isZyo9Jhb4tU4Bt39iGq0vcD3+Wq/kAR2xOlBuZtd6eQtknoZQX lZkg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=WfYNVMOm; 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=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n1si18486154otf.318.2021.05.11.16.26.02; Tue, 11 May 2021 16:26:15 -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=@kernel.org header.s=k20201202 header.b=WfYNVMOm; 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=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230109AbhEKXZ2 (ORCPT + 99 others); Tue, 11 May 2021 19:25:28 -0400 Received: from mail.kernel.org ([198.145.29.99]:52684 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230017AbhEKXZO (ORCPT ); Tue, 11 May 2021 19:25:14 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3E93F61934; Tue, 11 May 2021 23:24:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620775447; bh=NajS0J4OC8sH9w6ZtTRbeXDf2o4v2z1lml2NgCHFWsE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WfYNVMOmwPkcYQIRJxqRXoX040LFPJlbMZC0r7UexhAaG3/PtrTHXczVSbiwTHFjQ S9A/zYdpuyEr9ciTEVmg5wrrc3OclgJ8nINDjrb1PkVvJZYr2wEJz37qq4ezIhg7Om WQt6KB2bstohTikVc61fjGNUNBY2FlbnjojGCipKwAGfZVE62Lbp+f1d0y9KjPvgk7 CrHlzu7Z9FBdTDn4s6kIbvT7/o5S0WhNqwvPA3dgSfjV7risFvbBHRrnG2NZhTgrXK zZe6M1MdKulS4T9VDpoesDnHPL9g8Xc3/CgRffB8I1xjT7X5pEszuKBiPI6442epfx OpNCm6UC6UF/g== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id A43275C0DB3; Tue, 11 May 2021 16:24:06 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, kernel-team@fb.com, mingo@kernel.org Cc: elver@google.com, andreyknvl@google.com, glider@google.com, dvyukov@google.com, cai@lca.pw, boqun.feng@gmail.com, Mark Rutland , "Paul E . McKenney" Subject: [PATCH tip/core/rcu 06/10] kcsan: Refactor access_info initialization Date: Tue, 11 May 2021 16:23:57 -0700 Message-Id: <20210511232401.2896217-6-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20210511231149.GA2895263@paulmck-ThinkPad-P17-Gen-1> References: <20210511231149.GA2895263@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mark Rutland In subsequent patches we'll want to split kcsan_report() into distinct handlers for each report type. The largest bit of common work is initializing the `access_info`, so let's factor this out into a helper, and have the kcsan_report_*() functions pass the `aaccess_info` as a parameter to kcsan_report(). There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland Signed-off-by: Marco Elver Signed-off-by: Paul E. McKenney --- kernel/kcsan/report.c | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/kernel/kcsan/report.c b/kernel/kcsan/report.c index 8bfa970965a1..d8441bed065c 100644 --- a/kernel/kcsan/report.c +++ b/kernel/kcsan/report.c @@ -596,18 +596,10 @@ static noinline bool prepare_report(unsigned long *flags, } } -static void kcsan_report(const volatile void *ptr, size_t size, int access_type, - enum kcsan_value_change value_change, +static void kcsan_report(const struct access_info *ai, enum kcsan_value_change value_change, enum kcsan_report_type type, struct other_info *other_info) { unsigned long flags = 0; - const struct access_info ai = { - .ptr = ptr, - .size = size, - .access_type = access_type, - .task_pid = in_task() ? task_pid_nr(current) : -1, - .cpu_id = raw_smp_processor_id() - }; kcsan_disable_current(); @@ -620,14 +612,14 @@ static void kcsan_report(const volatile void *ptr, size_t size, int access_type, */ lockdep_off(); - if (prepare_report(&flags, type, &ai, other_info)) { + if (prepare_report(&flags, type, ai, other_info)) { /* * Never report if value_change is FALSE, only if we it is * either TRUE or MAYBE. In case of MAYBE, further filtering may * be done once we know the full stack trace in print_report(). */ if (value_change != KCSAN_VALUE_CHANGE_FALSE) - print_report(value_change, type, &ai, other_info); + print_report(value_change, type, ai, other_info); release_report(&flags, other_info); } @@ -636,22 +628,38 @@ static void kcsan_report(const volatile void *ptr, size_t size, int access_type, kcsan_enable_current(); } +static struct access_info prepare_access_info(const volatile void *ptr, size_t size, + int access_type) +{ + return (struct access_info) { + .ptr = ptr, + .size = size, + .access_type = access_type, + .task_pid = in_task() ? task_pid_nr(current) : -1, + .cpu_id = raw_smp_processor_id() + }; +} + void kcsan_report_set_info(const volatile void *ptr, size_t size, int access_type, int watchpoint_idx) { - kcsan_report(ptr, size, access_type, KCSAN_VALUE_CHANGE_MAYBE, - KCSAN_REPORT_CONSUMED_WATCHPOINT, &other_infos[watchpoint_idx]); + const struct access_info ai = prepare_access_info(ptr, size, access_type); + + kcsan_report(&ai, KCSAN_VALUE_CHANGE_MAYBE, KCSAN_REPORT_CONSUMED_WATCHPOINT, + &other_infos[watchpoint_idx]); } void kcsan_report_known_origin(const volatile void *ptr, size_t size, int access_type, enum kcsan_value_change value_change, int watchpoint_idx) { - kcsan_report(ptr, size, access_type, value_change, - KCSAN_REPORT_RACE_SIGNAL, &other_infos[watchpoint_idx]); + const struct access_info ai = prepare_access_info(ptr, size, access_type); + + kcsan_report(&ai, value_change, KCSAN_REPORT_RACE_SIGNAL, &other_infos[watchpoint_idx]); } void kcsan_report_unknown_origin(const volatile void *ptr, size_t size, int access_type) { - kcsan_report(ptr, size, access_type, KCSAN_VALUE_CHANGE_TRUE, - KCSAN_REPORT_RACE_UNKNOWN_ORIGIN, NULL); + const struct access_info ai = prepare_access_info(ptr, size, access_type); + + kcsan_report(&ai, KCSAN_VALUE_CHANGE_TRUE, KCSAN_REPORT_RACE_UNKNOWN_ORIGIN, NULL); } -- 2.31.1.189.g2e36527f23