]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
[PATCH] Fix crash while reading /proc/net/route
authorkaber@trash.net <kaber@trash.net>
Sat, 19 Mar 2005 05:37:15 +0000 (21:37 -0800)
committerGreg KH <gregkh@suse.de>
Thu, 12 May 2005 17:00:13 +0000 (10:00 -0700)
[IPV4]: Fix crash while reading /proc/net/route caused by stale pointers

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Chris Wright <chrisw@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/ipv4/fib_hash.c

index 1bf3844dfa42324ab8aacad0eefb394abc809cbc..40d792a0546d8208f9838482122c4e27e6e178a8 100644 (file)
@@ -919,13 +919,23 @@ out:
        return fa;
 }
 
+static struct fib_alias *fib_get_idx(struct seq_file *seq, loff_t pos)
+{
+       struct fib_alias *fa = fib_get_first(seq);
+
+       if (fa)
+               while (pos && (fa = fib_get_next(seq)))
+                       --pos;
+       return pos ? NULL : fa;
+}
+
 static void *fib_seq_start(struct seq_file *seq, loff_t *pos)
 {
        void *v = NULL;
 
        read_lock(&fib_hash_lock);
        if (ip_fib_main_table)
-               v = *pos ? fib_get_next(seq) : SEQ_START_TOKEN;
+               v = *pos ? fib_get_idx(seq, *pos - 1) : SEQ_START_TOKEN;
        return v;
 }