Commit 652586df95e5d76b37d07a11839126dcfede1621

Authored by Tetsuo Handa
Committed by Linus Torvalds
1 parent 839cc2a94c

seq_file: remove "%n" usage from seq_file users

All seq_printf() users are using "%n" for calculating padding size,
convert them to use seq_setwidth() / seq_pad() pair.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: Kees Cook <keescook@chromium.org>
Cc: Joe Perches <joe@perches.com>
Cc: David Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 10 changed files with 73 additions and 97 deletions Side-by-side Diff

... ... @@ -29,7 +29,6 @@
29 29 char flags[ARRAY_SIZE(con_flags) + 1];
30 30 struct console *con = v;
31 31 unsigned int a;
32   - int len;
33 32 dev_t dev = 0;
34 33  
35 34 if (con->device) {
... ... @@ -47,11 +46,10 @@
47 46 con_flags[a].name : ' ';
48 47 flags[a] = 0;
49 48  
50   - seq_printf(m, "%s%d%n", con->name, con->index, &len);
51   - len = 21 - len;
52   - if (len < 1)
53   - len = 1;
54   - seq_printf(m, "%*c%c%c%c (%s)", len, ' ', con->read ? 'R' : '-',
  49 + seq_setwidth(m, 21 - 1);
  50 + seq_printf(m, "%s%d", con->name, con->index);
  51 + seq_pad(m, ' ');
  52 + seq_printf(m, "%c%c%c (%s)", con->read ? 'R' : '-',
55 53 con->write ? 'W' : '-', con->unblank ? 'U' : '-',
56 54 flags);
57 55 if (dev)
... ... @@ -39,7 +39,7 @@
39 39 unsigned long ino = 0;
40 40 struct file *file;
41 41 dev_t dev = 0;
42   - int flags, len;
  42 + int flags;
43 43  
44 44 flags = region->vm_flags;
45 45 file = region->vm_file;
46 46  
... ... @@ -50,8 +50,9 @@
50 50 ino = inode->i_ino;
51 51 }
52 52  
  53 + seq_setwidth(m, 25 + sizeof(void *) * 6 - 1);
53 54 seq_printf(m,
54   - "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
  55 + "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ",
55 56 region->vm_start,
56 57 region->vm_end,
57 58 flags & VM_READ ? 'r' : '-',
58 59  
... ... @@ -59,13 +60,10 @@
59 60 flags & VM_EXEC ? 'x' : '-',
60 61 flags & VM_MAYSHARE ? flags & VM_SHARED ? 'S' : 's' : 'p',
61 62 ((loff_t)region->vm_pgoff) << PAGE_SHIFT,
62   - MAJOR(dev), MINOR(dev), ino, &len);
  63 + MAJOR(dev), MINOR(dev), ino);
