>Как понял речь идет о двух разных замках.Да, один замок мой, я его захватываю как в mainline(), так и в timer->function. Вот о наличии второго я и спрашиваю. Дело в том что в структуре timer_list есть свой замок и он, естественно, используется ядром при операциях с таймером.
Насколько я понял из кода в kernel/timer.c, замок самого таймера не захватывается на время вызова timer->function. А в функции __mod_timer используется какая-то мутная последовательность блокировок, которая как раз и предназначена для избежания deadlock'а в ситуациях, похожих на мою (реализация несколько раз менялась уже в 2.6.*).