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: Thu, 06 Mar 2014 16:03:44 +0100 From: "Michael Kerrisk (man-pages)" <mtk.manpages@...il.com> To: Linus Torvalds <torvalds@...ux-foundation.org> CC: mtk.manpages@...il.com, lkml <linux-kernel@...r.kernel.org>, Miklos Szeredi <miklos@...redi.hu>, Theodore T'so <tytso@....edu>, Christoph Hellwig <hch@....de>, Chris Mason <clm@...com>, Dave Chinner <david@...morbit.com>, Linux-Fsdevel <linux-fsdevel@...r.kernel.org>, Al Viro <viro@...iv.linux.org.uk>, "J. Bruce Fields" <bfields@...i.umich.edu>, Yongzhi Pan <panyongzhi@...il.com> Subject: Re: Update of file offset on write() etc. is non-atomic with I/O On 03/03/2014 06:36 PM, Linus Torvalds wrote: > Ok, sorry for the long delay, I was distracted (and hoping that Al > would come up with a patch). > > Anyway, attached is the patch I think we should do for this issue. It > is fairly simple: > > - it adds a "f_pos_mutex" to the "struct file". > > - it adds a new FMODE_ATOMIC_POS flag to the file mode flags to mark > things that need atomic f_pos updates > > - it makes the "struct fd" flags be two flags rather than one: the > second flag is for "unlock f_pos_mutex when done" > > - it introduces "fd[get,put]_pos()" which gets the f_pos_mutex when required > > - it makes read/write/lseek use that. > > It's pretty damn straightforward, I think, and is minimally serializing. > > Al, comments? Yongzhi Pan, this is pretty much untested, but it's > pretty simple and it does fix your test-case. The original code (where Yongzhi Pan reported an issue) and the multi_writer.c test code where both mine actually. Anyway, I applied the patch to 3.14-rc5, and I (not withstanding the other points raised by Al about the patch) I confirm that this patch makes the problem that I'm seeing go away. Thanks for looking at this, Linus. Cheers, Michael -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/ -- 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