63 64  
64 65 if (file) {
65   - len = 25 + sizeof(void *) * 6 - len;
66   - if (len < 1)
67   - len = 1;
68   - seq_printf(m, "%*c", len, ' ');
  66 + seq_pad(m, ' ');
69 67 seq_path(m, &file->f_path, "");
70 68 }
71 69  
... ... @@ -84,14 +84,6 @@
84 84 return mm->total_vm;
85 85 }
86 86  
87   -static void pad_len_spaces(struct seq_file *m, int len)
88   -{
89   - len = 25 + sizeof(void*) * 6 - len;
90   - if (len < 1)
91   - len = 1;
92   - seq_printf(m, "%*c", len, ' ');
93   -}
94   -
95 87 #ifdef CONFIG_NUMA
96 88 /*
97 89 * These functions are for numa_maps but called in generic **maps seq_file
... ... @@ -269,7 +261,6 @@
269 261 unsigned long long pgoff = 0;
270 262 unsigned long start, end;
271 263 dev_t dev = 0;
272   - int len;
273 264 const char *name = NULL;
274 265  
275 266 if (file) {
... ... @@ -287,7 +278,8 @@
287 278 if (stack_guard_page_end(vma, end))
288 279 end -= PAGE_SIZE;
289 280  
290   - seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
  281 + seq_setwidth(m, 25 + sizeof(void *) * 6 - 1);
  282 + seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ",
291 283 start,
292 284 end,
293 285 flags & VM_READ ? 'r' : '-',
294 286  
... ... @@ -295,14 +287,14 @@
295 287 flags & VM_EXEC ? 'x' : '-',
296 288 flags & VM_MAYSHARE ? 's' : 'p',
297 289 pgoff,
298   - MAJOR(dev), MINOR(dev), ino, &len);
  290 + MAJOR(dev), MINOR(dev), ino);
299 291  
300 292 /*
301 293 * Print the dentry name for named mappings, and a
302 294 * special [heap] marker for the heap:
303 295 */
304 296 if (file) {
305   - pad_len_spaces(m, len);
  297 + seq_pad(m, ' ');
306 298 seq_path(m, &file->f_path, "\n");
307 299 goto done;
308 300 }
... ... @@ -334,7 +326,7 @@
334 326 name = "[stack]";
335 327 } else {
336 328 /* Thread stack in /proc/PID/maps */
337   - pad_len_spaces(m, len);
  329 + seq_pad(m, ' ');
338 330 seq_printf(m, "[stack:%d]", tid);
339 331 }
340 332 }
... ... @@ -342,7 +334,7 @@
342 334  
343 335 done:
344 336 if (name) {
345   - pad_len_spaces(m, len);
  337 + seq_pad(m, ' ');
346 338 seq_puts(m, name);
347 339 }
348 340 seq_putc(m, '\n');
fs/proc/task_nommu.c
... ... @@ -123,14 +123,6 @@
123 123 return size;
124 124 }
125 125  
126   -static void pad_len_spaces(struct seq_file *m, int len)
127   -{
128   - len = 25 + sizeof(void*) * 6 - len;
129   - if (len < 1)
130   - len = 1;
131   - seq_printf(m, "%*c", len, ' ');
132   -}
133   -
134 126 /*
135 127 * display a single VMA to a sequenced file
136 128 */
... ... @@ -142,7 +134,7 @@
142 134 unsigned long ino = 0;
143 135 struct file *file;
144 136 dev_t dev = 0;
145   - int flags, len;
  137 + int flags;
146 138 unsigned long long pgoff = 0;
147 139  
148 140 flags = vma->vm_flags;
149 141  
... ... @@ -155,8 +147,9 @@
155 147 pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
156 148 }
157 149  
  150 + seq_setwidth(m, 25 + sizeof(void *) * 6 - 1);
158 151 seq_printf(m,
159   - "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
  152 + "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ",
160 153 vma->vm_start,
161 154 vma->vm_end,
162 155 flags & VM_READ ? 'r' : '-',
163 156  
164 157  
... ... @@ -164,16 +157,16 @@
164 157 flags & VM_EXEC ? 'x' : '-',
165 158 flags & VM_MAYSHARE ? flags & VM_SHARED ? 'S' : 's' : 'p',
166 159 pgoff,
167   - MAJOR(dev), MINOR(dev), ino, &len);
  160 + MAJOR(dev), MINOR(dev), ino);
