From nobody Sun Feb 8 01:18:00 2026 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 C5BAA27FB12 for ; Thu, 11 Dec 2025 18:06:38 +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=1765476400; cv=none; b=nTj/HiJtBE/LpPdZSivWy8yxG94T5qR60KZTox1t1p66h3fEloiE12txX12oMeSHtmcJbtibKUCSofeVKWUw+LZXqtI2x19fPtRLY4PF8NEgSN6bagx0AIvYsS94Nkt9yCXX4JZ6AazfOxPw4nSVsxVb0endklfK6YwcdHv6zHQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765476400; c=relaxed/simple; bh=xxtOmK9vYTXikPSTDkOMFjuMeEHuFteHGsKUNFxKH+8=; h=Message-ID:Date:MIME-Version:To:Cc:From:Subject:Content-Type; b=OYsfNNRK1gojCIYvWGS5K59aKZdKCD/68Bbptov7jkK8+/udZ2IZIYg3hJXrfu1lWcMtawdhfoC5a5geR8woUDOBdM8iaNYakA2DdjzCv2TqFfcHvs5il+CZfgL9c+hAi73cuyTEnX2NRPomF0v05Rb4pbM7pghlzq+v//feafs= 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=iJY+rCP7; 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="iJY+rCP7" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-7f0da2dfeaeso362142b3a.1 for ; Thu, 11 Dec 2025 10:06:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765476398; x=1766081198; darn=vger.kernel.org; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=JVuhv5P6hJ1zjT2JDUQQiYg5T2ClxfRdCFokAQQIHv8=; b=iJY+rCP7mgLk8SRKB0oihYXVPSi5XiE2kZKyW2wluV4LGvkSd3ndjcokJzb/yIHOpl BcHIbN2RwJRgC5KOCJBs6ZJFfIvX0PtmGYHooH3mjo8yjO73jXHojyLuhpQEqoG6ZFGR lUZe7wvApqcsHY91YNyh5yvpQIk1MyHG3uJmI30tclPYCedvzUBV0G8NKrxi/8j0LVR9 gTk6SE78ngGizdecw7DNwMIHL3lzStfu8LSHtxLD6ya/yDv939yyHbo2o1qB/pfE+bYP sLmgF3pMY5A1A+yKNK7xH+QJIZEo5NxbJTbRE1viJUroKylm7ZHPLNAEG22/719o36mK vMHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765476398; x=1766081198; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=JVuhv5P6hJ1zjT2JDUQQiYg5T2ClxfRdCFokAQQIHv8=; b=i+Hbona+GNOrGG8bDn9pCbeXzsJ3ettDevrSuJyjeDDPnZzrbieP28wQa+Ji84dXAB De2nNhH4k84JUAwdcvJtH6Oo213ac/0Crf48ddYf0zqZFdLljspaCklhXW2gKGPLiNnl SAWWTJP4ts0kPcaPaIpNnkZYSHIthjghq55XF+qb/90aifNwx9QGMaImOQjdHaNRcraS 09dWU/xD50pQlRtZKda4V6BFYBVRxbn0F7Y0z/keYD/nNdxOzMi8nhSxCQpMg04FP9pI 9XSEivo9wW9h3/BA/0p6Q1uw7m5q198CWb4duJkoB3hxTlvkud8vMHVYrW+DQyo6v3Tq HDzQ== X-Forwarded-Encrypted: i=1; AJvYcCU+vvWkCIqdQuu9b7pmq9z4xKbu7zraskVzYsS1ii3c4IkOUm9lrIVeTVTfJx3dNApvBRf2JWz/bjjm2bo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8zZu8tbwHoKKgn37Q9o8J+KVvNpsXPBbA1p/P/Iu+YW6kacA+ +puaNiufVkQVPN1qhUPq+AeKVRhsVsf3dIjgZ+bjSFY+Ns05i5RzuT7V X-Gm-Gg: AY/fxX4H2o7A6/zC9ossWBpMN450pz7+C8VoN9aKZ3r/XmuCmD1JYmgVMN4qJLhS49u AeYZ5yJQQDewmjxWYtx41kadLEQltPUbPD6yBMh8HHWaeTxlpWX1ch/7e7rJIZop034KtlrjPHl Rp9lzgsrdBS3IqVZWiMRNHMRqIryzy070/kvvUrPSDYHb8O1pRP9EHEGt88MfK5MXE2HU7gqzv/ 3dncXyxxVUjAElxtaraVMvem99U6QBA4RZ1ecabJQUrVmgtT00FRCk9emBTVKdrQqlJhB3hIf3i khL22N3cTYEBkU21o+a0/D1anvJLnDBrdH8cv3WMugeafjjYtYH2GgzIGXB1GKpB9CQuMdR1VT7 it6AiEvDqODiF/SSJ91CfH93XGwNSw1pr9JBTUUi5yEYOpQeP4kkKuTQX8s0Lrwyta9u9wx8PPl otbjskKgDPSRZ6SKHjgHZmFSiSh22foMDPHzNngbpTupEqmkWUu+N6Sy0Ropy8mEIFAbg= X-Google-Smtp-Source: AGHT+IGTqJDyBQxv1q8zCkfVVLxfu7DrsDf0DisO/iFj11e3b8tNWHBU08c4v15NM8iE9wN+gatQDg== X-Received: by 2002:a05:6a20:4321:b0:366:14ac:e1d9 with SMTP id adf61e73a8af0-366e33cd277mr7052883637.63.1765476397950; Thu, 11 Dec 2025 10:06:37 -0800 (PST) Received: from ?IPV6:2405:201:2c:5868:663e:4f7b:7032:7e6c? ([2405:201:2c:5868:663e:4f7b:7032:7e6c]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-34a92747d55sm928962a91.4.2025.12.11.10.06.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 11 Dec 2025 10:06:37 -0800 (PST) Message-ID: Date: Thu, 11 Dec 2025 23:36:32 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: stephen@networkplumber.org Cc: xiyou.wangcong@gmail.com, Jiri Pirko , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , netdev@vger.kernel.org, linux-kernel@vger.kernel.org From: Manas Ghandat Subject: net/sched: Fix divide error in tabledist Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8"; format="flowed" Previously, a duplication check was added to ensure that a duplicating netem cannot exist in a tree with other netems. When check_netem_in_tree() fails after parameter updates, the qdisc structure is left in an inconsistent state with some new values applied but duplicate not updated. Move the tree validation check before modifying any qdisc parameters Fixes: ec8e0e3d7ade ("net/sched: Restrict conditions for adding=20 duplicating netems to qdisc tree") Reported-by: Manas Ghandat Signed-off-by: Manas Ghandat --- net/sched/sch_netem.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 32a5f3304046..1a2b498ada83 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -1055,6 +1055,11 @@ static int netem_change(struct Qdisc *sch, struct=20 nlattr *opt, q->loss_model =3D CLG_RANDOM; } + ret =3D check_netem_in_tree(sch, qopt->duplicate, extack); + if (ret) + goto unlock; + q->duplicate =3D qopt->duplicate; + if (delay_dist) swap(q->delay_dist, delay_dist); if (slot_dist) @@ -1068,12 +1073,6 @@ static int netem_change(struct Qdisc *sch, struct=20 nlattr *opt, q->counter =3D 0; q->loss =3D qopt->loss; - ret =3D check_netem_in_tree(sch, qopt->duplicate, extack); - if (ret) - goto unlock; - - q->duplicate =3D qopt->duplicate; - /* for compatibility with earlier versions. * if gap is set, need to assume 100% probability */ --=20 2.43.0