Whamcloud - gitweb
b=21278 fix a memory leak in mdd_links_get().
authorEric Mei <Eric.Mei@Sun.COM>
Mon, 8 Feb 2010 23:57:23 +0000 (16:57 -0700)
committerRobert Read <rread@sun.com>
Thu, 11 Feb 2010 00:48:59 +0000 (16:48 -0800)
i=nathan
i=rahul

lustre/mdd/mdd_dir.c
lustre/mdd/mdd_object.c

index fb0c0f3..6045cf3 100644 (file)
@@ -2278,8 +2278,7 @@ struct lu_buf *mdd_links_get(const struct lu_env *env,
         rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
         if (rc == -ERANGE) {
                 /* Buf was too small, figure out what we need. */
         rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
         if (rc == -ERANGE) {
                 /* Buf was too small, figure out what we need. */
-                buf->lb_buf = NULL;
-                buf->lb_len = 0;
+                mdd_buf_put(buf);
                 rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
                 if (rc < 0)
                         return ERR_PTR(rc);
                 rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
                 if (rc < 0)
                         return ERR_PTR(rc);
index 746cefb..99ed100 100644 (file)
@@ -131,6 +131,7 @@ void mdd_buf_put(struct lu_buf *buf)
         else
                 OBD_FREE(buf->lb_buf, buf->lb_len);
         buf->lb_buf = NULL;
         else
                 OBD_FREE(buf->lb_buf, buf->lb_len);
         buf->lb_buf = NULL;
+        buf->lb_len = 0;
 }
 
 const struct lu_buf *mdd_buf_get_const(const struct lu_env *env,
 }
 
 const struct lu_buf *mdd_buf_get_const(const struct lu_env *env,