]>
Commit | Line | Data |
---|---|---|
c73bd6d4 KT |
1 | /* |
2 | * security/tomoyo/realpath.h | |
3 | * | |
4 | * Get the canonicalized absolute pathnames. The basis for TOMOYO. | |
5 | * | |
6 | * Copyright (C) 2005-2009 NTT DATA CORPORATION | |
7 | * | |
39826a1e | 8 | * Version: 2.2.0 2009/04/01 |
c73bd6d4 KT |
9 | * |
10 | */ | |
11 | ||
12 | #ifndef _SECURITY_TOMOYO_REALPATH_H | |
13 | #define _SECURITY_TOMOYO_REALPATH_H | |
14 | ||
15 | struct path; | |
16 | struct tomoyo_path_info; | |
17 | struct tomoyo_io_buffer; | |
18 | ||
19 | /* Convert binary string to ascii string. */ | |
20 | int tomoyo_encode(char *buffer, int buflen, const char *str); | |
21 | ||
22 | /* Returns realpath(3) of the given pathname but ignores chroot'ed root. */ | |
23 | int tomoyo_realpath_from_path2(struct path *path, char *newname, | |
24 | int newname_len); | |
25 | ||
26 | /* | |
27 | * Returns realpath(3) of the given pathname but ignores chroot'ed root. | |
8e2d39a1 | 28 | * These functions use kzalloc(), so the caller must call kfree() |
c73bd6d4 KT |
29 | * if these functions didn't return NULL. |
30 | */ | |
31 | char *tomoyo_realpath(const char *pathname); | |
32 | /* | |
33 | * Same with tomoyo_realpath() except that it doesn't follow the final symlink. | |
34 | */ | |
35 | char *tomoyo_realpath_nofollow(const char *pathname); | |
36 | /* Same with tomoyo_realpath() except that the pathname is already solved. */ | |
37 | char *tomoyo_realpath_from_path(struct path *path); | |
38 | ||
cd7bec6a TH |
39 | /* Check memory quota. */ |
40 | bool tomoyo_memory_ok(void *ptr); | |
c73bd6d4 KT |
41 | |
42 | /* | |
43 | * Keep the given name on the RAM. | |
44 | * The RAM is shared, so NEVER try to modify or kfree() the returned name. | |
45 | */ | |
bf24fb01 | 46 | const struct tomoyo_path_info *tomoyo_get_name(const char *name); |
c73bd6d4 | 47 | |
c73bd6d4 KT |
48 | /* Check for memory usage. */ |
49 | int tomoyo_read_memory_counter(struct tomoyo_io_buffer *head); | |
50 | ||
51 | /* Set memory quota. */ | |
52 | int tomoyo_write_memory_quota(struct tomoyo_io_buffer *head); | |
53 | ||
1581e7dd TH |
54 | /* Initialize realpath related code. */ |
55 | void __init tomoyo_realpath_init(void); | |
56 | ||
bf24fb01 TH |
57 | /* |
58 | * tomoyo_name_entry is a structure which is used for linking | |
59 | * "struct tomoyo_path_info" into tomoyo_name_list . | |
60 | */ | |
61 | struct tomoyo_name_entry { | |
62 | struct list_head list; | |
63 | atomic_t users; | |
64 | struct tomoyo_path_info entry; | |
65 | }; | |
66 | ||
67 | static inline void tomoyo_put_name(const struct tomoyo_path_info *name) | |
68 | { | |
69 | if (name) { | |
70 | struct tomoyo_name_entry *ptr = | |
71 | container_of(name, struct tomoyo_name_entry, entry); | |
72 | atomic_dec(&ptr->users); | |
73 | } | |
74 | } | |
75 | ||
c73bd6d4 | 76 | #endif /* !defined(_SECURITY_TOMOYO_REALPATH_H) */ |