168 161  
169 162 if (file) {
170   - pad_len_spaces(m, len);
  163 + seq_pad(m, ' ');
171 164 seq_path(m, &file->f_path, "");
172 165 } else if (mm) {
173 166 pid_t tid = vm_is_stack(priv->task, vma, is_pid);
174 167  
175 168 if (tid != 0) {
176   - pad_len_spaces(m, len);
  169 + seq_pad(m, ' ');
177 170 /*
178 171 * Thread stack in /proc/PID/task/TID/maps or
179 172 * the main process stack.
... ... @@ -2523,16 +2523,17 @@
2523 2523 list_for_each_entry_rcu(fa, &li->falh, fa_list) {
2524 2524 const struct fib_info *fi = fa->fa_info;
2525 2525 unsigned int flags = fib_flag_trans(fa->fa_type, mask, fi);
2526   - int len;
2527 2526  
2528 2527 if (fa->fa_type == RTN_BROADCAST
2529 2528 || fa->fa_type == RTN_MULTICAST)
2530 2529 continue;
2531 2530  
  2531 + seq_setwidth(seq, 127);
  2532 +
2532 2533 if (fi)
2533 2534 seq_printf(seq,
2534 2535 "%s\t%08X\t%08X\t%04X\t%d\t%u\t"
2535   - "%d\t%08X\t%d\t%u\t%u%n",
  2536 + "%d\t%08X\t%d\t%u\t%u",
2536 2537 fi->fib_dev ? fi->fib_dev->name : "*",
2537 2538 prefix,
2538 2539 fi->fib_nh->nh_gw, flags, 0, 0,
2539 2540  
2540 2541  
2541 2542  
... ... @@ -2541,15 +2542,15 @@
2541 2542 (fi->fib_advmss ?
2542 2543 fi->fib_advmss + 40 : 0),
2543 2544 fi->fib_window,
2544   - fi->fib_rtt >> 3, &len);
  2545 + fi->fib_rtt >> 3);
2545 2546 else
2546 2547 seq_printf(seq,
2547 2548 "*\t%08X\t%08X\t%04X\t%d\t%u\t"
2548   - "%d\t%08X\t%d\t%u\t%u%n",
  2549 + "%d\t%08X\t%d\t%u\t%u",
2549 2550 prefix, 0, flags, 0, 0, 0,
2550   - mask, 0, 0, 0, &len);
  2551 + mask, 0, 0, 0);
2551 2552  
2552   - seq_printf(seq, "%*s\n", 127 - len, "");
  2553 + seq_pad(seq, '\n');
2553 2554 }
2554 2555 }
2555 2556  
... ... @@ -1076,7 +1076,7 @@
1076 1076 EXPORT_SYMBOL_GPL(ping_seq_stop);
1077 1077  
1078 1078 static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
1079   - int bucket, int *len)
  1079 + int bucket)
1080 1080 {
1081 1081 struct inet_sock *inet = inet_sk(sp);
1082 1082 __be32 dest = inet->inet_daddr;
... ... @@ -1085,7 +1085,7 @@
1085 1085 __u16 srcp = ntohs(inet->inet_sport);
1086 1086  
1087 1087 seq_printf(f, "%5d: %08X:%04X %08X:%04X"
1088   - " %02X %08X:%08X %02X:%08lX %08X %5u %8d %lu %d %pK %d%n",
  1088 + " %02X %08X:%08X %02X:%08lX %08X %5u %8d %lu %d %pK %d",
1089 1089 bucket, src, srcp, dest, destp, sp->sk_state,
1090 1090 sk_wmem_alloc_get(sp),
1091 1091 sk_rmem_alloc_get(sp),
1092 1092  
1093 1093  
1094 1094  
1095 1095  
1096 1096  
... ... @@ -1093,23 +1093,22 @@
1093 1093 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
1094 1094 0, sock_i_ino(sp),
1095 1095 atomic_read(&sp->sk_refcnt), sp,
1096   - atomic_read(&sp->sk_drops), len);
  1096 + atomic_read(&sp->sk_drops));
1097 1097 }
1098 1098  
1099 1099 static int ping_v4_seq_show(struct seq_file *seq, void *v)
1100 1100 {
  1101 + seq_setwidth(seq, 127);
1101 1102 if (v == SEQ_START_TOKEN)
1102   - seq_printf(seq, "%-127s\n",
1103   - " sl local_address rem_address st tx_queue "
  1103 + seq_puts(seq, " sl local_address rem_address st tx_queue "
1104 1104 "rx_queue tr tm->when retrnsmt uid timeout "
1105 1105 "inode ref pointer drops");
1106 1106 else {
1107 1107 struct ping_iter_state *state = seq->private;
1108   - int len;
1109 1108  
1110   - ping_v4_format_sock(v, seq, state->bucket, &len);
1111   - seq_printf(seq, "%*s\n", 127 - len, "");
  1109 + ping_v4_format_sock(v, seq, state->bucket);
1112 1110 }
  1111 + seq_pad(seq, '\n');
1113 1112 return 0;
1114 1113 }
1115 1114  
... ... @@ -2541,13 +2541,13 @@
2541 2541 EXPORT_SYMBOL(tcp_proc_unregister);
2542 2542  
2543 2543 static void get_openreq4(const struct sock *sk, const struct request_sock *req,
2544   - struct seq_file *f, int i, kuid_t uid, int *len)
  2544 + struct seq_file *f, int i, kuid_t uid)
2545 2545 {
2546 2546 const struct inet_request_sock *ireq = inet_rsk(req);
2547 2547 long delta = req->expires - jiffies;
2548 2548  
2549 2549 seq_printf(f, "%4d: %08X:%04X %08X:%04X"
2550   - " %02X %08X:%08X %02X:%08lX %08X %5u %8d %u %d %pK%n",
  2550 + " %02X %08X:%08X %02X:%08lX %08X %5u %8d %u %d %pK",
2551 2551 i,
2552 2552 ireq->ir_loc_addr,
2553 2553 ntohs(inet_sk(sk)->inet_sport),
2554 2554  
... ... @@ -2562,11 +2562,10 @@
2562 2562 0, /* non standard timer */
2563 2563 0, /* open_requests have no inode */
2564 2564 atomic_read(&sk->sk_refcnt),
2565   - req,
2566   - len);
  2565 + req);
