I met a program error when I tried to modify UML kernel. What I did was:
 1. added a variable "a" in struct task_struct.
 2. I wrote a function that will update the value of "a" in task struct "current", i.e.,
  something like:
   foo () {
     current->a = xx.
 3. foo is called at many places.
Now, when I run the kernel, it goes to kernal panic in "start_userspace", and it
shows error message
"panic - not syncing: start_userspace : expected SIGSTOP, got status = 2943"
I checked the value of status. It means a segv signal. My guess is
foo () was probably called in user address space and since it caused segv because
it tried to access UML kernel address space. My question is, if it is possible
such thing happened, i.e., some code in UML kernel may be executed in user address
space? If not, what could be the cause for such error? The strange thing is,
if I just read value of "a" from "current", kernel runs fine.