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,
 };
 
 /**