Commit | Line | Data |
---|---|---|
671e67b4 EB |
1 | // SPDX-License-Identifier: GPL-2.0 |
2 | /* | |
7bf765dd | 3 | * fs-verity module initialization and logging |
671e67b4 EB |
4 | * |
5 | * Copyright 2019 Google LLC | |
6 | */ | |
7 | ||
8 | #include "fsverity_private.h" | |
9 | ||
10 | #include <linux/ratelimit.h> | |
11 | ||
12 | void fsverity_msg(const struct inode *inode, const char *level, | |
13 | const char *fmt, ...) | |
14 | { | |
15 | static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL, | |
16 | DEFAULT_RATELIMIT_BURST); | |
17 | struct va_format vaf; | |
18 | va_list args; | |
19 | ||
20 | if (!__ratelimit(&rs)) | |
21 | return; | |
22 | ||
23 | va_start(args, fmt); | |
24 | vaf.fmt = fmt; | |
25 | vaf.va = &args; | |
26 | if (inode) | |
27 | printk("%sfs-verity (%s, inode %lu): %pV\n", | |
28 | level, inode->i_sb->s_id, inode->i_ino, &vaf); | |
29 | else | |
30 | printk("%sfs-verity: %pV\n", level, &vaf); | |
31 | va_end(args); | |
32 | } | |
33 | ||
34 | static int __init fsverity_init(void) | |
35 | { | |
fd2d1acf EB |
36 | int err; |
37 | ||
671e67b4 EB |
38 | fsverity_check_hash_algs(); |
39 | ||
fd2d1acf EB |
40 | err = fsverity_init_info_cache(); |
41 | if (err) | |
42 | return err; | |
43 | ||
8a1d0f9c EB |
44 | err = fsverity_init_workqueue(); |
45 | if (err) | |
46 | goto err_exit_info_cache; | |
47 | ||
432434c9 EB |
48 | err = fsverity_init_signature(); |
49 | if (err) | |
50 | goto err_exit_workqueue; | |
51 | ||
671e67b4 | 52 | return 0; |
8a1d0f9c | 53 | |
432434c9 EB |
54 | err_exit_workqueue: |
55 | fsverity_exit_workqueue(); | |
8a1d0f9c EB |
56 | err_exit_info_cache: |
57 | fsverity_exit_info_cache(); | |
58 | return err; | |
671e67b4 EB |
59 | } |
60 | late_initcall(fsverity_init) |