Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp40524pxj; Wed, 26 May 2021 15:32:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzFmPUXHjgeuUZOyK3qlyuNHsmI4dt1Lc8qpq2TLlsw1Qflbz8nwhslSlWRgDgJ0b2y0zoL X-Received: by 2002:a05:6402:487:: with SMTP id k7mr458994edv.315.1622068371614; Wed, 26 May 2021 15:32:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622068371; cv=none; d=google.com; s=arc-20160816; b=sc0YCU7cjuY71GdCmUWtvF0L3ky1vaU2vk+3W3B9fe5Wc0uAX/HU3mI8fKjD+486lz iB0feeDTdkB+61xiQ49zuKd36dsLFTi10g+wruDCz83C+ZvxXJoiLmnaAUzO1wl1xqKe oB62H90LwhQMilS7Gj2smbFAjGhA1Sv9tw5kLKRMQCjWixAJoAIIRUwwN98aucWX28IB PTRyScAWo4AlZYFq8Vr6iMchfOX8NXNwHx5Mvo7cZqQn9zz4PamjzPl3m7Tz1cpIlXkK W4oRGvNhy3i3BwwWCcrZaOqjY9XLzQ7ZFAAg2DMjflJTeEkG/JvaSzErO9sP31SC0Hfb t9eQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:subject:from :references:cc:to:dkim-signature; bh=2BR2CpRv5HUtxyF1HEzJXZYtJUUJGLsBTSqdUuHN7zA=; b=WdkcqzbFZ7+1SjjWKc/VTpLFPXm3w6C8Ts6NZgV0Q8R+vh0hNOsNIN5X0YFuhDeH6w oVf+Dv/M5Fofoh2hB4L5GC5NzuYZwBXCm3klJE93e81//LwKuu6tPT6Tcm8t05mNsc/k VsFFbabj9iPpHlokejEjkLwD3TVu94CkJQ6025z3W8mvnLPR3mKla+PqFmgJyb1LixVv cOnFupWUW/4+H4IDhWaO8e0I9Ezm2mLya6ueKlCgCMa4yBibjRKmN4sXWxClhW7tXFi/ qlDshbMcCA0Kj6zuE2ENdPtyw3MS3lvLxhSqm0i8YLlFCEkuz4XZOPevgybwTeZiuDwC M/Pw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="gf/XOSZV"; 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=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f26si308956ejf.128.2021.05.26.15.32.27; Wed, 26 May 2021 15:32:51 -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=@gmail.com header.s=20161025 header.b="gf/XOSZV"; 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=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234105AbhEZQb3 (ORCPT + 99 others); Wed, 26 May 2021 12:31:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32824 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232985AbhEZQb1 (ORCPT ); Wed, 26 May 2021 12:31:27 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 664E1C061574; Wed, 26 May 2021 09:29:55 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id g17so1555870wrs.13; Wed, 26 May 2021 09:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=to:cc:references:from:subject:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=2BR2CpRv5HUtxyF1HEzJXZYtJUUJGLsBTSqdUuHN7zA=; b=gf/XOSZVYbCOim1OET+mYLpTrqZ76gUyQqjCbZN/qlFwFtlzvuaZl61FdQEADmWaA0 TSAOGHv7/1Xy3c0e5CbBfqlJN9/x3VxAx7wm+5ER5sA9MBkANhIkiAJJfeRuzE5TIIxD 8SQtf6CPnIHV96nehAE01lGzq67TQ4ZHvEpdWPsht4syTldGlKewWOUHbbVtK4Ej/VOp 0nUKLj4HlVx7X38Uo0vT9bO/PnEIMm77uxE8Xq16aD/RMpVtokWc1rYITI8lKKBotfPd LHWf+dga3w54rU3XXlDl6mKTSrfdxF/KB0vseClIjXnliKr97U7zCSUjSY/1Y9NsqPaZ lEBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:cc:references:from:subject:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=2BR2CpRv5HUtxyF1HEzJXZYtJUUJGLsBTSqdUuHN7zA=; b=QZjyhu4VU1l6WAiBJvmj/KisCjrPV/KCzaZmEKegKbjp2xOwPkVpq/fVHcmdacgkC9 oS1AXZv+n3h3HQVgOUfBG2ShC1eEBrkUQjQlZD8XlzJIh1vMVHzaPSEW/3ZAZ+ViCVSK zCdmcy4CgU2uIq/KEquYolW/WmAm1ThLcHckpmpbW5dHaYg9qhF5bJ3s9ivycikXj7n6 Rhf9P2OoFuCk8vy8jMiQV9+qgHPRYBYVjQzyh2H5SnYYSnjxzR7JU1TaoNEWbqb6iklP kuf7gwtwDxRs4qxvaBHcO0mPzKCRqLEKpep/wMwQqhd8miMDEY3dxJQnVjXcTXqaTZJg 2PMQ== X-Gm-Message-State: AOAM533kdSRgoUzHxxY1UJFsgZT9J24Jzp+j8EJlxTHTsBr/ch7f1QZU +2ksSAY/y9EKBaEKsEloNQk= X-Received: by 2002:a5d:4a4f:: with SMTP id v15mr34464625wrs.154.1622046594006; Wed, 26 May 2021 09:29:54 -0700 (PDT) Received: from [192.168.8.197] ([85.255.236.10]) by smtp.gmail.com with ESMTPSA id z203sm3561450wmg.9.2021.05.26.09.29.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 May 2021 09:29:53 -0700 (PDT) To: Marco Elver , axboe@kernel.dk Cc: syzbot , io-uring@vger.kernel.org, linux-kernel@vger.kernel.org, syzkaller-bugs@googlegroups.com, dvyukov@google.com References: <000000000000fa9f7005c33d83b9@google.com> From: Pavel Begunkov Subject: Re: [syzbot] KCSAN: data-race in __io_uring_cancel / io_uring_try_cancel_requests Message-ID: Date: Wed, 26 May 2021 17:29:44 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/26/21 4:52 PM, Marco Elver wrote: > Due to some moving around of code, the patch lost the actual fix (using > atomically read io_wq) -- so here it is again ... hopefully as intended. > :-) "fortify" damn it... It was synchronised with &ctx->uring_lock before, see io_uring_try_cancel_iowq() and io_uring_del_tctx_node(), so should not clear before *del_tctx_node() The fix should just move it after this sync point. Will you send it out as a patch? diff --git a/fs/io_uring.c b/fs/io_uring.c index 7db6aaf31080..b76ba26b4c6c 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -9075,11 +9075,12 @@ static void io_uring_clean_tctx(struct io_uring_task *tctx) struct io_tctx_node *node; unsigned long index; - tctx->io_wq = NULL; xa_for_each(&tctx->xa, index, node) io_uring_del_tctx_node(index); - if (wq) + if (wq) { + tctx->io_wq = NULL; io_wq_put_and_exit(wq); + } } static s64 tctx_inflight(struct io_uring_task *tctx, bool tracked) -- Pavel Begunkov