]> granicus.if.org Git - php/commitdiff
opcache huge pages: Little fix for FreeBSD
authorDavid Carlier <devnexen@gmail.com>
Mon, 1 Jul 2019 14:07:55 +0000 (14:07 +0000)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 1 Jul 2019 14:55:23 +0000 (16:55 +0200)
Calculating the vm entries size beforehand, as we could
possibly miss few entries.

Closes GH-4344.

ext/opcache/ZendAccelerator.c

index 86b6d5ce7c3052e695231225c78bf39e28308f2a..8973b2844d429716676f4952e9fca34269d978d0 100644 (file)
@@ -2746,9 +2746,9 @@ static void accel_move_code_to_huge_pages(void)
        int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_VMMAP, getpid()};
        long unsigned int huge_page_size = 2 * 1024 * 1024;
        if(sysctl(mib, 4, NULL, &s, NULL, 0) == 0) {
+               s = s * 4 / 3;
                void *addr = mmap(NULL, s * sizeof (struct kinfo_vmentry), PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
                if (addr != MAP_FAILED) {
-                       s = s * 4 / 3;
                        if (sysctl(mib, 4, addr, &s, NULL, 0) == 0) {
                                uintptr_t start = (uintptr_t)addr;
                                uintptr_t end = start + s;