[SSI] openssi/kernel/cluster/ssi/vproc dvp_async.c,1.13,1.14
Roger Tsang <[email protected]> Mon, 17 Jan 2011 06:57:40 +0000
| Newsgroups | gmane.linux.cluster.ssic.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/vproc
In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv32753/cluster/ssi/vproc
Modified Files:
Tag: OPENSSI-FC
dvp_async.c
Log Message:
- dpvproc_nocldwait_async_queue, dpvproc_rmv_pgrp_async_queue: fix VPROC MOVEMENT LOCK not released in error path. fixes possible VPROC MOVEMENT LOCK deadlock.
- dpvproc_nocldwait_async_queue, dpvproc_rmv_pgrp_async_queue: fix vproc struct leak in error path.
- dpvproc_nocldwait_async_queue, dpvproc_rmv_pgrp_async_queue: raise kernel log level to critical in error path.
Index: dvp_async.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/cluster/ssi/vproc/dvp_async.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- dvp_async.c 17 Dec 2009 05:46:50 -0000 1.13
+++ dvp_async.c 17 Jan 2011 06:57:38 -0000 1.14
@@ -514,9 +514,15 @@
nocldwait_data,
sizeof(*nocldwait_data),
NSC_ASYNC_SLEEP | NSC_ASYNC_ARGS_FREE);
- if (error)
- printk(KERN_WARNING "%s: unable to allocate async event; error=%d\n",
+ if (error) {
+ VPROC_RELEASE_MOVEMENT(vp, "dpvproc_nocldwait_async_queue");
+ VPROC_RELE(vc, "temp nocldwait async (child)");
+ if (vp)
+ VPROC_RELE(vp, "temp nocldwait async (parent)");
+ printk(KERN_CRIT "%s: unable to allocate async event; error=%d\n",
__FUNCTION__, error);
+ return;
+ }
#else
nocldwait_data.vp = vp;
nocldwait_data.vc = vc;
@@ -588,9 +594,7 @@
}
VPROC_HOLD(vg, "temp rmv_pgrp async (pgrp ldr)");
-
VPROC_HOLD(vc, "temp rmv_pgrp async (pgrp member)");
-
VPROC_HOLD_MOVEMENT(vg, "dpvproc_rmv_pgrp_async_queue");
rmv_data->vg = vg;
@@ -606,9 +610,7 @@
struct dvp_rmv_pgrp_async rmv_data;
VPROC_HOLD(vg, "temp rmv_pgrp async (pgrp ldr)");
-
VPROC_HOLD(vc, "temp rmv_pgrp async (pgrp member)");
-
VPROC_HOLD_MOVEMENT(vg, "dpvproc_rmv_pgrp_async_queue");
rmv_data.vg = vg;
@@ -621,7 +623,11 @@
sizeof(struct dvp_rmv_pgrp_async),
NSC_ASYNC_DUPCHECK);
#endif /* !NSC_ASYNC_ARGS_ZERO_COPY */
- if (error)
- printk(KERN_WARNING "%s: unable to allocate async event; error=%d\n",
+ if (error) {
+ VPROC_RELEASE_MOVEMENT(vg, "dpvproc_rmv_pgrp_async_queue");
+ VPROC_RELE(vc, "temp rmv_pgrp async (pgrp member)");
+ VPROC_RELE(vg, "temp rmv_pgrp async (pgrp ldr)");
+ printk(KERN_CRIT "%s: unable to allocate async event; error=%d\n",
__FUNCTION__, error);
+ }
}
------------------------------------------------------------------------------
Protect Your Site and Customers from Malware Attacks
Learn about various malware tactics and how to avoid them. Understand
malware threats, the impact they can have on your business, and how you
can protect your company and customers by using code signing.
http://p.sf.net/sfu/oracle-sfdevnl