Hello,
{{if .CrashTitle}}
syzbot has tested the proposed patch but the reproducer still triggered crash:
{{.CrashTitle}}

{{printf "%s" .Report}}
{{else if .Error}}
syzbot tried to test the proposed patch but build/boot failed:

{{printf "%s" .Error}}
{{if .ErrorTruncated}}
Error text is too large and was truncated, full error text is at:
{{.ErrorLink}}
{{end}}
{{else}}
syzbot has tested the proposed patch and the reproducer did not trigger crash:

Reported-and-tested-by: {{.CreditEmail}}
{{end}}
Tested on:

commit:         {{formatShortHash .KernelCommit}} {{formatCommitTableTitle .KernelCommitTitle}}
git tree:       {{.KernelRepoAlias}}
{{if .LogLink}}console output: {{.LogLink}}
{{end}}{{if .KernelConfigLink}}kernel config:  {{.KernelConfigLink}}
{{end}}dashboard link: {{.Link}}
compiler:       {{.CompilerID}}
{{if .UserSpaceArch}}userspace arch: {{.UserSpaceArch}}
{{end}}{{if .PatchLink}}patch:          {{.PatchLink}}
{{end}}{{if and (not .CrashTitle) (not .Error)}}
Note: testing is done by a robot and is best-effort only.{{end}}
