mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
net: change sock.sk_ino and sock_i_ino() to u64
inode->i_ino is being converted to a u64. sock.sk_ino (which caches the inode number) must also be widened to avoid truncation on 32-bit architectures where unsigned long is only 32 bits. Change sk_ino from unsigned long to u64, and update the return type of sock_i_ino() to match. Fix all format strings that print the result of sock_i_ino() (%lu -> %llu), and widen the intermediate variables and function parameters in the diag modules that were using int to hold the inode number. Note that the UAPI socket diag structures (inet_diag_msg.idiag_inode, unix_diag_msg.udiag_ino, etc.) are all __u32 and cannot be changed without breaking the ABI. The assignments to those fields will silently truncate, which is the existing behavior. Acked-by: Marc Kleine-Budde <mkl@pengutronix.de> # for net/can Signed-off-by: Jeff Layton <jlayton@kernel.org> Link: https://patch.msgid.link/20260304-iino-u64-v3-3-2257ad83d372@kernel.org Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
committed by
Christian Brauner
parent
125dfa2181
commit
0fe27e5985
@@ -537,7 +537,7 @@ struct sock {
|
||||
rwlock_t sk_callback_lock;
|
||||
u32 sk_ack_backlog;
|
||||
u32 sk_max_ack_backlog;
|
||||
unsigned long sk_ino;
|
||||
u64 sk_ino;
|
||||
spinlock_t sk_peer_lock;
|
||||
int sk_bind_phc;
|
||||
struct pid *sk_peer_pid;
|
||||
@@ -2140,7 +2140,7 @@ static inline void sock_graft(struct sock *sk, struct socket *parent)
|
||||
write_unlock_bh(&sk->sk_callback_lock);
|
||||
}
|
||||
|
||||
static inline unsigned long sock_i_ino(const struct sock *sk)
|
||||
static inline u64 sock_i_ino(const struct sock *sk)
|
||||
{
|
||||
/* Paired with WRITE_ONCE() in sock_graft() and sock_orphan() */
|
||||
return READ_ONCE(sk->sk_ino);
|
||||
|
||||
@@ -1986,7 +1986,7 @@ static int ax25_info_show(struct seq_file *seq, void *v)
|
||||
ax25->paclen);
|
||||
|
||||
if (ax25->sk != NULL) {
|
||||
seq_printf(seq, " %d %d %lu\n",
|
||||
seq_printf(seq, " %d %d %llu\n",
|
||||
sk_wmem_alloc_get(ax25->sk),
|
||||
sk_rmem_alloc_get(ax25->sk),
|
||||
sock_i_ino(ax25->sk));
|
||||
|
||||
@@ -817,14 +817,14 @@ static int bt_seq_show(struct seq_file *seq, void *v)
|
||||
struct bt_sock *bt = bt_sk(sk);
|
||||
|
||||
seq_printf(seq,
|
||||
"%pK %-6d %-6u %-6u %-6u %-6lu %-6lu",
|
||||
"%pK %-6d %-6u %-6u %-6u %-6llu %-6llu",
|
||||
sk,
|
||||
refcount_read(&sk->sk_refcnt),
|
||||
sk_rmem_alloc_get(sk),
|
||||
sk_wmem_alloc_get(sk),
|
||||
from_kuid(seq_user_ns(seq), sk_uid(sk)),
|
||||
sock_i_ino(sk),
|
||||
bt->parent ? sock_i_ino(bt->parent) : 0LU);
|
||||
bt->parent ? sock_i_ino(bt->parent) : 0ULL);
|
||||
|
||||
if (l->custom_seq_show) {
|
||||
seq_putc(seq, ' ');
|
||||
|
||||
@@ -1712,7 +1712,7 @@ static int bcm_connect(struct socket *sock, struct sockaddr_unsized *uaddr, int
|
||||
#if IS_ENABLED(CONFIG_PROC_FS)
|
||||
if (net->can.bcmproc_dir) {
|
||||
/* unique socket address as filename */
|
||||
sprintf(bo->procname, "%lu", sock_i_ino(sk));
|
||||
sprintf(bo->procname, "%llu", sock_i_ino(sk));
|
||||
bo->bcm_proc_read = proc_create_net_single(bo->procname, 0644,
|
||||
net->can.bcmproc_dir,
|
||||
bcm_proc_show, sk);
|
||||
|
||||
@@ -1111,7 +1111,7 @@ 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 %lu %d %pK %u",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u",
|
||||
bucket, src, srcp, dest, destp, sp->sk_state,
|
||||
sk_wmem_alloc_get(sp),
|
||||
sk_rmem_alloc_get(sp),
|
||||
|
||||
@@ -1041,7 +1041,7 @@ 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 %lu %d %pK %u\n",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u\n",
|
||||
i, src, srcp, dest, destp, sp->sk_state,
|
||||
sk_wmem_alloc_get(sp),
|
||||
sk_rmem_alloc_get(sp),
|
||||
|
||||
@@ -2883,7 +2883,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 %lu %d %pK %lu %lu %u %u %d",
|
||||
"%08X %5u %8d %llu %d %pK %lu %lu %u %u %d",
|
||||
i, src, srcp, dest, destp, state,
|
||||
READ_ONCE(tp->write_seq) - tp->snd_una,
|
||||
rx_queue,
|
||||
|
||||
@@ -3428,7 +3428,7 @@ 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 %lu %d %pK %u",
|
||||
" %02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u",
|
||||
bucket, src, srcp, dest, destp, sp->sk_state,
|
||||
sk_wmem_alloc_get(sp),
|
||||
udp_rqueue_get(sp),
|
||||
|
||||
@@ -1055,7 +1055,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 %lu %d %pK %u\n",
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %u\n",
|
||||
bucket,
|
||||
src->s6_addr32[0], src->s6_addr32[1],
|
||||
src->s6_addr32[2], src->s6_addr32[3], srcp,
|
||||
|
||||
@@ -2189,7 +2189,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 %lu %d %pK %lu %lu %u %u %d\n",
|
||||
"%02X %08X:%08X %02X:%08lX %08X %5u %8d %llu %d %pK %lu %lu %u %u %d\n",
|
||||
i,
|
||||
src->s6_addr32[0], src->s6_addr32[1],
|
||||
src->s6_addr32[2], src->s6_addr32[3], srcp,
|
||||
|
||||
@@ -3783,7 +3783,7 @@ static int pfkey_seq_show(struct seq_file *f, void *v)
|
||||
if (v == SEQ_START_TOKEN)
|
||||
seq_printf(f ,"sk RefCnt Rmem Wmem User Inode\n");
|
||||
else
|
||||
seq_printf(f, "%pK %-6d %-6u %-6u %-6u %-6lu\n",
|
||||
seq_printf(f, "%pK %-6d %-6u %-6u %-6u %-6llu\n",
|
||||
s,
|
||||
refcount_read(&s->sk_refcnt),
|
||||
sk_rmem_alloc_get(s),
|
||||
|
||||
@@ -2700,7 +2700,7 @@ static int netlink_native_seq_show(struct seq_file *seq, void *v)
|
||||
struct sock *s = v;
|
||||
struct netlink_sock *nlk = nlk_sk(s);
|
||||
|
||||
seq_printf(seq, "%pK %-3d %-10u %08x %-8d %-8d %-5d %-8d %-8u %-8lu\n",
|
||||
seq_printf(seq, "%pK %-3d %-10u %08x %-8d %-8d %-5d %-8d %-8u %-8llu\n",
|
||||
s,
|
||||
s->sk_protocol,
|
||||
nlk->portid,
|
||||
|
||||
@@ -43,7 +43,7 @@ static int sk_diag_put_flags(struct sock *sk, struct sk_buff *skb)
|
||||
|
||||
static int sk_diag_fill(struct sock *sk, struct sk_buff *skb,
|
||||
struct netlink_diag_req *req,
|
||||
u32 portid, u32 seq, u32 flags, int sk_ino)
|
||||
u32 portid, u32 seq, u32 flags, u64 sk_ino)
|
||||
{
|
||||
struct nlmsghdr *nlh;
|
||||
struct netlink_diag_msg *rep;
|
||||
|
||||
@@ -4721,7 +4721,7 @@ static int packet_seq_show(struct seq_file *seq, void *v)
|
||||
const struct packet_sock *po = pkt_sk(s);
|
||||
|
||||
seq_printf(seq,
|
||||
"%pK %-6d %-4d %04x %-5d %1d %-6u %-6u %-6lu\n",
|
||||
"%pK %-6d %-4d %04x %-5d %1d %-6u %-6u %-6llu\n",
|
||||
s,
|
||||
refcount_read(&s->sk_refcnt),
|
||||
s->sk_type,
|
||||
|
||||
@@ -130,7 +130,7 @@ static int sk_diag_fill(struct sock *sk, struct sk_buff *skb,
|
||||
struct packet_diag_req *req,
|
||||
bool may_report_filterinfo,
|
||||
struct user_namespace *user_ns,
|
||||
u32 portid, u32 seq, u32 flags, int sk_ino)
|
||||
u32 portid, u32 seq, u32 flags, u64 sk_ino)
|
||||
{
|
||||
struct nlmsghdr *nlh;
|
||||
struct packet_diag_msg *rp;
|
||||
|
||||
@@ -579,7 +579,7 @@ static int pn_sock_seq_show(struct seq_file *seq, void *v)
|
||||
struct sock *sk = v;
|
||||
struct pn_sock *pn = pn_sk(sk);
|
||||
|
||||
seq_printf(seq, "%2d %04X:%04X:%02X %02X %08X:%08X %5d %lu "
|
||||
seq_printf(seq, "%2d %04X:%04X:%02X %02X %08X:%08X %5d %llu "
|
||||
"%d %pK %u",
|
||||
sk->sk_protocol, pn->sobject, pn->dobject,
|
||||
pn->resource, sk->sk_state,
|
||||
@@ -754,7 +754,7 @@ static int pn_res_seq_show(struct seq_file *seq, void *v)
|
||||
struct sock *sk = rcu_dereference_protected(*psk,
|
||||
lockdep_is_held(&resource_mutex));
|
||||
|
||||
seq_printf(seq, "%02X %5u %lu",
|
||||
seq_printf(seq, "%02X %5u %llu",
|
||||
(int) (psk - pnres.sk),
|
||||
from_kuid_munged(seq_user_ns(seq), sk_uid(sk)),
|
||||
sock_i_ino(sk));
|
||||
|
||||
@@ -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 %5lu ", ep, sk,
|
||||
seq_printf(seq, "%8pK %8pK %-3d %-3d %-4d %-5d %5u %5llu ", ep, sk,
|
||||
sctp_sk(sk)->type, sk->sk_state, hash,
|
||||
ep->base.bind_addr.port,
|
||||
from_kuid_munged(seq_user_ns(seq), sk_uid(sk)),
|
||||
@@ -261,7 +261,7 @@ static int sctp_assocs_seq_show(struct seq_file *seq, void *v)
|
||||
|
||||
seq_printf(seq,
|
||||
"%8pK %8pK %-3d %-3d %-2d %-4d "
|
||||
"%4d %8d %8d %7u %5lu %-5d %5d ",
|
||||
"%4d %8d %8d %7u %5llu %-5d %5d ",
|
||||
assoc, sk, sctp_sk(sk)->type, sk->sk_state,
|
||||
assoc->state, 0,
|
||||
assoc->assoc_id,
|
||||
|
||||
@@ -3537,7 +3537,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 %5lu",
|
||||
seq_printf(seq, "%pK: %08X %08X %08X %04X %02X %5llu",
|
||||
s,
|
||||
refcount_read(&s->sk_refcnt),
|
||||
0,
|
||||
|
||||
@@ -45,7 +45,7 @@ static int sk_diag_dump_vfs(struct sock *sk, struct sk_buff *nlskb)
|
||||
static int sk_diag_dump_peer(struct sock *sk, struct sk_buff *nlskb)
|
||||
{
|
||||
struct sock *peer;
|
||||
int ino;
|
||||
u64 ino;
|
||||
|
||||
peer = unix_peer_get(sk);
|
||||
if (peer) {
|
||||
@@ -112,7 +112,7 @@ static int sk_diag_dump_uid(struct sock *sk, struct sk_buff *nlskb,
|
||||
|
||||
static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, struct unix_diag_req *req,
|
||||
struct user_namespace *user_ns,
|
||||
u32 portid, u32 seq, u32 flags, int sk_ino)
|
||||
u32 portid, u32 seq, u32 flags, u64 sk_ino)
|
||||
{
|
||||
struct nlmsghdr *nlh;
|
||||
struct unix_diag_msg *rep;
|
||||
@@ -186,7 +186,7 @@ static int unix_diag_dump(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
num = 0;
|
||||
spin_lock(&net->unx.table.locks[slot]);
|
||||
sk_for_each(sk, &net->unx.table.buckets[slot]) {
|
||||
int sk_ino;
|
||||
u64 sk_ino;
|
||||
|
||||
if (num < s_num)
|
||||
goto next;
|
||||
|
||||
@@ -92,7 +92,7 @@ static int xsk_diag_put_stats(const struct xdp_sock *xs, struct sk_buff *nlskb)
|
||||
static int xsk_diag_fill(struct sock *sk, struct sk_buff *nlskb,
|
||||
struct xdp_diag_req *req,
|
||||
struct user_namespace *user_ns,
|
||||
u32 portid, u32 seq, u32 flags, int sk_ino)
|
||||
u32 portid, u32 seq, u32 flags, u64 sk_ino)
|
||||
{
|
||||
struct xdp_sock *xs = xdp_sk(sk);
|
||||
struct xdp_diag_msg *msg;
|
||||
|
||||
Reference in New Issue
Block a user