TOMOYO: Fix memory leak upon file open.
Tetsuo Handa [Wed, 2 Mar 2011 07:54:24 +0000 (16:54 +0900)]
In tomoyo_check_open_permission() since 2.6.36, TOMOYO was by error
recalculating already calculated pathname when checking allow_rewrite
permission. As a result, memory will leak whenever a file is opened for writing
without O_APPEND flag. Also, performance will degrade because TOMOYO is
calculating pathname regardless of profile configuration.
This patch fixes the leak and performance degrade.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: James Morris <jmorris@namei.org>

security/tomoyo/file.c

index 9d32f18..cb09f1f 100644 (file)
@@ -927,7 +927,7 @@ int tomoyo_check_open_permission(struct tomoyo_domain_info *domain,
                                 struct path *path, const int flag)
 {
        const u8 acc_mode = ACC_MODE(flag);
-       int error = -ENOMEM;
+       int error = 0;
        struct tomoyo_path_info buf;
        struct tomoyo_request_info r;
        int idx;
@@ -938,9 +938,6 @@ int tomoyo_check_open_permission(struct tomoyo_domain_info *domain,
        buf.name = NULL;
        r.mode = TOMOYO_CONFIG_DISABLED;
        idx = tomoyo_read_lock();
-       if (!tomoyo_get_realpath(&buf, path))
-               goto out;
-       error = 0;
        /*
         * If the filename is specified by "deny_rewrite" keyword,
         * we need to check "allow_rewrite" permission when the filename is not