diff --git a/target/linux/lantiq/base-files/lib/functions/lantiq_dsl.sh b/target/linux/lantiq/base-files/lib/functions/lantiq_dsl.sh
index dbeb344cde7..22e65cb1481 100755
--- a/target/linux/lantiq/base-files/lib/functions/lantiq_dsl.sh
+++ b/target/linux/lantiq/base-files/lib/functions/lantiq_dsl.sh
@@ -12,8 +12,10 @@ fi
 #
 dsl_cmd() {
 	killall -0 ${XDSL_CTRL} && (
+		lock /var/lock/dsl_pipe
 		echo "$@" > /tmp/pipe/dsl_cpe0_cmd
 		cat /tmp/pipe/dsl_cpe0_ack
+		lock -u /var/lock/dsl_pipe
 	)
 }
 dsl_val() {