Regression in 2.6.30 - /dev/pts - mount options - bisected

From: Marc Dionne
Date: Fri May 08 2009 - 17:54:46 EST


I ran into a regression from 2.6.29 to 2.6.30 on a newly installed
fedora 11 machine. The symptom is that things that require /dev/pts
(gnome-terminal, konsole, xterm, etc.) don't work for a regular user,
but run fine as root. Everything is fine with the fedora 2.6.29
kernel or with a self-compiled 2.6.29, but fail with a recent
2.6.30-rc.

Bisection pinpoints this commit:
http://git.kernel.org/linus/1bd7903560f1f713e85188a5aaf4d2428b6c8b50
as the culprit, although I think that's a bit misleading.

The commit moves code around, and along the way replaces this:

memcpy(&fsi->mount_opts, opts, sizeof(opts))

in one function where opts is a (struct pts_mount_opts *) - 8 bytes,
clearly an error, with

memcpy(&(DEVPTS_SB(s))->mount_opts, &opts, sizeof(opts));

in a different function where opts is an actual structure (24 bytes),
which looks like what was intended. So fixing the copy of the mount
options triggers the problem, and the real cause is probably
neighbouring commits in the same patch set. I confirmed that using
sizeof(&opts) in the above memcpy makes the problem go away (but is
obviously not a solution).

Note that I have CONFIG_DEVPTS_MULTIPLE_INSTANCES=y. It may be that
user space is doing something unusual, but it passes the test of
"works with 2.6.29, fails with 2.6.30".

I wasn't able to reproduce on an other system with a similar configuration.

Marc
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/