From ead6a106a2e9b39037b3e1d113ffdaa3336f25d8 Mon Sep 17 00:00:00 2001 From: "John L. Hammond" Date: Fri, 29 Aug 2014 08:25:36 -0500 Subject: [PATCH] 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 --- lustre/osd-ldiskfs/osd_handler.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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)); -- 1.8.3.1