lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200825084137.GA32298@quack2.suse.cz>
Date:   Tue, 25 Aug 2020 10:41:37 +0200
From:   Jan Kara <jack@...e.cz>
To:     yebin <yebin10@...wei.com>
Cc:     Jan Kara <jack@...e.cz>, jack@...e.com, tytso@....edu,
        linux-ext4@...r.kernel.org
Subject: Re: [PATCH 0/2] Fix race between do_invalidatepage and
 init_page_buffers

On Tue 25-08-20 10:11:29, yebin wrote:
> Your patch certainly can fix the problem with my testcases, but I don't
> think it's a good way. There are other paths that can call
> do_invalidatepage , for instance block ioctl to discard and zero_range.

OK, good point! So my patch is a cleanup that stands on its own and we
should do it regardless. But I agree we need more to completely fix this.
I don't quite like the callback you've added just for this special case
(furthermore it grows size of every buffer_head and there can be lots of
those). But I agree with the general idea that we shouldn't discard buffers
that the filesystem is working with.

In fact I believe that fallocate(2) and zeroout/discard ioctls should
return EBUSY if they are run against a mounted device because with 99%
probability something went wrong and you're accidentally discarding the
wrong device. But maybe I'm wrong. I'll run this idea through other fs
developers.

								Honza

> On 2020/8/24 23:51, Jan Kara wrote:
> > On Sat 22-08-20 16:22:16, Ye Bin wrote:
> > > Ye Bin (2):
> > >    ext4: Add comment to BUFFER_FLAGS_DISCARD for search code
> > >    jbd2: Fix race between do_invalidatepage and init_page_buffers
> > > 
> > >   fs/buffer.c                 | 12 +++++++++++-
> > >   fs/jbd2/journal.c           |  7 +++++++
> > >   include/linux/buffer_head.h |  2 ++
> > >   3 files changed, 20 insertions(+), 1 deletion(-)
> > Thanks for the good description of the problem and the analysis. I could
> > now easily understand what was really happening on your system. I think the
> > problem should be fixed differently through - it is a problem of
> > block_write_full_page() that it invalidates buffers while JBD2 is working
> > with them. Attached patch should also fix the problem. Can you please test
> > whether it fixes your testcase as well? Thanks!
> > 
> > 								Honza
> 
> 
-- 
Jan Kara <jack@...e.com>
SUSE Labs, CR

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