@@ -706,30 +706,21 @@ static inline bool page_copy_sane(struct page *page, size_t offset, size_t n)
706
706
return false;
707
707
}
708
708
709
- static size_t __copy_page_to_iter (struct page * page , size_t offset , size_t bytes ,
710
- struct iov_iter * i )
711
- {
712
- if (unlikely (iov_iter_is_pipe (i ))) {
713
- return copy_page_to_iter_pipe (page , offset , bytes , i );
714
- } else {
715
- void * kaddr = kmap_local_page (page );
716
- size_t wanted = _copy_to_iter (kaddr + offset , bytes , i );
717
- kunmap_local (kaddr );
718
- return wanted ;
719
- }
720
- }
721
-
722
709
size_t copy_page_to_iter (struct page * page , size_t offset , size_t bytes ,
723
710
struct iov_iter * i )
724
711
{
725
712
size_t res = 0 ;
726
713
if (unlikely (!page_copy_sane (page , offset , bytes )))
727
714
return 0 ;
715
+ if (unlikely (iov_iter_is_pipe (i )))
716
+ return copy_page_to_iter_pipe (page , offset , bytes , i );
728
717
page += offset / PAGE_SIZE ; // first subpage
729
718
offset %= PAGE_SIZE ;
730
719
while (1 ) {
731
- size_t n = __copy_page_to_iter (page , offset ,
732
- min (bytes , (size_t )PAGE_SIZE - offset ), i );
720
+ void * kaddr = kmap_local_page (page );
721
+ size_t n = min (bytes , (size_t )PAGE_SIZE - offset );
722
+ n = _copy_to_iter (kaddr + offset , n , i );
723
+ kunmap_local (kaddr );
733
724
res += n ;
734
725
bytes -= n ;
735
726
if (!bytes || !n )
0 commit comments