O canário da pilha é inicializado com um valor aleatório sempre que uma estrutura da tarefa é duplicada; veja dup_task_struct()
in kernel/fork.c
(e em particular linha 380 na versão 4.7). Assim, cada processo bifurcado obtém um canário aleatório, o que significa que existe uma muito alta probabilidade de que cada processo tenha um canário diferente (e mais importante, você não pode prever o canário da pilha de outro processo).
boot_init_stack_canary()
garante que a primeira "tarefa" (o kernel) tenha um canário de pilha. Esse canário não é reutilizado para processos.