From 42954cc6a0e2efd415bd77c5ed4e95855cd123ca Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 3 Sep 2008 10:06:36 -0700 Subject: [PATCH] .25 networking patch added --- queue-2.6.25/sch_prio_2625.patch | 54 ++++++++++++++++++++++++++++++++ queue-2.6.25/series | 1 + 2 files changed, 55 insertions(+) create mode 100644 queue-2.6.25/sch_prio_2625.patch diff --git a/queue-2.6.25/sch_prio_2625.patch b/queue-2.6.25/sch_prio_2625.patch new file mode 100644 index 00000000000..d36efe2ac98 --- /dev/null +++ b/queue-2.6.25/sch_prio_2625.patch @@ -0,0 +1,54 @@ +From cb3b7106b526380da4133364ffb2cf187759d8ea Mon Sep 17 00:00:00 2001 +From: Thomas Graf +Date: Wed, 3 Sep 2008 01:00:02 -0700 +Subject: [PATCH] sch_prio: Fix nla_parse_nested_compat() regression + +From: Thomas Graf + +[ No upstream commit, this is fixing code no longer in 2.6.27 ] + +nla_parse_nested_compat() was used to parse two different message +formats in the netem and prio qdisc, when it was "fixed" to work +with netem, it broke the multi queue support in the prio qdisc. +Since the prio qdisc code in question is already removed in the +development tree, this patch only fixes the regression in the +stable tree. + +Based on original patch from Alexander H Duyck + +Signed-off-by: Thomas Graf +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman + +--- + net/sched/sch_prio.c | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +--- a/net/sched/sch_prio.c ++++ b/net/sched/sch_prio.c +@@ -228,14 +228,20 @@ static int prio_tune(struct Qdisc *sch, + { + struct prio_sched_data *q = qdisc_priv(sch); + struct tc_prio_qopt *qopt; +- struct nlattr *tb[TCA_PRIO_MAX + 1]; ++ struct nlattr *tb[TCA_PRIO_MAX + 1] = {0}; + int err; + int i; + +- err = nla_parse_nested_compat(tb, TCA_PRIO_MAX, opt, NULL, qopt, +- sizeof(*qopt)); +- if (err < 0) +- return err; ++ qopt = nla_data(opt); ++ if (nla_len(opt) < sizeof(*qopt)) ++ return -1; ++ ++ if (nla_len(opt) >= sizeof(*qopt) + sizeof(struct nlattr)) { ++ err = nla_parse_nested(tb, TCA_PRIO_MAX, ++ (struct nlattr *) (qopt + 1), NULL); ++ if (err < 0) ++ return err; ++ } + + q->bands = qopt->bands; + /* If we're multiqueue, make sure the number of incoming bands diff --git a/queue-2.6.25/series b/queue-2.6.25/series index 0399b9a7790..6e68490a4d5 100644 --- a/queue-2.6.25/series +++ b/queue-2.6.25/series @@ -13,3 +13,4 @@ cifs-fix-o_append-on-directio-mounts.patch 0008-sctp-add-verification-checks-to-SCTP_AUTH_KEY-optio.patch 0011-sctp-correct-bounds-check-in-sctp_setsockopt_auth_k.patch 0012-sctp-fix-random-memory-dereference-with-SCTP_HMAC_I.patch +sch_prio_2625.patch -- 2.47.3