aboutsummaryrefslogtreecommitdiff
path: root/filesystem/filesystem.go
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2019-10-29 00:04:39 -0700
committerEric Biggers <ebiggers@google.com>2019-10-30 09:11:29 -0700
commitc7da2443d6ffa51727db09f8ef1df6aea8c7612c (patch)
tree0684f76af89150371c7fc69092b978492d89f5e7 /filesystem/filesystem.go
parentd9d2b32f9fa9e39b154b71b2abc9eda43d5aaa3c (diff)
filesystem: get correct device for kernel-mounted rootfs
A root filesystem mounted via the kernel command line always has a source of "/dev/root", which isn't a real device node. This makes fscrypt think this filesystem doesn't have a source device, which breaks creating login passphrase-protected directories on other filesystems: fscrypt encrypt: filesystem /: no device for mount "/": system error: cannot create filesystem link This also makes 'fscrypt status' show a blank source device: MOUNTPOINT DEVICE FILESYSTEM ENCRYPTION FSCRYPT / ext4 supported Yes To fix this case, update loadMountInfo() to map the device number to the device name via sysfs rather than use the mount source field.
Diffstat (limited to 'filesystem/filesystem.go')
-rw-r--r--filesystem/filesystem.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/filesystem/filesystem.go b/filesystem/filesystem.go
index 2b3383c..c37962a 100644
--- a/filesystem/filesystem.go
+++ b/filesystem/filesystem.go
@@ -67,6 +67,9 @@ var (
// Path - Absolute path where the directory is mounted
// FilesystemType - Type of the mounted filesystem, e.g. "ext4"
// Device - Device for filesystem (empty string if we cannot find one)
+// DeviceNumber - Device number of the filesystem. This is set even if
+// Device isn't, since all filesystems have a device
+// number assigned by the kernel, even pseudo-filesystems.
//
// In order to use a Mount to store fscrypt metadata, some directories must be
// setup first. Specifically, the directories created look like:
@@ -92,6 +95,7 @@ type Mount struct {
Path string
FilesystemType string
Device string
+ DeviceNumber DeviceNumber
}
// PathSorter allows mounts to be sorted by Path.