lkml.org 
[lkml]   [2010]   [Dec]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [043/127] TTY: ldisc, fix open flag handling
On Wed, Dec 08, 2010 at 07:24:46AM +0100, Jiri Slaby wrote:
> On 12/08/2010 01:43 AM, Greg KH wrote:
> > 2.6.32-stable review patch. If anyone has any objections, please let us know.
> >
> > ------------------
> >
> > From: Jiri Slaby <jslaby@suse.cz>
> >
> > 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:
> > [<c1030321>] ? warn_slowpath_common+0x5e/0x8a
> > [<c1030357>] ? warn_slowpath_null+0xa/0xc
> > [<c119311c>] ? tty_ldisc_open+0x26/0x38
> > [<c11936c5>] ? 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 <jslaby@suse.cz>
> > Cc: Alan Cox <alan@linux.intel.com>
> > Reported-by: Sergey Lapin <slapin@ossfans.org>
> > Tested-by: Sergey Lapin <slapin@ossfans.org>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
> >
> > ---
> > drivers/char/tty_ldisc.c | 9 +++++++--
> > 1 file changed, 7 insertions(+), 2 deletions(-)
> >
> > --- a/drivers/char/tty_ldisc.c
> > +++ b/drivers/char/tty_ldisc.c
> > @@ -444,9 +444,14 @@ static void tty_set_termios_ldisc(struct
> >
> > static int tty_ldisc_open(struct tty_struct *tty, struct tty_ldisc *ld)
> > {
> > + int ret;
> > +
> > WARN_ON(test_and_set_bit(TTY_LDISC_OPEN, &tty->flags));
> > - if (ld->ops->open)
> > - return ld->ops->open(tty);
> > + if (ld->ops->open) {
> > + ret = ld->ops->open(tty);
> > + if (ret)
> > + clear_bit(TTY_LDISC_OPEN, &tty->flags);
> > + }
> > return 0;
>
> Whoops, this should write return ret; (with int ret = 0;)
>
> Do you want me to send the patch against rebased on .32?

No, send it based on Linus's tree as it's wrong there, right? Then it
will move through to the stable kernels.

thanks,

greg k-h


\
 
 \ /
  Last update: 2010-12-08 16:07    [W:0.086 / U:9.500 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site