diff --git a/archbuild.in b/archbuild.in
index a78353cae741b38d8990655a2c53ffe6dbc8f967..4d1b3511b798b3d5e16d2f71261e67ea0acdee58 100644
--- a/archbuild.in
+++ b/archbuild.in
@@ -55,7 +55,7 @@ if ${clean_first} || [[ ! -d "${chroots}/${repo}-${arch}" ]]; then
 		subvolume_delete_recursive "${copy}"
 		rm -rf --one-file-system "${copy}"
 	done
-	exec 9>&-
+	lock_close 9
 
 	rm -rf --one-file-system "${chroots}/${repo}-${arch}"
 	mkdir -p "${chroots}/${repo}-${arch}"
diff --git a/lib/common.sh b/lib/common.sh
index 599be54ac95651c7d9aba22b25213e82512a1b89..689772fe22ba515f66ccf8d6fdcaf27d9d161619 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -158,6 +158,14 @@ slock() {
 	fi
 }
 
+##
+#  usage : lock_close( $fd )
+##
+lock_close() {
+	local fd=$1
+	exec {fd}>&-
+}
+
 ##
 # usage: pkgver_equal( $pkgver1, $pkgver2 )
 ##
diff --git a/makechrootpkg.in b/makechrootpkg.in
index dc598f70c3d4f9157bf735a5801720d3264fb21d..ad99334e77df6075839fa095e5b3f308feaaddc4 100644
--- a/makechrootpkg.in
+++ b/makechrootpkg.in
@@ -108,7 +108,7 @@ create_chroot() {
 		stat_done
 
 		# Drop the read lock again
-		exec 8>&-
+		lock_close 8
 	fi
 
 	# Update mtime