]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/char/selection.c
tty: reorder ldisc locking
[net-next-2.6.git] / drivers / char / selection.c
index 85211a3a581124ec415d599b8317e692d21c8d39..75889cd9375f0c6c3cea1f49bdd39f95770565b0 100644 (file)
@@ -319,8 +319,13 @@ int paste_selection(struct tty_struct *tty)
        poke_blanked_console();
        release_console_sem();
 
-       ld = tty_ldisc_ref_wait(tty);
-       
+       ld = tty_ldisc_ref(tty);
+       if (!ld) {
+               tty_unlock();
+               ld = tty_ldisc_ref_wait(tty);
+               tty_lock();
+       }
+
        add_wait_queue(&vc->paste_wait, &wait);
        while (sel_buffer && sel_buffer_lth > pasted) {
                set_current_state(TASK_INTERRUPTIBLE);