In the companion guide Linux Kernel Programming in Chapter 6, Kernel Internals and Essentials – Processes and Threads, in the Organizing process, threads, and their stacks – user and kernel space section, we covered some key points: every single user space thread has two stacks: a user space stack and a kernel space stack. When the thread runs in non-privileged user space, it makes use of the user mode stack, while when it switches to privileged kernel space (via a system call or exception), it works with its kernel-mode stack (refer back to Figure 6.3 in the companion guide Linux Kernel Programming). Next, the kernel-mode stack is very limited and fixed in size – it's only 2 or 4 pages long (depending on whether your arch is 32- or 64-bit, respectively)!
So, imagine your driver code's (let's say, the ioctl() method) is running within a deeply nested code...