Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp5874242rwb; Mon, 5 Dec 2022 05:22:57 -0800 (PST) X-Google-Smtp-Source: AA0mqf5jqs9zl40+58BMfdTlStYWlE0ZJ9VSwZvn4YrF9R9+ORSAjfG9z/44jLg9QYGYptFqKvj/ X-Received: by 2002:a17:906:33ca:b0:7c0:bcfd:e8f3 with SMTP id w10-20020a17090633ca00b007c0bcfde8f3mr13259711eja.468.1670246577221; Mon, 05 Dec 2022 05:22:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670246577; cv=none; d=google.com; s=arc-20160816; b=CvPzuTy1j06f0xE8N7q1QwHaqyARVi5gbmP8gLUPyrhyRba0IEZBK6rfJjki1fCRXc gKUcoQ5BCDJgQls4h4KI6VtRAYznmR0FsORVVYRVLRJWZ/u/y6mT8fvYGbHhsTbdh/3K 6KHp4XA2ERyATb4OgiIu+6OKZLcJUbSYFVBJeYdsDZFY86DdQFYlnNr9MYRerBvP+pch DeQN9dYlBUfG5b5Zjhxi+apF3pn6OxV5RLjpGcbBKLxsSWHyv48yPlWxSAvkGnfR7Dqk f3CicFiiiJHbN/eJcFxv2DCRIxJyxSVEipPB4EI1ZFzigQUjOYKjKfWIcNUewZAtF2uu BVCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=d5fYKRyZintOwoAGXMb6vGdAfTkwnfN4FsoS+VpmLyU=; b=Gl0zWwT+ptbEFNla1bYYLBhVG9HkGAo66UhbNZ7EjOdSHS+cejultHu8qA3rix+y8v lOhzegXc2RN4hBegRkqw4gJnN2XHyZN3o5d6ci9pEGipjlOYzx7Q3BHQ2VrDLwrCBtI/ DeDLUdm+rFVAiyeojouT1wLAUtnxxUBBsfEm+QN9hSoHljIEr+APDgIzTy4ensZ1Vruu dhgqXjd9fODxEepz5EJkZ9DyOgI/QZp4hHs9sywB4BM3od3An4JniCEFo1/0VcfGnO+/ avgWibH3IrDGMdaA/9UnCQcqSiAphtBbgJ/Mvtfn1VdBAolGoiBh3DIcUD22ovFJ7a5a C9+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=BAdYHPPP; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dd22-20020a1709069b9600b007c0f5d71c15si2492488ejc.689.2022.12.05.05.22.36; Mon, 05 Dec 2022 05:22:57 -0800 (PST) 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; dkim=pass header.i=@google.com header.s=20210112 header.b=BAdYHPPP; 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; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232046AbiLENHD (ORCPT + 81 others); Mon, 5 Dec 2022 08:07:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33710 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232080AbiLENG6 (ORCPT ); Mon, 5 Dec 2022 08:06:58 -0500 Received: from mail-yb1-xb35.google.com (mail-yb1-xb35.google.com [IPv6:2607:f8b0:4864:20::b35]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1041D1ADA7 for ; Mon, 5 Dec 2022 05:06:57 -0800 (PST) Received: by mail-yb1-xb35.google.com with SMTP id y135so9785314yby.12 for ; Mon, 05 Dec 2022 05:06:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=d5fYKRyZintOwoAGXMb6vGdAfTkwnfN4FsoS+VpmLyU=; b=BAdYHPPP5OlG6xmYe6hrYXJ5TJiLHef2nFE1sZvmtNSWq0ktjNzHwTjwBS99idioB6 9QIMJl/9n2ykISx3iZuIHapsxavHVSDHT8P9scTqlevnTMrnpn3+ShMmg4OJtoYUSTqb Akd3L3YyjHzBUcE+zLOZsCTTtFffiNK5nIr0GbhXwyDRf/Jh/CaRkGOiydFl4W+vGf+m 80K45FQ5T5wmEy6xu3h/ahz4g6Hv0+2bh0qfzbWL5WKCXtn15YItvTo9qIEzwpeQlyhh RL/Gio2mgeOs3F+LtLsBzB9iVK8foBdsktAW1c4ylQiib/DPerkdmU3z/0ZuGmZNCtUp I1Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; 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=d5fYKRyZintOwoAGXMb6vGdAfTkwnfN4FsoS+VpmLyU=; b=RsAlKaI5i8p9YfLzVG0OS1TAYEfDpw1LUyDdDsYeNGys8i5zl79aM1vka6cWd70fnX 6EhTYjH7gQVX6n5vUl4sNoAAxf+EN0EDNRpweJTB17ufyTch1tjzoqqYj/xgobQajIa3 j4yZmGZg1Ko3jQG7zawF5pFyJ/pgh3CtoDnVrw2JJhs4Qx3AX7He7/dXsuVcFrz/J230 QMCb+FxwClmaQVX+pT3RcKkEqVWdQUkipCdzmsXkx07ls38Tkqjy0Ez2Znis2/1ZnDOJ y1rLzwH57cSFY5YKQIq4gzDYivkgfrHa8YFUmb2kzhEWq1zJ2JTjnoSXqALTg5fMR+bO GWDw== X-Gm-Message-State: ANoB5pkBa6BkHn6PepAHTeOWhwknMOqAKdrsSc1mJDEGerK/1nbvQWVx w4rIP6L6NTn43xfLF/W4XrOJzFbxPNRRSFGLyrfEew== X-Received: by 2002:a25:1e89:0:b0:6f6:b3d1:edcc with SMTP id e131-20020a251e89000000b006f6b3d1edccmr34524757ybe.125.1670245616011; Mon, 05 Dec 2022 05:06:56 -0800 (PST) MIME-Version: 1.0 References: <20221205124756.426350-1-asmadeus@codewreck.org> In-Reply-To: <20221205124756.426350-1-asmadeus@codewreck.org> From: Marco Elver Date: Mon, 5 Dec 2022 14:06:18 +0100 Message-ID: Subject: Re: [PATCH] 9p/client: fix data race on req->status To: Dominique Martinet Cc: Christian Schoenebeck , v9fs-developer@lists.sourceforge.net, linux-kernel@vger.kernel.org, Naresh Kamboju Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_WL 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 On Mon, 5 Dec 2022 at 13:50, Dominique Martinet wrote: > > KCSAN reported a race between writing req->status in p9_client_cb and > accessing it in p9_client_rpc's wait_event. > > Accesses to req itself is protected by the data barrier (writing req > fields, write barrier, writing status // reading status, read barrier, > reading other req fields), but status accesses themselves apparently > also must be annotated properly with WRITE_ONCE/READ_ONCE when we > access it without locks. > > Follows: > - error paths writing status in various threads all can notify > p9_client_rpc, so these all also need WRITE_ONCE > - there's a similar read loop in trans_virtio for zc case that also > needs READ_ONCE > - other reads in trans_fd should be protected by the trans_fd lock and > lists state machine, as corresponding writers all are within trans_fd > and should be under the same lock. If KCSAN complains on them we likely > will have something else to fix as well, so it's better to leave them > unmarked and look again if required. > > Reported-by: Naresh Kamboju > Suggested-by: Marco Elver > Signed-off-by: Dominique Martinet Acked-by: Marco Elver In case you're interested, KCSAN has a strict mode that is more aggressive about which data races it reports (by default we're hiding several classes of data races). One such class is data races due to missing memory barriers, where e.g. an unmarked operation can be reordered in such a way (by compiler or CPU) that a concurrent racy access occurs. This mode can be enabled with CONFIG_KCSAN_STRICT=y. It's most effective with some good stress tests for the subsystem of interest. See https://docs.kernel.org/dev-tools/kcsan.html#modeling-weak-memory Thanks, -- Marco