diff -drupN a/net/socket.c b/net/socket.c --- a/net/socket.c 2018-08-06 17:23:04.000000000 +0300 +++ b/net/socket.c 2022-06-12 05:28:14.000000000 +0300 @@ -534,8 +534,22 @@ static ssize_t sockfs_listxattr(struct d return used; } +static int sockfs_setattr(struct dentry *dentry, struct iattr *iattr) +{ + int err = simple_setattr(dentry, iattr); + + if (!err && (iattr->ia_valid & ATTR_UID)) { + struct socket *sock = SOCKET_I(d_inode(dentry)); + + sock->sk->sk_uid = iattr->ia_uid; + } + + return err; +} + static const struct inode_operations sockfs_inode_ops = { .listxattr = sockfs_listxattr, + .setattr = sockfs_setattr, }; /**