From patchwork Sat Mar 29 22:25:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cong Wang X-Patchwork-Id: 14032807 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (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 10C2176035 for ; Sat, 29 Mar 2025 22:27:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743287253; cv=none; b=iMiMr0Vs4Muq9jsFjhJIYiNMzGDifFT34IwcxPgBHieRt25tvDVRu8ZZkUeXVbg1Am8JCVobvAwVGepwzv1TgokXJvYFjJZhxXobD2sND51P+OcyBov5Hcw6pX9fKdJ9wBR1mnL1zsMVCRixPPJLI8tC0dKZT5KrRJN6X3Otyjs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743287253; c=relaxed/simple; bh=35e4rZ1qLqvyMbmYhOcgqu1cEqINeeK+c2vplzpgfys=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=m7n+Uj8MMwc5sJzAI4t+evinmqR0wnr0iqR91BCojOfSOjiEHv6iFiifxoZmTVFmZrHXT3jpD6cZx74oWngOSjNVoadIYi2f8U93o2JoNoc3ENmb9PKnhc3r/oVhpI4pFfKgS29FOm6TmUl5HZvYOoF6cIspDfAsFu9Ifg9YjAA= 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=UWh3evAb; arc=none smtp.client-ip=209.85.214.176 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="UWh3evAb" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2241053582dso35498255ad.1 for ; Sat, 29 Mar 2025 15:27:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743287251; x=1743892051; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vUg1KR6l/fL7ilHPpnavpewDnm5XIPbgUb3aT5ktoZY=; b=UWh3evAbO67pYTIspAGu80vXDdjQW5LboqiV3G9MvArTk1GqLKurMUXJgjdgeJduL4 3m6XIaJgf+DZZPBBODF88pkDlTP8mNAzKpnAPQV4h9xwl0Xk4cfd3+IJUD5UhemKO7bv hTTabEx9coN6ETc2QoflDTtMjpqBOtrcV7jWvaeVxRsozEsn6Xisdz60xc1Jnj+hEkRl dy7uH11NjqmPQe6a5fKvVfYJwh9urEKOPocXS9uzDCX6yi8I1edTCFH9EGEsvA5nfLob lJg1OF0KVGqvutbmwtta55NcHjtsanc0twNlpzGQZlmD86KrHgN2N8IM0XDC89Di/4au Ta3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743287251; x=1743892051; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vUg1KR6l/fL7ilHPpnavpewDnm5XIPbgUb3aT5ktoZY=; b=ke6jf/AAHj0VmlXOyWfLpF2pxUh0YpcCww0s/VoEtaKxqD8kpcTK3UHbG3EZE4bMpu MME3VPYHSrdaeZetd4feBNB5wtuIIEG9T6eODv0Z/vxhNxtasNKpAx3k/4q9eBrncvAA v1Nb8cPGIv+k1e18hvQtRKjpS8xwiYVW9vF+jxHcfCn1hnoVOCu36nHvGALzlNbnYDBc U2vg6fZYgfmxMOrtOmURAwIhBztHTLD9Im37xbdRMcH/9tCWyTEmnmao1RVtN5YXeSiO KV17RSFaLt3GqJaDTmKl87TuGVBCFI/gr3TjB7or3COYUSmzfIscZ1slP1AjkZd3VFTf FK/Q== X-Gm-Message-State: AOJu0YyODovAyZ2QrtzpMj+vE186zjaClHgrJpMVLufjSiORPgk1mHFD QKMd0B7jE2mXNxRL5JNEJ8IamlVqiCvg60gbL/fIy2U/cJSbDGPFj8X3ng== X-Gm-Gg: ASbGncupzlBzHpn1bFsl5/f/f0l4dWTqlSNVoWVgL4UkE7Nak87wSo/L76EsHIK2mON OX7mGBs8C8ZKUtadoXgulBm8qMxNOs6887K4TSNOuPSQd1DKuh0eaj9PkxjxVo7WMB+C6z6g+SF rwM6OFN+Dg1/r6VIINzNI59hdpjqqrQAvpEP865f4lm4oIERE6XpdvsIDrv0VA3v64Dh/JL9H14 Fndy5bewP1+XtRUfNW4NnXqhWT2u7I0qXq/wuTvw60SJrX5yHS4ML28IB8DqYmUebmp22zk3YW3 kot21GDsRn5GApnx3IAeRpa3qusxW2756+3t8j4h3x8B8TAefg== X-Google-Smtp-Source: AGHT+IFP2NC0kd1yujkI1xbcTY5wp0Ns9O5kGL56Dldd5am61UYo07gyLTF8kN0wctAD1D48sz7aNA== X-Received: by 2002:a17:902:eb8d:b0:21f:564:80a4 with SMTP id d9443c01a7336-2292f9e5139mr59840685ad.33.1743287250899; Sat, 29 Mar 2025 15:27:30 -0700 (PDT) Received: from pop-os.. ([2601:647:6881:9060:c022:127e:b74a:2420]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2291f1ecbc9sm41477335ad.215.2025.03.29.15.27.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Mar 2025 15:27:30 -0700 (PDT) From: Cong Wang To: netdev@vger.kernel.org Cc: jhs@mojatatu.com, jiri@resnulli.us, Cong Wang , syzbot+a3422a19b05ea96bee18@syzkaller.appspotmail.com, Nishanth Devarajan Subject: [Patch net 1/2] net_sched: skbprio: Remove overly strict queue assertions Date: Sat, 29 Mar 2025 15:25:35 -0700 Message-Id: <20250329222536.696204-2-xiyou.wangcong@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250329222536.696204-1-xiyou.wangcong@gmail.com> References: <20250329222536.696204-1-xiyou.wangcong@gmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org In the current implementation, skbprio enqueue/dequeue contains an assertion that fails under certain conditions when SKBPRIO is used as a child qdisc under TBF with specific parameters. The failure occurs because TBF sometimes peeks at packets in the child qdisc without actually dequeuing them when tokens are unavailable. This peek operation creates a discrepancy between the parent and child qdisc queue length counters. When TBF later receives a high-priority packet, SKBPRIO's queue length may show a different value than what's reflected in its internal priority queue tracking, triggering the assertion. The fix removes this overly strict assertions in SKBPRIO, they are not necessary at all. Reported-by: syzbot+a3422a19b05ea96bee18@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=a3422a19b05ea96bee18 Fixes: aea5f654e6b7 ("net/sched: add skbprio scheduler") Cc: Nishanth Devarajan Signed-off-by: Cong Wang --- net/sched/sch_skbprio.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/net/sched/sch_skbprio.c b/net/sched/sch_skbprio.c index 20ff7386b74b..f485f62ab721 100644 --- a/net/sched/sch_skbprio.c +++ b/net/sched/sch_skbprio.c @@ -123,8 +123,6 @@ static int skbprio_enqueue(struct sk_buff *skb, struct Qdisc *sch, /* Check to update highest and lowest priorities. */ if (skb_queue_empty(lp_qdisc)) { if (q->lowest_prio == q->highest_prio) { - /* The incoming packet is the only packet in queue. */ - BUG_ON(sch->q.qlen != 1); q->lowest_prio = prio; q->highest_prio = prio; } else { @@ -156,7 +154,6 @@ static struct sk_buff *skbprio_dequeue(struct Qdisc *sch) /* Update highest priority field. */ if (skb_queue_empty(hpq)) { if (q->lowest_prio == q->highest_prio) { - BUG_ON(sch->q.qlen); q->highest_prio = 0; q->lowest_prio = SKBPRIO_MAX_PRIORITY - 1; } else { From patchwork Sat Mar 29 22:25:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cong Wang X-Patchwork-Id: 14032808 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 84BB21DF749 for ; Sat, 29 Mar 2025 22:27:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743287254; cv=none; b=ucFlw1M4WOvMwPggBXq7ANpotu0PGrQ2o6qWelxGNWBcdn1SL6eHR6mDLnJ5E4ZVikGuGiSYfiE6TLBHleieIIt/mmehQwJwaB/l5CfqGQuNZUF2YbUGHahgA5AUahSLwN81xVWzXDShKfxB9ywVvfO5hSjJE9fi7AEdsrP95G4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743287254; c=relaxed/simple; bh=kj5u05uCcsYXw0YJP/2+1VQAoS3iA0L4dP2ClFL6DK4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fvuBCikYdd/4zCHkpqblMVyowYMm7BtS3NYbtqRDb3IKJGZK+FdkkTFBXFcIf1MTaAg7lkJuZlozgavkjiJWrok8P28IOMJt7OV1ktFOguAnLS0YC8hV5JIgycddnbM6KCVNkRbqPfKhHHKTwSShyRoJzsA9s88guxedV3RDtWs= 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=iHTD3pJ8; arc=none smtp.client-ip=209.85.214.177 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="iHTD3pJ8" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-22435603572so65133215ad.1 for ; Sat, 29 Mar 2025 15:27:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743287252; x=1743892052; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+zhw8hMgI/UqeVQjAmaCdXFaYtCBnsMtHTLV+dzQQHU=; b=iHTD3pJ85Qv/Bw2l9EAABxGmuQH9oevCPRKxIqKjxEado5J4PI57hhzJWg9Zko01Er hkya75399pq/e75S6S8l/cztMRnzqBJ/KSQ+Cu4r6PxMyqAb6jOXuhfduvid1va0TODk KPlC+U0Kr/s+pKBR0TbdVUmudV0In04d9TSwfVjTpGpMEZZpy6+fttz/FBynMGGXlym/ lMrQWAxyzF3WUITBQxRqroBYxBdnH2nwr2DJ9T+akKdkfcKFloaJt+q/L+EMDXEIkfjs kf85JyNr5A3ePPxXZ1OWOp5Le54+ZEhZuV4QPlS9UAb91HnP9Wa+6vTvilqSyo3vAw69 YYaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743287252; x=1743892052; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+zhw8hMgI/UqeVQjAmaCdXFaYtCBnsMtHTLV+dzQQHU=; b=B0SK3tqAmc1738YpZhA6FQvJsEXC8AyhQG1UEV/cZEYIEGM+tcT1KLfIdPpHXnzgUj 38s5Vf66cDEl8EMH4ZHXUMLSeLUG4HDlZGwNROWARHxAs3B/lZl9MMMa8P4TZ0w0ZN4T 9EjOwhZG/1AiJxZ2gLfH+c+9LF7hqCNS1Pt2tj+RVwk2E7PdGsb8ode+124Byqxwb9AD UvmRtQxYupSJhtOkUji9dDhF1KLXBFR0ri1PeiYIxBW6BpOt/wKFdVsAkCkoMNXkqGrR lK8T6+1+iW47xA6hUk1jCcqUjYeqT3M1PWHFnjN6vhzh3bJCWSVXV4X79nvmAfUWwhRW 1xfQ== X-Gm-Message-State: AOJu0Yxvmfw87EmTA3gXY7JNvWrzinjap3702eUuqOyw5IEF//Wg8zdw BqXG5GpZkYCfnX3cN8MnKbPjRDQrYyHXAGuTr+3hA053/AulgxrpJ8wiTw== X-Gm-Gg: ASbGncvfYZkl4G4XWRXdaB3G30tVihoCrRhCPY/9y0El8EE6UqKRsNbLI+Q3Ta1NF+o iUg0ukkIh+4lIn9/5ZN7I69iTllgmzdxfRUexzsNCeUnaeHAi4C3F49PBVaDfv8GuX3MkACcb+0 UIZhS2tnz/mp+vzxmrd4NXxXoEVzbJVc9n/R2Zev60I+QOW0dnofKDsvYTjqtXbdrBfYsmccmUh GZm4g0XOwjQ+znhYjgjQX3yUJYQouAQ3v/ymDrEEXN6khIraas3ilAnQOZcX3v4kghERsX59DG/ 1kRvrkeXc2rmjirZDw+giHeruBurWa9pNyuik+uqenK0YXE17Q== X-Google-Smtp-Source: AGHT+IGhha73ydeVPq1USX7VGAiKjUCwCrtC026VpZdArqxpZnO6LwKJTC/tiDtk1BwTRzlRU6TBMQ== X-Received: by 2002:a17:902:f709:b0:223:3b76:4e22 with SMTP id d9443c01a7336-2292f949db4mr53626085ad.6.1743287252417; Sat, 29 Mar 2025 15:27:32 -0700 (PDT) Received: from pop-os.. ([2601:647:6881:9060:c022:127e:b74a:2420]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2291f1ecbc9sm41477335ad.215.2025.03.29.15.27.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 29 Mar 2025 15:27:31 -0700 (PDT) From: Cong Wang To: netdev@vger.kernel.org Cc: jhs@mojatatu.com, jiri@resnulli.us, Cong Wang , Pedro Tammela Subject: [Patch net 2/2] selftests: tc-testing: Add TBF with SKBPRIO queue length corner case test Date: Sat, 29 Mar 2025 15:25:36 -0700 Message-Id: <20250329222536.696204-3-xiyou.wangcong@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250329222536.696204-1-xiyou.wangcong@gmail.com> References: <20250329222536.696204-1-xiyou.wangcong@gmail.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Add a test case to validate the interaction between TBF and SKBPRIO queueing disciplines, specifically targeting queue length accounting corner cases. This test complements the fix for the queue length accounting issue in the SKBPRIO qdisc. This is still best-effort, as timing and manipulating enqueue and dequeue from user-space is very hard. Cc: Pedro Tammela Signed-off-by: Cong Wang --- .../tc-testing/tc-tests/infra/qdiscs.json | 34 ++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json b/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json index 9044ac054167..25454fd95537 100644 --- a/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json +++ b/tools/testing/selftests/tc-testing/tc-tests/infra/qdiscs.json @@ -126,5 +126,37 @@ "$TC qdisc del dev $DUMMY root handle 1: drr", "$IP addr del 10.10.10.10/24 dev $DUMMY" ] - } + }, + { + "id": "c024", + "name": "Test TBF with SKBPRIO - catch qlen corner cases", + "category": [ + "qdisc", + "tbf", + "skbprio" + ], + "plugins": { + "requires": "nsPlugin" + }, + "setup": [ + "$IP link set dev $DUMMY up || true", + "$IP addr add 10.10.10.10/24 dev $DUMMY || true", + "$TC qdisc add dev $DUMMY handle 1: root tbf rate 100bit burst 2000 limit 1000", + "$TC qdisc add dev $DUMMY parent 1: handle 10: skbprio limit 1", + "ping -c 1 -W 0.1 -Q 0x00 -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", + "ping -c 1 -W 0.1 -Q 0x1c -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", + "ping -c 1 -W 0.1 -Q 0x00 -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", + "ping -c 1 -W 0.1 -Q 0x1c -s 1400 -I $DUMMY 10.10.10.1 > /dev/null || true", + "sleep 0.5" + ], + "cmdUnderTest": "$TC -s qdisc show dev $DUMMY", + "expExitCode": "0", + "verifyCmd": "$TC -s qdisc show dev $DUMMY | grep -A 5 'qdisc skbprio'", + "matchPattern": "dropped [1-9][0-9]*", + "matchCount": "1", + "teardown": [ + "$TC qdisc del dev $DUMMY handle 1: root", + "$IP addr del 10.10.10.10/24 dev $DUMMY || true" + ] + } ]