2001-10-10 12:02:29

by Thierry Coutelier

[permalink] [raw]
Subject: Kernel patch for cls_u32.c

To solve a problem while listing filters you may add this patch.
It works for all kernel versions from 2.4.6 to 2.4.11
It wold be cool to have it in the next kernel release.

---
diff -ur 2.4.6/linux/net/sched/cls_u32.c linux/net/sched/cls_u32.c
--- 2.4.6/linux/net/sched/cls_u32.c Thu Feb 1 23:06:10 2001
+++ linux/net/sched/cls_u32.c Wed Jul 11 23:55:23 2001
@@ -613,7 +613,8 @@

for (ht = tp_c->hlist; ht; ht = ht->next) {
if (arg->count >= arg->skip) {
- if (arg->fn(tp, (unsigned long)ht, arg) < 0) {
+ if (ht == tp->root &&
+ arg->fn(tp, (unsigned long)ht, arg) < 0) {
arg->stop = 1;
return;
}
@@ -625,7 +626,8 @@
arg->count++;
continue;
}
- if (arg->fn(tp, (unsigned long)n, arg) < 0) {
+ if (ht == tp->root &&
+ arg->fn(tp, (unsigned long)n, arg) < 0) {
arg->stop = 1;
return;
}

---

[email protected]
http://www.linux.lu


2001-10-11 00:40:37

by David Miller

[permalink] [raw]
Subject: Re: Kernel patch for cls_u32.c

From: Thierry Coutelier <[email protected]>
Date: Wed, 10 Oct 2001 14:06:03 +0200

To solve a problem while listing filters you may add this patch.
It works for all kernel versions from 2.4.6 to 2.4.11
It wold be cool to have it in the next kernel release.

What is the "problem"? Why should it only call the walker function
on entries which equal tp->root? This change doesn't make any sense
to me.

You need to describe the problem and how your changes solve
that problem.

Franks a lot,
David S. Miller
[email protected]


2001-10-11 18:53:44

by David Weinehall

[permalink] [raw]
Subject: Re: Kernel patch for cls_u32.c

On Wed, Oct 10, 2001 at 02:06:03PM +0200, Thierry Coutelier wrote:
> To solve a problem while listing filters you may add this patch.
> It works for all kernel versions from 2.4.6 to 2.4.11
> It wold be cool to have it in the next kernel release.
>
> ---
> diff -ur 2.4.6/linux/net/sched/cls_u32.c linux/net/sched/cls_u32.c
> --- 2.4.6/linux/net/sched/cls_u32.c Thu Feb 1 23:06:10 2001
> +++ linux/net/sched/cls_u32.c Wed Jul 11 23:55:23 2001
> @@ -613,7 +613,8 @@
>
> for (ht = tp_c->hlist; ht; ht = ht->next) {
> if (arg->count >= arg->skip) {
> - if (arg->fn(tp, (unsigned long)ht, arg) < 0) {
> + if (ht == tp->root &&
> + arg->fn(tp, (unsigned long)ht, arg) < 0) {
> arg->stop = 1;
> return;
> }
> @@ -625,7 +626,8 @@
> arg->count++;
> continue;
> }
> - if (arg->fn(tp, (unsigned long)n, arg) < 0) {
> + if (ht == tp->root &&
> + arg->fn(tp, (unsigned long)n, arg) < 0) {
> arg->stop = 1;
> return;
> }

Yeuch! The author of this code REALLY needs to read
Documentation/CodingStyle

Indentation by 1 (!) single space is by far the ugliest thing I've seen
so far.


/David Weinehall
_ _
// David Weinehall <[email protected]> /> Northern lights wander \\
// Project MCA Linux hacker // Dance across the winter sky //
\> http://www.acc.umu.se/~tao/ </ Full colour fire </