[SSI] openssi/kernel/ipc msg.c, 1.15, 1.16 sem.c, 1.31, 1.32 shm.c, 1.26, 1.27
Roger Tsang <[email protected]> Tue, 02 Feb 2010 05:19:32 +0000
| Newsgroups | gmane.linux.cluster.ssic.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ssic-linux/openssi/kernel/ipc
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv20244/ipc
Modified Files:
Tag: OPENSSI-FC
msg.c sem.c shm.c
Log Message:
- Fix sysvipc_msg_read_proc() leaking msg_queue struct when
ssi_msg_get_msg_queue() fails.
- Fix sysvipc_sem_read_proc() leaking sem_array struct when
ssi_sem_get_sem_array() fails.
- Fix sysvipc_shm_read_proc() leaking shmid_kernel struct when
ssi_shm_get_shmid_kernel() fails.
- Move kernel struct to buffer type casting into ssi_shm_get_shmid_kernel(),
ssi_sem_get_sem_array(), and ssi_msg_get_msg_queue().
cluster/ssi/ipc/ipcmsg_svr.c | 14 +++++++++-----
cluster/ssi/ipc/ipcsem_svr.c | 14 +++++++++-----
cluster/ssi/ipc/ipcshm_svr.c | 15 ++++++++++-----
include/cluster/ssi/ipc/msg.h | 2 +-
include/cluster/ssi/ipc/sem.h | 2 +-
include/cluster/ssi/ipc/shm.h | 2 +-
ipc/msg.c | 12 ++++++++----
ipc/sem.c | 12 ++++++++----
ipc/shm.c | 14 ++++++++++----
9 files changed, 57 insertions(+), 30 deletions(-)
Index: sem.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/ipc/sem.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- sem.c 17 Jan 2010 11:57:05 -0000 1.31
+++ sem.c 2 Feb 2010 05:19:30 -0000 1.32
@@ -2146,10 +2146,14 @@
continue;
} else if (node_num == this_node) {
sma = sem_lock(ipc_id);
- } else if (!(sma = kmalloc(sizeof(*sma), GFP_KERNEL)) ||
- ssi_sem_get_sem_array(node_num, ipc_id,
- (char **) &sma) != 0) {
- continue;
+ } else {
+ sma = kmalloc(sizeof(*sma), GFP_KERNEL);
+ if (sma == NULL)
+ continue;
+ if (ssi_sem_get_sem_array(node_num, ipc_id, sma)) {
+ kfree(sma);
+ continue;
+ }
}
} else {
sma = sem_lock(i);
Index: shm.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/ipc/shm.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- shm.c 17 Jan 2010 11:57:05 -0000 1.26
+++ shm.c 2 Feb 2010 05:19:30 -0000 1.27
@@ -1750,10 +1750,16 @@
shp = shm_lock(ipc_id);
segsize = shm_get_segsize(shp);
cprid = shm_get_cpid(shp);
- } else if (!(shp = kmalloc(sizeof(*shp), GFP_KERNEL)) ||
- ssi_shm_get_shmid_kernel(node_num, ipc_id,
- (char **)&shp, &segsize, &cprid) != 0) {
- continue;
+ } else {
+ shp = kmalloc(sizeof(*shp), GFP_KERNEL);
+ if (shp == NULL)
+ continue;
+ if (ssi_shm_get_shmid_kernel(
+ node_num, ipc_id, shp,
+ &segsize, &cprid)) {
+ kfree(shp);
+ continue;
+ }
}
} else {
shp = shm_lock(i);
Index: msg.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/ipc/msg.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- msg.c 17 Jan 2010 11:57:05 -0000 1.15
+++ msg.c 2 Feb 2010 05:19:30 -0000 1.16
@@ -1501,10 +1501,14 @@
continue;
} else if (node_num == this_node) {
msq = msg_lock(ipc_id);
- } else if (!(msq = kmalloc(sizeof(*msq), GFP_KERNEL)) ||
- ssi_msg_get_msg_queue(node_num, ipc_id,
- (char **)&msq) != 0) {
- continue;
+ } else {
+ msq = kmalloc(sizeof(*msq), GFP_KERNEL);
+ if (msq == NULL)
+ continue;
+ if (ssi_msg_get_msg_queue(node_num, ipc_id, msq)) {
+ kfree(msq);
+ continue;
+ }
}
} else {
node_num = this_node;
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com