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 PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Tue, 13 Apr 2021 15:56:32 +0200 From: Jan Kara <jack@...e.cz> To: Christoph Hellwig <hch@...radead.org> Cc: Jan Kara <jack@...e.cz>, linux-fsdevel@...r.kernel.org, linux-ext4@...r.kernel.org, linux-xfs@...r.kernel.org, Ted Tso <tytso@....edu>, Amir Goldstein <amir73il@...il.com>, Dave Chinner <david@...morbit.com> Subject: Re: [PATCH 2/7] mm: Protect operations adding pages to page cache with i_mapping_lock On Tue 13-04-21 13:57:46, Christoph Hellwig wrote: > > if (error == AOP_TRUNCATED_PAGE) > > put_page(page); > > + up_read(&mapping->host->i_mapping_sem); > > return error; > > Please add an unlock_mapping label above this up_read and consolidate > most of the other unlocks by jumping there (put_and_wait_on_page_locked > probablt can't use it). Yeah, I've actually simplified the labels even a bit more like: ... error = filemap_read_page(iocb->ki_filp, mapping, page); goto unlock_mapping; unlock: unlock_page(page); unlock_mapping: up_read(&mapping->host->i_mapping_sem); if (error == AOP_TRUNCATED_PAGE) put_page(page); return error; and everything now jumps to either unlock or unlock_mapping (except for put_and_wait_on_page_locked() case). > > truncated: > > unlock_page(page); > > @@ -2309,6 +2324,7 @@ static int filemap_update_page(struct kiocb *iocb, > > return AOP_TRUNCATED_PAGE; > > The trunated case actually seems to miss the unlock. > > Similarly I think filemap_fault would benefit from a common > unlock path. Right, thanks for catching that! Honza -- Jan Kara <jack@...e.com> SUSE Labs, CR
Powered by blists - more mailing lists