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
| ||
|
Date: Mon, 12 Aug 2013 20:39:00 +0400 From: Maxim Patlasov <MPatlasov@...allels.com> To: miklos@...redi.hu Cc: fuse-devel@...ts.sourceforge.net, bfoster@...hat.com, linux-kernel@...r.kernel.org, devel@...nvz.org, xemul@...allels.com Subject: [PATCH 0/2] fuse: fix races related to fuse writeback Hi, The patchset fixes a few subtle races stemmed from incorrect expectation of what fuse_set_nowrite() guarantees. The fact that it makes fi->writectr negative and waits for fi->writectr == FUSE_NOWRITE ensures only two things: 1) If there are any in-flight writeback requests right now, let's wait for them being completed. 2) Suspend processing new writeback requests until fuse_release_nowrite(). Both are related to communication between in-kernel fuse and userspace fuse daemon. But fuse_set_nowrite() does not prevent generic kernel code from sending dirty pages to writeback resulting in fuse_writepage being called. I.e. fi->queued_writes may grow independently on fuse_set_nowrite() machinery. As soon as fuse_writepage_locked() called end_page_writeback() generic kernel code may do with the page virtually anything w/o notifying fuse. See per-patch descriptions for details of some races. Thanks, Maxim --- Maxim Patlasov (2): fuse: postpone end_page_writeback() in fuse_writepage_locked() fuse: wait for writeback in fuse_file_fallocate() fs/fuse/file.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 46 insertions(+), 10 deletions(-) -- Signature -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists