I believe that this question has already been answered here:
- What is the difference between kernel stack and user stack?
- kernel stack and user space stack
That is, a userspace process has only one stack, a pointer to which is defined in the second element of the task_struct
in include/linux/sched.h
(about line 1045 in 3.12).
There is a possibility of some confusion with the per-thread kernel stack, as noted in the above posts. In a sense, a process can have one or more stacks, userspace and kernel space, depending on the number of threads it has at any point in time. The connection between the per-thread kernel stack, the thread and the process task_struct
is described in this lecture by Junfeng Yang.