Re: [PATCH v4 0/7] mm/mprotect: Fix dax puds

Peter Xu
2024-08-08T14:34:14Z

On Wed, Aug 07, 2024 at 02:44:54PM -0700, Andrew Morton wrote:
> On Wed, 7 Aug 2024 17:34:10 -0400 Peter Xu <peterx@redhat.com> wrote:
>
> > The problem is mprotect() will skip the dax 1G PUD while it shouldn't;
> > meanwhile it'll dump some bad PUD in dmesg. Both of them look like (corner
> > case) bugs to me.. where:
> >
> > - skipping the 1G pud means mprotect() will succeed even if the pud won't
> > be updated with the correct permission specified. Logically that can
> > cause e.g. in mprotect(RO) then write the page can cause data corrupt,
> > as the pud page will still be writable.
> >
> > - the bad pud will generate a pr_err() into dmesg, with no limit so far I
> > can see. So I think it means an userspace can DoS the kernel log if it
> > wants.. simply by creating the PUD and keep mprotect-ing it
> >
>
> I edited this important info into the [0/n] text, thanks.
>
> So current kernels can be made to spew into the kernel logs? That's

I suppose yes to this one.

> considered serious. Can unprivileged userspace code do this?

AFAIU, /dev/dax* require root privilege by default, so looks not. But
anyone more familiar with real life dax usages please correct me otherwise.

Thanks,

--
Peter Xu