init.c (1166B)
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * fs-verity module initialization and logging 4 * 5 * Copyright 2019 Google LLC 6 */ 7 8#include "fsverity_private.h" 9 10#include <linux/ratelimit.h> 11 12void 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 34static int __init fsverity_init(void) 35{ 36 int err; 37 38 fsverity_check_hash_algs(); 39 40 err = fsverity_init_info_cache(); 41 if (err) 42 return err; 43 44 err = fsverity_init_workqueue(); 45 if (err) 46 goto err_exit_info_cache; 47 48 err = fsverity_init_signature(); 49 if (err) 50 goto err_exit_workqueue; 51 52 pr_debug("Initialized fs-verity\n"); 53 return 0; 54 55err_exit_workqueue: 56 fsverity_exit_workqueue(); 57err_exit_info_cache: 58 fsverity_exit_info_cache(); 59 return err; 60} 61late_initcall(fsverity_init)