In the Linux kernel, the following vulnerability has been resolved:
perf/core: Fix perfoutputbegin parameter is incorrectly invoked in perfeventbpf_output
syzkaller reportes a KASAN issue with stack-out-of-bounds. The call trace is as follows: dumpstack+0x9c/0xd3 printaddressdescription.constprop.0+0x19/0x170 kasanreport.cold+0x6c/0x84 kasanreport+0x3a/0x50 _perfeventheaderinitid+0x34/0x290 perfeventheaderinitid+0x48/0x60 perfoutputbegin+0x4a4/0x560 perfeventbpfoutput+0x161/0x1e0 perfiteratesbcpu+0x29e/0x340 perfiteratesb+0x4c/0xc0 perfeventbpfevent+0x194/0x2c0 _bpfprogput.constprop.0+0x55/0xf0 _clsbpfdeleteprog+0xea/0x120 [clsbpf] clsbpfdeleteprogwork+0x1c/0x30 [clsbpf] processonework+0x3c2/0x730 workerthread+0x93/0x650 kthread+0x1b8/0x210 retfrom_fork+0x1f/0x30
commit 267fb27352b6 ("perf: Reduce stack usage of perfoutputbegin()") use on-stack struct perfsampledata of the caller function.
However, perfeventbpfoutput uses incorrect parameter to convert small-sized data (struct perfbpfevent) into large-sized data (struct perfsampledata), which causes memory overwriting occurs in perfeventheaderinitid.