-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Yusuf Caglar AKYUZ wrote:
> Hi,
>
> I'm using dsplink 1.60 along with CE 2.21 and sometimes I face
> kernel oops messages. [1] Then the issuing process locks-up. The
> error always(up to now) shows-up while process is finishing. I
> debugged this issue a little deeper further down and I suspect that
> some mutex is tried to be locked after it is deleted.
>
Hi again,
I found my problem. I *think* dsplink incorrectly handles kernel signals,
actually it incorrectly handles message queue timeouts. Also when it
receives the signal, it tries to use a deleted mutex also.
My current solution is attached to illustrate my situation.
Regards,
Caglar
- --- sync_orig.c 2008-10-24 22:58:01.000000000 +0300
+++ sync.c 2009-03-10 12:49:04.000000000 +0200
@@ -30,9 +30,14 @@
/* ----------------------------------- OS Specific Headers */
+#include <linux/version.h>
#include <linux/autoconf.h>
#include <linux/spinlock.h>
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
#include <asm/semaphore.h>
+#else
+#include <linux/semaphore.h>
+#endif
#include <linux/timer.h>
#include <linux/sched.h>
#include <linux/delay.h>
@@ -947,19 +952,25 @@
/* Schedule out for given timeout */
osStatus = schedule_timeout (MAX_SCHEDULE_TIMEOUT) ;
/* Take the lock */
- - SYNC_SpinLockStartEx (semObj->lock) ;
+ //SYNC_SpinLockStartEx (semObj->lock) ;
+ if (signal_pending(current)) {
+ status = -ERESTARTSYS;
+ SET_FAILURE_REASON ;
+ }
+#if 0
if (osStatus == -ERESTARTSYS) { /* Interrupted? huh? */
status = -ERESTARTSYS ;
SET_FAILURE_REASON ;
break ;
}
+#endif
} while (0) ;
/* Remove from wait list */
remove_wait_queue (&semObj->list, &wait) ;
/* Set the current task status as running */
- - set_current_state (TASK_RUNNING) ;
+ //set_current_state (TASK_RUNNING) ;
/* End the lock */
- - SYNC_SpinLockEndEx (semObj->lock, 0u) ;
+ //SYNC_SpinLockEndEx (semObj->lock, 0u) ;
}
else {
if (semObj->semType == SyncSemType_Binary) {
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.9 (GNU/Linux)
Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org
iEYEARECAAYFAkm2SaIACgkQ/nL+S5dojejIagCfc+Si9VdNghcYguUBODFeLnY1
AugAoLhy1ozDCJZREeUxd75uZmYMBZul
=CGVj
-----END PGP SIGNATURE-----
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source