Page MenuHomeFreeBSD

D27507.diff
No OneTemporary

D27507.diff

Index: head/sys/vm/vm_kern.c
===================================================================
--- head/sys/vm/vm_kern.c
+++ head/sys/vm/vm_kern.c
@@ -264,9 +264,15 @@
{
struct vm_domainset_iter di;
vm_offset_t addr;
- int domain;
+ int domain, iflags;
- vm_domainset_iter_policy_init(&di, ds, &domain, &flags);
+ /*
+ * Do not allow the domainset iterator to override wait flags. The
+ * contiguous memory allocator defines special semantics for M_WAITOK
+ * that do not match the iterator's implementation.
+ */
+ iflags = (flags & ~M_WAITOK) | M_NOWAIT;
+ vm_domainset_iter_policy_init(&di, ds, &domain, &iflags);
do {
addr = kmem_alloc_attr_domain(domain, size, flags, low, high,
memattr);
@@ -346,9 +352,15 @@
{
struct vm_domainset_iter di;
vm_offset_t addr;
- int domain;
+ int domain, iflags;
- vm_domainset_iter_policy_init(&di, ds, &domain, &flags);
+ /*
+ * Do not allow the domainset iterator to override wait flags. The
+ * contiguous memory allocator defines special semantics for M_WAITOK
+ * that do not match the iterator's implementation.
+ */
+ iflags = (flags & ~M_WAITOK) | M_NOWAIT;
+ vm_domainset_iter_policy_init(&di, ds, &domain, &iflags);
do {
addr = kmem_alloc_contig_domain(domain, size, flags, low, high,
alignment, boundary, memattr);

File Metadata

Mime Type
text/plain
Expires
Tue, Apr 21, 5:36 AM (8 h, 56 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31892131
Default Alt Text
D27507.diff (1 KB)

Event Timeline