All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
To: Marc Dionne <marc.c.dionne@gmail.com>
Cc: Eric Paris <eparis@redhat.com>,
	Eric Paris <eparis@parisplace.org>,
	Christoph Hellwig <hch@lst.de>, Andrew Morton <akpm@osdl.org>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	serue@us.ibm.com, hpa@zytor.com, sukadev@us.ibm.com,
	linux-kernel@vger.kernel.org, jbacik@redhat.com
Subject: Re: [v3][PATCH 5/5] Merge code for single andmultiple-instancemounts
Date: Mon, 11 May 2009 15:15:02 -0700	[thread overview]
Message-ID: <20090511221502.GA32530@linux.vnet.ibm.com> (raw)
In-Reply-To: <4A04F5D7.2050909@gmail.com>

Marc Dionne [marc.c.dionne@gmail.com] wrote:
> On 05/07/2009 07:21 PM, Sukadev Bhattiprolu wrote:
>> Er. I meant add following lines after the memset().
>>
>> |         opts->mode    = DEVPTS_DEFAULT_MODE;
>> |         opts->ptmxmode = DEVPTS_DEFAULT_PTMX_MODE;
>
> Adding those two lines (with . instead of ->) does fix the issue for me, 
> thanks.
>
> | > Of course we would still need to understand if/
> | > why this patch changes the settings.
>
> That particular patch changed things because the original memcpy in 
> new_pts_mount() did this:
>
> memcpy(&fsi->mount_opts, opts, sizeof(opts));
>
> where opts was a pointer, not a structure.  So only the first few bytes of 
> the blank opts actually got copied over.  The patch moved this memcpy to 
> devpts_get_sb() and in the process fixed the sizeof error.

Here is a cleaner fix - When user space (/etc/rc.sysinit on RHEL5) mounts
devpts, this problem might be masked since the mount system call could pass
a non-NULL 'data' parmeter to devpts_get_sb().

I tested this patch by directly calling the system call mount() with a NULL
data parameter. If you/Eric/Peter can confirm that this works for you, I will
send this patch to Andrew.

Thanks,
---
>From 2f7746f4df78ff57125c4714f0cd64e739ccf804 Mon Sep 17 00:00:00 2001
From: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Date: Mon, 11 May 2009 13:11:11 -0700
Subject: [PATCH] devpts: Correctly set default options

devpts_get_sb() calls memset(0) to clear mount options and calls
parse_mount_options() if user specified any mount options. The memset(0) is
bogus since the 'mode' and 'ptmxmode' options are non-zero by default.
parse_mount_options() restores options to default anyway and can properly deal
with NULL mount options.

So in devpts_get_sb() remove memset(0) and call parse_mount_options() even for
NULL mount options.

Bug reported by Eric Paris: http://lkml.org/lkml/2009/5/7/448.

Signed-off-by: Sukadev Bhattiprolu (sukadev@us.ibm.com)
---
 fs/devpts/inode.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 63a4a59..b7a954e 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -90,6 +90,15 @@ static inline struct super_block *pts_sb_from_inode(struct inode *inode)
 #define PARSE_MOUNT	0
 #define PARSE_REMOUNT	1
 
+/*
+ * parse_mount_options():
+ * 	Set @opts to mount options specified in @data. If an option is not
+ * 	specified in @data, set it to its default value. The exception is
+ * 	'newinstance' option which can only be set/cleared on a mount (i.e.
+ * 	cannot be changed during remount).
+ *
+ * Note: @data may be NULL (in which case all options are set to default).
+ */
 static int parse_mount_options(char *data, int op, struct pts_mount_opts *opts)
 {
 	char *p;
@@ -355,12 +364,9 @@ static int devpts_get_sb(struct file_system_type *fs_type,
 	struct pts_mount_opts opts;
 	struct super_block *s;
 
-	memset(&opts, 0, sizeof(opts));
-	if (data) {
-		error = parse_mount_options(data, PARSE_MOUNT, &opts);
-		if (error)
-			return error;
-	}
+	error = parse_mount_options(data, PARSE_MOUNT, &opts);
+	if (error)
+		return error;
 
 	if (opts.newinstance)
 		s = sget(fs_type, NULL, set_anon_super, NULL);

  reply	other threads:[~2009-05-11 22:15 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-07 18:08 [PATCH 0/5][v2] Simplify devpts code Sukadev Bhattiprolu
2009-03-07 18:10 ` Sukadev Bhattiprolu
2009-03-07 18:17   ` Sukadev Bhattiprolu
2009-03-07 18:11 ` [v3][PATCH 2/5] Parse mount options just once and copy them to super block Sukadev Bhattiprolu
2009-03-07 18:11 ` [v3][PATCH 3/5] Move common mknod_ptmx() calls into caller Sukadev Bhattiprolu
2009-03-07 18:12 ` [v3][PATCH 4/5] Remove get_init_pts_sb() Sukadev Bhattiprolu
2009-03-07 18:12 ` [v3][PATCH 5/5] Merge code for single and multiple-instance mounts Sukadev Bhattiprolu
2009-05-07 20:35   ` Eric Paris
2009-05-07 21:24     ` Sukadev Bhattiprolu
2009-05-07 22:33       ` Eric Paris
2009-05-07 23:18         ` [v3][PATCH 5/5] Merge code for single and multiple-instancemounts Sukadev Bhattiprolu
2009-05-07 23:21           ` [v3][PATCH 5/5] Merge code for single andmultiple-instancemounts Sukadev Bhattiprolu
2009-05-08 13:53             ` Peter Staubach
2009-05-09  3:17             ` Marc Dionne
2009-05-11 22:15               ` Sukadev Bhattiprolu [this message]
2009-05-11 22:19                 ` H. Peter Anvin
2009-05-11 22:37                 ` [v3][PATCH 5/5] Merge code for singleandmultiple-instancemounts Serge E. Hallyn
2009-05-11 22:46                   ` H. Peter Anvin
2009-05-11 22:40                 ` [v3][PATCH 5/5] Merge code for single andmultiple-instancemounts Andrew Morton
2009-05-11 23:09                   ` Eric Paris
2009-05-11 23:00                 ` Marc Dionne
2009-03-07 18:14 ` [v3][PATCH 2/5] Parse mount options just once and copy them to super block Sukadev Bhattiprolu
2009-03-07 18:16 ` [v3][PATCH 1/5] Unroll essentials of do_remount_sb() into devpts Sukadev Bhattiprolu

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=20090511221502.GA32530@linux.vnet.ibm.com \
    --to=sukadev@linux.vnet.ibm.com \
    --cc=akpm@osdl.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=eparis@parisplace.org \
    --cc=eparis@redhat.com \
    --cc=hch@lst.de \
    --cc=hpa@zytor.com \
    --cc=jbacik@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marc.c.dionne@gmail.com \
    --cc=serue@us.ibm.com \
    --cc=sukadev@us.ibm.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.