diff --git a/lustre/ldlm/ldlm_lock.c b/lustre/ldlm/ldlm_lock.c
index 0e7f0b072715fa322d3006ef3bfcb331aca9a813..b5b0e330a09ddaf026a8a718ba40ddcdd3906298 100644
--- a/lustre/ldlm/ldlm_lock.c
+++ b/lustre/ldlm/ldlm_lock.c
@@ -752,11 +752,13 @@ struct ldlm_lock *ldlm_lock_create(struct ldlm_namespace *ns,
         lock->l_completion_ast = completion;
         lock->l_glimpse_ast = glimpse;
 
-        lock->l_lvb_len = lvb_len;
-        OBD_ALLOC(lock->l_lvb_data, lvb_len);
-        if (lock->l_lvb_data == NULL) {
-                OBD_SLAB_FREE(lock, ldlm_lock_slab, sizeof(*lock));
-                RETURN(NULL);
+        if (lvb_len) {
+                lock->l_lvb_len = lvb_len;
+                OBD_ALLOC(lock->l_lvb_data, lvb_len);
+                if (lock->l_lvb_data == NULL) {
+                        OBD_SLAB_FREE(lock, ldlm_lock_slab, sizeof(*lock));
+                        RETURN(NULL);
+                }
         }
 
         RETURN(lock);