[PATCH 0/5] splice: locking changes and code refactoring
Al Viro
viro at ZenIV.linux.org.uk
Sat Jan 18 14:30:34 CST 2014
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...
More information about the xfs
mailing list