David Disseldorp 2b2abcac8c ceph: fix listxattr vxattr buffer length calculation
ceph_listxattr() incorrectly returns a length based on the static
ceph_vxattrs_name_size() value, which only takes into account whether
vxattrs are hidden, ignoring vxattr.exists_cb().

When filling the xattr buffer ceph_listxattr() checks VXATTR_FLAG_HIDDEN
and vxattr.exists_cb(). If both are false, we return an incorrect
(oversize) length.

Fix this behaviour by always calculating the vxattrs length at runtime,
taking both vxattr.hidden and vxattr.exists_cb() into account.

This bug is only exposed with the new "ceph.snap.btime" vxattr, as all
other vxattrs with a non-null exists_cb also carry VXATTR_FLAG_HIDDEN.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2019-07-08 14:01:41 +02:00
..
2019-06-28 08:34:12 +08:00
2019-06-18 11:20:24 -07:00
2019-05-31 08:34:32 -07:00
2019-06-21 09:58:42 -07:00
2019-06-08 12:52:42 -07:00
2018-07-03 16:44:45 -04:00
2018-10-29 14:29:58 -07:00
2019-07-05 11:32:11 +09:00
2019-04-08 18:21:02 -05:00
2019-03-08 14:48:40 -08:00
2019-01-30 17:44:07 -05:00
2019-04-09 19:20:57 -04:00
2019-02-07 16:38:35 +01:00