Page MenuHomeFreeBSD

D17483.id48939.diff
No OneTemporary

D17483.id48939.diff

Index: sys/kern/subr_vmem.c
===================================================================
--- sys/kern/subr_vmem.c
+++ sys/kern/subr_vmem.c
@@ -507,6 +507,9 @@
/*
* Import from the arena into the quantum cache in UMA.
+ *
+ * We use VMEM_ADDR_QCACHE_MIN instead of 0: UMA uses 0 to indicate an
+ * allocation failure, so it can't be used to cache a resource with value 0.
*/
static int
qc_import(void *arg, void **store, int cnt, int domain, int flags)
@@ -520,7 +523,7 @@
flags |= M_BESTFIT;
for (i = 0; i < cnt; i++) {
if (vmem_xalloc(qc->qc_vmem, qc->qc_size, 0, 0, 0,
- VMEM_ADDR_MIN, VMEM_ADDR_MAX, flags, &addr) != 0)
+ VMEM_ADDR_QCACHE_MIN, VMEM_ADDR_MAX, flags, &addr) != 0)
break;
store[i] = (void *)addr;
/* Only guarantee one allocation. */
Index: sys/sys/vmem.h
===================================================================
--- sys/sys/vmem.h
+++ sys/sys/vmem.h
@@ -41,8 +41,9 @@
typedef uintptr_t vmem_addr_t;
typedef size_t vmem_size_t;
-#define VMEM_ADDR_MIN 0
-#define VMEM_ADDR_MAX (~(vmem_addr_t)0)
+#define VMEM_ADDR_MIN 0
+#define VMEM_ADDR_QCACHE_MIN 1
+#define VMEM_ADDR_MAX (~(vmem_addr_t)0)
typedef int (vmem_import_t)(void *, vmem_size_t, int, vmem_addr_t *);
typedef void (vmem_release_t)(void *, vmem_addr_t, vmem_size_t);

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 1, 5:27 AM (40 m, 18 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
39999516
Default Alt Text
D17483.id48939.diff (1 KB)

Event Timeline