diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index 715cda420602775b5c4de4396d3125ab461de603..975a7f5d191620cec350c025832a6fcefe9c5a92 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -613,17 +613,18 @@ int mds_get_md(struct obd_device *obd, struct inode *inode, void *md, goto out; } rc = fsfilt_get_md(obd, inode, buf, new_size, "lov"); - if (rc <= 0) { - OBD_FREE(buf, new_size); - goto out; - } + if (rc <= 0) + goto out_convert; /* convert V3 EA to V1 */ lmm_size = rc; rc = mds_convert_lov_ea(obd, inode, buf, lmm_size); + if (rc < 0) + goto out_convert; /* copy converted EA to provided buffer */ memcpy(md, buf, rc); *size = rc; +out_convert: OBD_FREE(buf, new_size); goto out; }