The stack canary is initialised with a random value any time a task struct is duplicated; see `dup_task_struct()` in `kernel/fork.c` (and in particular line 380 in version 4.7). So each forked process gets a random canary, which means there's a _very_ high probability that each process has a different canary (and more importantly, you can't predict another process's stack canary).
`boot_init_stack_canary()` ensures that the first "task" (the kernel) has a stack canary. That canary isn't re-used for processes.