]> err.no Git - linux-2.6/blobdiff - drivers/char/tty_io.c
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
[linux-2.6] / drivers / char / tty_io.c
index 1d298c2cf9301c0a1ac2026577463e6a3a6b1813..e94bee0323148548d9374852e7b140999af40b81 100644 (file)
@@ -78,6 +78,7 @@
 #include <linux/tty_flip.h>
 #include <linux/devpts_fs.h>
 #include <linux/file.h>
+#include <linux/fdtable.h>
 #include <linux/console.h>
 #include <linux/timer.h>
 #include <linux/ctype.h>
@@ -1214,10 +1215,11 @@ int tty_check_change(struct tty_struct *tty)
 
        if (!tty->pgrp) {
                printk(KERN_WARNING "tty_check_change: tty->pgrp == NULL!\n");
-               goto out;
+               goto out_unlock;
        }
        if (task_pgrp(current) == tty->pgrp)
-               goto out;
+               goto out_unlock;
+       spin_unlock_irqrestore(&tty->ctrl_lock, flags);
        if (is_ignored(SIGTTOU))
                goto out;
        if (is_current_pgrp_orphaned()) {
@@ -1228,6 +1230,8 @@ int tty_check_change(struct tty_struct *tty)
        set_thread_flag(TIF_SIGPENDING);
        ret = -ERESTARTSYS;
 out:
+       return ret;
+out_unlock:
        spin_unlock_irqrestore(&tty->ctrl_lock, flags);
        return ret;
 }