git: f076dd3ef02d - main - imgact_elf: Optimize pagesizes[] loop

From: Alan Cox <alc_at_FreeBSD.org>
Date: Fri, 02 Aug 2024 23:35:27 UTC
The branch main has been updated by alc:

URL: https://cgit.FreeBSD.org/src/commit/?id=f076dd3ef02ddf7799eeaab8d405ee9d845e8dc6

commit f076dd3ef02ddf7799eeaab8d405ee9d845e8dc6
Author:     Alan Cox <alc@FreeBSD.org>
AuthorDate: 2024-07-15 06:02:33 +0000
Commit:     Alan Cox <alc@FreeBSD.org>
CommitDate: 2024-08-02 23:26:11 +0000

    imgact_elf: Optimize pagesizes[] loop
    
    Except for elements whose value is zero, the elements of pagesizes[] are
    always sorted in increasing order, so once a loop starting from the end
    of the array has found a non-zero element, it has found the largest
    valued element and can stop iterating.
    
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D46215
---
 sys/kern/imgact_elf.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c
index a623a63e9c2e..28ffdd03dd6d 100644
--- a/sys/kern/imgact_elf.c
+++ b/sys/kern/imgact_elf.c
@@ -1158,8 +1158,10 @@ __CONCAT(exec_, __elfN(imgact))(struct image_params *imgp)
 	maxalign = PAGE_SIZE;
 	maxsalign = PAGE_SIZE * 1024;
 	for (i = MAXPAGESIZES - 1; i > 0; i--) {
-		if (pagesizes[i] > maxsalign)
+		if (pagesizes[i] > maxsalign) {
 			maxsalign = pagesizes[i];
+			break;
+		}
 	}
 
 	mapsz = 0;