On Wed, Jan 15, 2020 at 1:54 PM Vlastimil Babka <vbabka@xxxxxxx> wrote: > > On 1/15/20 6:54 AM, Dan Carpenter wrote: > > What we are trying to do is change the '=' character to a NUL terminator > > and then at the end of the function we restore it back to an '='. The > > problem is there are two error paths where we jump to the end of the > > function before we have replaced the '=' with NUL. We end up putting > > the '=' in the wrong place (possibly one element before the start of > > the buffer). > > Bleh. > > > Reported-by: syzbot+e64a13c5369a194d67df@xxxxxxxxxxxxxxxxxxxxxxxxx > > Fixes: 095f1fc4ebf3 ("mempolicy: rework shmem mpol parsing and display") > > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > Acked-by: Vlastimil Babka <vbabka@xxxxxxx> > > CC stable perhaps? Can this (tmpfs mount options parsing AFAICS?) become > part of unprivileged operation in some scenarios? Yes, tmpfs can be mounted by any user inside of a user namespace. Also I suspect there are cases where an unprivileged attacker can trick some utility to mount tmpfs on their behalf and provide their own mount options. > > --- > > mm/mempolicy.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/mm/mempolicy.c b/mm/mempolicy.c > > index 067cf7d3daf5..1340c5c496b5 100644 > > --- a/mm/mempolicy.c > > +++ b/mm/mempolicy.c > > @@ -2817,6 +2817,9 @@ int mpol_parse_str(char *str, struct mempolicy **mpol) > > char *flags = strchr(str, '='); > > int err = 1, mode; > > > > + if (flags) > > + *flags++ = '\0'; /* terminate mode string */ > > + > > if (nodelist) { > > /* NUL-terminate mode or flags string */ > > *nodelist++ = '\0'; > > @@ -2827,9 +2830,6 @@ int mpol_parse_str(char *str, struct mempolicy **mpol) > > } else > > nodes_clear(nodes); > > > > - if (flags) > > - *flags++ = '\0'; /* terminate mode string */ > > - > > mode = match_string(policy_modes, MPOL_MAX, str); > > if (mode < 0) > > goto out; > > > > -- > You received this message because you are subscribed to the Google Groups "syzkaller-bugs" group. > To unsubscribe from this group and stop receiving emails from it, send an email to syzkaller-bugs+unsubscribe@xxxxxxxxxxxxxxxx. > To view this discussion on the web visit https://groups.google.com/d/msgid/syzkaller-bugs/d31f6069-bda7-2cdb-b770-0c9cddac7537%40suse.cz.