From: Greg Kroah-Hartman Date: Sat, 4 Dec 2010 00:14:55 +0000 (-0800) Subject: .33 stuff X-Git-Tag: v2.6.27.57~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6744737d7d2a14c4f1cab924a67c390f1827036a;p=thirdparty%2Fkernel%2Fstable-queue.git .33 stuff --- diff --git a/queue-2.6.33/series b/queue-2.6.33/series index 4e25c6eab7b..fbbbd0f1f90 100644 --- a/queue-2.6.33/series +++ b/queue-2.6.33/series @@ -132,3 +132,4 @@ md-fix-return-value-of-rdev_size_change.patch tty-prevent-dos-in-the-flush_to_ldisc.patch tty-restore-tty_ldisc_wait_idle.patch tty_ldisc-fix-bug-on-hangup.patch +tty-ldisc-fix-open-flag-handling.patch diff --git a/queue-2.6.33/tty-ldisc-fix-open-flag-handling.patch b/queue-2.6.33/tty-ldisc-fix-open-flag-handling.patch new file mode 100644 index 00000000000..af6acd28ca6 --- /dev/null +++ b/queue-2.6.33/tty-ldisc-fix-open-flag-handling.patch @@ -0,0 +1,48 @@ +From 7f90cfc505d613f4faf096e0d84ffe99208057d9 Mon Sep 17 00:00:00 2001 +From: Jiri Slaby +Date: Thu, 25 Nov 2010 00:27:54 +0100 +Subject: TTY: ldisc, fix open flag handling + +From: Jiri Slaby + +commit 7f90cfc505d613f4faf096e0d84ffe99208057d9 upstream. + +When a concrete ldisc open fails in tty_ldisc_open, we forget to clear +TTY_LDISC_OPEN. This causes a false warning on the next ldisc open: +WARNING: at drivers/char/tty_ldisc.c:445 tty_ldisc_open+0x26/0x38() +Hardware name: System Product Name +Modules linked in: ... +Pid: 5251, comm: a.out Tainted: G W 2.6.32-5-686 #1 +Call Trace: + [] ? warn_slowpath_common+0x5e/0x8a + [] ? warn_slowpath_null+0xa/0xc + [] ? tty_ldisc_open+0x26/0x38 + [] ? tty_set_ldisc+0x218/0x304 +... + +So clear the bit when failing... + +Introduced in c65c9bc3efa (tty: rewrite the ldisc locking) back in +2.6.31-rc1. + +Signed-off-by: Jiri Slaby +Cc: Alan Cox +Reported-by: Sergey Lapin +Tested-by: Sergey Lapin +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/char/tty_ldisc.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/char/tty_ldisc.c ++++ b/drivers/char/tty_ldisc.c +@@ -452,6 +452,8 @@ static int tty_ldisc_open(struct tty_str + /* BKL here locks verus a hangup event */ + lock_kernel(); + ret = ld->ops->open(tty); ++ if (ret) ++ clear_bit(TTY_LDISC_OPEN, &tty->flags); + unlock_kernel(); + return ret; + }