diff options
author | Jakub Kicinski <kuba@kernel.org> | 2023-06-23 03:40:38 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2023-06-23 03:40:38 +0200 |
commit | a7384f3918756c193e3fcd7e3111fc4bd3686013 (patch) | |
tree | 156fda862edf0154225e6a5d8d092b0f6fe35728 /net/sched/sch_netem.c | |
parent | Merge branch 'mptcp-expose-more-info-and-small-improvements' (diff) | |
parent | Merge tag 'net-6.4-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/netd... (diff) | |
download | linux-a7384f3918756c193e3fcd7e3111fc4bd3686013.tar.xz linux-a7384f3918756c193e3fcd7e3111fc4bd3686013.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net
Cross-merge networking fixes after downstream PR.
Conflicts:
tools/testing/selftests/net/fcnal-test.sh
d7a2fc1437f7 ("selftests: net: fcnal-test: check if FIPS mode is enabled")
dd017c72dde6 ("selftests: fcnal: Test SO_DONTROUTE on TCP sockets.")
https://lore.kernel.org/all/5007b52c-dd16-dbf6-8d64-b9701bfa498b@tessares.net/
https://lore.kernel.org/all/20230619105427.4a0df9b3@canb.auug.org.au/
No adjacent changes.
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/sched/sch_netem.c')
-rw-r--r-- | net/sched/sch_netem.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/sched/sch_netem.c b/net/sched/sch_netem.c index 0c9e93d66c50..33c0dbe35956 100644 --- a/net/sched/sch_netem.c +++ b/net/sched/sch_netem.c @@ -967,6 +967,7 @@ static int netem_change(struct Qdisc *sch, struct nlattr *opt, if (ret < 0) return ret; + sch_tree_lock(sch); /* backup q->clg and q->loss_model */ old_clg = q->clg; old_loss_model = q->loss_model; @@ -975,7 +976,7 @@ static int netem_change(struct Qdisc *sch, struct nlattr *opt, ret = get_loss_clg(q, tb[TCA_NETEM_LOSS]); if (ret) { q->loss_model = old_loss_model; - return ret; + goto unlock; } } else { q->loss_model = CLG_RANDOM; @@ -1042,6 +1043,8 @@ 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); +unlock: + sch_tree_unlock(sch); return ret; get_table_failure: @@ -1051,7 +1054,8 @@ get_table_failure: */ q->clg = old_clg; q->loss_model = old_loss_model; - return ret; + + goto unlock; } static int netem_init(struct Qdisc *sch, struct nlattr *opt, |