nixos/luksroot: Check if the device was opened while reading password #369627
+4
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Helps the following situation:
SSH in initrd is enabled
NixOS is waiting for a password to be typed at the console (or provided via cryptsetup-askpass)
The user logs in via SSH, but instead of running cryptsetup-askpass, they run "cryptsetup open" directly (because they don't know that they need to use NixOS's cryptsetup-askpass script, or because they want to use a non-trivial unlocking method that is not natively supported by this module)
Currently, in the above situation, NixOS will keep waiting for a password to be entered even though the device is already unlocked. If a password is entered, it will print a confusing "already exists" error and keep asking for the same password.
We can improve on this by simply checking if the device is already unlocked in our read loop. In this case, we don't need to do anything other than return from the function and continue booting.
Things done
nix.conf
? (See Nix manual)sandbox = relaxed
sandbox = true
nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"
. Note: all changes have to be committed, also see nixpkgs-review usage./result/bin/
)Add a 👍 reaction to pull requests you find important.