2567 2566 }
2568 2567  
2569   -static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i, int *len)
  2568 +static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i)
2570 2569 {
2571 2570 int timer_active;
2572 2571 unsigned long timer_expires;
... ... @@ -2605,7 +2604,7 @@
2605 2604 rx_queue = max_t(int, tp->rcv_nxt - tp->copied_seq, 0);
2606 2605  
2607 2606 seq_printf(f, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX "
2608   - "%08X %5u %8d %lu %d %pK %lu %lu %u %u %d%n",
  2607 + "%08X %5u %8d %lu %d %pK %lu %lu %u %u %d",
2609 2608 i, src, srcp, dest, destp, sk->sk_state,
2610 2609 tp->write_seq - tp->snd_una,
2611 2610 rx_queue,
2612 2611  
... ... @@ -2622,12 +2621,11 @@
2622 2621 tp->snd_cwnd,
2623 2622 sk->sk_state == TCP_LISTEN ?
2624 2623 (fastopenq ? fastopenq->max_qlen : 0) :
2625   - (tcp_in_initial_slowstart(tp) ? -1 : tp->snd_ssthresh),
2626   - len);
  2624 + (tcp_in_initial_slowstart(tp) ? -1 : tp->snd_ssthresh));
2627 2625 }
2628 2626  
2629 2627 static void get_timewait4_sock(const struct inet_timewait_sock *tw,
2630   - struct seq_file *f, int i, int *len)
  2628 + struct seq_file *f, int i)
2631 2629 {
2632 2630 __be32 dest, src;
2633 2631 __u16 destp, srcp;
2634 2632  
... ... @@ -2639,10 +2637,10 @@
2639 2637 srcp = ntohs(tw->tw_sport);
2640 2638  
2641 2639 seq_printf(f, "%4d: %08X:%04X %08X:%04X"
2642   - " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n",
  2640 + " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK",
2643 2641 i, src, srcp, dest, destp, tw->tw_substate, 0, 0,
2644 2642 3, jiffies_delta_to_clock_t(delta), 0, 0, 0, 0,
2645   - atomic_read(&tw->tw_refcnt), tw, len);
  2643 + atomic_read(&tw->tw_refcnt), tw);
