From nobody Wed Apr 15 12:20:43 2026 Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB4263659EF for ; Wed, 4 Mar 2026 05:37:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772602657; cv=none; b=J0q4afaDaEsJh0oN+pde0b9hPhSiv5XzvpNGJQdPeDtRHE1meIXLcSVDpYhjIe0CQO6zI5gqdOW3t5PivGj5FhAlVvn8PUp833nM1AMkZ1LiLeqNpnGFfIV3zvhMeDBB8hfsydwLKtcEtXFomXeyd8KZnJRlkEzJC+oc51bK7ns= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772602657; c=relaxed/simple; bh=/uoLEWePp0ARLfd/KH35rK3IxnzFW8NVcj4sJHWD9mU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=RzU1NL+KEYzOijPn7keWVED7iUGSECOILXYkJk6H4pjMOaR/4EHyjlU2AUx3hxar8f7PwrFXhydBfz3NAml846FiBGxJ3dmVHc2HEf4QvE//OYTIiLyK+ewKyB+HY5HG5nEL0TcFPsDOy34Ax4XpsA2zJCqK6fhiJvcIy3pmZ6I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=RgANMFJf; arc=none smtp.client-ip=209.85.210.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="RgANMFJf" Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-8272a56b91cso5459443b3a.1 for ; Tue, 03 Mar 2026 21:37:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772602656; x=1773207456; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=Cqzppm2nTsO1aV0gLTqfvQz1+uYtyuSrrfXq7ggJT8g=; b=RgANMFJfEiKJlEHAW4FCr1piwQdJep0AmiminBi5smacxavV5jpxB1l2p1GFZsM6A7 262QYsEMR5JG67b7bKvUy9mLbw1W6ShejMBZNZWDSf2Y1SOJqpgNv8LOz10HhNyYJrJr 0s6ipE00s6+HtCJ9EvTAjGIFW+ecALdNo6op3+sxRGH809fVmQDp6OOWWwTC2tCJ0MuE OixHcW4YkPbvebH81L8wihycZtmlYWo4b626T1+IZh2zT2krclC7PsC6uqHl4rYYCEMq T2N/M3Y+dZ6rg8UdQyKzF+kaG/LXRkouZiNlMeQB9ghOYKXoL3avTGxSCV9wmh2e8pP8 iG+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772602656; x=1773207456; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Cqzppm2nTsO1aV0gLTqfvQz1+uYtyuSrrfXq7ggJT8g=; b=HWSi0DlicLubEGx+XMTjmWAxGDeCf0io13QWneQaIb+m375ddBe26fBfx9b2KejXX7 cxBM3X3++eNwUY1NibI79hIv2/3dH12XUgaNVaTn9govyRWUSvbCq1SOJvsqje9ahM0c BpWAKqPVDA2ZwmJ/IjwFfQkmHqqLO7ahnELRih9GnJ+Q+q3h4VTjWF54ceQbB8Zq4qq2 71e/3pzbhGzWSWbpQzO3zW7EcJLwfKulEu7Puk+rEBFMvdP95c5zQrG8opWoh/3vUUhj sn3hnK7GnxTmGaKRoC0RAcF5wWbygQmvqdfZrGiAB8GVBKp6xjlCLo00NkjJhXkabIdQ 39uA== X-Gm-Message-State: AOJu0YxJ3TT+XlQC31IXEgpX4eG9N2lkkGal4QEljCAsoxJ8wQ5KYJyT TqW38i2J1/dsFckGShXwRSyQC/EkdpnlSRDk3//47TlGepUEhQJ4LsWnFOc6Uf2U X-Gm-Gg: ATEYQzz9Ww3CQhBTUbhyRVGgEeFMQYlL2WZmP4LoMnnQRUT+3Fqmx3smu1cS2o+PfN2 AdSQmVjOYq5mFT5NUreOGyXX9pVIcJkHO6HEw2f5E6fS9Jkq/iMRqqelrOclNrW71RFWKo/tIXd 1kCIA4iwszcyD1QFIig0wVWYd6F0zXoj2iEmJgZ7GsRAokJCl16udThCZJhtwixd5sEqP9h3Ks2 kjB69v/+8PDRGkp40tN2tIXPc+sBYY0+xhuCW9B1/zbwfxIrtmRqRp3s29QgIWnTHLd/6FP4ila d55X4QT0Y000NtdibCiOgjoQAQn25+y20E/Qnuhoep3UXFZdKvwPX2O5kdLoq7xRGwjTHsTlFgS byLfphwfsDk74mZRSjowGyRjxjLZFHbBrqeku48qZ+vuMdmQ3csjAi0NTmeW7UkArGmnOQpO39x jYORSlfj4ju4DqRAAu5BS/Rix04YFC5ZFFKi4eLapukiZFtgujNPoW2mNmesZF2rnDQvvuENu6Q qY= X-Received: by 2002:a05:6a00:3e16:b0:81f:3cac:38a1 with SMTP id d2e1a72fcca58-829729093fcmr852331b3a.6.1772602655946; Tue, 03 Mar 2026 21:37:35 -0800 (PST) Received: from mi-HP-ProDesk-680-G6-PCI-Microtower-PC.mioffice.cn ([43.224.245.226]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82739db3ab8sm17496964b3a.27.2026.03.03.21.37.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 03 Mar 2026 21:37:35 -0800 (PST) From: zhidao su X-Google-Original-From: zhidao su To: linux-kernel@vger.kernel.org, sched-ext@lists.linux.dev, bpf@vger.kernel.org Cc: tj@kernel.org, void@manifault.com, arighi@nvidia.com, changwoo@igalia.com, zhidao su Subject: [PATCH] sched_ext: Use WRITE_ONCE() for the write side of dsq->seq update Date: Wed, 4 Mar 2026 13:37:30 +0800 Message-ID: <20260304053730.557800-1-suzhidao@xiaomi.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" bpf_iter_scx_dsq_new() reads dsq->seq via READ_ONCE() without holding any lock, making dsq->seq a lock-free concurrently accessed variable. However, dispatch_enqueue(), the sole writer of dsq->seq, uses a plain increment without the matching WRITE_ONCE() on the write side: dsq->seq++; ^^^^^^^^^^^ plain write -- KCSAN data race The KCSAN documentation requires that if one accessor uses READ_ONCE() or WRITE_ONCE() on a variable to annotate lock-free access, all other accesses must also use the appropriate accessor. A plain write leaves the pair incomplete and will trigger KCSAN warnings. Fix by using WRITE_ONCE() for the write side of the update: WRITE_ONCE(dsq->seq, dsq->seq + 1); This is consistent with bpf_iter_scx_dsq_new() and makes the concurrent access annotation complete and KCSAN-clean. Signed-off-by: zhidao su --- kernel/sched/ext.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 576a9b13eabf..49af85a697a5 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -1137,7 +1137,7 @@ static void dispatch_enqueue(struct scx_sched *sch, s= truct rq *rq, } =20 /* seq records the order tasks are queued, used by BPF DSQ iterator */ - dsq->seq++; + WRITE_ONCE(dsq->seq, dsq->seq + 1); p->scx.dsq_seq =3D dsq->seq; =20 dsq_mod_nr(dsq, 1); --=20 2.43.0