Commit 7c98a426 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'ceph-for-4.20-rc4' of https://github.com/ceph/ceph-client

Pullk ceph fix from Ilya Dryomov:
 "A messenger fix, marked for stable"

* tag 'ceph-for-4.20-rc4' of https://github.com/ceph/ceph-client:
  libceph: fall back to sendmsg for slab pages
parents 3381918f 7e241f64
...@@ -580,9 +580,15 @@ static int ceph_tcp_sendpage(struct socket *sock, struct page *page, ...@@ -580,9 +580,15 @@ static int ceph_tcp_sendpage(struct socket *sock, struct page *page,
struct bio_vec bvec; struct bio_vec bvec;
int ret; int ret;
/* sendpage cannot properly handle pages with page_count == 0, /*
* we need to fallback to sendmsg if that's the case */ * sendpage cannot properly handle pages with page_count == 0,
if (page_count(page) >= 1) * we need to fall back to sendmsg if that's the case.
*
* Same goes for slab pages: skb_can_coalesce() allows
* coalescing neighboring slab objects into a single frag which
* triggers one of hardened usercopy checks.
*/
if (page_count(page) >= 1 && !PageSlab(page))
return __ceph_tcp_sendpage(sock, page, offset, size, more); return __ceph_tcp_sendpage(sock, page, offset, size, more);
bvec.bv_page = page; bvec.bv_page = page;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment