]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - security/lsm_audit.c
irqchip: tegra: Set the proper base address in irq chip data
[mirror_ubuntu-bionic-kernel.git] / security / lsm_audit.c
index 69fdf3bc765b3e1deddb374dfa27908fc05df851..1d34277dc402b5971122fdb35d0171eb33f612f5 100644 (file)
@@ -211,7 +211,7 @@ static inline void print_ipv4_addr(struct audit_buffer *ab, __be32 addr,
 static void dump_common_audit_data(struct audit_buffer *ab,
                                   struct common_audit_data *a)
 {
-       struct task_struct *tsk = current;
+       char comm[sizeof(current->comm)];
 
        /*
         * To keep stack sizes in check force programers to notice if they
@@ -220,8 +220,8 @@ static void dump_common_audit_data(struct audit_buffer *ab,
         */
        BUILD_BUG_ON(sizeof(a->u) > sizeof(void *)*2);
 
-       audit_log_format(ab, " pid=%d comm=", task_pid_nr(tsk));
-       audit_log_untrustedstring(ab, tsk->comm);
+       audit_log_format(ab, " pid=%d comm=", task_pid_nr(current));
+       audit_log_untrustedstring(ab, memcpy(comm, current->comm, sizeof(comm)));
 
        switch (a->type) {
        case LSM_AUDIT_DATA_NONE:
@@ -237,7 +237,7 @@ static void dump_common_audit_data(struct audit_buffer *ab,
 
                audit_log_d_path(ab, " path=", &a->u.path);
 
-               inode = a->u.path.dentry->d_inode;
+               inode = d_backing_inode(a->u.path.dentry);
                if (inode) {
                        audit_log_format(ab, " dev=");
                        audit_log_untrustedstring(ab, inode->i_sb->s_id);
@@ -251,7 +251,7 @@ static void dump_common_audit_data(struct audit_buffer *ab,
                audit_log_format(ab, " name=");
                audit_log_untrustedstring(ab, a->u.dentry->d_name.name);
 
-               inode = a->u.dentry->d_inode;
+               inode = d_backing_inode(a->u.dentry);
                if (inode) {
                        audit_log_format(ab, " dev=");
                        audit_log_untrustedstring(ab, inode->i_sb->s_id);
@@ -276,16 +276,19 @@ static void dump_common_audit_data(struct audit_buffer *ab,
                audit_log_format(ab, " ino=%lu", inode->i_ino);
                break;
        }
-       case LSM_AUDIT_DATA_TASK:
-               tsk = a->u.tsk;
+       case LSM_AUDIT_DATA_TASK: {
+               struct task_struct *tsk = a->u.tsk;
                if (tsk) {
                        pid_t pid = task_pid_nr(tsk);
                        if (pid) {
+                               char comm[sizeof(tsk->comm)];
                                audit_log_format(ab, " pid=%d comm=", pid);
-                               audit_log_untrustedstring(ab, tsk->comm);
+                               audit_log_untrustedstring(ab,
+                                   memcpy(comm, tsk->comm, sizeof(comm)));
                        }
                }
                break;
+       }
        case LSM_AUDIT_DATA_NET:
                if (a->u.net->sk) {
                        struct sock *sk = a->u.net->sk;