Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Tetsuo Handa and committed by
Linus Torvalds
652586df 839cc2a9

+73 -97
+4 -6
fs/proc/consoles.c
··· 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) { ··· 46 47 con_flags[a].name : ' '; 47 48 flags[a] = 0; 48 49 49 - seq_printf(m, "%s%d%n", con->name, con->index, &len); 50 - len = 21 - len; 51 - if (len < 1) 52 - len = 1; 53 - seq_printf(m, "%*c%c%c%c (%s)", len, ' ', con->read ? 'R' : '-', 50 + seq_setwidth(m, 21 - 1); 51 + seq_printf(m, "%s%d", con->name, con->index); 52 + seq_pad(m, ' '); 53 + seq_printf(m, "%c%c%c (%s)", con->read ? 'R' : '-', 54 54 con->write ? 'W' : '-', con->unblank ? 'U' : '-', 55 55 flags); 56 56 if (dev)
+5 -7
fs/proc/nommu.c
··· 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; ··· 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' : '-', ··· 60 59 flags & VM_EXEC ? 'x' : '-', 61 60 flags & VM_MAYSHARE ? flags & VM_SHARED ? 'S' : 's' : 'p', 62 61 ((loff_t)region->vm_pgoff) << PAGE_SHIFT, 63 - MAJOR(dev), MINOR(dev), ino, &len); 62 + MAJOR(dev), MINOR(dev), ino); 64 63 65 64 if (file) { 66 - len = 25 + sizeof(void *) * 6 - len; 67 - if (len < 1) 68 - len = 1; 69 - seq_printf(m, "%*c", len, ' '); 65 + seq_pad(m, ' '); 70 66 seq_path(m, &file->f_path, ""); 71 67 } 72 68
+6 -14
fs/proc/task_mmu.c
··· 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 ··· 261 269 unsigned long long pgoff = 0; 262 270 unsigned long start, end; 263 271 dev_t dev = 0; 264 - int len; 265 272 const char *name = NULL; 266 273 267 274 if (file) { ··· 278 287 if (stack_guard_page_end(vma, end)) 279 288 end -= PAGE_SIZE; 280 289 281 - seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n", 290 + seq_setwidth(m, 25 + sizeof(void *) * 6 - 1); 291 + seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ", 282 292 start, 283 293 end, 284 294 flags & VM_READ ? 'r' : '-', ··· 287 295 flags & VM_EXEC ? 'x' : '-', 288 296 flags & VM_MAYSHARE ? 's' : 'p', 289 297 pgoff, 290 - MAJOR(dev), MINOR(dev), ino, &len); 298 + MAJOR(dev), MINOR(dev), ino); 291 299 292 300 /* 293 301 * Print the dentry name for named mappings, and a 294 302 * special [heap] marker for the heap: 295 303 */ 296 304 if (file) { 297 - pad_len_spaces(m, len); 305 + seq_pad(m, ' '); 298 306 seq_path(m, &file->f_path, "\n"); 299 307 goto done; 300 308 } ··· 326 334 name = "[stack]"; 327 335 } else { 328 336 /* Thread stack in /proc/PID/maps */ 329 - pad_len_spaces(m, len); 337 + seq_pad(m, ' '); 330 338 seq_printf(m, "[stack:%d]", tid); 331 339 } 332 340 } ··· 334 342 335 343 done: 336 344 if (name) { 337 - pad_len_spaces(m, len); 345 + seq_pad(m, ' '); 338 346 seq_puts(m, name); 339 347 } 340 348 seq_putc(m, '\n');
+6 -13
fs/proc/task_nommu.c
··· 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 */ ··· 134 142 unsigned long ino = 0; 135 143 struct file *file; 136 144 dev_t dev = 0; 137 - int flags, len; 145 + int flags; 138 146 unsigned long long pgoff = 0; 139 147 140 148 flags = vma->vm_flags; ··· 147 155 pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; 148 156 } 149 157 158 + seq_setwidth(m, 25 + sizeof(void *) * 6 - 1); 150 159 seq_printf(m, 151 - "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n", 160 + "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu ", 152 161 vma->vm_start, 153 162 vma->vm_end, 154 163 flags & VM_READ ? 'r' : '-', ··· 157 164 flags & VM_EXEC ? 'x' : '-', 158 165 flags & VM_MAYSHARE ? flags & VM_SHARED ? 'S' : 's' : 'p', 159 166 pgoff, 160 - MAJOR(dev), MINOR(dev), ino, &len); 167 + MAJOR(dev), MINOR(dev), ino); 161 168 162 169 if (file) { 163 - pad_len_spaces(m, len); 170 + seq_pad(m, ' '); 164 171 seq_path(m, &file->f_path, ""); 165 172 } else if (mm) { 166 173 pid_t tid = vm_is_stack(priv->task, vma, is_pid); 167 174 168 175 if (tid != 0) { 169 - pad_len_spaces(m, len); 176 + seq_pad(m, ' '); 170 177 /* 171 178 * Thread stack in /proc/PID/task/TID/maps or 172 179 * the main process stack.
+7 -6
net/ipv4/fib_trie.c
··· 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, ··· 2542 2541 (fi->fib_advmss ? 2543 2542 fi->fib_advmss + 40 : 0), 2544 2543 fi->fib_window, 2545 - fi->fib_rtt >> 3, &len); 2544 + fi->fib_rtt >> 3); 2546 2545 else 2547 2546 seq_printf(seq, 2548 2547 "*\t%08X\t%08X\t%04X\t%d\t%u\t" 2549 - "%d\t%08X\t%d\t%u\t%u%n", 2548 + "%d\t%08X\t%d\t%u\t%u", 2550 2549 prefix, 0, flags, 0, 0, 0, 2551 - mask, 0, 0, 0, &len); 2550 + mask, 0, 0, 0); 2552 2551 2553 - seq_printf(seq, "%*s\n", 127 - len, ""); 2552 + seq_pad(seq, '\n'); 2554 2553 } 2555 2554 } 2556 2555
+7 -8
net/ipv4/ping.c
··· 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 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), ··· 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
+15 -18
net/ipv4/tcp_ipv4.c
··· 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), ··· 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; ··· 2604 2605 rx_queue = max_t(int, tp->rcv_nxt - tp->copied_seq, 0); 2605 2606 2606 2607 seq_printf(f, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX " 2607 - "%08X %5u %8d %lu %d %pK %lu %lu %u %u %d%n", 2608 + "%08X %5u %8d %lu %d %pK %lu %lu %u %u %d", 2608 2609 i, src, srcp, dest, destp, sk->sk_state, 2609 2610 tp->write_seq - tp->snd_una, 2610 2611 rx_queue, ··· 2621 2622 tp->snd_cwnd, 2622 2623 sk->sk_state == TCP_LISTEN ? 2623 2624 (fastopenq ? fastopenq->max_qlen : 0) : 2624 - (tcp_in_initial_slowstart(tp) ? -1 : tp->snd_ssthresh), 2625 - len); 2625 + (tcp_in_initial_slowstart(tp) ? -1 : tp->snd_ssthresh)); 2626 2626 } 2627 2627 2628 2628 static void get_timewait4_sock(const struct inet_timewait_sock *tw, 2629 - struct seq_file *f, int i, int *len) 2629 + struct seq_file *f, int i) 2630 2630 { 2631 2631 __be32 dest, src; 2632 2632 __u16 destp, srcp; ··· 2637 2639 srcp = ntohs(tw->tw_sport); 2638 2640 2639 2641 seq_printf(f, "%4d: %08X:%04X %08X:%04X" 2640 - " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK%n", 2642 + " %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK", 2641 2643 i, src, srcp, dest, destp, tw->tw_substate, 0, 0, 2642 2644 3, jiffies_delta_to_clock_t(delta), 0, 0, 0, 0, 2643 - atomic_read(&tw->tw_refcnt), tw, len); 2645 + atomic_read(&tw->tw_refcnt), tw); 2644 2646 } 2645 2647 2646 2648 #define TMPSZ 150 ··· 2649 2651 { 2650 2652 struct tcp_iter_state *st; 2651 2653 struct sock *sk = v; 2652 - int len; 2653 2654 2655 + seq_setwidth(seq, TMPSZ - 1); 2654 2656 if (v == SEQ_START_TOKEN) { 2655 - seq_printf(seq, "%-*s\n", TMPSZ - 1, 2656 - " sl local_address rem_address st tx_queue " 2657 + seq_puts(seq, " sl local_address rem_address st tx_queue " 2657 2658 "rx_queue tr tm->when retrnsmt uid timeout " 2658 2659 "inode"); 2659 2660 goto out; ··· 2663 2666 case TCP_SEQ_STATE_LISTENING: 2664 2667 case TCP_SEQ_STATE_ESTABLISHED: 2665 2668 if (sk->sk_state == TCP_TIME_WAIT) 2666 - get_timewait4_sock(v, seq, st->num, &len); 2669 + get_timewait4_sock(v, seq, st->num); 2667 2670 else 2668 - get_tcp4_sock(v, seq, st->num, &len); 2671 + get_tcp4_sock(v, seq, st->num); 2669 2672 break; 2670 2673 case TCP_SEQ_STATE_OPENREQ: 2671 - get_openreq4(st->syn_wait_sk, v, seq, st->num, st->uid, &len); 2674 + get_openreq4(st->syn_wait_sk, v, seq, st->num, st->uid); 2672 2675 break; 2673 2676 } 2674 - seq_printf(seq, "%*s\n", TMPSZ - 1 - len, ""); 2675 2677 out: 2678 + seq_pad(seq, '\n'); 2676 2679 return 0; 2677 2680 } 2678 2681
+7 -8
net/ipv4/udp.c
··· 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 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), ··· 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
+11 -13
net/phonet/socket.c
··· 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 ··· 784 785 785 786 static int pn_res_seq_show(struct seq_file *seq, void *v) 786 787 { 787 - int len; 788 - 788 + seq_setwidth(seq, 63); 789 789 if (v == SEQ_START_TOKEN) 790 - seq_printf(seq, "%s%n", "rs uid inode", &len); 790 + seq_puts(seq, "rs uid inode"); 791 791 else { 792 792 struct sock **psk = v; 793 793 struct sock *sk = *psk; 794 794 795 - seq_printf(seq, "%02X %5u %lu%n", 795 + seq_printf(seq, "%02X %5u %lu", 796 796 (int) (psk - pnres.sk), 797 797 from_kuid_munged(seq_user_ns(seq), sock_i_uid(sk)), 798 - sock_i_ino(sk), &len); 798 + sock_i_ino(sk)); 799 799 } 800 - seq_printf(seq, "%*s\n", 63 - len, ""); 800 + seq_pad(seq, '\n'); 801 801 return 0; 802 802 } 803 803
+5 -4
net/sctp/objcnt.c
··· 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