Skip to content

Commit f7f9a0c

Browse files
author
Matthew Wilcox (Oracle)
committed
iov_iter: Map the page later in copy_page_from_iter_atomic()
Remove a couple of calls to kunmap_atomic() in the rare error cases. Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Kent Overstreet <[email protected]> Reviewed-by: Darrick J. Wong <[email protected]>
1 parent 6eaae19 commit f7f9a0c

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

lib/iov_iter.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -569,20 +569,20 @@ EXPORT_SYMBOL(iov_iter_zero);
569569
size_t copy_page_from_iter_atomic(struct page *page, unsigned offset, size_t bytes,
570570
struct iov_iter *i)
571571
{
572-
char *kaddr = kmap_atomic(page), *p = kaddr + offset;
573-
if (!page_copy_sane(page, offset, bytes)) {
574-
kunmap_atomic(kaddr);
572+
char *p;
573+
574+
if (!page_copy_sane(page, offset, bytes))
575575
return 0;
576-
}
577-
if (WARN_ON_ONCE(!i->data_source)) {
578-
kunmap_atomic(kaddr);
576+
if (WARN_ON_ONCE(!i->data_source))
579577
return 0;
580-
}
578+
579+
p = kmap_atomic(page) + offset;
581580
iterate_and_advance(i, bytes, base, len, off,
582581
copyin(p + off, base, len),
583582
memcpy_from_iter(i, p + off, base, len)
584583
)
585-
kunmap_atomic(kaddr);
584+
kunmap_atomic(p);
585+
586586
return bytes;
587587
}
588588
EXPORT_SYMBOL(copy_page_from_iter_atomic);

0 commit comments

Comments
 (0)