OSDN Git Service

get rid of unlikely() on page_copy_sane() calls
authorAl Viro <viro@zeniv.linux.org.uk>
Fri, 29 Jul 2022 17:01:57 +0000 (13:01 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 25 Nov 2022 18:01:20 +0000 (13:01 -0500)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
lib/iov_iter.c

index c3ca28c..e9a8fc9 100644 (file)
@@ -703,17 +703,16 @@ static inline bool page_copy_sane(struct page *page, size_t offset, size_t n)
        head = compound_head(page);
        v += (page - head) << PAGE_SHIFT;
 
-       if (likely(n <= v && v <= (page_size(head))))
-               return true;
-       WARN_ON(1);
-       return false;
+       if (WARN_ON(n > v || v > page_size(head)))
+               return false;
+       return true;
 }
 
 size_t copy_page_to_iter(struct page *page, size_t offset, size_t bytes,
                         struct iov_iter *i)
 {
        size_t res = 0;
-       if (unlikely(!page_copy_sane(page, offset, bytes)))
+       if (!page_copy_sane(page, offset, bytes))
                return 0;
        if (unlikely(iov_iter_is_pipe(i)))
                return copy_page_to_iter_pipe(page, offset, bytes, i);
@@ -808,7 +807,7 @@ size_t copy_page_from_iter_atomic(struct page *page, unsigned offset, size_t byt
                                  struct iov_iter *i)
 {
        char *kaddr = kmap_atomic(page), *p = kaddr + offset;
-       if (unlikely(!page_copy_sane(page, offset, bytes))) {
+       if (!page_copy_sane(page, offset, bytes)) {
                kunmap_atomic(kaddr);
                return 0;
        }