summaryrefslogtreecommitdiffstats
path: root/fs/coredump.c
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2018-05-04 16:57:31 +0200
committerIlya Dryomov <idryomov@gmail.com>2018-05-10 10:15:12 +0200
commitfc218544fbc800d1c91348ec834cacfb257348f7 (patch)
tree7a9216495d534db12d61093fc8f762798f1982f7 /fs/coredump.c
parent0010f7052d6cb71c4b120238e28cd3fa413913d1 (diff)
downloadlinux-fc218544fbc800d1c91348ec834cacfb257348f7.tar.gz
linux-fc218544fbc800d1c91348ec834cacfb257348f7.tar.bz2
linux-fc218544fbc800d1c91348ec834cacfb257348f7.zip
ceph: fix iov_iter issues in ceph_direct_read_write()
dio_get_pagev_size() and dio_get_pages_alloc() introduced in commit b5b98989dc7e ("ceph: combine as many iovec as possile into one OSD request") assume that the passed iov_iter is ITER_IOVEC. This isn't the case with splice where it ends up poking into the guts of ITER_BVEC or ITER_PIPE iterators, causing lockups and crashes easily reproduced with generic/095. Rather than trying to figure out gap alignment and stuff pages into a page vector, add a helper for going from iov_iter to a bio_vec array and make use of the new CEPH_OSD_DATA_TYPE_BVECS code. Fixes: b5b98989dc7e ("ceph: combine as many iovec as possile into one OSD request") Link: http://tracker.ceph.com/issues/18130 Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> Reviewed-by: "Yan, Zheng" <zyan@redhat.com> Tested-by: Luis Henriques <lhenriques@suse.com>
Diffstat (limited to 'fs/coredump.c')
0 files changed, 0 insertions, 0 deletions