// SPDX-License-Identifier: GPL-2.0 /* * security/tomoyo/proxy.c * * Copyright (C) 2005-2011 NTT DATA CORPORATION */ #include #include "common.h" #ifdef CONFIG_SECURITY_TOMOYO_LKM struct tomoyo_task *tomoyo_task(struct task_struct *task) { struct tomoyo_task *s = task->security + tomoyo_blob_sizes.lbs_task; if (unlikely(!s->domain_info)) { if (likely(task == current)) { s->domain_info = &tomoyo_kernel_domain; atomic_inc(&tomoyo_kernel_domain.users); } else { /* Caller handles s->domain_info == NULL case. */ } } return s; } #include "hooks.h" /** * tomoyo_runtime_init - Register TOMOYO Linux as a loadable LSM module. * * Returns 0 if TOMOYO is enabled, -EINVAL otherwise. */ static int __init tomoyo_runtime_init(void) { const struct tomoyo_hooks tomoyo_hooks = { .cred_prepare = tomoyo_cred_prepare, .bprm_committed_creds = tomoyo_bprm_committed_creds, .task_alloc = tomoyo_task_alloc, .task_free = tomoyo_task_free, .bprm_check_security = tomoyo_bprm_check_security, .file_fcntl = tomoyo_file_fcntl, .file_open = tomoyo_file_open, .file_truncate = tomoyo_file_truncate, .path_truncate = tomoyo_path_truncate, .path_unlink = tomoyo_path_unlink, .path_mkdir = tomoyo_path_mkdir, .path_rmdir = tomoyo_path_rmdir, .path_symlink = tomoyo_path_symlink, .path_mknod = tomoyo_path_mknod, .path_link = tomoyo_path_link, .path_rename = tomoyo_path_rename, .inode_getattr = tomoyo_inode_getattr, .file_ioctl = tomoyo_file_ioctl, .file_ioctl_compat = tomoyo_file_ioctl, .path_chmod = tomoyo_path_chmod, .path_chown = tomoyo_path_chown, .path_chroot = tomoyo_path_chroot, .sb_mount = tomoyo_sb_mount, .sb_umount = tomoyo_sb_umount, .sb_pivotroot = tomoyo_sb_pivotroot, .socket_bind = tomoyo_socket_bind, .socket_connect = tomoyo_socket_connect, .socket_listen = tomoyo_socket_listen, .socket_sendmsg = tomoyo_socket_sendmsg, }; if (!tomoyo_ops.enabled) return -EINVAL; tomoyo_ops.check_profile = tomoyo_check_profile; pr_info("TOMOYO Linux initialized\n"); tomoyo_task(current); tomoyo_mm_init(); tomoyo_interface_init(); tomoyo_register_hooks(&tomoyo_hooks); return 0; } module_init(tomoyo_runtime_init); MODULE_LICENSE("GPL"); #endif