2646 2644 }
2647 2645  
2648 2646 #define TMPSZ 150
2649 2647  
2650 2648  
... ... @@ -2651,11 +2649,10 @@
2651 2649 {
2652 2650 struct tcp_iter_state *st;
2653 2651 struct sock *sk = v;
2654   - int len;
2655 2652  
  2653 + seq_setwidth(seq, TMPSZ - 1);
2656 2654 if (v == SEQ_START_TOKEN) {
2657   - seq_printf(seq, "%-*s\n", TMPSZ - 1,
2658   - " sl local_address rem_address st tx_queue "
  2655 + seq_puts(seq, " sl local_address rem_address st tx_queue "
2659 2656 "rx_queue tr tm->when retrnsmt uid timeout "
2660 2657 "inode");
2661 2658 goto out;
2662 2659  
2663 2660  
2664 2661  
2665 2662  
... ... @@ -2666,16 +2663,16 @@
2666 2663 case TCP_SEQ_STATE_LISTENING:
2667 2664 case TCP_SEQ_STATE_ESTABLISHED:
2668 2665 if (sk->sk_state == TCP_TIME_WAIT)
2669   - get_timewait4_sock(v, seq, st->num, &len);
  2666 + get_timewait4_sock(v, seq, st->num);
2670 2667 else
2671   - get_tcp4_sock(v, seq, st->num, &len);
  2668 + get_tcp4_sock(v, seq, st->num);
2672 2669 break;
2673 2670 case TCP_SEQ_STATE_OPENREQ:
2674   - get_openreq4(st->syn_wait_sk, v, seq, st->num, st->uid, &len);
  2671 + get_openreq4(st->syn_wait_sk, v, seq, st->num, st->uid);
2675 2672 break;
2676 2673 }
2677   - seq_printf(seq, "%*s\n", TMPSZ - 1 - len, "");
2678 2674 out:
  2675 + seq_pad(seq, '\n');
2679 2676 return 0;
2680 2677 }
2681 2678  
... ... @@ -2331,7 +2331,7 @@
2331 2331  
2332 2332 /* ------------------------------------------------------------------------ */
2333 2333 static void udp4_format_sock(struct sock *sp, struct seq_file *f,
2334   - int bucket, int *len)
  2334 + int bucket)
2335 2335 {
2336 2336 struct inet_sock *inet = inet_sk(sp);
2337 2337 __be32 dest = inet->inet_daddr;
... ... @@ -2340,7 +2340,7 @@
2340 2340 __u16 srcp = ntohs(inet->inet_sport);
2341 2341  
2342 2342 seq_printf(f, "%5d: %08X:%04X %08X:%04X"
2343   - " %02X %08X:%08X %02X:%08lX %08X %5u %8d %lu %d %pK %d%n",
  2343 + " %02X %08X:%08X %02X:%08lX %08X %5u %8d %lu %d %pK %d",
2344 2344 bucket, src, srcp, dest, destp, sp->sk_state,
2345 2345 sk_wmem_alloc_get(sp),
2346 2346 sk_rmem_alloc_get(sp),
2347 2347  
2348 2348  
2349 2349  
2350 2350  
2351 2351  
... ... @@ -2348,23 +2348,22 @@
2348 2348 from_kuid_munged(seq_user_ns(f), sock_i_uid(sp)),
2349 2349 0, sock_i_ino(sp),
2350 2350 atomic_read(&sp->sk_refcnt), sp,
2351   - atomic_read(&sp->sk_drops), len);
  2351 + atomic_read(&sp->sk_drops));
