From: Grzegorz Nosek <root-AfQBxy1nhrQ00sYp1HPQUA@public.gmane.org>
Cc: containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org,
Sukadev Bhattiprolu
<sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
Alan Cox <alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>,
lxc-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: BUG in tty_open when using containers and ptrace
Date: Sat, 11 Jul 2009 21:30:55 +0200 [thread overview]
Message-ID: <20090711193055.GA11303@megiteam.pl> (raw)
In-Reply-To: <20090708105417.GA16833-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
On Wed, Jul 08, 2009 at 12:54:17PM +0200, Grzegorz Nosek wrote:
> Jul 8 13:53:52 debian kernel: [ 31.429837] BUG: unable to handle kernel paging request at 6b6b6bcf
> Jul 8 13:53:52 debian kernel: [ 31.429837] IP: [<c122c46c>] tty_open+0x11c/0x4b0
With the following (whitespace-damaged etc.) patch applied I can no longer
oops the kernel but there are several issues:
1. A warning occurs (after several dozen start/shutdown cycles):
Warning: dev (pts0) tty->count(2) != #fd's(1) in tty_release_dev
So refcounting is still broken and this patch possibly just papers over
the real bug.
2. There's a memory leak somewhere (don't know if it was there before as
the system hadn't survived long enough to test that) guesstimated at
several KB per container cycle; building with kmemleak to see what
happens.
3. After adding tons of debug statements I saw that the TTY objects
weren't always freed immediately after container shutdown but were
somehow batched (e.g. a single container shut down would cause two or
three previous containers' tty objects to be freed). Increasing the
delay between subsequent cycles from 3 to 10 seconds didn't seem to
affect the batching. On an otherwise unpatched kernel, the crashes
happened right after the 'batched' cleanups.
All feedback really appreciated.
Best regards,
Grzegorz Nosek
diff --git a/drivers/char/pty.c b/drivers/char/pty.c
index daebe1b..0ca0c1c 100644
--- a/drivers/char/pty.c
+++ b/drivers/char/pty.c
@@ -556,12 +556,23 @@ static struct tty_struct *pts_unix98_lookup(struct tty_driver *driver,
return tty;
}
-static void pty_unix98_shutdown(struct tty_struct *tty)
+static void ptm_unix98_shutdown(struct tty_struct *tty)
{
/* We have our own method as we don't use the tty index */
kfree(tty->termios);
}
+static void pts_unix98_shutdown(struct tty_struct *tty)
+{
+ struct inode *ino = (struct inode *)tty->driver_data;
+
+ /* We have our own method as we don't use the tty index */
+ kfree(tty->termios);
+
+ if (ino)
+ ino->i_private = NULL;
+}
+
/* We have no need to install and remove our tty objects as devpts does all
the work for us */
@@ -633,7 +644,7 @@ static const struct tty_operations ptm_unix98_ops = {
.unthrottle = pty_unthrottle,
.set_termios = pty_set_termios,
.ioctl = pty_unix98_ioctl,
- .shutdown = pty_unix98_shutdown,
+ .shutdown = ptm_unix98_shutdown,
.resize = pty_resize
};
@@ -649,7 +660,7 @@ static const struct tty_operations pty_unix98_ops = {
.chars_in_buffer = pty_chars_in_buffer,
.unthrottle = pty_unthrottle,
.set_termios = pty_set_termios,
- .shutdown = pty_unix98_shutdown
+ .shutdown = pts_unix98_shutdown
};
/**
next prev parent reply other threads:[~2009-07-11 19:30 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-12 13:45 BUG in tty_open when using containers and ptrace Môshe van der Sterre
2009-04-13 14:20 ` Serge E. Hallyn
[not found] ` <20090413142038.GB13007-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-04 13:28 ` Grzegorz Nosek
[not found] ` <20090704132851.GA16373-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-04 14:34 ` Grzegorz Nosek
[not found] ` <20090704143412.GA27523-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-05 12:08 ` Grzegorz Nosek
2009-07-07 3:31 ` Sukadev Bhattiprolu
[not found] ` <20090707033135.GA29461-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-07 7:34 ` Grzegorz Nosek
2009-07-08 10:54 ` Grzegorz Nosek
[not found] ` <20090708105417.GA16833-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-11 19:30 ` Grzegorz Nosek [this message]
[not found] ` <20090711193055.GA11303-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-11 20:01 ` Grzegorz Nosek
[not found] ` <20090711200133.GB11303-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-11 22:19 ` Alan Cox
[not found] ` <20090711231935.6ff59796-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2009-07-12 7:49 ` Grzegorz Nosek
[not found] ` <20090712074932.GA17291-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-13 19:02 ` Serge E. Hallyn
[not found] ` <20090713190211.GA4208-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-13 19:30 ` Grzegorz Nosek
[not found] ` <20090713193058.GL18617-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-13 20:26 ` Serge E. Hallyn
[not found] ` <20090713202610.GA6447-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-13 22:34 ` Grzegorz Nosek
[not found] ` <20090713223444.GM18617-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-14 6:49 ` Sukadev Bhattiprolu
[not found] ` <20090714064905.GA25278-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-14 10:31 ` Grzegorz Nosek
[not found] ` <20090714103129.GB12958-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-15 4:47 ` Sukadev Bhattiprolu
[not found] ` <20090715044744.GA25745-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-15 5:42 ` Grzegorz Nosek
2009-07-15 13:19 ` Grzegorz Nosek
[not found] ` <20090715131923.GB21417-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-18 20:52 ` Sukadev Bhattiprolu
[not found] ` <20090718205244.GA23625-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-19 7:15 ` Grzegorz Nosek
[not found] ` <20090719071531.GA20818-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-22 6:41 ` Sukadev Bhattiprolu
[not found] ` <20090722064120.GA24373-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-22 22:25 ` Grzegorz Nosek
[not found] ` <20090722222550.GA633-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-23 1:27 ` Sukadev Bhattiprolu
[not found] ` <20090723012733.GB27764-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-23 1:48 ` H. Peter Anvin
[not found] ` <4A67C187.5000201-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-07-23 7:47 ` Grzegorz Nosek
[not found] ` <20090723074736.GA20236-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-23 8:04 ` [lxc-devel] " Daniel Lezcano
2009-07-23 18:26 ` Grzegorz Nosek
[not found] ` <20090723182620.GA16322-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-23 19:32 ` Sukadev Bhattiprolu
[not found] ` <20090723193245.GA25662-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-23 20:33 ` Grzegorz Nosek
[not found] ` <20090723203329.GC16322-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-23 22:11 ` H. Peter Anvin
[not found] ` <4A68E026.1070608-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org>
2009-07-24 7:31 ` Grzegorz Nosek
[not found] ` <20090724073158.GA2617-yp6mvK3Bdd2rDJvtcaxF/A@public.gmane.org>
2009-07-30 18:06 ` Sukadev Bhattiprolu
[not found] ` <20090730180611.GA20872-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-30 18:44 ` Sukadev Bhattiprolu
2009-07-31 21:58 ` Grzegorz Nosek
2009-08-07 19:08 ` Sukadev Bhattiprolu
2009-07-05 20:00 ` Môshe van der Sterre
2009-07-05 20:35 ` Grzegorz Nosek
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=20090711193055.GA11303@megiteam.pl \
--to=root-afqbxy1nhrq00syp1hpqua@public.gmane.org \
--cc=alan-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org \
--cc=containers-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=lxc-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.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