[PATCH] net/socket: set socket inode times to current_time

From: Wenhua Zhao
Date: Tue Jan 31 2023 - 23:30:46 EST


Socket creation time are sometimes useful but not available becasue the
socket inode times are not set when initializing the inode. This patch
sets the socket inode times to current_time().

Before the fix, the socket inode times are at epoch, for example:

$ stat -L /proc/383/fd/3
File: /proc/383/fd/3
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 0,8 Inode: 15996 Links: 1
Access: (0777/srwxrwxrwx) Uid: ( 1000/ arch) Gid: ( 1000/ arch)
Access: 1970-01-01 00:00:00.000000000 +0000
Modify: 1970-01-01 00:00:00.000000000 +0000
Change: 1970-01-01 00:00:00.000000000 +0000

After the fix, the inode times are the socket creation time:

$ stat -L /proc/254/fd/3
File: /proc/254/fd/3
Size: 0 Blocks: 0 IO Block: 4096 socket
Device: 0,7 Inode: 13170 Links: 1
Access: (0777/srwxrwxrwx) Uid: ( 1000/ arch) Gid: ( 1000/ arch)
Access: 2023-02-01 03:27:50.094731201 +0000
Modify: 2023-02-01 03:27:50.094731201 +0000
Change: 2023-02-01 03:27:50.094731201 +0000

Signed-off-by: Wenhua Zhao <whzhao@xxxxxxxxx>
---
net/socket.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/net/socket.c b/net/socket.c
index 888cd618a968..c656c9599a92 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -635,6 +635,7 @@ struct socket *sock_alloc(void)
inode->i_uid = current_fsuid();
inode->i_gid = current_fsgid();
inode->i_op = &sockfs_inode_ops;
+ inode->i_mtime = inode->i_atime = inode->i_ctime = current_time(inode);

return sock;
}
--
2.39.1