diff --git a/fs/hpfs/inode.c b/fs/hpfs/inode.c
index d093ce7494125da107ca8660b8a029145304992c..bc61bb4fd38daff4c93cd674f80f600634707306 100644
--- a/fs/hpfs/inode.c
+++ b/fs/hpfs/inode.c
@@ -261,6 +261,10 @@ int hpfs_setattr(struct dentry *dentry, struct iattr *attr)
 	hpfs_lock(inode->i_sb);
 	if (inode->i_ino == hpfs_sb(inode->i_sb)->sb_root)
 		goto out_unlock;
+	if ((attr->ia_valid & ATTR_UID) && attr->ia_uid >= 0x10000)
+		goto out_unlock;
+	if ((attr->ia_valid & ATTR_GID) && attr->ia_gid >= 0x10000)
+		goto out_unlock;
 	if ((attr->ia_valid & ATTR_SIZE) && attr->ia_size > inode->i_size)
 		goto out_unlock;