diff options
| author | Ilya Dryomov <[email protected]> | 2018-05-04 14:57:31 +0000 |
|---|---|---|
| committer | Ilya Dryomov <[email protected]> | 2018-05-10 08:15:12 +0000 |
| commit | fc218544fbc800d1c91348ec834cacfb257348f7 (patch) | |
| tree | 7a9216495d534db12d61093fc8f762798f1982f7 /drivers/fpga/fpga-bridge.c | |
| parent | libceph: add osd_req_op_extent_osd_data_bvecs() (diff) | |
| download | kernel-fc218544fbc800d1c91348ec834cacfb257348f7.tar.gz kernel-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 <[email protected]>
Reviewed-by: Jeff Layton <[email protected]>
Reviewed-by: "Yan, Zheng" <[email protected]>
Tested-by: Luis Henriques <[email protected]>
Diffstat (limited to 'drivers/fpga/fpga-bridge.c')
0 files changed, 0 insertions, 0 deletions
