1
- From 4db2da9b067d0c7b10d7f7543c45dcb0d608e307 Mon Sep 17 00:00:00 2001
1
+ From ff94a2d240ee168296ce4e2bb3370ee10272bbef Mon Sep 17 00:00:00 2001
2
2
From: Sergio Lopez <
[email protected] >
3
3
Date: Wed, 3 Aug 2022 12:35:12 +0200
4
4
Subject: [PATCH 3/4] Implement driver to retrieve secrets from cmdline
@@ -14,24 +14,24 @@ efi_secret.c
14
14
15
15
Signed-off-by: Sergio Lopez <
[email protected] >
16
16
---
17
- arch/x86/kernel/setup.c | 7 +
18
- drivers/virt/Kconfig | 2 +
19
- drivers/virt/Makefile | 1 +
17
+ arch/x86/kernel/setup.c | 6 +
18
+ drivers/virt/coco/ Kconfig | 2 +
19
+ drivers/virt/coco/ Makefile | 1 +
20
20
drivers/virt/coco/cmdline_secret/Kconfig | 13 ++
21
21
drivers/virt/coco/cmdline_secret/Makefile | 2 +
22
22
.../virt/coco/cmdline_secret/cmdline_secret.c | 135 ++++++++++++++++++
23
23
include/linux/init.h | 4 +
24
24
init/main.c | 13 ++
25
- 8 files changed, 177 insertions(+)
25
+ 8 files changed, 176 insertions(+)
26
26
create mode 100644 drivers/virt/coco/cmdline_secret/Kconfig
27
27
create mode 100644 drivers/virt/coco/cmdline_secret/Makefile
28
28
create mode 100644 drivers/virt/coco/cmdline_secret/cmdline_secret.c
29
29
30
30
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
31
- index eb129277dcdd..3906896a62af 100644
31
+ index f1fea506e20f..3778d544e93b 100644
32
32
--- a/arch/x86/kernel/setup.c
33
33
+++ b/arch/x86/kernel/setup.c
34
- @@ -876,7 +876,9 @@ void __init setup_arch(char **cmdline_p)
34
+ @@ -751,12 +751,18 @@ void __init setup_arch(char **cmdline_p)
35
35
*/
36
36
__flush_tlb_all();
37
37
#else
@@ -41,42 +41,40 @@ index eb129277dcdd..3906896a62af 100644
41
41
boot_cpu_data.x86_phys_bits = MAX_PHYSMEM_BITS;
42
42
#endif
43
43
44
- @@ -961,6 +963,11 @@ void __init setup_arch(char **cmdline_p)
45
-
46
44
#ifdef CONFIG_CMDLINE_BOOL
47
45
#ifdef CONFIG_CMDLINE_OVERRIDE
48
46
+ #ifdef CONFIG_CMDLINE_SECRET
49
47
+ strscpy(early_secret_cmdline, boot_command_line, COMMAND_LINE_SIZE);
50
48
+ memzero_explicit(boot_command_line, COMMAND_LINE_SIZE);
51
- + clflush_cache_range(boot_command_line, COMMAND_LINE_SIZE);
52
49
+ #endif
53
50
strscpy(boot_command_line, builtin_cmdline, COMMAND_LINE_SIZE);
54
51
#else
55
52
if (builtin_cmdline[0]) {
56
- diff --git a/drivers/virt/Kconfig b/drivers/virt/Kconfig
57
- index f79ab13a5c28..4a62feec1a0e 100644
58
- --- a/drivers/virt/Kconfig
59
- +++ b/drivers/virt/Kconfig
60
- @@ -50 ,6 +50 ,8 @@ source "drivers/virt/acrn/Kconfig"
61
-
62
- source "drivers/virt/coco/efi_secret/Kconfig"
53
+ diff --git a/drivers/virt/coco/ Kconfig b/drivers/virt/coco /Kconfig
54
+ index d9ff676bf48d..fd37c502b42d 100644
55
+ --- a/drivers/virt/coco/ Kconfig
56
+ +++ b/drivers/virt/coco/ Kconfig
57
+ @@ -7 ,6 +7 ,8 @@ config TSM_REPORTS
58
+ select CONFIGFS_FS
59
+ tristate
63
60
64
61
+ source "drivers/virt/coco/cmdline_secret/Kconfig"
65
62
+
66
- source "drivers/virt/coco/sev-guest /Kconfig"
63
+ source "drivers/virt/coco/efi_secret /Kconfig"
67
64
68
- source "drivers/virt/coco/tdx-guest/Kconfig"
69
- diff --git a/drivers/virt/Makefile b/drivers/virt/Makefile
70
- index e9aa6fc96fab..9174d4f9286e 100644
71
- --- a/drivers/virt/Makefile
72
- +++ b/drivers/virt/Makefile
73
- @@ -10,5 +10,6 @@ obj-y += vboxguest/
74
- obj-$(CONFIG_NITRO_ENCLAVES) += nitro_enclaves/
75
- obj-$(CONFIG_ACRN_HSM) += acrn/
76
- obj-$(CONFIG_EFI_SECRET) += coco/efi_secret/
77
- + obj-$(CONFIG_CMDLINE_SECRET) += coco/cmdline_secret/
78
- obj-$(CONFIG_SEV_GUEST) += coco/sev-guest/
79
- obj-$(CONFIG_INTEL_TDX_GUEST) += coco/tdx-guest/
65
+ source "drivers/virt/coco/pkvm-guest/Kconfig"
66
+ diff --git a/drivers/virt/coco/Makefile b/drivers/virt/coco/Makefile
67
+ index b69c30c1c720..da3d9254900c 100644
68
+ --- a/drivers/virt/coco/Makefile
69
+ +++ b/drivers/virt/coco/Makefile
70
+ @@ -3,6 +3,7 @@
71
+ # Confidential computing related collateral
72
+ #
73
+ obj-$(CONFIG_TSM_REPORTS) += tsm.o
74
+ + obj-$(CONFIG_CMDLINE_SECRET) += cmdline_secret/
75
+ obj-$(CONFIG_EFI_SECRET) += efi_secret/
76
+ obj-$(CONFIG_ARM_PKVM_GUEST) += pkvm-guest/
77
+ obj-$(CONFIG_SEV_GUEST) += sev-guest/
80
78
diff --git a/drivers/virt/coco/cmdline_secret/Kconfig b/drivers/virt/coco/cmdline_secret/Kconfig
81
79
new file mode 100644
82
80
index 000000000000..bb601280d50d
@@ -246,7 +244,7 @@ index 000000000000..e53edce18768
246
244
+ module_init(cmdline_secret_init);
247
245
+ module_exit(cmdline_secret_exit);
248
246
diff --git a/include/linux/init.h b/include/linux/init.h
249
- index 01b52c9c7526..889a0cf32832 100644
247
+ index ee1309473bc6..96c0f3c72395 100644
250
248
--- a/include/linux/init.h
251
249
+++ b/include/linux/init.h
252
250
@@ -143,6 +143,10 @@ extern int do_one_initcall(initcall_t fn);
@@ -261,10 +259,10 @@ index 01b52c9c7526..889a0cf32832 100644
261
259
262
260
/* used by init/main.c */
263
261
diff --git a/init/main.c b/init/main.c
264
- index c787e94cc898..2fb8a8af9af6 100644
262
+ index c4778edae797..a475bd3bcb34 100644
265
263
--- a/init/main.c
266
264
+++ b/init/main.c
267
- @@ -147 ,6 +147 ,11 @@ static char *extra_command_line;
265
+ @@ -149 ,6 +149 ,11 @@ static char *extra_command_line;
268
266
/* Extra init arguments */
269
267
static char *extra_init_args;
270
268
@@ -276,7 +274,7 @@ index c787e94cc898..2fb8a8af9af6 100644
276
274
#ifdef CONFIG_BOOT_CONFIG
277
275
/* Is bootconfig on command line? */
278
276
static bool bootconfig_found;
279
- @@ -670 ,6 +675 ,14 @@ static void __init setup_command_line(char *command_line)
277
+ @@ -685 ,6 +690 ,14 @@ static void __init setup_command_line(char *command_line)
280
278
}
281
279
282
280
saved_command_line_len = strlen(saved_command_line);
0 commit comments