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 | |
| parent | 856fd3dcc570e4c137266248c1fdc8a02c7c78f7 (diff) | |
Correct sizes to pass uvm_km_free(9) in error paths.
| -rw-r--r-- | sys/kern/sysv_msg.c | 13 | ||||
| -rw-r--r-- | sys/kern/sysv_sem.c | 13 | ||||
| -rw-r--r-- | sys/kern/sysv_shm.c | 13 |
3 files changed, 21 insertions, 18 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); diff --git a/sys/kern/sysv_sem.c b/sys/kern/sysv_sem.c index 59ce562d1d5..cffb55a6d71 100644 --- a/sys/kern/sysv_sem.c +++ b/sys/kern/sysv_sem.c @@ -1,4 +1,4 @@ -/* $NetBSD: sysv_sem.c,v 1.87 2011/05/13 22:16:44 rmind Exp $ */ +/* $NetBSD: sysv_sem.c,v 1.88 2011/07/30 06:19:02 uebayasi Exp $ */ /*- * Copyright (c) 1999, 2007 The NetBSD Foundation, Inc. @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysv_sem.c,v 1.87 2011/05/13 22:16:44 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysv_sem.c,v 1.88 2011/07/30 06:19:02 uebayasi Exp $"); #define SYSVSEM @@ -106,8 +106,8 @@ seminit(void) ALIGN(seminfo.semmns * sizeof(struct __sem)) + ALIGN(seminfo.semmni * sizeof(kcondvar_t)) + ALIGN(seminfo.semmnu * seminfo.semusz); - 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_sem: cannot allocate memory"); sema = (void *)v; @@ -150,8 +150,8 @@ semrealloc(int newsemmni, int newsemmns, int newsemmnu) ALIGN(newsemmns * sizeof(struct __sem)) + ALIGN(newsemmni * sizeof(kcondvar_t)) + ALIGN(newsemmnu * seminfo.semusz); - 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; @@ -251,6 +251,7 @@ semrealloc(int newsemmni, int newsemmns, int newsemmnu) ALIGN(seminfo.semmns * sizeof(struct __sem)) + ALIGN(seminfo.semmni * sizeof(kcondvar_t)) + ALIGN(seminfo.semmnu * seminfo.semusz); + sz = round_page(sz); /* Set the pointers and update the new values */ sema = new_sema; diff --git a/sys/kern/sysv_shm.c b/sys/kern/sysv_shm.c index 97dcc963dd0..e1cc2d7e99d 100644 --- a/sys/kern/sysv_shm.c +++ b/sys/kern/sysv_shm.c @@ -1,4 +1,4 @@ -/* $NetBSD: sysv_shm.c,v 1.120 2011/06/12 03:35:56 rmind Exp $ */ +/* $NetBSD: sysv_shm.c,v 1.121 2011/07/30 06:19:02 uebayasi Exp $ */ /*- * Copyright (c) 1999, 2007 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysv_shm.c,v 1.120 2011/06/12 03:35:56 rmind Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysv_shm.c,v 1.121 2011/07/30 06:19:02 uebayasi Exp $"); #define SYSVSHM @@ -877,8 +877,8 @@ shmrealloc(int newshmni) /* Allocate new memory area */ sz = ALIGN(newshmni * sizeof(struct shmid_ds)) + ALIGN(newshmni * sizeof(kcondvar_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; @@ -936,6 +936,7 @@ shmrealloc(int newshmni) sz = ALIGN(oldshmni * sizeof(struct shmid_ds)) + ALIGN(oldshmni * sizeof(kcondvar_t)); + sz = round_page(sz); uvm_km_free(kernel_map, (vaddr_t)oldshmsegs, sz, UVM_KMF_WIRED); return 0; @@ -954,8 +955,8 @@ shminit(void) /* Allocate the wired memory for our structures */ sz = ALIGN(shminfo.shmmni * sizeof(struct shmid_ds)) + ALIGN(shminfo.shmmni * sizeof(kcondvar_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_shm: cannot allocate memory"); shmsegs = (void *)v; |
