serial: of-serial: Remove device_type = "serial" registration
[firefly-linux-kernel-4.4.55.git] / drivers / tty / tty_audit.c
index 755d418019c8850b2a3688d875fc042a9ceaad59..a4fdce74f883e4f5868f3efb975ec51347ef2c47 100644 (file)
@@ -111,12 +111,9 @@ static void tty_audit_buf_push(struct tty_audit_buf *buf)
 void tty_audit_exit(void)
 {
        struct tty_audit_buf *buf;
-       unsigned long flags;
 
-       spin_lock_irqsave(&current->sighand->siglock, flags);
        buf = current->signal->tty_audit_buf;
        current->signal->tty_audit_buf = NULL;
-       spin_unlock_irqrestore(&current->sighand->siglock, flags);
        if (!buf)
                return;
 
@@ -134,11 +131,8 @@ void tty_audit_exit(void)
  */
 void tty_audit_fork(struct signal_struct *sig)
 {
-       unsigned long flags;
-
-       spin_lock_irqsave(&current->sighand->siglock, flags);
        sig->audit_tty = current->signal->audit_tty;
-       spin_unlock_irqrestore(&current->sighand->siglock, flags);
+       sig->audit_tty_log_passwd = current->signal->audit_tty_log_passwd;
 }
 
 /**
@@ -275,10 +269,18 @@ void tty_audit_add_data(struct tty_struct *tty, unsigned char *data,
 {
        struct tty_audit_buf *buf;
        int major, minor;
+       int audit_log_tty_passwd;
+       unsigned long flags;
 
        if (unlikely(size == 0))
                return;
 
+       spin_lock_irqsave(&current->sighand->siglock, flags);
+       audit_log_tty_passwd = current->signal->audit_tty_log_passwd;
+       spin_unlock_irqrestore(&current->sighand->siglock, flags);
+       if (!audit_log_tty_passwd && icanon && !L_ECHO(tty))
+               return;
+
        if (tty->driver->type == TTY_DRIVER_TYPE_PTY
            && tty->driver->subtype == PTY_TYPE_MASTER)
                return;