aboutsummaryrefslogtreecommitdiffstats
path: root/security/tomoyo/realpath.c
diff options
context:
space:
mode:
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>2010-01-26 06:45:27 -0500
committerJames Morris <jmorris@namei.org>2010-01-26 16:20:48 -0500
commit8e2d39a1665e680c095545993aac2fcac6916eb9 (patch)
tree41687f7e7f4fb37416b7948b6d2e09d0a383459b /security/tomoyo/realpath.c
parent7d52a155e38d5a165759dbbee656455861bf7801 (diff)
TOMOYO: Remove usage counter for temporary memory.
TOMOYO was using own memory usage counter for detecting memory leak. But as kernel 2.6.31 introduced memory leak detection mechanism ( CONFIG_DEBUG_KMEMLEAK ), we no longer need to have own counter. We remove usage counter for memory used for permission checks, but we keep usage counter for memory used for policy so that we can apply quota. Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'security/tomoyo/realpath.c')
-rw-r--r--security/tomoyo/realpath.c45
1 files changed, 4 insertions, 41 deletions
diff --git a/security/tomoyo/realpath.c b/security/tomoyo/realpath.c
index 54226d5be493..92460c7ded67 100644
--- a/security/tomoyo/realpath.c
+++ b/security/tomoyo/realpath.c
@@ -150,12 +150,12 @@ int tomoyo_realpath_from_path2(struct path *path, char *newname,
150 * 150 *
151 * Returns the realpath of the given @path on success, NULL otherwise. 151 * Returns the realpath of the given @path on success, NULL otherwise.
152 * 152 *
153 * These functions use tomoyo_alloc(), so the caller must call tomoyo_free() 153 * These functions use kzalloc(), so the caller must call kfree()
154 * if these functions didn't return NULL. 154 * if these functions didn't return NULL.
155 */ 155 */
156char *tomoyo_realpath_from_path(struct path *path) 156char *tomoyo_realpath_from_path(struct path *path)
157{ 157{
158 char *buf = tomoyo_alloc(sizeof(struct tomoyo_page_buffer)); 158 char *buf = kzalloc(sizeof(struct tomoyo_page_buffer), GFP_KERNEL);
159 159
160 BUILD_BUG_ON(sizeof(struct tomoyo_page_buffer) 160 BUILD_BUG_ON(sizeof(struct tomoyo_page_buffer)
161 <= TOMOYO_MAX_PATHNAME_LEN - 1); 161 <= TOMOYO_MAX_PATHNAME_LEN - 1);
@@ -164,7 +164,7 @@ char *tomoyo_realpath_from_path(struct path *path)
164 if (tomoyo_realpath_from_path2(path, buf, 164 if (tomoyo_realpath_from_path2(path, buf,
165 TOMOYO_MAX_PATHNAME_LEN - 1) == 0) 165 TOMOYO_MAX_PATHNAME_LEN - 1) == 0)
166 return buf; 166 return buf;
167 tomoyo_free(buf); 167 kfree(buf);
168 return NULL; 168 return NULL;
169} 169}
170 170
@@ -346,39 +346,6 @@ void __init tomoyo_realpath_init(void)
346 panic("Can't register tomoyo_kernel_domain"); 346 panic("Can't register tomoyo_kernel_domain");
347} 347}
348 348
349/* Memory allocated for temporary purpose. */
350static atomic_t tomoyo_dynamic_memory_size;
351
352/**
353 * tomoyo_alloc - Allocate memory for temporary purpose.
354 *
355 * @size: Size in bytes.
356 *
357 * Returns pointer to allocated memory on success, NULL otherwise.
358 */
359void *tomoyo_alloc(const size_t size)
360{
361 void *p = kzalloc(size, GFP_KERNEL);
362 if (p)
363 atomic_add(ksize(p), &tomoyo_dynamic_memory_size);
364 return p;
365}
366
367/**
368 * tomoyo_free - Release memory allocated by tomoyo_alloc().
369 *
370 * @p: Pointer returned by tomoyo_alloc(). May be NULL.
371 *
372 * Returns nothing.
373 */
374void tomoyo_free(const void *p)
375{
376 if (p) {
377 atomic_sub(ksize(p), &tomoyo_dynamic_memory_size);
378 kfree(p);
379 }
380}
381
382/** 349/**
383 * tomoyo_read_memory_counter - Check for memory usage in bytes. 350 * tomoyo_read_memory_counter - Check for memory usage in bytes.
384 * 351 *
@@ -393,8 +360,6 @@ int tomoyo_read_memory_counter(struct tomoyo_io_buffer *head)
393 = tomoyo_allocated_memory_for_savename; 360 = tomoyo_allocated_memory_for_savename;
394 const unsigned int private 361 const unsigned int private
395 = tomoyo_allocated_memory_for_elements; 362 = tomoyo_allocated_memory_for_elements;
396 const unsigned int dynamic
397 = atomic_read(&tomoyo_dynamic_memory_size);
398 char buffer[64]; 363 char buffer[64];
399 364
400 memset(buffer, 0, sizeof(buffer)); 365 memset(buffer, 0, sizeof(buffer));
@@ -412,9 +377,7 @@ int tomoyo_read_memory_counter(struct tomoyo_io_buffer *head)
412 else 377 else
413 buffer[0] = '\0'; 378 buffer[0] = '\0';
414 tomoyo_io_printf(head, "Private: %10u%s\n", private, buffer); 379 tomoyo_io_printf(head, "Private: %10u%s\n", private, buffer);
415 tomoyo_io_printf(head, "Dynamic: %10u\n", dynamic); 380 tomoyo_io_printf(head, "Total: %10u\n", shared + private);
416 tomoyo_io_printf(head, "Total: %10u\n",
417 shared + private + dynamic);
418 head->read_eof = true; 381 head->read_eof = true;
419 } 382 }
420 return 0; 383 return 0;