diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-01-05 16:18:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-01-05 16:18:59 -0500 |
commit | 9b286efeb5eb5aaa2712873fc1f928b2f879dbde (patch) | |
tree | 42c5509700421853533443a3e042fe2ac46a0f37 /lib | |
parent | 47f3f4eb7834ea424b0704bffd0d3e3c8ffbc3a1 (diff) | |
parent | e4f2283cc6ffefbe414317a0d89b602811b577ac (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull trivial vfs updates from Al Viro:
"A few cleanups + Neil's namespace_unlock() optimization"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
exec: make prepare_bprm_creds static
genheaders: %-<width>s had been there since v6; %-*s - since v7
VFS: use synchronize_rcu_expedited() in namespace_unlock()
iov_iter: reduce code duplication
Diffstat (limited to 'lib')
-rw-r--r-- | lib/iov_iter.c | 54 |
1 files changed, 27 insertions, 27 deletions
diff --git a/lib/iov_iter.c b/lib/iov_iter.c index c93870987b58..be4bd627caf0 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c | |||
@@ -561,13 +561,20 @@ static size_t copy_pipe_to_iter(const void *addr, size_t bytes, | |||
561 | return bytes; | 561 | return bytes; |
562 | } | 562 | } |
563 | 563 | ||
564 | static __wsum csum_and_memcpy(void *to, const void *from, size_t len, | ||
565 | __wsum sum, size_t off) | ||
566 | { | ||
567 | __wsum next = csum_partial_copy_nocheck(from, to, len, 0); | ||
568 | return csum_block_add(sum, next, off); | ||
569 | } | ||
570 | |||
564 | static size_t csum_and_copy_to_pipe_iter(const void *addr, size_t bytes, | 571 | static size_t csum_and_copy_to_pipe_iter(const void *addr, size_t bytes, |
565 | __wsum *csum, struct iov_iter *i) | 572 | __wsum *csum, struct iov_iter *i) |
566 | { | 573 | { |
567 | struct pipe_inode_info *pipe = i->pipe; | 574 | struct pipe_inode_info *pipe = i->pipe; |
568 | size_t n, r; | 575 | size_t n, r; |
569 | size_t off = 0; | 576 | size_t off = 0; |
570 | __wsum sum = *csum, next; | 577 | __wsum sum = *csum; |
571 | int idx; | 578 | int idx; |
572 | 579 | ||
573 | if (!sanity(i)) | 580 | if (!sanity(i)) |
@@ -579,8 +586,7 @@ static size_t csum_and_copy_to_pipe_iter(const void *addr, size_t bytes, | |||
579 | for ( ; n; idx = next_idx(idx, pipe), r = 0) { | 586 | for ( ; n; idx = next_idx(idx, pipe), r = 0) { |
580 | size_t chunk = min_t(size_t, n, PAGE_SIZE - r); | 587 | size_t chunk = min_t(size_t, n, PAGE_SIZE - r); |
581 | char *p = kmap_atomic(pipe->bufs[idx].page); | 588 | char *p = kmap_atomic(pipe->bufs[idx].page); |
582 | next = csum_partial_copy_nocheck(addr, p + r, chunk, 0); | 589 | sum = csum_and_memcpy(p + r, addr, chunk, sum, off); |
583 | sum = csum_block_add(sum, next, off); | ||
584 | kunmap_atomic(p); | 590 | kunmap_atomic(p); |
585 | i->idx = idx; | 591 | i->idx = idx; |
586 | i->iov_offset = r + chunk; | 592 | i->iov_offset = r + chunk; |
@@ -1401,17 +1407,15 @@ size_t csum_and_copy_from_iter(void *addr, size_t bytes, __wsum *csum, | |||
1401 | err ? v.iov_len : 0; | 1407 | err ? v.iov_len : 0; |
1402 | }), ({ | 1408 | }), ({ |
1403 | char *p = kmap_atomic(v.bv_page); | 1409 | char *p = kmap_atomic(v.bv_page); |
1404 | next = csum_partial_copy_nocheck(p + v.bv_offset, | 1410 | sum = csum_and_memcpy((to += v.bv_len) - v.bv_len, |
1405 | (to += v.bv_len) - v.bv_len, | 1411 | p + v.bv_offset, v.bv_len, |
1406 | v.bv_len, 0); | 1412 | sum, off); |
1407 | kunmap_atomic(p); | 1413 | kunmap_atomic(p); |
1408 | sum = csum_block_add(sum, next, off); | ||
1409 | off += v.bv_len; | 1414 | off += v.bv_len; |
1410 | }),({ | 1415 | }),({ |
1411 | next = csum_partial_copy_nocheck(v.iov_base, | 1416 | sum = csum_and_memcpy((to += v.iov_len) - v.iov_len, |
1412 | (to += v.iov_len) - v.iov_len, | 1417 | v.iov_base, v.iov_len, |
1413 | v.iov_len, 0); | 1418 | sum, off); |
1414 | sum = csum_block_add(sum, next, off); | ||
1415 | off += v.iov_len; | 1419 | off += v.iov_len; |
1416 | }) | 1420 | }) |
1417 | ) | 1421 | ) |
@@ -1445,17 +1449,15 @@ bool csum_and_copy_from_iter_full(void *addr, size_t bytes, __wsum *csum, | |||
1445 | 0; | 1449 | 0; |
1446 | }), ({ | 1450 | }), ({ |
1447 | char *p = kmap_atomic(v.bv_page); | 1451 | char *p = kmap_atomic(v.bv_page); |
1448 | next = csum_partial_copy_nocheck(p + v.bv_offset, | 1452 | sum = csum_and_memcpy((to += v.bv_len) - v.bv_len, |
1449 | (to += v.bv_len) - v.bv_len, | 1453 | p + v.bv_offset, v.bv_len, |
1450 | v.bv_len, 0); | 1454 | sum, off); |
1451 | kunmap_atomic(p); | 1455 | kunmap_atomic(p); |
1452 | sum = csum_block_add(sum, next, off); | ||
1453 | off += v.bv_len; | 1456 | off += v.bv_len; |
1454 | }),({ | 1457 | }),({ |
1455 | next = csum_partial_copy_nocheck(v.iov_base, | 1458 | sum = csum_and_memcpy((to += v.iov_len) - v.iov_len, |
1456 | (to += v.iov_len) - v.iov_len, | 1459 | v.iov_base, v.iov_len, |
1457 | v.iov_len, 0); | 1460 | sum, off); |
1458 | sum = csum_block_add(sum, next, off); | ||
1459 | off += v.iov_len; | 1461 | off += v.iov_len; |
1460 | }) | 1462 | }) |
1461 | ) | 1463 | ) |
@@ -1493,17 +1495,15 @@ size_t csum_and_copy_to_iter(const void *addr, size_t bytes, void *csump, | |||
1493 | err ? v.iov_len : 0; | 1495 | err ? v.iov_len : 0; |
1494 | }), ({ | 1496 | }), ({ |
1495 | char *p = kmap_atomic(v.bv_page); | 1497 | char *p = kmap_atomic(v.bv_page); |
1496 | next = csum_partial_copy_nocheck((from += v.bv_len) - v.bv_len, | 1498 | sum = csum_and_memcpy(p + v.bv_offset, |
1497 | p + v.bv_offset, | 1499 | (from += v.bv_len) - v.bv_len, |
1498 | v.bv_len, 0); | 1500 | v.bv_len, sum, off); |
1499 | kunmap_atomic(p); | 1501 | kunmap_atomic(p); |
1500 | sum = csum_block_add(sum, next, off); | ||
1501 | off += v.bv_len; | 1502 | off += v.bv_len; |
1502 | }),({ | 1503 | }),({ |
1503 | next = csum_partial_copy_nocheck((from += v.iov_len) - v.iov_len, | 1504 | sum = csum_and_memcpy(v.iov_base, |
1504 | v.iov_base, | 1505 | (from += v.iov_len) - v.iov_len, |
1505 | v.iov_len, 0); | 1506 | v.iov_len, sum, off); |
1506 | sum = csum_block_add(sum, next, off); | ||
1507 | off += v.iov_len; | 1507 | off += v.iov_len; |
1508 | }) | 1508 | }) |
1509 | ) | 1509 | ) |