mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Justin He (Arm Technology China)" <Justin.He@arm.com>
To: Andy Shevchenko <andy.shevchenko@gmail.com>
Cc: Petr Mladek <pmladek@suse.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Sergey Senozhatsky <sergey.senozhatsky@gmail.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	"Kees Cook" <keescook@chromium.org>,
	Shuah Khan <shuah@kernel.org>,
	"Tobin C. Harding" <tobin@kernel.org>
Subject: RE: [PATCH 1/2] vsprintf: Prevent crash when dereferencing invalid pointers for %pD
Date: Fri, 9 Aug 2019 10:56:04 +0000	[thread overview]
Message-ID: <DB7PR08MB3082C27A075C410FE339F308F7D60@DB7PR08MB3082.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <CAHp75VcR1rJ5AX_Nj3n2NnMasLRp74Y3R6Mh4XQ5s64aKrF6tw@mail.gmail.com>



> -----Original Message-----
> From: Andy Shevchenko <andy.shevchenko@gmail.com>
> Sent: 2019年8月9日 18:52
> To: Justin He (Arm Technology China) <Justin.He@arm.com>
> Cc: Petr Mladek <pmladek@suse.com>; Andy Shevchenko
> <andriy.shevchenko@linux.intel.com>; Sergey Senozhatsky
> <sergey.senozhatsky@gmail.com>; Geert Uytterhoeven
> <geert+renesas@glider.be>; Linux Kernel Mailing List <linux-
> kernel@vger.kernel.org>; Thomas Gleixner <tglx@linutronix.de>; Steven
> Rostedt (VMware) <rostedt@goodmis.org>; Kees Cook
> <keescook@chromium.org>; Shuah Khan <shuah@kernel.org>; Tobin C.
> Harding <tobin@kernel.org>
> Subject: Re: [PATCH 1/2] vsprintf: Prevent crash when dereferencing invalid
> pointers for %pD
>
> On Fri, Aug 9, 2019 at 4:28 AM Jia He <justin.he@arm.com> wrote:
> >
> > Commit 3e5903eb9cff ("vsprintf: Prevent crash when dereferencing
> invalid
> > pointers") prevents most crash except for %pD.
> > There is an additional pointer dereferencing before dentry_name.
> >
> > At least, vma->file can be NULL and be passed to printk %pD in
> > print_bad_pte, which can cause crash.
> >
> > This patch fixes it with introducing a new file_dentry_name.
> >
>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
>
> Perhaps you need to add a Fixes tag
Thanks, Andy
Fixes: 3e5903eb9cff ("vsprintf: Prevent crash when dereferencing invalid pointers")

Need I reposted v2?


--
Cheers,
Justin (Jia He)


>
> > Signed-off-by: Jia He <justin.he@arm.com>
> > ---
> >  lib/vsprintf.c | 13 ++++++++++---
> >  1 file changed, 10 insertions(+), 3 deletions(-)
> >
> > diff --git a/lib/vsprintf.c b/lib/vsprintf.c
> > index 63937044c57d..b4a119176fdb 100644
> > --- a/lib/vsprintf.c
> > +++ b/lib/vsprintf.c
> > @@ -869,6 +869,15 @@ char *dentry_name(char *buf, char *end, const
> struct dentry *d, struct printf_sp
> >         return widen_string(buf, n, end, spec);
> >  }
> >
> > +static noinline_for_stack
> > +char *file_dentry_name(char *buf, char *end, const struct file *f,
> > +                       struct printf_spec spec, const char *fmt)
> > +{
> > +       if (check_pointer(&buf, end, f, spec))
> > +               return buf;
> > +
> > +       return dentry_name(buf, end, f->f_path.dentry, spec, fmt);
> > +}
> >  #ifdef CONFIG_BLOCK
> >  static noinline_for_stack
> >  char *bdev_name(char *buf, char *end, struct block_device *bdev,
> > @@ -2166,9 +2175,7 @@ char *pointer(const char *fmt, char *buf, char
> *end, void *ptr,
> >         case 'C':
> >                 return clock(buf, end, ptr, spec, fmt);
> >         case 'D':
> > -               return dentry_name(buf, end,
> > -                                  ((const struct file *)ptr)->f_path.dentry,
> > -                                  spec, fmt);
> > +               return file_dentry_name(buf, end, ptr, spec, fmt);
> >  #ifdef CONFIG_BLOCK
> >         case 'g':
> >                 return bdev_name(buf, end, ptr, spec, fmt);
> > --
> > 2.17.1
> >
>
>
> --
> With Best Regards,
> Andy Shevchenko
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

  reply	other threads:[~2019-08-09 10:56 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-09  1:24 Jia He
2019-08-09  1:24 ` [PATCH 2/2] lib/test_printf: add test of null/invalid pointer dereference for dentry Jia He
2019-08-09 10:51   ` Andy Shevchenko
2019-08-16  8:26   ` Petr Mladek
2019-08-16  8:31     ` Justin He (Arm Technology China)
2019-08-09 10:51 ` [PATCH 1/2] vsprintf: Prevent crash when dereferencing invalid pointers for %pD Andy Shevchenko
2019-08-09 10:56   ` Justin He (Arm Technology China) [this message]
2019-08-16  8:20     ` Petr Mladek
2019-08-15  7:52 ` Sergey Senozhatsky

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=DB7PR08MB3082C27A075C410FE339F308F7D60@DB7PR08MB3082.eurprd08.prod.outlook.com \
    --to=justin.he@arm.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=andy.shevchenko@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmladek@suse.com \
    --cc=rostedt@goodmis.org \
    --cc=sergey.senozhatsky@gmail.com \
    --cc=shuah@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tobin@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®