Re: [PATCH] fs: buffer: check huge page size instead of single page for invalidatepage

From: Matthew Wilcox
Date: Sun Sep 19 2021 - 10:41:27 EST


On Fri, Sep 17, 2021 at 05:07:03PM -0700, Yang Shi wrote:
> > The debugging showed the page passed to invalidatepage is a huge page
> > and the length is the size of huge page instead of single page due to
> > read only FS THP support. But block_invalidatepage() would throw BUG if
> > the size is greater than single page.

Things have already gone wrong before we get to this point. See
do_dentry_open(). You aren't supposed to be able to get a writable file
descriptor on a file which has had huge pages added to the page cache
without the filesystem's knowledge. That's the problem that needs to
be fixed.