Hello folks, I met some problem with preempt version of kernel 4.4. I have hrtimer which runs callback, it forwards time and returns HRTIMER_RESTART. Very common scheme. When I stop the routine I call hrtimer_cancel(). It should wait for callback completion if any and unqueue any future timers. But suddenly I noticed, that sometimes hrtimer's routine continue to work and work after hrtimer_cancel(). It could be reproduced with simple test: Start hrtimer. In callback increase counter and restart. In the other thread cancel timer, save counter, sleep, check that counter is not changed, restart timer, repeat. Here is sample module: https://gist.github.com/gerasiov/010e6c2cb96fd891c1802facf816fe84 It works OK on v3.10.74-rt79 with PREEMPL FULL. It works OK on v4.4.47-rt59 with preempt patch but PREEMPT NONE. But on 4.4 (tested on v4.4.47-rt59 and v4.4.32-rt43) with PREEMPT FULL it fails: counter continue to increase (BUG_ON() line 45 hits), that means that hrtimer continue to work after cancel(). And I must say, that this is not single iteration, it continues to work in cycle. It was reproduced on i386 SMP box. kernel config: https://github.com/redlab-i/linux/blob/v4.4.47-rt59-stand2/.config Do anyone have any ideas where could be the problem? Or may be I missed something in my research? -- Best regards, Alexander Gerasiov Contacts: e-mail: gq@xxxxxxxxx Homepage: http://gerasiov.net Skype: gerasiov PGP fingerprint: 04B5 9D90 DF7C C2AB CD49 BAEA CA87 E9E8 2AAC 33F1 -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html