[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