From: Brian Behlendorf Date: Thu, 22 Aug 2013 20:06:33 +0000 (-0700) Subject: Use directory xattrs for symlinks X-Git-Url: https://git.camperquake.de/gitweb.cgi?a=commitdiff_plain;h=6a7c0ccca44ad02c476a111d8f7911fc8b12fff7;hp=c273d60d80958dea8edc3c6f5702c9c81ffbd8ea;p=zfs.git Use directory xattrs for symlinks There is currently a subtle bug in the SA implementation which can crop up which prevents us from safely using multiple variable length SAs in one object. Fortunately, the only existing use case for this are symlinks with SA based xattrs. Therefore, until the root cause in the SA code can be identified and fixed we prevent adding SA xattrs to symlinks. Signed-off-by: Brian Behlendorf Issue #1468 --- diff --git a/module/zfs/zpl_xattr.c b/module/zfs/zpl_xattr.c index dca1ad6..d79d35b 100644 --- a/module/zfs/zpl_xattr.c +++ b/module/zfs/zpl_xattr.c @@ -438,6 +438,10 @@ zpl_xattr_set_sa(struct inode *ip, const char *name, const void *value, if (error == -ENOENT) error = zpl_xattr_set_dir(ip, name, NULL, 0, flags, cr); } else { + /* Do not allow SA xattrs in symlinks (issue #1648) */ + if (S_ISLNK(ip->i_mode)) + return (-EMLINK); + /* Limited to 32k to keep nvpair memory allocations small */ if (size > DXATTR_MAX_ENTRY_SIZE) return (-EFBIG);