summaryrefslogtreecommitdiffstats
path: root/include/linux/dm-verity-loadpin.h
diff options
context:
space:
mode:
authorMatthias Kaehlcke <mka@chromium.org>2022-06-27 08:35:24 -0700
committerKees Cook <keescook@chromium.org>2022-07-08 10:46:46 -0700
commitb6c1c5745ccc68ac5d57c7ffb51ea25a86d0e97b (patch)
tree2b40bdda727e2db9ce4e773f5c52a647638df5ff /include/linux/dm-verity-loadpin.h
parent375561bd6195a31bf4c109732bd538cb97a941f4 (diff)
downloadlinux-stable-b6c1c5745ccc68ac5d57c7ffb51ea25a86d0e97b.tar.gz
linux-stable-b6c1c5745ccc68ac5d57c7ffb51ea25a86d0e97b.tar.bz2
linux-stable-b6c1c5745ccc68ac5d57c7ffb51ea25a86d0e97b.zip
dm: Add verity helpers for LoadPin
LoadPin limits loading of kernel modules, firmware and certain other files to a 'pinned' file system (typically a read-only rootfs). To provide more flexibility LoadPin is being extended to also allow loading these files from trusted dm-verity devices. For that purpose LoadPin can be provided with a list of verity root digests that it should consider as trusted. Add a bunch of helpers to allow LoadPin to check whether a DM device is a trusted verity device. The new functions broadly fall in two categories: those that need access to verity internals (like the root digest), and the 'glue' between LoadPin and verity. The new file dm-verity-loadpin.c contains the glue functions. Signed-off-by: Matthias Kaehlcke <mka@chromium.org> Acked-by: Mike Snitzer <snitzer@kernel.org> Link: https://lore.kernel.org/lkml/20220627083512.v7.1.I3e928575a23481121e73286874c4c2bdb403355d@changeid Signed-off-by: Kees Cook <keescook@chromium.org>
Diffstat (limited to 'include/linux/dm-verity-loadpin.h')
-rw-r--r--include/linux/dm-verity-loadpin.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/linux/dm-verity-loadpin.h b/include/linux/dm-verity-loadpin.h
new file mode 100644
index 000000000000..fb695ecaa5d5
--- /dev/null
+++ b/include/linux/dm-verity-loadpin.h
@@ -0,0 +1,27 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef __LINUX_DM_VERITY_LOADPIN_H
+#define __LINUX_DM_VERITY_LOADPIN_H
+
+#include <linux/list.h>
+
+struct block_device;
+
+extern struct list_head dm_verity_loadpin_trusted_root_digests;
+
+struct dm_verity_loadpin_trusted_root_digest {
+ struct list_head node;
+ unsigned int len;
+ u8 data[];
+};
+
+#if IS_ENABLED(CONFIG_SECURITY_LOADPIN) && IS_BUILTIN(CONFIG_DM_VERITY)
+bool dm_verity_loadpin_is_bdev_trusted(struct block_device *bdev);
+#else
+static inline bool dm_verity_loadpin_is_bdev_trusted(struct block_device *bdev)
+{
+ return false;
+}
+#endif
+
+#endif /* __LINUX_DM_VERITY_LOADPIN_H */