On Tue, Jun 30, 2020 at 7:26 PM Yonghong Song yhs@fb.com wrote:
On 6/30/20 5:10 PM, Hao Luo wrote:
Ok, with the help of my colleague Ian Rogers, I think we solved the mystery. Clang actually inlined hrtimer_nanosleep() inside SyS_nanosleep(), so there is no call to that function throughout the path of the nanosleep syscall. I've been looking at the function body of hrtimer_nanosleep for quite some time, but clearly overlooked the caller of hrtimer_nanosleep. hrtimer_nanosleep is pretty short and there are many constants, inlining would not be too surprising.
Oh thanks for explanation. inlining makes sense. We have many other instances like this in the past where kprobe won't work properly.
Could you reword your commit message then?
causing fentry and kprobe to not hook on this function properly on a Clang build kernel.
The above is a little vague on what happens. What really happens is fentry/kprobe does hook on this function but has no effect since its caller has inlined the function.
Sure, sending a v2 with a more accurate description of the issue.
Hao