I know that current_task holds the address of task_struct * pointer for each cpu.
However, when reading this symbol value in different kernel version, I got diverse result.
In 4.19.65 kernel, I grabbed it by cat /proc/kallsyms | grep current_task and got:
0000000000015c40 A current_task
which means it is an absolute value.
In 4.20.13 kernel, I got:
ffffffffbea3a040 D current_task
which means it is in data section.
I used default config for 4.19.65 kernel. However, I have not got config file for 4.20.13.
I'm wondering if the value meaning is related to kernel version or kernel configuration? When it holds an absolute value, how does kernel find current_task pointer?