2352 2352 }
2353 2353  
2354 2354 int udp4_seq_show(struct seq_file *seq, void *v)
2355 2355 {
  2356 + seq_setwidth(seq, 127);
2356 2357 if (v == SEQ_START_TOKEN)
2357   - seq_printf(seq, "%-127s\n",
2358   - " sl local_address rem_address st tx_queue "
  2358 + seq_puts(seq, " sl local_address rem_address st tx_queue "
2359 2359 "rx_queue tr tm->when retrnsmt uid timeout "
2360 2360 "inode ref pointer drops");
2361 2361 else {
2362 2362 struct udp_iter_state *state = seq->private;
2363   - int len;
2364 2363  
2365   - udp4_format_sock(v, seq, state->bucket, &len);
2366   - seq_printf(seq, "%*s\n", 127 - len, "");
  2364 + udp4_format_sock(v, seq, state->bucket);
2367 2365 }
  2366 + seq_pad(seq, '\n');
2368 2367 return 0;
2369 2368 }
2370 2369  
... ... @@ -595,26 +595,25 @@
595 595  
596 596 static int pn_sock_seq_show(struct seq_file *seq, void *v)
597 597 {
598   - int len;
599   -
  598 + seq_setwidth(seq, 127);
600 599 if (v == SEQ_START_TOKEN)
601   - seq_printf(seq, "%s%n", "pt loc rem rs st tx_queue rx_queue "
602   - " uid inode ref pointer drops", &len);
  600 + seq_puts(seq, "pt loc rem rs st tx_queue rx_queue "
  601 + " uid inode ref pointer drops");
603 602 else {
604 603 struct sock *sk = v;
605 604 struct pn_sock *pn = pn_sk(sk);
606 605  
607 606 seq_printf(seq, "%2d %04X:%04X:%02X %02X %08X:%08X %5d %lu "
608   - "%d %pK %d%n",
  607 + "%d %pK %d",
609 608 sk->sk_protocol, pn->sobject, pn->dobject,
610 609 pn->resource, sk->sk_state,
611 610 sk_wmem_alloc_get(sk), sk_rmem_alloc_get(sk),
612 611 from_kuid_munged(seq_user_ns(seq), sock_i_uid(sk)),
613 612 sock_i_ino(sk),
614 613 atomic_read(&sk->sk_refcnt), sk,
615   - atomic_read(&sk->sk_drops), &len);
  614 + atomic_read(&sk->sk_drops));
616 615 }
617   - seq_printf(seq, "%*s\n", 127 - len, "");
  616 + seq_pad(seq, '\n');
618 617 return 0;
619 618 }
620 619  
621 620  
622 621  
623 622  
624 623  
... ... @@ -785,20 +784,19 @@
785 784  
786 785 static int pn_res_seq_show(struct seq_file *seq, void *v)
787 786 {
788   - int len;
789   -
  787 + seq_setwidth(seq, 63);
790 788 if (v == SEQ_START_TOKEN)
791   - seq_printf(seq, "%s%n", "rs uid inode", &len);
  789 + seq_puts(seq, "rs uid inode");
792 790 else {
793 791 struct sock **psk = v;
794 792 struct sock *sk = *psk;
795 793  
796   - seq_printf(seq, "%02X %5u %lu%n",
  794 + seq_printf(seq, "%02X %5u %lu",
797 795 (int) (psk - pnres.sk),
798 796 from_kuid_munged(seq_user_ns(seq), sock_i_uid(sk)),
799   - sock_i_ino(sk), &len);
  797 + sock_i_ino(sk));
800 798 }
801   - seq_printf(seq, "%*s\n", 63 - len, "");
  799 + seq_pad(seq, '\n');
802 800 return 0;
803 801 }
804 802  
... ... @@ -79,12 +79,13 @@
79 79 */
80 80 static int sctp_objcnt_seq_show(struct seq_file *seq, void *v)
81 81 {
82   - int i, len;
  82 + int i;
83 83  
84 84 i = (int)*(loff_t *)v;
85   - seq_printf(seq, "%s: %d%n", sctp_dbg_objcnt[i].label,
86   - atomic_read(sctp_dbg_objcnt[i].counter), &len);
87   - seq_printf(seq, "%*s\n", 127 - len, "");
  85 + seq_setwidth(seq, 127);
  86 + seq_printf(seq, "%s: %d", sctp_dbg_objcnt[i].label,
  87 + atomic_read(sctp_dbg_objcnt[i].counter));
  88 + seq_pad(seq, '\n');
88 89 return 0;
89 90 }
90 91