In Kernel space context (Kernel 2.6.35), I know that in the case of IRQ context ,the current task is preempted, then the handler is executed without task context switch.( without "current" variable update.)

I would like to know if there are anothers case where a task is preempted and some instructions are executed without "current" variable update ?

For "current" variable , I talk about the variable "current" defined in Linux/include/asm-generic/current.h

#include <linux/thread_info.h>
#define get_current() (current_thread_info()->task)
#define current get_current()

Thanks by advance for your help.