Module: xenomai-head
Branch: master
Commit: ee1f07523340323f7d82776a9e767db302e2047a
URL:    
http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=ee1f07523340323f7d82776a9e767db302e2047a

Author: Gilles Chanteperdrix <gilles.chanteperd...@xenomai.org>
Date:   Thu Aug 25 22:32:52 2011 +0200

posix: fix xnlock bug in shm cleanup

[   33.961364] Xenomai: unlocking unlocked nucleus lock c05239a8 on CPU #1
[   33.961364]          owner  = kernel/xenomai/skins/posix/shm.c:151 (pse51_shm
_put(), CPU #-1)
[   33.977203] Backtrace:
[   33.979797] [<c0037b90>] (dump_backtrace+0x0/0x110) from [<c0037ebc>] (show_s
tack+0x18/0x1c)
[   33.988647]  r6:0714ee0b r5:c05239a8 r4:f083ce00 r3:80000001
[   33.994598] [<c0037ea4>] (show_stack+0x0/0x1c) from [<c015e628>] (pse51_shm_d
estroy+0x60c/0xe2c)
[   34.003814] [<c015e01c>] (pse51_shm_destroy+0x0/0xe2c) from [<c015f4c4>] (pse
51_shm_put+0x264/0x404)
[   34.013366] [<c015f260>] (pse51_shm_put+0x0/0x404) from [<c01602b0>] (munmap+
0xc4c/0xd70)
[   34.021942] [<c015f664>] (munmap+0x0/0xd70) from [<c01603f4>] (umap_cleanup+0
x20/0x34)
[   34.030242] [<c01603d4>] (umap_cleanup+0x0/0x34) from [<c0156d08>] (pse51_ass
ocq_destroy+0x240/0xa8c)
[   34.039886]  r4:ef99edc0 r3:c01603d4
[   34.043640] [<c0156ac8>] (pse51_assocq_destroy+0x0/0xa8c) from [<c016355c>] (
pse51_shm_umaps_cleanup+0x18/0x20)
[   34.054229] [<c0163544>] (pse51_shm_umaps_cleanup+0x0/0x20) from [<c016cca4>]
 (pse51_eventcb+0x204/0x254)
[   34.064270] [<c016caa0>] (pse51_eventcb+0x0/0x254) from [<c00d6460>] (detach_
ppd+0x30/0x38)
[   34.072998]  r7:c05239a8 r6:ef908c08 r5:00000020 r4:00000000
[   34.078948] [<c00d6430>] (detach_ppd+0x0/0x38) from [<c00d93fc>] (cleanup_eve
nt+0x860/0xb34)
[   34.087799] [<c00d8b9c>] (cleanup_event+0x0/0xb34) from [<c0095bbc>] (__ipipe
_dispatch_event+0x124/0x250)
[   34.097808] [<c0095a98>] (__ipipe_dispatch_event+0x0/0x250) from [<c005a574>]
 (mmput+0xa0/0x154)
[   34.107025] [<c005a4d4>] (mmput+0x0/0x154) from [<c005e9b8>] (exit_mm+0x158/0
x164)
[   34.114959]  r6:ef8f3608 r5:ef8f33a0 r4:ef909ba0 r3:00000000
[   34.120910] [<c005e860>] (exit_mm+0x0/0x164) from [<c005fe1c>] (do_exit+0x1e4
/0x678)
[   34.128997]  r7:ef905040 r6:ef174000 r5:00000100 r4:ef8f33a0
[   34.134948] [<c005fc38>] (do_exit+0x0/0x678) from [<c0060588>] (do_group_exit
+0x98/0xc8)
[   34.143432]  r7:ef905040
[   34.146087] [<c00604f0>] (do_group_exit+0x0/0xc8) from [<c006a7c8>] (get_sign
al_to_deliver+0x360/0x39c)
[   34.155914]  r7:ef905040 r6:ef174000 r5:ef175ec8 r4:00418004
[   34.161865] [<c006a468>] (get_signal_to_deliver+0x0/0x39c) from [<c0036b9c>]
(do_signal+0x70/0x5b0)
[   34.171356] [<c0036b2c>] (do_signal+0x0/0x5b0) from [<c00376ac>] (do_notify_r
esume+0x20/0x58)
[   34.180297] [<c003768c>] (do_notify_resume+0x0/0x58) from [<c00341c0>] (work_
pending+0x28/0x2c)
[   34.189392]  r4:4005a2a0 r3:00000022

---

 ksrc/skins/posix/shm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/ksrc/skins/posix/shm.c b/ksrc/skins/posix/shm.c
index db6b152..6b9f26f 100644
--- a/ksrc/skins/posix/shm.c
+++ b/ksrc/skins/posix/shm.c
@@ -154,8 +154,8 @@ static void pse51_shm_put(pse51_shm_t * shm, unsigned dec)
                pse51_node_put(&shm->nodebase);
 
        if (pse51_node_removed_p(&shm->nodebase)) {
-               xnlock_put_irqrestore(&nklock, s);
                pse51_shm_destroy(shm, 0);
+               xnlock_put_irqrestore(&nklock, s);
                xnfree(shm);
        } else
                xnlock_put_irqrestore(&nklock, s);


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

Reply via email to