Re: [v3][PATCH 5/5] Merge code for single and multiple-instancemounts

Sukadev Bhattiprolu
2009-05-07T23:18:50Z

Eric Paris [eparis@redhat.com] wrote:
| On Thu, 2009-05-07 at 14:24 -0700, Sukadev Bhattiprolu wrote:
| > Eric Paris [eparis@parisplace.org] wrote:
| > | On Sat, Mar 7, 2009 at 2:12 PM, Sukadev Bhattiprolu
| > | <sukadev@linux.vnet.ibm.com> wrote:
| > | >
| > | > From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
| > | > Subject: [v3][PATCH 5/5] Merge code for single and multiple-instance mounts
| > |
| > | I just tried to load the linux-next kernel on F11 and ran into a
| > | problem. X started, I could log in, I could start programs like
| > | firefox and evolution, but not gnome-terminal. It would just flash
| > | and disappear. Running xterm resulted in a window, that I could type
| > | in, but it wasn't a shell. It didn't do anything.
| > |
| > | I switched to vt2 set the display to my X session and tried to run
| > | xterm. It said something about a permission being denied, so I
| > | decided to strace it. I saw EACCESS returning from calls dealing with
| > | /dev/pts/0. This lead me to git bisect start fs/devpts from the
| > | latest in linux-next as bad and 2.6.29 as good. Couple interations
| > | later and I find that this commit (1bd7903560f1f7) breaks
| > | gnome-terminal xterm!
| >
| > Interesting :-) -EACCESS makes me suspect that maybe 'mode' 'uid' or 'gid'
| > mount options are wrong. Of course we would still need to understand if/
| > why this patch changes the settings.
| >
| > Can you paste the output of following commands: (both in success and failure
| > cases).
| >
| > $ grep devpts /proc/mounts
|
| Success: devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0
| Failure: devpts /dev/pts devpts rw,seclabel,relatime,mode=000,ptmxmode=000 0 0
|
| > $ ls -al /dev/pts
| Success:
| [root@dhcp231-142 ~]# ls -al /dev/pts
| total 0
| drwxr-xr-x. 2 root root 0 2009-05-07 16:04 .
| drwxr-xr-x. 20 root root 5300 2009-05-07 18:13 ..
| crw--w----. 1 paris paris 136, 0 2009-05-07 18:17 0
| crw--w----. 1 paris paris 136, 1 2009-05-07 16:07 1
| crw--w----. 1 paris paris 136, 2 2009-05-07 18:13 2
| crw--w----. 1 paris paris 136, 3 2009-05-07 18:17 3
| c---------. 1 root root 5, 2 2009-05-07 16:04 ptmx
|
| Failure:
| [root@dhcp231-142 ~]# ls -al /dev/pts
| total 0
| drwxr-xr-x. 2 root root 0 2009-05-07 18:22 .
| drwxr-xr-x. 20 root root 5460 2009-05-07 18:28 ..
| c---------. 1 root root 5, 2 2009-05-07 18:22 ptmx
|
| > $ stat /dev/ptmx
|
|
| Failure:
| File: `/dev/ptmx'
| Size: 0 Blocks: 0 IO Block: 4096 character special file
| Device: eh/14d Inode: 704 Links: 1 Device type: 5,2
| Access: (0666/crw-rw-rw-) Uid: ( 0/ root) Gid: ( 5/ tty)
| Access: 2009-05-07 18:23:20.695621624 -0400
| Modify: 2009-05-07 18:22:25.460004885 -0400
| Change: 2009-05-07 18:22:31.911129737 -0400
|
| >
| > Also, is CONFIG_DEVPTS_MULTIPLE_INSTANCES set in your .config ?
|
| CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
|
| > With this patch, does gnome-terminal run when logged in as root ?
|
| gnome-terminal did not, but xterm did appear in my window as root. I
| assumed it was just some gnomism to not let me launch a root
| gnome-terminal inside the user owned X session.
|
|
| I unmounted /dev/pts and remounted it with mode=600 and it works now!
|
| So something about this patch caused it to change from being mounted 600
| to 000.....

Must be the

memset(&opts, 0, sizeof(opts));

in devpts_get_sb() (first statement). It should probably set the options to
default values for cases where 'data' is NULL.

For now, can you try replacing the memset with:

opts->mode = DEVPTS_DEFAULT_MODE;
opts->ptmxmode = DEVPTS_DEFAULT_PTMX_MODE;

Sukadev