From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (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 74569378D92 for ; Fri, 8 May 2026 07:29:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778225380; cv=none; b=ViT5CJz66Lbv+Fo5aU/BPoUunAoPfT0oiycHJGzh4qINMzEbqu2EmPtWi3MRa6AX2kSzpzyroRYyoQui5jyiLBr2l/Mr+vXBpFzyzHkTCqdkp7g07FmpYKx1DRLTBMHpp3LpRL4MzWJXHdwlkBRNTlhxRrA9TWh4wswED6QrPbk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778225380; c=relaxed/simple; bh=UV3vDUx/ixtawujq7y2yE/TpVHRoU97zTaYwMc423Fw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=rjCDivan17J5sbMTE22xRg/G7atSRgP87SMRb4/1UwOYYpiwn7OUeTALNCg936HgDu7QcX//G+yqRgEA+PsfdiTrk8s22UR0zt+rSWWR1OjXzetPFcuA8cEEOhEWT3Xq8uosrPbYJhb6wk6+bZfN5dtMhkrBVUMf0uQd0mxVCsc= 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=R/WeU3YD; arc=none smtp.client-ip=209.85.210.182 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="R/WeU3YD" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-835b78c3797so746785b3a.2 for ; Fri, 08 May 2026 00:29:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778225372; x=1778830172; 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=XjD1HhPcdD65F14qBieogarf7PMcv4Y5ezZjnzuo9jw=; b=R/WeU3YDpMOQ55eXsdI3PbJpfS7Vlr3JoQwvnVsYoGufFXHb7E8HUVBud3QXuPxwTG 8Ax9SBmNnO+vSHzTLJDoq6fA+tCHq52LvK3GO3j67NDvx5vR5aGRc12l1J5ATXzEGPLM fdMJ6ZkdXVWpl5fQnyHf17SA0sPFNBleB0vyC3FfnEMlHcJy1egMOTABMN412yx/m+6j pKlVWKnIs7Eow7oKMZa6JTD71r6WzM3ZLo26o6iR0D1hEKmbp5CYwUVsY0B4IjR1h6Gv Lbw10Emly/PBr6dCORjgVxsBwtOA/8bdqvt0gXF3sJBYBSIy9pfrftNuitKJ2MvGWKgQ CATw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778225372; x=1778830172; 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=XjD1HhPcdD65F14qBieogarf7PMcv4Y5ezZjnzuo9jw=; b=iDP7xKHBh1eozmd4/pqhEei3D7uOv/Y16yY1nKJC+eQWiEJgUWBimwt99wCSGczUyl F/nkAWtYJ2auvST++NUj6ScTk8CplmN1iTK6Nnk42Gm2OynpfVh3xxDG6ar8qOPL+G75 biLDGnTMeFOkXn210N9YZpzy0Fk8PF/sGXDJPuk2Q1JrbGtBiWR0eQ3oAhnm1B2VfK/C qOpe6Rhd8Z2OUlVFTkkF5EFI9RrwzrRZ78D7uO5orUYP5mN5HFqTobp1pyJk9SWrZWOU 6jLo0510HXWaPoEDAv+KPm4sJfhAS33LhNkoDHvv+PAmVDJzlU4zFtrHfMknwu1Cg0Xr BxQA== X-Forwarded-Encrypted: i=1; AFNElJ9+7cwwFltJNhVNeQ/hyo+SKESSlNP58aIpQ99X+HTuUtS3eZ1tRz+ukWs7sOjwKpg2RUbMlQS+xERf52A=@vger.kernel.org X-Gm-Message-State: AOJu0YzhzJKpHWCzgw/L3plPbLHjmgzS2sr/K+Pw/V/v296B3p8K3cA3 znn6sI7gTzHTDDElXZHxm+u4u0Jq1J1ywact7udc8vbRZBaR3sHigld5 X-Gm-Gg: AeBDieum2Yftc2OipnyBqez7JTmkm+7752aidi5rSG7NtCtLhEofbN8Fa6F6sK73NWh 9inywxrF34B4BIpSB2ox9lC23pz0OCKmy6sJtnT29inDVtuieAurqPzx+WnZyQqcjptPFaSughS KHB7XhNchOTZBsFQjsAXTmmg8GNyA1wGjICkYcyhQUtUgr/e1vvBgKS0FeN/XHfQ5vz/2RLT/IA TJJ2JQ15EtF1zUIk2R1xTT5Dsu30dJkIMu24cbZ+MwwzlRjY6oSl4dFFIa0Rwl3hOcCEjB7HGEz IA8SxeayS5XSjKpzM3rwTtB0qwJBtCF1ueFNzgv4cWDg69WYAVmhyk6BM+QlFFALJpdk4v68TQd jsICMBo30K8+kDFDLs10avhbAn90C8NDQO93zzm4lyzzRD2e9JvxB5tPnu2aCPg513/PCldU2bp F2yuDm4ZaMECRXNuBSt5gUN9v3HI+pzuCe+gRZ8kA= X-Received: by 2002:a05:6a21:e082:b0:3a2:ebfc:6bf3 with SMTP id adf61e73a8af0-3aab16e6a17mr1973716637.29.1778225372273; Fri, 08 May 2026 00:29:32 -0700 (PDT) Received: from vini ([2401:4900:8fc9:edb:b9ff:550d:d955:a799]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c8267696787sm967701a12.13.2026.05.08.00.29.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 May 2026 00:29:31 -0700 (PDT) From: Vineet Agarwal To: netdev@vger.kernel.org Cc: jhs@mojatatu.com, jiri@resnulli.us, davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, horms@kernel.org, linux-kernel@vger.kernel.org, Vineet Agarwal Subject: [PATCH net-next v2] net/sched: sch_dualpi2: annotate lockless stats reads in dump path Date: Fri, 8 May 2026 12:59:18 +0530 Message-ID: <20260508072918.324797-1-agarwal.vineet2006@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit dualpi2_dump_stats() runs without holding the qdisc lock and provides best-effort statistics to userspace. These fields are updated concurrently from enqueue and dequeue paths and may be observed locklessly in the dump path. Use READ_ONCE() to ensure safe single-copy loads of these counters and prevent compiler optimizations that could otherwise result in torn or inconsistent observations on weakly ordered architectures. No WRITE_ONCE() annotations are added because these statistics are maintained as best-effort counters, and the update paths already use simple non-synchronized increments consistent with existing qdisc statistics patterns. The intent of this change is only to make the lockless read semantics explicit. Signed-off-by: Vineet Agarwal --- net/sched/sch_dualpi2.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/net/sched/sch_dualpi2.c b/net/sched/sch_dualpi2.c index 241e6a46bd00..40035f70db80 100644 --- a/net/sched/sch_dualpi2.c +++ b/net/sched/sch_dualpi2.c @@ -1046,14 +1046,14 @@ static int dualpi2_dump_stats(struct Qdisc *sch, struct gnet_dump *d) struct dualpi2_sched_data *q = qdisc_priv(sch); struct tc_dualpi2_xstats st = { .prob = READ_ONCE(q->pi2_prob), - .packets_in_c = q->packets_in_c, - .packets_in_l = q->packets_in_l, - .maxq = q->maxq, - .ecn_mark = q->ecn_mark, - .credit = q->c_protection_credit, - .step_marks = q->step_marks, - .memory_used = q->memory_used, - .max_memory_used = q->max_memory_used, + .packets_in_c = READ_ONCE(q->packets_in_c), + .packets_in_l = READ_ONCE(q->packets_in_l), + .maxq = READ_ONCE(q->maxq), + .ecn_mark = READ_ONCE(q->ecn_mark), + .credit = q->c_protection_credit, + .step_marks = READ_ONCE(q->step_marks), + .memory_used = READ_ONCE(q->memory_used), + .max_memory_used = READ_ONCE(q->max_memory_used), .memory_limit = q->memory_limit, }; u64 qc, ql; -- 2.54.0