mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Gene Heskett <gene.heskett@verizon.net>,
	OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>,
	"Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>,
	"Rafael J. Wysocki" <rjw@sisk.pl>, Ray Lee <ray-lk@madrabbit.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alan Stern <stern@rowland.harvard.edu>
Subject: Re: [PATCH] kdesu broken
Date: Wed, 29 Jul 2009 12:07:04 +0100	[thread overview]
Message-ID: <20090729120704.3299ff2e@lxorguk.ukuu.org.uk> (raw)
In-Reply-To: <alpine.LFD.2.01.0907282146580.3161@localhost.localdomain>

On Tue, 28 Jul 2009 21:49:05 -0700 (PDT)
Linus Torvalds <torvalds@linux-foundation.org> wrote:

> 
> 
> On Tue, 28 Jul 2009, Gene Heskett wrote:
> > 
> > It doesn't seem to do anything for bz 13841 here.  Sorry, I wish it did.
> 
> No, bz 13841 isn't about pty's, it's about usb serial. The patches in this 
> thread would mainly be pty-related, and would affect other tty drivers 
> (like your usb one) only purely by chance.
> 
> could you bisect the 13841 behavior?

See the thread in 13821 on linux-usb list which extends from the "why do
we leak ttyUSB numbers" into this as well. Its been pinned down and the in
tree fix is confirmed to do the job for that case. Not perfectly because
it needs a further small fix as

a) it should call drv->close() within the mutex on the error path if the
tty_block_til_ready() fails without which you get a leak on a few drivers
but nothing too harmful. (Noted by Alan Stern inspecting the patch)

b) it fails the 'variable frequency generator on carrier pin' test - but
that isn't a regression as such as all 2.6 kernels I've tried crash
during that test with USB.  (Running my 'extreme violence' test setup)

I suspect that doing

        retval = tty_port_block_til_ready(&port->port, tty, filp);
        if (retval == 0) {
                if (!first)
                        usb_serial_put(serial);
                return 0;
        }
        mutex_lock(&port->mutex);


	if (tty_hung_up_p(filp)) {
		mutex_unlock(&port->mutex);
		return retval;
	}
	dev->close(port);

	...

fixes both. The race basically is

		open
		drop mutex so we can wait for the port
		wait for the port
						[hangup]
						[serial_do_down]
		block_til_ready reports an error
		take mutex
			duplicate serial_do_down


Most serial drivers don't try and do open clean up in open() instead they
do it in close() which is called by the tty layer on an open failure
(always has been) and which turns out to be a useful design
decision as it means the driver doesn't have to tie itself in knots and
tty_port_close_start() handles all the mechanics. Plus they use
ASYNC_INITIALIZED as flag to avoid double shutdowns on a device.

