mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-10-26 10:57:38 +08:00
net: Replace %pK output with 0
Commit 71338aa7d0 ("net: convert %p usage to %pK") which is from
2011 and changed the %p annotation for pointer to %pK. Back then the
default behaviour for %p was to print the pointer. The %pK modifier was
introduced to able to control the behaviour of specific pointer values
without changing the behaviour of %p for everyone. It was dedicated to
avoid leaking pointers via /proc.
There was also the idea to remove the check from formatting the string
and move to the open callback with some helpers but this did not happen.
Things changed over time. The default behaviour for %p is now to print a
hash pointer which does not leak the address but allows to correlate if
two pointers are equal.
The policy on %p is to not introduce new ones. This is somehow in
between since it already exists. The pointer are usually socket pointers
and I don't see any value in exposing them. Therefore I am following the
recommendation of removing them. Since their usage in /proc/ can be
considered ABI I replace the pointer with a 0.
Replace the %pK annotation with 0 value. Correct the spacing for the
cases where pointer is at the beginning.
Reviewed-by: Kees Cook <kees@kernel.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Link: https://patch.msgid.link/20260901160345.eeknHmY2@linutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
1 parent
5add7c8d59
commit
7c0ec6288b
14 files changed
+45
-57
No files matched your search
@@ -30,16 +30,16 @@ up into 3 parts because of the length of the line)::
|
||||
| |----------------------> receive-queue
|
||||
|-------------------------------> transmit-queue
|
||||
|
||||
1000 0 54165785 4 cd1e6040 25 4 27 3 -1
|
||||
| | | | | | | | | |--> slow start size threshold,
|
||||
| | | | | | | | | or -1 if the threshold
|
||||
| | | | | | | | | is >= 0xFFFF
|
||||
| | | | | | | | |----> sending congestion window
|
||||
| | | | | | | |-------> (ack.quick<<1)|ack.pingpong
|
||||
| | | | | | |---------> Predicted tick of soft clock
|
||||
| | | | | | (delayed ACK control data)
|
||||
| | | | | |------------> retransmit timeout
|
||||
| | | | |------------------> location of socket in memory
|
||||
1000 0 54165785 4 0 25 4 27 3 -1
|
||||
| | | | | | | | | |-------> slow start size threshold,
|
||||
| | | | | | | | | or -1 if the threshold
|
||||
| | | | | | | | | is >= 0xFFFF
|
||||
| | | | | | | | |---------> sending congestion window
|
||||
| | | | | | | |------------> (ack.quick<<1)|ack.pingpong
|
||||
| | | | | | |--------------> Predicted tick of soft clock
|
||||
| | | | | | (delayed ACK control data)
|
||||
| | | | | |-----------------> retransmit timeout
|
||||
| | | | |--------------------> always 0 (was memory location).
|
||||
| | | |-----------------------> socket reference count
|
||||
| | |-----------------------------> inode
|
||||
| |----------------------------------> unanswered 0-window probes
|
||||
|
||||
+3
-4
@@ -159,7 +159,7 @@ static void vcc_info(struct seq_file *seq, struct atm_vcc *vcc)
|
||||
{
|
||||
struct sock *sk = sk_atm(vcc);
|
||||
|
||||
seq_printf(seq, "%pK ", vcc);
|
||||
seq_puts(seq, " 0 ");
|
||||
if (!vcc->dev)
|
||||
seq_printf(seq, "Unassigned ");
|
||||
else
|
||||
@@ -228,9 +228,8 @@ static const struct seq_operations pvc_seq_ops = {
|
||||
static int vcc_seq_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
if (v == SEQ_START_TOKEN) {
|
||||
seq_printf(seq, sizeof(void *) == 4 ? "%-8s%s" : "%-16s%s",
|
||||
"Address ", "Itf VPI VCI Fam Flags Reply "
|
||||
"Send buffer Recv buffer [refcnt]\n");
|
||||
seq_puts(seq, "Address Itf VPI VCI Fam Flags Reply "
|
||||
"Send buffer Recv buffer [refcnt]\n");
|
||||
} else {
|
||||
struct vcc_state *state = seq->private;
|
||||
struct atm_vcc *vcc = atm_sk(state->sk);
|
||||
|
||||
+2
-3
@@ -1095,15 +1095,14 @@ static void ping_v4_format_sock(struct sock *sp, struct seq_file *f,
|
||||
__u16 srcp = ntohs(inet->inet_sport);
|
||||
|
||||
seq_printf(f, "%5d: %08X:%04X %08X:%04X"
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d 0 %u",
|
||||
bucket, src, srcp, dest, destp, sp->sk_state,
|
||||
sk_wmem_alloc_get(sp),
|
||||
sk_rmem_alloc_get(sp),
|
||||
0, 0L, 0,
|
||||
from_kuid_munged(seq_user_ns(f), sk_uid(sp)),
|
||||
0, sock_i_ino(sp),
|
||||
refcount_read(&sp->sk_refcnt), sp,
|
||||
sk_drops_read(sp));
|
||||
refcount_read(&sp->sk_refcnt), sk_drops_read(sp));
|
||||
}
|
||||
|
||||
static int ping_v4_seq_show(struct seq_file *seq, void *v)
|
||||
|
||||
+2
-2
@@ -1054,14 +1054,14 @@ static void raw_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
|
||||
srcp = inet->inet_num;
|
||||
|
||||
seq_printf(seq, "%4d: %08X:%04X %08X:%04X"
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u\n",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d 0 %u\n",
|
||||
i, src, srcp, dest, destp, sp->sk_state,
|
||||
sk_wmem_alloc_get(sp),
|
||||
sk_rmem_alloc_get(sp),
|
||||
0, 0L, 0,
|
||||
from_kuid_munged(seq_user_ns(seq), sk_uid(sp)),
|
||||
0, sock_i_ino(sp),
|
||||
refcount_read(&sp->sk_refcnt), sp, sk_drops_read(sp));
|
||||
refcount_read(&sp->sk_refcnt), sk_drops_read(sp));
|
||||
}
|
||||
|
||||
static int raw_seq_show(struct seq_file *seq, void *v)
|
||||
|
||||
+6
-7
@@ -2748,7 +2748,7 @@ static void get_openreq4(const struct request_sock *req,
|
||||
long delta = req->rsk_timer.expires - jiffies;
|
||||
|
||||
seq_printf(f, "%4d: %08X:%04X %08X:%04X"
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %u %d %pK",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %u %d 0",
|
||||
i,
|
||||
ireq->ir_loc_addr,
|
||||
ireq->ir_num,
|
||||
@@ -2763,8 +2763,7 @@ static void get_openreq4(const struct request_sock *req,
|
||||
sk_uid(req->rsk_listener)),
|
||||
0, /* non standard timer */
|
||||
0, /* open_requests have no inode */
|
||||
0,
|
||||
req);
|
||||
0);
|
||||
}
|
||||
|
||||
static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i)
|
||||
@@ -2811,7 +2810,7 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i)
|
||||
READ_ONCE(tp->copied_seq), 0);
|
||||
|
||||
seq_printf(f, "%4d: %08X:%04X %08X:%04X %02X %08X:%08X %02X:%08lX "
|
||||
"%08X %5u %8d %llu %d %pK %lu %lu %u %u %d",
|
||||
"%08X %5u %8d %llu %d 0 %lu %lu %u %u %d",
|
||||
i, src, srcp, dest, destp, state,
|
||||
READ_ONCE(tp->write_seq) - tp->snd_una,
|
||||
rx_queue,
|
||||
@@ -2821,7 +2820,7 @@ static void get_tcp4_sock(struct sock *sk, struct seq_file *f, int i)
|
||||
from_kuid_munged(seq_user_ns(f), sk_uid(sk)),
|
||||
READ_ONCE(icsk->icsk_probes_out),
|
||||
sock_i_ino(sk),
|
||||
refcount_read(&sk->sk_refcnt), sk,
|
||||
refcount_read(&sk->sk_refcnt),
|
||||
jiffies_to_clock_t(icsk->icsk_rto),
|
||||
jiffies_to_clock_t(icsk->icsk_ack.ato),
|
||||
(icsk->icsk_ack.quick << 1) | inet_csk_in_pingpong_mode(sk),
|
||||
@@ -2844,10 +2843,10 @@ static void get_timewait4_sock(const struct inet_timewait_sock *tw,
|
||||
srcp = ntohs(tw->tw_sport);
|
||||
|
||||
seq_printf(f, "%4d: %08X:%04X %08X:%04X"
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d 0",
|
||||
i, src, srcp, dest, destp, READ_ONCE(tw->tw_substate), 0, 0,
|
||||
3, jiffies_delta_to_clock_t(delta), 0, 0, 0, 0,
|
||||
refcount_read(&tw->tw_refcnt), tw);
|
||||
refcount_read(&tw->tw_refcnt));
|
||||
}
|
||||
|
||||
#define TMPSZ 150
|
||||
|
||||
+2
-3
@@ -3283,15 +3283,14 @@ static void udp4_format_sock(struct sock *sp, struct seq_file *f,
|
||||
__u16 srcp = ntohs(inet->inet_sport);
|
||||
|
||||
seq_printf(f, "%5d: %08X:%04X %08X:%04X"
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d 0 %u",
|
||||
bucket, src, srcp, dest, destp, sp->sk_state,
|
||||
sk_wmem_alloc_get(sp),
|
||||
udp_rqueue_get(sp),
|
||||
0, 0L, 0,
|
||||
from_kuid_munged(seq_user_ns(f), sk_uid(sp)),
|
||||
0, sock_i_ino(sp),
|
||||
refcount_read(&sp->sk_refcnt), sp,
|
||||
sk_drops_read(sp));
|
||||
refcount_read(&sp->sk_refcnt), sk_drops_read(sp));
|
||||
}
|
||||
|
||||
static int udp4_seq_show(struct seq_file *seq, void *v)
|
||||
|
||||
+2
-3
@@ -1102,7 +1102,7 @@ void __ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
|
||||
src = &sp->sk_v6_rcv_saddr;
|
||||
seq_printf(seq,
|
||||
"%5d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u\n",
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d 0 %u\n",
|
||||
bucket,
|
||||
src->s6_addr32[0], src->s6_addr32[1],
|
||||
src->s6_addr32[2], src->s6_addr32[3], srcp,
|
||||
@@ -1115,6 +1115,5 @@ void __ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
|
||||
from_kuid_munged(seq_user_ns(seq), sk_uid(sp)),
|
||||
0,
|
||||
sock_i_ino(sp),
|
||||
refcount_read(&sp->sk_refcnt), sp,
|
||||
sk_drops_read(sp));
|
||||
refcount_read(&sp->sk_refcnt), sk_drops_read(sp));
|
||||
}
|
||||
+6
-6
@@ -2103,7 +2103,7 @@ static void get_openreq6(struct seq_file *seq,
|
||||
|
||||
seq_printf(seq,
|
||||
"%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %d %d %pK\n",
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %d %d 0\n",
|
||||
i,
|
||||
src->s6_addr32[0], src->s6_addr32[1],
|
||||
src->s6_addr32[2], src->s6_addr32[3],
|
||||
@@ -2120,7 +2120,7 @@ static void get_openreq6(struct seq_file *seq,
|
||||
sk_uid(req->rsk_listener)),
|
||||
0, /* non standard timer */
|
||||
0, /* open_requests have no inode */
|
||||
0, req);
|
||||
0);
|
||||
}
|
||||
|
||||
static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
|
||||
@@ -2171,7 +2171,7 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
|
||||
|
||||
seq_printf(seq,
|
||||
"%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %lu %lu %u %u %d\n",
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d 0 %lu %lu %u %u %d\n",
|
||||
i,
|
||||
src->s6_addr32[0], src->s6_addr32[1],
|
||||
src->s6_addr32[2], src->s6_addr32[3], srcp,
|
||||
@@ -2186,7 +2186,7 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i)
|
||||
from_kuid_munged(seq_user_ns(seq), sk_uid(sp)),
|
||||
READ_ONCE(icsk->icsk_probes_out),
|
||||
sock_i_ino(sp),
|
||||
refcount_read(&sp->sk_refcnt), sp,
|
||||
refcount_read(&sp->sk_refcnt),
|
||||
jiffies_to_clock_t(icsk->icsk_rto),
|
||||
jiffies_to_clock_t(icsk->icsk_ack.ato),
|
||||
(icsk->icsk_ack.quick << 1) | inet_csk_in_pingpong_mode(sp),
|
||||
@@ -2211,7 +2211,7 @@ static void get_timewait6_sock(struct seq_file *seq,
|
||||
|
||||
seq_printf(seq,
|
||||
"%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %pK\n",
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d 0\n",
|
||||
i,
|
||||
src->s6_addr32[0], src->s6_addr32[1],
|
||||
src->s6_addr32[2], src->s6_addr32[3], srcp,
|
||||
@@ -2219,7 +2219,7 @@ static void get_timewait6_sock(struct seq_file *seq,
|
||||
dest->s6_addr32[2], dest->s6_addr32[3], destp,
|
||||
READ_ONCE(tw->tw_substate), 0, 0,
|
||||
3, jiffies_delta_to_clock_t(delta), 0, 0, 0, 0,
|
||||
refcount_read(&tw->tw_refcnt), tw);
|
||||
refcount_read(&tw->tw_refcnt));
|
||||
}
|
||||
|
||||
static int tcp6_seq_show(struct seq_file *seq, void *v)
|
||||
|
||||
+2
-3
@@ -3803,10 +3803,9 @@ static int pfkey_seq_show(struct seq_file *f, void *v)
|
||||
struct sock *s = sk_entry(v);
|
||||
|
||||
if (v == SEQ_START_TOKEN)
|
||||
seq_printf(f ,"sk RefCnt Rmem Wmem User Inode\n");
|
||||
seq_puts(f, "sk RefCnt Rmem Wmem User Inode\n");
|
||||
else
|
||||
seq_printf(f, "%pK %-6d %-6u %-6u %-6u %-6llu\n",
|
||||
s,
|
||||
seq_printf(f, "0 %-6d %-6u %-6u %-6u %-6llu\n",
|
||||
refcount_read(&s->sk_refcnt),
|
||||
sk_rmem_alloc_get(s),
|
||||
sk_wmem_alloc_get(s),
|
||||
|
||||
@@ -2700,14 +2700,13 @@ static int netlink_native_seq_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
if (v == SEQ_START_TOKEN) {
|
||||
seq_puts(seq,
|
||||
"sk Eth Pid Groups "
|
||||
"sk Eth Pid Groups "
|
||||
"Rmem Wmem Dump Locks Drops Inode\n");
|
||||
} else {
|
||||
struct sock *s = v;
|
||||
struct netlink_sock *nlk = nlk_sk(s);
|
||||
|
||||
seq_printf(seq, "%pK %-3d %-10u %08x %-8d %-8d %-5d %-8d %-8u %-8llu\n",
|
||||
s,
|
||||
seq_printf(seq, "0 %-3d %-10u %08x %-8d %-8d %-5d %-8d %-8u %-8llu\n",
|
||||
s->sk_protocol,
|
||||
nlk->portid,
|
||||
nlk->groups ? (u32)nlk->groups[0] : 0,
|
||||
|
||||
@@ -4825,16 +4825,13 @@ static void packet_seq_stop(struct seq_file *seq, void *v)
|
||||
static int packet_seq_show(struct seq_file *seq, void *v)
|
||||
{
|
||||
if (v == SEQ_START_TOKEN)
|
||||
seq_printf(seq,
|
||||
"%*sRefCnt Type Proto Iface R Rmem User Inode\n",
|
||||
IS_ENABLED(CONFIG_64BIT) ? -17 : -9, "sk");
|
||||
seq_puts(seq, "sk RefCnt Type Proto Iface R Rmem User Inode\n");
|
||||
else {
|
||||
struct sock *s = sk_entry(v);
|
||||
const struct packet_sock *po = pkt_sk(s);
|
||||
|
||||
seq_printf(seq,
|
||||
"%pK %-6d %-4d %04x %-5d %1d %-6u %-6u %-6llu\n",
|
||||
s,
|
||||
"0 %-6d %-4d %04x %-5d %1d %-6u %-6u %-6llu\n",
|
||||
refcount_read(&s->sk_refcnt),
|
||||
s->sk_type,
|
||||
ntohs(READ_ONCE(po->num)),
|
||||
|
||||
+2
-3
@@ -586,14 +586,13 @@ static int pn_sock_seq_show(struct seq_file *seq, void *v)
|
||||
struct pn_sock *pn = pn_sk(sk);
|
||||
|
||||
seq_printf(seq, "%2d %04X:%04X:%02X %02X %08X:%08X %5d %llu "
|
||||
"%d %pK %u",
|
||||
"%d 0 %u",
|
||||
sk->sk_protocol, pn->sobject, pn->dobject,
|
||||
pn->resource, sk->sk_state,
|
||||
sk_wmem_alloc_get(sk), sk_rmem_alloc_get(sk),
|
||||
from_kuid_munged(seq_user_ns(seq), sk_uid(sk)),
|
||||
sock_i_ino(sk),
|
||||
refcount_read(&sk->sk_refcnt), sk,
|
||||
sk_drops_read(sk));
|
||||
refcount_read(&sk->sk_refcnt), sk_drops_read(sk));
|
||||
}
|
||||
seq_pad(seq, '\n');
|
||||
return 0;
|
||||
|
||||
+3
-3
@@ -174,7 +174,7 @@ static int sctp_eps_seq_show(struct seq_file *seq, void *v)
|
||||
sk = ep->base.sk;
|
||||
if (!net_eq(sock_net(sk), seq_file_net(seq)))
|
||||
continue;
|
||||
seq_printf(seq, "%8pK %8pK %-3d %-3d %-4d %-5d %5u %5llu ", ep, sk,
|
||||
seq_printf(seq, "%8d %8d %-3d %-3d %-4d %-5d %5u %5llu ", 0, 0,
|
||||
sctp_sk(sk)->type, sk->sk_state, hash,
|
||||
ep->base.bind_addr.port,
|
||||
from_kuid_munged(seq_user_ns(seq), sk_uid(sk)),
|
||||
@@ -260,9 +260,9 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v)
|
||||
sk = epb->sk;
|
||||
|
||||
seq_printf(seq,
|
||||
"%8pK %8pK %-3d %-3d %-2d %-4d "
|
||||
"%8d %8d %-3d %-3d %-2d %-4d "
|
||||
"%4d %8d %8d %7u %5llu %-5d %5d ",
|
||||
assoc, sk, sctp_sk(sk)->type, sk->sk_state,
|
||||
0, 0, sctp_sk(sk)->type, sk->sk_state,
|
||||
assoc->state, 0,
|
||||
assoc->assoc_id,
|
||||
assoc->sndbuf_used,
|
||||
|
||||
+1
-2
@@ -3562,8 +3562,7 @@ static int unix_seq_show(struct seq_file *seq, void *v)
|
||||
struct unix_sock *u = unix_sk(s);
|
||||
unix_state_lock(s);
|
||||
|
||||
seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5llu",
|
||||
s,
|
||||
seq_printf(seq, "%08u: %08X %08X %08X %04X %02X %5llu", 0,
|
||||
refcount_read(&s->sk_refcnt),
|
||||
0,
|
||||
s->sk_state == TCP_LISTEN ? __SO_ACCEPTCON : 0,
|
||||
|
||||
Reference in new issue
Block a user