* [PATCH] usb: gadget: FunctionFS: Fix missing braces in parse_opts @ 2013-01-09 3:57 Benoit Goby 2013-01-09 8:08 ` Michal Nazarewicz 2013-01-09 9:17 ` [PATCH 1/2] usb: gadget: FunctionFS: Use kstrtoul() Michal Nazarewicz 0 siblings, 2 replies; 4+ messages in thread From: Benoit Goby @ 2013-01-09 3:57 UTC (permalink / raw) To: linux-usb, linux-kernel; +Cc: Felipe Balbi, Greg Kroah-Hartman, Benoit Goby Add missing braces around an if block in ffs_fs_parse_opts. This broke parsing the uid/gid mount options and causes mount to fail when using uid/gid. This has been introduced by commit b9b73f7c (userns: Convert usb functionfs to use kuid/kgid where appropriate) in 3.7. Signed-off-by: Benoit Goby <benoit@android.com> --- drivers/usb/gadget/f_fs.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 4a6961c..8c2f251 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c @@ -1153,15 +1153,15 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts) pr_err("%s: unmapped value: %lu\n", opts, value); return -EINVAL; } - } - else if (!memcmp(opts, "gid", 3)) + } else if (!memcmp(opts, "gid", 3)) { data->perms.gid = make_kgid(current_user_ns(), value); if (!gid_valid(data->perms.gid)) { pr_err("%s: unmapped value: %lu\n", opts, value); return -EINVAL; } - else + } else { goto invalid; + } break; default: -- 1.7.7.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] usb: gadget: FunctionFS: Fix missing braces in parse_opts 2013-01-09 3:57 [PATCH] usb: gadget: FunctionFS: Fix missing braces in parse_opts Benoit Goby @ 2013-01-09 8:08 ` Michal Nazarewicz 2013-01-09 9:17 ` [PATCH 1/2] usb: gadget: FunctionFS: Use kstrtoul() Michal Nazarewicz 1 sibling, 0 replies; 4+ messages in thread From: Michal Nazarewicz @ 2013-01-09 8:08 UTC (permalink / raw) To: Benoit Goby, linux-usb, linux-kernel Cc: Felipe Balbi, Greg Kroah-Hartman, Benoit Goby [-- Attachment #1: Type: text/plain, Size: 1603 bytes --] On Wed, Jan 09 2013, Benoit Goby <benoit@android.com> wrote: > Add missing braces around an if block in ffs_fs_parse_opts. This broke > parsing the uid/gid mount options and causes mount to fail when using > uid/gid. This has been introduced by commit b9b73f7c (userns: Convert usb > functionfs to use kuid/kgid where appropriate) in 3.7. > > Signed-off-by: Benoit Goby <benoit@android.com> Acked-by: Michal Nazarewicz <mina86@mina86.com> Cc: stable@kernel.org > --- > drivers/usb/gadget/f_fs.c | 6 +++--- > 1 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c > index 4a6961c..8c2f251 100644 > --- a/drivers/usb/gadget/f_fs.c > +++ b/drivers/usb/gadget/f_fs.c > @@ -1153,15 +1153,15 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts) > pr_err("%s: unmapped value: %lu\n", opts, value); > return -EINVAL; > } > - } > - else if (!memcmp(opts, "gid", 3)) > + } else if (!memcmp(opts, "gid", 3)) { > data->perms.gid = make_kgid(current_user_ns(), value); > if (!gid_valid(data->perms.gid)) { > pr_err("%s: unmapped value: %lu\n", opts, value); > return -EINVAL; > } > - else > + } else { > goto invalid; > + } > break; > > default: -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michał “mina86” Nazarewicz (o o) ooo +----<email/xmpp: mpn@google.com>--------------ooO--(_)--Ooo-- [-- Attachment #2.1: Type: text/plain, Size: 0 bytes --] [-- Attachment #2.2: Type: application/pgp-signature, Size: 835 bytes --] ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/2] usb: gadget: FunctionFS: Use kstrtoul() 2013-01-09 3:57 [PATCH] usb: gadget: FunctionFS: Fix missing braces in parse_opts Benoit Goby 2013-01-09 8:08 ` Michal Nazarewicz @ 2013-01-09 9:17 ` Michal Nazarewicz 2013-01-09 9:17 ` [PATCH 2/2] usb: gadget: FunctionFS: Refactor option parsing Michal Nazarewicz 1 sibling, 1 reply; 4+ messages in thread From: Michal Nazarewicz @ 2013-01-09 9:17 UTC (permalink / raw) To: Felipe Balbi, linux-usb; +Cc: Greg Kroah-Hartman, Benoit Goby, linux-kernel From: Michal Nazarewicz <mina86@mina86.com> kstrtoul() checks for overflow which simple_strtoul() does not pluss it has “*end == 0” check in it as well. As a side effect, a new line character is now accepted, but this should not be an issue. Signed-off-by: Michal Nazarewicz <mina86@mina86.com> --- Patch on top of v3.5 with Benoit Goby's “Fix missing braces in parse_opts” patch (<id:1357703829-26621-1-git-send-email-benoit@android.com>) applied. drivers/usb/gadget/f_fs.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 8c2f251..38388d7 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c @@ -1103,8 +1103,8 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts) return 0; for (;;) { - char *end, *eq, *comma; unsigned long value; + char *eq, *comma; /* Option limit */ comma = strchr(opts, ','); @@ -1120,8 +1120,7 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts) *eq = 0; /* Parse value */ - value = simple_strtoul(eq + 1, &end, 0); - if (unlikely(*end != ',' && *end != 0)) { + if (kstrtoul(eq + 1, 0, &value)) { pr_err("%s: invalid value: %s\n", opts, eq + 1); return -EINVAL; } -- 1.7.7.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] usb: gadget: FunctionFS: Refactor option parsing 2013-01-09 9:17 ` [PATCH 1/2] usb: gadget: FunctionFS: Use kstrtoul() Michal Nazarewicz @ 2013-01-09 9:17 ` Michal Nazarewicz 0 siblings, 0 replies; 4+ messages in thread From: Michal Nazarewicz @ 2013-01-09 9:17 UTC (permalink / raw) To: Felipe Balbi, linux-usb; +Cc: Greg Kroah-Hartman, Benoit Goby, linux-kernel From: Michal Nazarewicz <mina86@mina86.com> The use of memcmp() is clever and all and maybe even it makes parsing a bit faster (since only options with given length need to be checked) but option parsing is hardly a critical path and the additional code complexity is not worth it. Signed-off-by: Michal Nazarewicz <mina86@mina86.com> --- drivers/usb/gadget/f_fs.c | 55 ++++++++++++++------------------------------ 1 files changed, 18 insertions(+), 37 deletions(-) diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 38388d7..6a7e187 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c @@ -1126,45 +1126,26 @@ static int ffs_fs_parse_opts(struct ffs_sb_fill_data *data, char *opts) } /* Interpret option */ - switch (eq - opts) { - case 5: - if (!memcmp(opts, "rmode", 5)) - data->root_mode = (value & 0555) | S_IFDIR; - else if (!memcmp(opts, "fmode", 5)) - data->perms.mode = (value & 0666) | S_IFREG; - else - goto invalid; - break; - - case 4: - if (!memcmp(opts, "mode", 4)) { - data->root_mode = (value & 0555) | S_IFDIR; - data->perms.mode = (value & 0666) | S_IFREG; - } else { - goto invalid; + if (!strcmp(opts, "rmode")) { + data->root_mode = (value & 0555) | S_IFDIR; + } else if (!strcmp(opts, "fmode")) { + data->perms.mode = (value & 0666) | S_IFREG; + } else if (!strcmp(opts, "mode")) { + data->root_mode = (value & 0555) | S_IFDIR; + data->perms.mode = (value & 0666) | S_IFREG; + } else if (!strcmp(opts, "uid")) { + data->perms.uid = make_kuid(current_user_ns(), value); + if (!uid_valid(data->perms.uid)) { + pr_err("%s: unmapped value: %lu\n", opts, value); + return -EINVAL; } - break; - - case 3: - if (!memcmp(opts, "uid", 3)) { - data->perms.uid = make_kuid(current_user_ns(), value); - if (!uid_valid(data->perms.uid)) { - pr_err("%s: unmapped value: %lu\n", opts, value); - return -EINVAL; - } - } else if (!memcmp(opts, "gid", 3)) { - data->perms.gid = make_kgid(current_user_ns(), value); - if (!gid_valid(data->perms.gid)) { - pr_err("%s: unmapped value: %lu\n", opts, value); - return -EINVAL; - } - } else { - goto invalid; + } else if (!strcmp(opts, "gid")) { + data->perms.gid = make_kgid(current_user_ns(), value); + if (!gid_valid(data->perms.gid)) { + pr_err("%s: unmapped value: %lu\n", opts, value); + return -EINVAL; } - break; - - default: -invalid: + } else { pr_err("%s: invalid option\n", opts); return -EINVAL; } -- 1.7.7.3 ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-01-09 9:18 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-01-09 3:57 [PATCH] usb: gadget: FunctionFS: Fix missing braces in parse_opts Benoit Goby 2013-01-09 8:08 ` Michal Nazarewicz 2013-01-09 9:17 ` [PATCH 1/2] usb: gadget: FunctionFS: Use kstrtoul() Michal Nazarewicz 2013-01-09 9:17 ` [PATCH 2/2] usb: gadget: FunctionFS: Refactor option parsing Michal Nazarewicz
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.