rt kernel break printf command's parent process
From: ddu <hidden>
Date: 2019-05-27 09:47:43
Hi all I use yocto rt-kernel which rebase on rt kernel: http://git.yoctoproject.org/cgit/cgit.cgi/linux-yocto/log/?h=v5.0/standard/preempt-rt/intel-x86 yocto branch: master run command: printf "%0.0f\n" 123.4567 error: [ OK ] Stopped Serial Getty on ttyS0. [ OK ] Started Serial Getty on ttyS0. the system loged out, and let login again. I using bisect to find which commit break the it: --------------------------------------------------------------------------- commit 6115b04921fc2b8a6b9f7de6d35a0202204a36ba Author: Rik van Riel [off-list ref] Date: Sun Sep 9 18:30:50 2018 +0200 x86/fpu: Always store the registers in copy_fpstate_to_sigframe() copy_fpstate_to_sigframe() stores the registers directly to user space. This is okay because the FPU register are valid and saving it directly avoids saving it into kernel memory and making a copy. However<E2><80><A6> We can't keep doing this if we are going to restore the FPU registers on the return to userland. It is possible that the FPU registers will be invalidated in the middle of the save operation and this should be done with disabled preemption / BH. Save the FPU registers to task's FPU struct and copy them to the user memory later on. This code is extracted from an earlier version of the patchset while there still was lazy-FPU on x86. Signed-off-by: Rik van Riel [off-list ref] Signed-off-by: Sebastian Andrzej Siewior [off-list ref] --------------------------------------------------------------------------- When I want to revert it, I found it's a serial patches, so if I revert it, I need to revert a serial patches. So can anyone help me to trace where break the return from printf and break the parent process?