From d4dd18af2c5672c71e5a01e7ef38d5b15fc3dc92 Mon Sep 17 00:00:00 2001 From: Christian Hesse Date: Tue, 1 Oct 2013 22:18:24 +0200 Subject: use inotifywait to work around race condition It was passible that the keyfile was created too late, but the password agent was not ready yet. Work around this by waiting for a new request. --- udev/ykfde | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'udev') diff --git a/udev/ykfde b/udev/ykfde index 239f8bd..7a53bcd 100755 --- a/udev/ykfde +++ b/udev/ykfde @@ -10,6 +10,7 @@ source /etc/ykfde.conf ykchalresp -${YKFDE_SLOT:-2} "$(cat /ykfde-challenge)" 2>/dev/null | tr -d '\n' > /crypto_keyfile.bin # if the systemd unit was faster try to answer password agent -for REQUEST in $(grep -l '^Message=Please enter passphrase for disk' /run/systemd/ask-password/ask.*); do +for REQUEST in $(grep -l '^Message=Please enter passphrase for disk' /run/systemd/ask-password/ask.* || \ + inotifywait /run/systemd/ask-password/ 2>/dev/null | awk '{ print $1 $3 }'); do /usr/lib/systemd/systemd-reply-password 1 $(grep '^Socket=' ${REQUEST} | cut -d= -f2) < /crypto_keyfile.bin done -- cgit v1.2.3-54-g00ecf