]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommufd/iova_bitmap: Consolidate iova_bitmap_set exit conditionals
authorJoao Martins <joao.m.martins@oracle.com>
Thu, 27 Jun 2024 11:01:03 +0000 (12:01 +0100)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 28 Jun 2024 16:12:23 +0000 (13:12 -0300)
There's no need to have two conditionals when they are closely tied
together. Move the setting of bitmap::set_ahead_length after it checks for
::pages array out of bounds access.

Link: https://lore.kernel.org/r/20240627110105.62325-10-joao.m.martins@oracle.com
Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Tested-by: Matt Ochs <mochs@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/iommu/iommufd/iova_bitmap.c

index b94636b7977ebc8710ccade1cf2278a0f36785af..be97bb464f6bb3cd2f269c64a6667fcb2ffc6c7d 100644 (file)
@@ -465,18 +465,18 @@ void iova_bitmap_set(struct iova_bitmap *bitmap,
                                         last_bit - cur_bit + 1);
                void *kaddr;
 
-               if (unlikely(page_idx > last_page_idx))
+               if (unlikely(page_idx > last_page_idx)) {
+                       unsigned long left =
+                               ((last_bit - cur_bit + 1) << mapped->pgshift);
+
+                       bitmap->set_ahead_length = left;
                        break;
+               }
 
                kaddr = kmap_local_page(mapped->pages[page_idx]);
                bitmap_set(kaddr, offset, nbits);
                kunmap_local(kaddr);
                cur_bit += nbits;
        } while (cur_bit <= last_bit);
-
-       if (unlikely(cur_bit <= last_bit)) {
-               bitmap->set_ahead_length =
-                       ((last_bit - cur_bit + 1) << bitmap->mapped.pgshift);
-       }
 }
 EXPORT_SYMBOL_NS_GPL(iova_bitmap_set, IOMMUFD);