Argh, someone very blind must have contributed this bug - of course /me.

This is also stuff or 2.3 (just like the 1/2 patch).

Jan
---
 ChangeLog             |    3 +++
 ksrc/nucleus/module.c |    7 ++++---
 2 files changed, 7 insertions(+), 3 deletions(-)

Index: xenomai/ChangeLog
===================================================================
--- xenomai.orig/ChangeLog
+++ xenomai/ChangeLog
@@ -9,6 +9,9 @@
 	* ksrc/nucleus/synch.c (xnsynch_sleep_on): Fix timeout restart
 	if resource was robbed.
 
+	* ksrc/nucleus/module.c: Fix locking on restart of sched and stat
+	interation for proc output.
+
 2007-06-02  Philippe Gerum  <[EMAIL PROTECTED]>
 
 	* ksrc/skins/psos+, src/skins/psos+, include/psos+/psos.h: Add
Index: xenomai/ksrc/nucleus/module.c
===================================================================
--- xenomai.orig/ksrc/nucleus/module.c
+++ xenomai/ksrc/nucleus/module.c
@@ -190,9 +190,9 @@ static int sched_seq_open(struct inode *
 	if (!nkpod)
 		return -ESRCH;
 
-      restart:
 	xnlock_get_irqsave(&nklock, s);
 
+      restart:
 	rev = nkpod->threadq_rev;
 	count = countq(&nkpod->threadq);	/* Cannot be empty (ROOT) */
 	holder = getheadq(&nkpod->threadq);
@@ -363,9 +363,10 @@ static int stat_seq_open(struct inode *i
 	if (!nkpod)
 		return -ESRCH;
 
-      restart:
+      restart_unlocked:
 	xnlock_get_irqsave(&nklock, s);
 
+      restart:
 	count = countq(&nkpod->threadq);	/* Cannot be empty (ROOT) */
 	holder = getheadq(&nkpod->threadq);
 	thrq_rev = nkpod->threadq_rev;
@@ -461,7 +462,7 @@ static int stat_seq_open(struct inode *i
 					   &stat_info->runtime,
 					   &stat_info->account_period);
 			if (err == -EAGAIN)
-				goto restart;
+				goto restart_unlocked;
 			if (err)
 				break; /* line unused or end of chain */
 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to