Simply deleting most of the clean up from serial_open and letting close()
do its job would I think clean that up no end but not in an -rc perhaps.



  parent reply	other threads:[~2009-07-29 11:07 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-23 23:45 [Regression] " Rafael J. Wysocki
2009-07-24  0:21 ` Ray Lee
2009-07-24 15:21   ` Rafael J. Wysocki
2009-07-24 15:40     ` Alan Cox
2009-07-24 16:34       ` Linus Torvalds
2009-07-25  6:04         ` OGAWA Hirofumi
2009-07-25 13:31           ` Alan Cox
2009-07-25 14:05           ` Alan Cox
2009-07-25 14:55             ` OGAWA Hirofumi
2009-07-25 15:32               ` Alan Cox
2009-07-26 11:51                 ` OGAWA Hirofumi
2009-07-27 10:57                   ` Alan Cox
2009-07-27 12:07                     ` OGAWA Hirofumi
2009-07-27 12:46                       ` OGAWA Hirofumi
2009-07-27 13:23                       ` [PATCH] " Alan Cox
2009-07-27 13:50                         ` OGAWA Hirofumi
2009-07-27 13:58                           ` Alan Cox
2009-07-27 15:04                             ` OGAWA Hirofumi
2009-07-27 16:14                               ` Aneesh Kumar K.V
2009-07-27 16:42                                 ` Alan Cox
2009-07-27 17:12                                   ` Aneesh Kumar K.V
2009-07-27 19:28                                     ` OGAWA Hirofumi
2009-07-27 19:40                                       ` Linus Torvalds
2009-07-27 20:38                                         ` OGAWA Hirofumi
2009-07-27 20:45                                           ` Linus Torvalds
2009-07-27 21:42                                           ` Alan Cox
2009-07-27 22:04                                             ` Linus Torvalds
2009-07-27 22:41                                               ` Alan Cox
2009-07-27 20:52                                         ` Alan Cox
2009-07-27 21:22                                           ` Linus Torvalds
2009-07-27 21:54                                             ` Alan Cox
2009-07-27 21:20                                       ` Alan Cox
2009-07-28  5:33                                         ` OGAWA Hirofumi
2009-07-28 10:22                                           ` Alan Cox
2009-07-28 10:42                                             ` OGAWA Hirofumi
2009-07-28 15:49                                             ` Linus Torvalds
2009-07-28 16:42                                               ` Alan Cox
2009-07-28 16:49                                                 ` Linus Torvalds
2009-07-28 16:52                                                   ` Linus Torvalds
2009-07-28 17:09                                                     ` Alan Cox
2009-07-28 18:45                                                       ` Linus Torvalds
2009-07-28 17:06                                                   ` Alan Cox
2009-07-28 18:44                                                     ` Linus Torvalds
2009-07-28 18:56                                                       ` Alan Cox
2009-07-28 19:08                                                         ` Linus Torvalds
2009-07-28 19:15                                                           ` Alan Cox
2009-07-28 19:56                                                             ` Greg KH
2009-07-28 20:47                                                               ` Theodore Tso
2009-07-28 21:01                                                                 ` Greg KH
2009-07-28 22:02                                                                   ` Theodore Tso
2009-07-28 23:49                                                                     ` Alan Cox
2009-07-29  0:12                                                                       ` Greg KH
2009-07-30 23:16                                                                       ` Alan Cox
2009-07-30 23:24                                                                         ` Greg KH
2009-07-31 13:49                                                                       ` Alan Cox
2009-07-31 14:17                                                                         ` Greg KH
2009-07-28 23:46                                                           ` Alan Cox
2009-07-29  0:10                                                             ` Linus Torvalds
2009-07-29  0:26                                                               ` Linus Torvalds
2009-07-29  7:01                                                                 ` Aneesh Kumar K.V
2009-07-29  0:34                                                               ` Alan Cox
2009-07-29  1:04                                                                 ` Linus Torvalds
2009-07-29  1:23                                                                   ` Linus Torvalds
2009-07-29 11:17                                                                     ` Alan Cox
2009-07-29  8:59                                                                   ` Alan Cox
2009-07-29 15:48                                                                     ` Linus Torvalds
2009-07-29 15:55                                                                       ` Alan Cox
2009-07-29 16:05                                                                         ` Linus Torvalds
2009-07-29 16:39                                                                           ` Alan Cox
2009-07-29 19:07                                                                             ` Linus Torvalds
2009-07-29  2:50                                                               ` Gene Heskett
2009-07-29  4:49                                                                 ` Linus Torvalds
2009-07-29  4:54                                                                   ` Linus Torvalds
2009-07-29  5:04                                                                     ` Gene Heskett
2009-07-29  5:00                                                                   ` Gene Heskett
2009-07-29  5:08                                                                     ` Andrew Morton
2009-07-29  7:46                                                                       ` Gene Heskett
2009-07-29 11:07                                                                   ` Alan Cox [this message]
2009-07-29 17:40                                                                     ` Gene Heskett
2009-07-29 18:28                                                                       ` Frans Pop
2009-07-29 18:43                                                                         ` Gene Heskett
2009-07-29 19:08                                                                           ` Frans Pop
2009-07-29 19:19                                                                             ` Gene Heskett
2009-07-30 12:43                                                                               ` Valdis.Kletnieks
2009-07-30 15:35                                                                                 ` Gene Heskett
2009-07-30 18:39                                                                                   ` Valdis.Kletnieks
2009-07-31  2:01                                                                                   ` H. Peter Anvin
2009-07-28 15:48                                           ` Linus Torvalds
2009-07-28 16:16                                             ` OGAWA Hirofumi
2009-07-27 18:28                                 ` Andreas Schwab
2009-07-27 13:58                         ` Aneesh Kumar K.V
2009-07-25 20:12             ` [Regression] " Rafael J. Wysocki
2009-07-26 17:41             ` Aneesh Kumar K.V
2009-07-29  2:20             ` Gene Heskett
2009-07-25 11:48         ` Alan Cox
2009-07-25 14:02           ` Frans Pop
2009-07-25 20:16             ` Rafael J. Wysocki
2009-07-25 21:03               ` Alan Cox
2009-07-26 15:51             ` Sergey Senozhatsky
2009-07-24 18:25   ` Aneesh Kumar K.V
2009-07-25 12:07     ` Alan Cox
2009-07-25 16:18       ` Aneesh Kumar K.V
2009-07-25 17:06         ` Aneesh Kumar K.V
2009-07-29 19:09     ` [Regression] kdesu broken, now usb fixed in current git pull Gene Heskett

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090729120704.3299ff2e@lxorguk.ukuu.org.uk \
    --to=alan@lxorguk.ukuu.org.uk \
    --cc=akpm@linux-foundation.org \
    --cc=aneesh.kumar@linux.vnet.ibm.com \
    --cc=gene.heskett@verizon.net \
    --cc=hirofumi@mail.parknet.co.jp \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ray-lk@madrabbit.org \
    --cc=rjw@sisk.pl \
    --cc=stern@rowland.harvard.edu \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®