[SSI] openssi/kernel/cluster/ssi/ipc ipcmsg_svr.c, 1.9, 1.10 ipcsem_svr.c, 1.9, 1.10 ipcshm_svr.c, 1.19, 1.20
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/cluster/ssi/ipc
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv20244/cluster/ssi/ipc
Modified Files:
Tag: OPENSSI-FC
ipcmsg_svr.c ipcsem_svr.c ipcshm_svr.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: ipcmsg_svr.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/ipc/ipcmsg_svr.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- ipcmsg_svr.c 17 Jan 2010 11:57:05 -0000 1.9
+++ ipcmsg_svr.c 2 Feb 2010 05:19:30 -0000 1.10
@@ -91,18 +91,22 @@
return 0;
}
-int ssi_msg_get_msg_queue(clusternode_t node_num, int msgid, char **msq)
+int
+ssi_msg_get_msg_queue(
+ clusternode_t node_num,
+ int msgid,
+ struct msg_queue *msq)
{
ssi_procstate_t pstate;
- int status = 0;
- int rval, len=0;
+ int status, rval, len = sizeof(*msq);
ssi_procstate_get(&pstate);
- len = sizeof(struct msg_queue);
- status = RIPC_MSG_GET_MSG_QUEUE(node_num, &rval, msgid, &pstate, msq, &len);
+ status = RIPC_MSG_GET_MSG_QUEUE(node_num, &rval, msgid, &pstate,
+ (char **)&msq, &len);
if (!status)
status = rval;
+
return status;
}
Index: ipcshm_svr.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/ipc/ipcshm_svr.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- ipcshm_svr.c 17 Jan 2010 11:57:05 -0000 1.19
+++ ipcshm_svr.c 2 Feb 2010 05:19:30 -0000 1.20
@@ -98,16 +98,21 @@
return 0;
}
-int ssi_shm_get_shmid_kernel(clusternode_t node_num, int shmid, char **shmidk, int *segsize, int *cprid)
+int
+ssi_shm_get_shmid_kernel(
+ clusternode_t node_num,
+ int shmid,
+ struct shmid_kernel *shmidk,
+ int *segsize,
+ int *cprid)
{
ssi_procstate_t pstate;
- int status = 0;
- int rval, len=0;
+ int status, rval, len = sizeof(*shmidk);
ssi_procstate_get(&pstate);
- len = sizeof(struct shmid_kernel);
- status = RIPC_SHM_GET_SHMID_KERNEL(node_num, &rval, shmid, &pstate, shmidk, &len, segsize, cprid);
+ status = RIPC_SHM_GET_SHMID_KERNEL(node_num, &rval, shmid, &pstate,
+ (char **)&shmidk, &len, segsize, cprid);
if (!status)
status = rval;
Index: ipcsem_svr.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/ipc/ipcsem_svr.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- ipcsem_svr.c 17 Jan 2010 11:57:05 -0000 1.9
+++ ipcsem_svr.c 2 Feb 2010 05:19:30 -0000 1.10
@@ -80,18 +80,22 @@
return 0;
}
-int ssi_sem_get_sem_array(clusternode_t node_num, int semid, char **sema)
+int
+ssi_sem_get_sem_array(
+ clusternode_t node_num,
+ int semid,
+ struct sem_array *sema)
{
ssi_procstate_t pstate;
- int status = 0;
- int rval, len=0;
+ int status, rval, len = sizeof(*sema);
ssi_procstate_get(&pstate);
- len = sizeof(struct sem_array);
- status = RIPC_SEM_GET_SEM_ARRAY(node_num, &rval, semid, &pstate, sema, &len);
+ status = RIPC_SEM_GET_SEM_ARRAY(node_num, &rval, semid, &pstate,
+ (char **)&sema, &len);
if (!status)
status = rval;
+
return status;
}
------------------------------------------------------------------------------
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