Lee Schermerhorn b4c07bce79 hugetlbfs: handle empty options string
I was seeing a null pointer deref in fs/super.c:vfs_kern_mount().
Some file system get_sb() handler was returning NULL mnt_sb with
a non-negative return value.  I also noticed a "hugetlbfs: Bad
mount option:" message in the log.

Turns out that hugetlbfs_parse_options() was not checking for an
empty option string after call to strsep().  On failure,
hugetlbfs_parse_options() returns 1.  hugetlbfs_fill_super() just
passed this return code back up the call stack where
vfs_kern_mount() missed the error and proceeded with a NULL mnt_sb.

Apparently introduced by patch:
	hugetlbfs-use-lib-parser-fix-docs.patch

The problem was exposed by this line in my fstab:

none        /huge       hugetlbfs   defaults    0 0

It can also be demonstrated by invoking mount of hugetlbfs
directly with no options or a bogus option.

This patch:

1) adds the check for empty option to hugetlbfs_parse_options(),
2) enhances the error message to bracket any unrecognized
   option with quotes ,
3) modifies hugetlbfs_parse_options() to return -EINVAL on any
   unrecognized option,
4) adds a BUG_ON() to vfs_kern_mount() to catch any get_sb()
   handler that returns a NULL mnt->mnt_sb with a return value
   >= 0.

Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com>
Acked-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-16 09:05:46 -07:00
..
2007-07-14 15:14:14 -05:00
2007-07-16 09:05:43 -07:00
2007-05-17 05:23:04 -07:00
2007-05-21 09:18:19 -07:00
2007-05-08 11:14:59 -07:00
2007-07-09 08:24:13 +01:00
2007-05-17 05:23:04 -07:00
2007-07-16 09:05:42 -07:00
2007-07-16 09:05:41 -07:00
2007-07-16 09:05:45 -07:00
2007-07-16 09:05:43 -07:00
2007-07-16 09:05:34 -07:00
2007-05-17 05:23:04 -07:00
2007-05-17 05:23:04 -07:00
2007-07-16 09:05:42 -07:00
2007-05-21 09:18:19 -07:00
2007-07-10 08:03:34 +02:00
2007-07-16 09:05:45 -07:00
2007-05-18 13:09:34 -07:00
2007-05-15 08:54:00 -07:00
2007-05-23 20:14:13 -07:00
2007-05-21 09:18:19 -07:00
2007-05-08 11:15:01 -07:00
2007-05-17 05:23:04 -07:00
2007-05-08 11:15:09 -07:00
2007-06-04 13:25:10 -07:00
2007-05-09 06:44:57 +02:00
2007-05-17 05:23:04 -07:00
2007-05-11 08:29:36 -07:00
2007-07-16 09:05:45 -07:00
2007-07-10 08:04:16 +02:00
2007-07-10 08:04:15 +02:00
2007-05-09 07:10:02 +02:00
2007-07-16 09:05:46 -07:00
2007-05-18 13:09:34 -07:00