diff --git a/src/locking/lock_driver_sanlock.c b/src/locking/lock_driver_sanlock.c
index b3d31bf05b713b4077c57a72f51ed260991018a2..d0339a6df14d4d613493fb5eedb4b1d866b4bdb7 100644
--- a/src/locking/lock_driver_sanlock.c
+++ b/src/locking/lock_driver_sanlock.c
@@ -907,9 +907,6 @@ static int virLockManagerSanlockAcquire(virLockManagerPtr lock,
         return -1;
     }
 
-    if (VIR_ALLOC(opt) < 0)
-        return -1;
-
     /* We only initialize 'sock' if we are in the real
      * child process and we need it to be inherited
      *
@@ -944,6 +941,9 @@ static int virLockManagerSanlockAcquire(virLockManagerPtr lock,
         return 0;
     }
 
+    if (VIR_ALLOC(opt) < 0)
+        goto error;
+
     /* sanlock doesn't use owner_name for anything, so it's safe to take just
      * the first SANLK_NAME_LEN - 1 characters from vm_name */
     ignore_value(virStrncpy(opt->owner_name, priv->vm_name,