diff options
| author | uebayasi <uebayasi@NetBSD.org> | 2011-07-30 06:19:02 +0000 |
|---|---|---|
| committer | uebayasi <uebayasi@NetBSD.org> | 2011-07-30 06:19:02 +0000 |
| commit | db76a4d3dab6f20bcbbd6700878a2cd92fd230d7 (patch) | |
| tree | 08a65c49736e9f03f8631ff7e2fe4f2711720dd9 /sys/kern/sysv_msg.c | |
| parent | 856fd3dcc570e4c137266248c1fdc8a02c7c78f7 (diff) | |
Correct sizes to pass uvm_km_free(9) in error paths.
Diffstat (limited to 'sys/kern/sysv_msg.c')
| -rw-r--r-- | sys/kern/sysv_msg.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/kern/sysv_msg.c b/sys/kern/sysv_msg.c index d7c33ed6196..eb51e1a4f1c 100644 --- a/sys/kern/sysv_msg.c +++ b/sys/kern/sysv_msg.c @@ -1,4 +1,4 @@ -/* $NetBSD: sysv_msg.c,v 1.61 2009/01/28 00:59:03 njoly Exp $ */ +/* $NetBSD: sysv_msg.c,v 1.62 2011/07/30 06:19:02 uebayasi Exp $ */ /*- * Copyright (c) 1999, 2006, 2007 The NetBSD Foundation, Inc. @@ -50,7 +50,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysv_msg.c,v 1.61 2009/01/28 00:59:03 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysv_msg.c,v 1.62 2011/07/30 06:19:02 uebayasi Exp $"); #define SYSVMSG @@ -116,8 +116,8 @@ msginit(void) ALIGN(msginfo.msgseg * sizeof(struct msgmap)) + ALIGN(msginfo.msgtql * sizeof(struct __msg)) + ALIGN(msginfo.msgmni * sizeof(kmsq_t)); - v = uvm_km_alloc(kernel_map, round_page(sz), 0, - UVM_KMF_WIRED|UVM_KMF_ZERO); + sz = round_page(sz); + v = uvm_km_alloc(kernel_map, sz, 0, UVM_KMF_WIRED|UVM_KMF_ZERO); if (v == 0) panic("sysv_msg: cannot allocate memory"); msgpool = (void *)v; @@ -176,8 +176,8 @@ msgrealloc(int newmsgmni, int newmsgseg) ALIGN(newmsgseg * sizeof(struct msgmap)) + ALIGN(msginfo.msgtql * sizeof(struct __msg)) + ALIGN(newmsgmni * sizeof(kmsq_t)); - v = uvm_km_alloc(kernel_map, round_page(sz), 0, - UVM_KMF_WIRED|UVM_KMF_ZERO); + sz = round_page(sz); + v = uvm_km_alloc(kernel_map, sz, 0, UVM_KMF_WIRED|UVM_KMF_ZERO); if (v == 0) return ENOMEM; @@ -339,6 +339,7 @@ msgrealloc(int newmsgmni, int newmsgseg) ALIGN(msginfo.msgseg * sizeof(struct msgmap)) + ALIGN(msginfo.msgtql * sizeof(struct __msg)) + ALIGN(msginfo.msgmni * sizeof(kmsq_t)); + sz = round_page(sz); for (i = 0; i < msginfo.msgmni; i++) cv_destroy(&msqs[i].msq_cv); |
