From: John L. Hammond Date: Fri, 29 Aug 2014 13:25:36 +0000 (-0500) Subject: LU-4075 osd: handle getxattr for trusted.version X-Git-Tag: 2.6.90~70 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=ead6a106a2e9b39037b3e1d113ffdaa3336f25d8 LU-4075 osd: handle getxattr for trusted.version In the ldiskfs osd_xattr_get() remove an assertion on the size of the supplied buffer and add normal handling. Signed-off-by: John L. Hammond Change-Id: Ie4d3b4ab6dd1e8328404d1f8e5b403130b62e64a Reviewed-on: http://review.whamcloud.com/11649 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Mike Pershin Reviewed-by: Bob Glossman Reviewed-by: Andreas Dilger --- diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 65ffaca..cc24aa2 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -2923,9 +2923,15 @@ static int osd_xattr_get(const struct lu_env *env, struct dt_object *dt, if (strcmp(name, XATTR_NAME_VERSION) == 0) { /* for version we are just using xattr API but change inode * field instead */ - LASSERT(buf->lb_len == sizeof(dt_obj_version_t)); - osd_object_version_get(env, dt, buf->lb_buf); - return sizeof(dt_obj_version_t); + if (buf->lb_len == 0) + return sizeof(dt_obj_version_t); + + if (buf->lb_len < sizeof(dt_obj_version_t)) + return -ERANGE; + + osd_object_version_get(env, dt, buf->lb_buf); + + return sizeof(dt_obj_version_t); } LASSERT(dt_object_exists(dt) && !dt_object_remote(dt));