From 71c282362d0672235c5205a7db1f3ac3fcf32981 Mon Sep 17 00:00:00 2001 From: Tetsuo Handa Date: Wed, 16 Jun 2010 16:26:38 +0900 Subject: [PATCH] TOMOYO: Remove wrapper function for reading keyword. Keyword strings are read-only. We can directly access them to reduce code size. Signed-off-by: Tetsuo Handa Signed-off-by: James Morris --- security/tomoyo/common.c | 8 ++--- security/tomoyo/common.h | 11 ++++--- security/tomoyo/file.c | 65 ++++------------------------------------ 3 files changed, 14 insertions(+), 70 deletions(-) diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c index 1a22fff89e70..ba8360382895 100644 --- a/security/tomoyo/common.c +++ b/security/tomoyo/common.c @@ -812,7 +812,7 @@ static bool tomoyo_print_path_acl(struct tomoyo_io_buffer *head, continue; pos = head->read_avail; if (!tomoyo_io_printf(head, "allow_%s ", - tomoyo_path2keyword(bit)) || + tomoyo_path_keyword[bit]) || !tomoyo_print_name_union(head, &ptr->name) || !tomoyo_io_printf(head, "\n")) goto out; @@ -845,7 +845,7 @@ static bool tomoyo_print_path2_acl(struct tomoyo_io_buffer *head, continue; pos = head->read_avail; if (!tomoyo_io_printf(head, "allow_%s ", - tomoyo_path22keyword(bit)) || + tomoyo_path2_keyword[bit]) || !tomoyo_print_name_union(head, &ptr->name1) || !tomoyo_print_name_union(head, &ptr->name2) || !tomoyo_io_printf(head, "\n")) @@ -879,7 +879,7 @@ static bool tomoyo_print_path_number_acl(struct tomoyo_io_buffer *head, continue; pos = head->read_avail; if (!tomoyo_io_printf(head, "allow_%s", - tomoyo_path_number2keyword(bit)) || + tomoyo_path_number_keyword[bit]) || !tomoyo_print_name_union(head, &ptr->name) || !tomoyo_print_number_union(head, &ptr->number) || !tomoyo_io_printf(head, "\n")) @@ -913,7 +913,7 @@ static bool tomoyo_print_mkdev_acl(struct tomoyo_io_buffer *head, continue; pos = head->read_avail; if (!tomoyo_io_printf(head, "allow_%s", - tomoyo_mkdev2keyword(bit)) || + tomoyo_mkdev_keyword[bit]) || !tomoyo_print_name_union(head, &ptr->name) || !tomoyo_print_number_union(head, &ptr->mode) || !tomoyo_print_number_union(head, &ptr->major) || diff --git a/security/tomoyo/common.h b/security/tomoyo/common.h index 9b106e9adbec..f4da7a8034a3 100644 --- a/security/tomoyo/common.h +++ b/security/tomoyo/common.h @@ -804,14 +804,8 @@ bool tomoyo_read_no_rewrite_policy(struct tomoyo_io_buffer *head); bool tomoyo_tokenize(char *buffer, char *w[], size_t size); /* Write domain policy violation warning message to console? */ bool tomoyo_verbose_mode(const struct tomoyo_domain_info *domain); -/* Convert double path operation to operation name. */ -const char *tomoyo_path22keyword(const u8 operation); -const char *tomoyo_path_number2keyword(const u8 operation); -const char *tomoyo_mkdev2keyword(const u8 operation); /* Get the last component of the given domainname. */ const char *tomoyo_get_last_name(const struct tomoyo_domain_info *domain); -/* Convert single path operation to operation name. */ -const char *tomoyo_path2keyword(const u8 operation); /* Fill "struct tomoyo_request_info". */ int tomoyo_init_request_info(struct tomoyo_request_info *r, struct tomoyo_domain_info *domain, @@ -985,6 +979,11 @@ extern bool tomoyo_policy_loaded; /* The kernel's domain. */ extern struct tomoyo_domain_info tomoyo_kernel_domain; +extern const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION]; +extern const char *tomoyo_mkdev_keyword[TOMOYO_MAX_MKDEV_OPERATION]; +extern const char *tomoyo_path2_keyword[TOMOYO_MAX_PATH2_OPERATION]; +extern const char *tomoyo_path_number_keyword[TOMOYO_MAX_PATH_NUMBER_OPERATION]; + extern unsigned int tomoyo_quota_for_query; extern unsigned int tomoyo_query_memory_size; diff --git a/security/tomoyo/file.c b/security/tomoyo/file.c index 94e1493ab6b6..67e65c7dde70 100644 --- a/security/tomoyo/file.c +++ b/security/tomoyo/file.c @@ -10,7 +10,7 @@ #include /* Keyword array for operations with one pathname. */ -static const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION] = { +const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION] = { [TOMOYO_TYPE_READ_WRITE] = "read/write", [TOMOYO_TYPE_EXECUTE] = "execute", [TOMOYO_TYPE_READ] = "read", @@ -25,22 +25,20 @@ static const char *tomoyo_path_keyword[TOMOYO_MAX_PATH_OPERATION] = { }; /* Keyword array for operations with one pathname and three numbers. */ -static const char *tomoyo_mkdev_keyword -[TOMOYO_MAX_MKDEV_OPERATION] = { +const char *tomoyo_mkdev_keyword[TOMOYO_MAX_MKDEV_OPERATION] = { [TOMOYO_TYPE_MKBLOCK] = "mkblock", [TOMOYO_TYPE_MKCHAR] = "mkchar", }; /* Keyword array for operations with two pathnames. */ -static const char *tomoyo_path2_keyword[TOMOYO_MAX_PATH2_OPERATION] = { +const char *tomoyo_path2_keyword[TOMOYO_MAX_PATH2_OPERATION] = { [TOMOYO_TYPE_LINK] = "link", [TOMOYO_TYPE_RENAME] = "rename", [TOMOYO_TYPE_PIVOT_ROOT] = "pivot_root", }; /* Keyword array for operations with one pathname and one number. */ -static const char *tomoyo_path_number_keyword -[TOMOYO_MAX_PATH_NUMBER_OPERATION] = { +const char *tomoyo_path_number_keyword[TOMOYO_MAX_PATH_NUMBER_OPERATION] = { [TOMOYO_TYPE_CREATE] = "create", [TOMOYO_TYPE_MKDIR] = "mkdir", [TOMOYO_TYPE_MKFIFO] = "mkfifo", @@ -119,58 +117,6 @@ bool tomoyo_compare_number_union(const unsigned long value, return value >= ptr->values[0] && value <= ptr->values[1]; } -/** - * tomoyo_path2keyword - Get the name of single path operation. - * - * @operation: Type of operation. - * - * Returns the name of single path operation. - */ -const char *tomoyo_path2keyword(const u8 operation) -{ - return (operation < TOMOYO_MAX_PATH_OPERATION) - ? tomoyo_path_keyword[operation] : NULL; -} - -/** - * tomoyo_mkdev2keyword - Get the name of path/number/number/number operations. - * - * @operation: Type of operation. - * - * Returns the name of path/number/number/number operation. - */ -const char *tomoyo_mkdev2keyword(const u8 operation) -{ - return (operation < TOMOYO_MAX_MKDEV_OPERATION) - ? tomoyo_mkdev_keyword[operation] : NULL; -} - -/** - * tomoyo_path22keyword - Get the name of double path operation. - * - * @operation: Type of operation. - * - * Returns the name of double path operation. - */ -const char *tomoyo_path22keyword(const u8 operation) -{ - return (operation < TOMOYO_MAX_PATH2_OPERATION) - ? tomoyo_path2_keyword[operation] : NULL; -} - -/** - * tomoyo_path_number2keyword - Get the name of path/number operations. - * - * @operation: Type of operation. - * - * Returns the name of path/number operation. - */ -const char *tomoyo_path_number2keyword(const u8 operation) -{ - return (operation < TOMOYO_MAX_PATH_NUMBER_OPERATION) - ? tomoyo_path_number_keyword[operation] : NULL; -} - static void tomoyo_add_slash(struct tomoyo_path_info *buf) { if (buf->is_dir) @@ -266,8 +212,7 @@ static int tomoyo_audit_path2_log(struct tomoyo_request_info *r) */ static int tomoyo_audit_mkdev_log(struct tomoyo_request_info *r) { - const char *operation = tomoyo_mkdev2keyword(r->param.mkdev. - operation); + const char *operation = tomoyo_mkdev_keyword[r->param.mkdev.operation]; const struct tomoyo_path_info *filename = r->param.mkdev.filename; const unsigned int major = r->param.mkdev.major; const unsigned int minor = r->param.mkdev.minor; -- 2.20.1