Module Name:    src
Committed By:   christos
Date:           Fri Dec 11 04:11:23 UTC 2015

Modified Files:
        src/share/man/man9: kmem.9

Log Message:
Spell out that KM_SLEEP allocations can fail.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/share/man/man9/kmem.9

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/share/man/man9/kmem.9
diff -u src/share/man/man9/kmem.9:1.17 src/share/man/man9/kmem.9:1.18
--- src/share/man/man9/kmem.9:1.17	Tue Jul 28 05:52:43 2015
+++ src/share/man/man9/kmem.9	Thu Dec 10 23:11:23 2015
@@ -1,4 +1,4 @@
-.\"	$NetBSD: kmem.9,v 1.17 2015/07/28 09:52:43 wiz Exp $
+.\"	$NetBSD: kmem.9,v 1.18 2015/12/11 04:11:23 christos Exp $
 .\"
 .\" Copyright (c)2006 YAMAMOTO Takashi,
 .\" All rights reserved.
@@ -25,7 +25,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\" ------------------------------------------------------------
-.Dd July 28, 2015
+.Dd December 10, 2015
 .Dt KMEM 9
 .Os
 .\" ------------------------------------------------------------
@@ -77,6 +77,15 @@ Either of the following:
 .It Dv KM_SLEEP
 If the allocation cannot be satisfied immediately, sleep until enough
 memory is available.
+Note that this does not mean that if
+.Dv KM_SLEEP 
+is specified, then the allocation cannot fail.
+Under resource stress conditions, the allocation can fail and the
+function will return
+.Dv NULL .
+One such scenario is when the allocation size is larger than it can ever
+be allocated; another is when the system memory resources are exhausted
+to even allocate pools of pages.
 .It Dv KM_NOSLEEP
 Don't sleep.
 Immediately return
@@ -134,6 +143,9 @@ It must be the one returned by
 .Fn kmem_alloc
 or
 .Fn kmem_zalloc .
+One such scenario is when the allocation size is larger than it can ever
+be allocated; another is when the system memory resources are exhausted
+to even allocate pools of pages.
 .It Fa size
 The size of the memory being freed, in bytes.
 It must be the same as the
@@ -173,6 +185,10 @@ It should be noted that
 .Fn kmem_free
 may also block.
 .Pp
+Always check the return value of the allocators, even when
+.Dv KM_SLEEP
+is specified to avoid kernel crashes during resource stress conditions.
+.Pp
 For some locks this is permissible or even unavoidable.
 For others, particularly locks that may be taken from soft interrupt context,
 it is a serious problem.

Reply via email to