From mboxrd@z Thu Jan 1 00:00:00 1970 From: Al Viro Subject: Re: [PATCH 0/5] splice: locking changes and code refactoring Date: Sat, 18 Jan 2014 20:30:34 +0000 Message-ID: <20140118203034.GK10323@ZenIV.linux.org.uk> References: <20140113141416.GA30117@infradead.org> <20140113235646.GR10323@ZenIV.linux.org.uk> <20140114132207.GA25170@infradead.org> <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140118202717.GJ10323@ZenIV.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French To: Linus Torvalds Return-path: Received: from zeniv.linux.org.uk ([195.92.253.2]:52883 "EHLO ZenIV.linux.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751434AbaARUak (ORCPT ); Sat, 18 Jan 2014 15:30:40 -0500 Content-Disposition: inline In-Reply-To: <20140118202717.GJ10323@ZenIV.linux.org.uk> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Sat, Jan 18, 2014 at 08:27:17PM +0000, Al Viro wrote: > Ouch^2: default_file_write_splice_write() keeps calling write_pipe_buf(), > which does this: > data = buf->ops->map(pipe, buf, 0); > ret = __kernel_write(sd->u.file, data + buf->offset, sd->len, &tmp); > buf->ops->unmap(pipe, buf, data); > IOW, ->write() (with whatever locks there might be) wrapped into > kmap_atomic()/kunmap_atomic(). And anybody can do that - just a splice to > file on procfs will hit that codepath... Or on 9p, for that matter, or > fat, or afs, or cifs, etc. s/kmap_atomic/kmap/, so it's not that disastrously bad (kmap_atomic might lose the mapping as soon as we block), but scarcity problem remains...