diff options
| -rw-r--r-- | fs/cifs/transport.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/fs/cifs/transport.c b/fs/cifs/transport.c index d6cff1e5afc6..24887a0898c0 100644 --- a/fs/cifs/transport.c +++ b/fs/cifs/transport.c | |||
| @@ -288,15 +288,13 @@ __smb_send_rqst(struct TCP_Server_Info *server, struct smb_rqst *rqst) | |||
| 288 | 288 | ||
| 289 | /* now walk the page array and send each page in it */ | 289 | /* now walk the page array and send each page in it */ |
| 290 | for (i = 0; i < rqst->rq_npages; i++) { | 290 | for (i = 0; i < rqst->rq_npages; i++) { |
| 291 | size_t len = i == rqst->rq_npages - 1 | 291 | struct bio_vec bvec; |
| 292 | ? rqst->rq_tailsz | 292 | |
| 293 | : rqst->rq_pagesz; | 293 | bvec.bv_page = rqst->rq_pages[i]; |
| 294 | struct bio_vec bvec = { | 294 | rqst_page_get_length(rqst, i, &bvec.bv_len, &bvec.bv_offset); |
| 295 | .bv_page = rqst->rq_pages[i], | 295 | |
| 296 | .bv_len = len | ||
| 297 | }; | ||
| 298 | iov_iter_bvec(&smb_msg.msg_iter, WRITE | ITER_BVEC, | 296 | iov_iter_bvec(&smb_msg.msg_iter, WRITE | ITER_BVEC, |
| 299 | &bvec, 1, len); | 297 | &bvec, 1, bvec.bv_len); |
| 300 | rc = smb_send_kvec(server, &smb_msg, &sent); | 298 | rc = smb_send_kvec(server, &smb_msg, &sent); |
| 301 | if (rc < 0) | 299 | if (rc < 0) |
| 302 | break; | 300 | break; |
