diff --git a/lib/common.sh b/lib/common.sh
index 63b77959d1460e0f78fc9442b3934d79ecb9feeb..6d873ede9f81a5d7c38041e6d364dc4d2dc6bd36 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -140,6 +140,7 @@ get_full_version() {
 lock() {
 	# Only reopen the FD if it wasn't handed to us
 	if ! [[ "/dev/fd/$1" -ef "$2" ]]; then
+		mkdir -p -- "$(dirname -- "$2")"
 		eval "exec $1>"'"$2"'
 	fi
 
@@ -156,6 +157,7 @@ lock() {
 slock() {
 	# Only reopen the FD if it wasn't handed to us
 	if ! [[ "/dev/fd/$1" -ef "$2" ]]; then
+		mkdir -p -- "$(dirname -- "$2")"
 		eval "exec $1>"'"$2"'
 	fi