diff options
author | Pavel Emelyanov <xemul@openvz.org> | 2008-04-24 04:02:16 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-04-24 04:02:16 -0400 |
commit | 5e659e4cb0eedacdc1f621a61e400a4611ddef8a (patch) | |
tree | fa3c8743010dd640c48584a6fa8a910d27350c01 /net/sctp/objcnt.c | |
parent | 3d36696024499aef19dbf24a781e91a24fbbe4af (diff) |
[NET]: Fix heavy stack usage in seq_file output routines.
Plan C: we can follow the Al Viro's proposal about %n like in this patch.
The same applies to udp, fib (the /proc/net/route file), rt_cache and
sctp debug. This is minus ~150-200 bytes for each.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/objcnt.c')
-rw-r--r-- | net/sctp/objcnt.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/sctp/objcnt.c b/net/sctp/objcnt.c index cfeb07ea1b04..f73ec0ea93ba 100644 --- a/net/sctp/objcnt.c +++ b/net/sctp/objcnt.c | |||
@@ -83,13 +83,12 @@ static sctp_dbg_objcnt_entry_t sctp_dbg_objcnt[] = { | |||
83 | */ | 83 | */ |
84 | static int sctp_objcnt_seq_show(struct seq_file *seq, void *v) | 84 | static int sctp_objcnt_seq_show(struct seq_file *seq, void *v) |
85 | { | 85 | { |
86 | int i; | 86 | int i, len; |
87 | char temp[128]; | ||
88 | 87 | ||
89 | i = (int)*(loff_t *)v; | 88 | i = (int)*(loff_t *)v; |
90 | sprintf(temp, "%s: %d", sctp_dbg_objcnt[i].label, | 89 | seq_printf(seq, "%s: %d%n", sctp_dbg_objcnt[i].label, |
91 | atomic_read(sctp_dbg_objcnt[i].counter)); | 90 | atomic_read(sctp_dbg_objcnt[i].counter), &len); |
92 | seq_printf(seq, "%-127s\n", temp); | 91 | seq_printf(seq, "%*s\n", 127 - len, ""); |
93 | return 0; | 92 | return 0; |
94 | } | 93 | } |
95 | 94 | ||