Eric Sandeen wrote: > tytso@xxxxxxx wrote: >> Ok, how about this, for even more explicit? >> >> - Ted > > Sure, that looks even better. Who knew args parsing was so hard ;) > > -Eric > >> commit 15121c18a22ae483279f76dc9e554334b800d0f7 >> Author: Eric Sandeen <sandeen@xxxxxxxxxx> >> Date: Mon Feb 15 20:17:55 2010 -0500 >> >> ext4: Fix optional-arg mount options >> >> We have 2 mount options, "barrier" and "auto_da_alloc" which may or >> may not take a 1/0 argument. This causes the ext4 superblock mount >> code to subtract uninitialized pointers and pass the result to >> kmalloc, which results in very noisy failures. >> >> Per Ted's suggestion, initialize the args struct so that >> we know whether match_token() found an argument for the >> option, and skip match_int() if not. >> >> Also, return error (0) from parse_options if we thought >> we found an argument, but match_int() Fails. >> >> Reported-by: Michael S. Tsirkin <mst@xxxxxxxxxx> >> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> >> Signed-off-by: "Theodore Ts'o" <tytso@xxxxxxx> >> >> diff --git a/fs/ext4/super.c b/fs/ext4/super.c >> index 735c20d..68a55df 100644 >> --- a/fs/ext4/super.c >> +++ b/fs/ext4/super.c >> @@ -1229,6 +1229,11 @@ static int parse_options(char *options, struct super_block *sb, >> if (!*p) >> continue; >> >> + /* >> + * Initialize args struct so we know whether arg was >> + * found; some options take optional arguments. >> + */ >> + args[0].to = args[0].from = 0; Unless it's already in, those should probably be "= NULL" since they're pointers. -Eric -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html