From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ABA273D5647; Wed, 20 May 2026 17:50:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779299424; cv=none; b=qfWiDceGo+ztKN4237H18mph7jE5pBzBXpQqMTw7sbITsEb4+YrOXL3Q/dIHn3HLROgN5GW/7kaFF7/ONe2uUSmmWmR/kmgqqM3stU9MGz8ImaiNWCpL5roC46BgmvWDpXGVRZk8R+8A3AcRTUy0CZA/UtWatotBMYLtt9IrDaA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779299424; c=relaxed/simple; bh=JmBU1XV8TsTpsl0V4gYRDLEfO0wX08CCxgu7ieASsSc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tCQPQIUkJ6sKyjEFNiNZQAsn+HB+yGsCt+vpe6KnxkDbA8teaZWlksyP9NwKN/g+OIC3f4O9itEKguv4WPe/yM8uohFm128y/5RKiuwxyXvg3PK7DV2DjdV5yf2+b5wcUFr0qXxFMiB9qf4GCiMHCekr91ZHOmzzB8iqT7LVD8Y= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=OouPom5M; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="OouPom5M" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1C2061F00893; Wed, 20 May 2026 17:50:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1779299421; bh=I2rdVHJVSTcg+sCMb+1IU4twRljXueDM3/ATq0DFZOw=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=OouPom5MuxZvZKWv79qY0QeWcY8M8cFGE/Z+6rbmfWsiREeuI/ZU0payPhZRGQFj2 yNZ/T6ganO3w4kpmqRliIB/7eDd5SzBtX4fhEn/E5i6FEX4a8sq4wXlp+bT/gxptyR B7UWfQB3tsJvCw7a7BGdYcGXmAvyFcmclVe3Lle8= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Stephen Hemminger , Simon Horman , Jakub Kicinski , Sasha Levin Subject: [PATCH 6.18 767/957] net/sched: netem: only reseed PRNG when seed is explicitly provided Date: Wed, 20 May 2026 18:20:50 +0200 Message-ID: <20260520162151.196788984@linuxfoundation.org> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260520162134.554764788@linuxfoundation.org> References: <20260520162134.554764788@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Stephen Hemminger [ Upstream commit 986afaf809940577224a99c3a08d97a15eb37e93 ] netem_change() unconditionally reseeds the PRNG on every tc change command. If TCA_NETEM_PRNG_SEED is not specified, a new random seed is generated, destroying reproducibility for users who set a deterministic seed on a previous change. Move the initial random seed generation to netem_init() and only reseed in netem_change() when TCA_NETEM_PRNG_SEED is explicitly provided by the user. Fixes: 4072d97ddc44 ("netem: add prng attribute to netem_sched_data") Signed-off-by: Stephen Hemminger Reviewed-by: Simon Horman Link: https://patch.msgid.link/20260418032027.900913-4-stephen@networkplumber.org Signed-off-by: Jakub Kicinski Signed-off-by: Sasha Levin --- net/sched/sch_netem.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index da8dcc9b61cc7..4bf65fcdaff02 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -1111,11 +1111,10 @@ static int netem_change(struct Qdisc *sch, struct nlattr *opt, /* capping jitter to the range acceptable by tabledist() */ q->jitter = min_t(s64, abs(q->jitter), INT_MAX); - if (tb[TCA_NETEM_PRNG_SEED]) + if (tb[TCA_NETEM_PRNG_SEED]) { q->prng.seed = nla_get_u64(tb[TCA_NETEM_PRNG_SEED]); - else - q->prng.seed = get_random_u64(); - prandom_seed_state(&q->prng.prng_state, q->prng.seed); + prandom_seed_state(&q->prng.prng_state, q->prng.seed); + } unlock: sch_tree_unlock(sch); @@ -1138,6 +1137,9 @@ static int netem_init(struct Qdisc *sch, struct nlattr *opt, return -EINVAL; q->loss_model = CLG_RANDOM; + q->prng.seed = get_random_u64(); + prandom_seed_state(&q->prng.prng_state, q->prng.seed); + ret = netem_change(sch, opt, extack); if (ret) pr_info("netem: change failed\n"); -- 2.53.0