From acf76e565a79fa62ee9a481c168ea538bd2d9335 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=80=9A=E6=B4=B2?= Date: Sun, 28 Jun 2026 10:04:54 +0800 Subject: [PATCH] Memory (FreeBSD): don't query `c_min` if querying `size` fails --- src/detection/memory/memory_bsd.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/detection/memory/memory_bsd.c b/src/detection/memory/memory_bsd.c index 086660e38..80a2c8ff1 100644 --- a/src/detection/memory/memory_bsd.c +++ b/src/detection/memory/memory_bsd.c @@ -11,13 +11,11 @@ const char* ffDetectMemory(FFMemoryResult* ram) { int32_t pagesFree = ffSysctlGetInt("vm.stats.vm.v_free_count", 0) + ffSysctlGetInt("vm.stats.vm.v_inactive_count", 0) + ffSysctlGetInt("vm.stats.vm.v_cache_count", 0); int64_t bytesCache = ffSysctlGetInt64("vfs.bufspace", 0); - #ifndef __DragonFly__ - int64_t bytesArc = ffSysctlGetInt64("kstat.zfs.misc.arcstats.size", 0) - ffSysctlGetInt64("kstat.zfs.misc.arcstats.c_min", 0); - #else - int64_t bytesArc = 0; - #endif + int64_t bytesArc = ffSysctlGetInt64("kstat.zfs.misc.arcstats.size", 0); + if (bytesArc > 0) bytesArc -= ffSysctlGetInt64("kstat.zfs.misc.arcstats.c_min", 0); + if (bytesArc < 0) bytesArc = 0; - ram->bytesUsed = ram->bytesTotal - (uint64_t) pagesFree * instance.state.platform.sysinfo.pageSize - (uint64_t) bytesCache - (uint64_t) (bytesArc > 0 ? bytesArc : 0); + ram->bytesUsed = ram->bytesTotal - (uint64_t) pagesFree * instance.state.platform.sysinfo.pageSize - (uint64_t) bytesCache - (uint64_t) bytesArc; return NULL; }