OSDN Git Service

ima: return d_name.name if d_path fails
authorDmitry Kasatkin <d.kasatkin@samsung.com>
Wed, 13 Nov 2013 20:23:20 +0000 (22:23 +0200)
committerMimi Zohar <zohar@linux.vnet.ibm.com>
Fri, 7 Mar 2014 17:15:46 +0000 (12:15 -0500)
This is a small refactoring so ima_d_path() returns dentry name
if path reconstruction fails. It simplifies callers actions
and removes code duplication.

Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
security/integrity/ima/ima_api.c
security/integrity/ima/ima_main.c

index c6b4a73..ba9e4d7 100644 (file)
@@ -332,5 +332,5 @@ const char *ima_d_path(struct path *path, char **pathbuf)
                        pathname = NULL;
                }
        }
-       return pathname;
+       return pathname ?: (const char *)path->dentry->d_name.name;
 }
index 50413d0..52ac6cf 100644 (file)
@@ -79,7 +79,6 @@ __setup("ima_hash=", hash_setup);
  */
 static void ima_rdwr_violation_check(struct file *file)
 {
-       struct dentry *dentry = file->f_path.dentry;
        struct inode *inode = file_inode(file);
        fmode_t mode = file->f_mode;
        int must_measure;
@@ -111,8 +110,6 @@ out:
                return;
 
        pathname = ima_d_path(&file->f_path, &pathbuf);
-       if (!pathname || strlen(pathname) > IMA_EVENT_NAME_LEN_MAX)
-               pathname = dentry->d_name.name;
 
        if (send_tomtou)
                ima_add_violation(file, pathname, "invalid_pcr", "ToMToU");
@@ -220,9 +217,7 @@ static int process_measurement(struct file *file, const char *filename,
        if (rc != 0)
                goto out_digsig;
 
-       pathname = !filename ? ima_d_path(&file->f_path, &pathbuf) : filename;
-       if (!pathname)
-               pathname = (const char *)file->f_dentry->d_name.name;
+       pathname = filename ?: ima_d_path(&file->f_path, &pathbuf);
 
        if (action & IMA_MEASURE)
                ima_store_measurement(iint, file, pathname,