From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: 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>
Subject: Re: [PATCH] kdesu broken
Date: Wed, 29 Jul 2009 01:34:42 +0100 [thread overview]
Message-ID: <20090729013442.493effa6@lxorguk.ukuu.org.uk> (raw)
In-Reply-To: <alpine.LFD.2.01.0907281651160.3186@localhost.localdomain>
> Ok. So the end result is that Ogawa-san's fix is the right one. Then we
> can revert the low_latency=1 thing for pty's entirely. No?
No
> So does this work for everyone? I haven't tested it yet myself, but this
> is the patch that "looks" right.
Looks pretty but breaks hangup events and hotplug.
The rules for hangup and thus hot unplug etc are
- The driver ensures that it will not call
tty_flip_buffer_push/flush_to_ldisc again for this port until re-opened
- The driver calls tty_hangup
- tty_hangup ensures that tty_flip_buffer_push cannot occur again
(by killing the workqueue)
- resources may well then get freed before close()
The same rules apply for an ldisc change via TIOCSETD
Ogawa's patch violates this by calling tty_flush_to_ldisc. If that
bridges a hangup then it will call into the ldisc for the dead port and
that in turn will call the write method of the driver which will in some
cases jump to free memory.
To make that work (and I agree its a very sane looking expression of the
intent) you would need to ensure that your new tty_flush_to_ldisc routine
was interlocked against already being hung up, tty_hangup and against an
ldisc change. I think (haven't verified) you get ldisc_change for free as
you are in the ldisc code so the ldisc ref is held and a set_ldisc will
block.
The hangup is tty_io:do_tty_hangup which calls tty_ldisc:
tty_ldisc_hangup which calls ld->ops->hangup which n_tty doesn't
currently have but which it could grow and which may block.
So my guess is you need to make your new flush to ldisc routine
interlock versus do_tty_hangup
check if the TTY_HUPPED flag is clear
only if so and do_tty_hangup cannot be running actually run the
ldisc code
the hangup code is still evil lock_kernel (and in parts "prayer_lock()"
code)
next prev parent reply other threads:[~2009-07-29 0:34 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 [this message]
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
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=20090729013442.493effa6@lxorguk.ukuu.org.uk \
--to=alan@lxorguk.ukuu.org.uk \
--cc=akpm@linux-foundation.org \
--cc=aneesh.kumar@linux.vnet.ibm.com \
--cc=hirofumi@mail.parknet.co.jp \
--cc=linux-kernel@vger.kernel.org \
--cc=ray-lk@madrabbit.org \
--cc=rjw@sisk.pl \
--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®