Song Liu <song@xxxxxxxxxx> writes: > On Thu, Feb 13, 2025 at 2:22 PM Puranjay Mohan <puranjay@xxxxxxxxxx> wrote: >> >> Song Liu <song@xxxxxxxxxx> writes: >> >> > On Thu, Feb 13, 2025 at 12:38 AM Puranjay Mohan <puranjay@xxxxxxxxxx> wrote: >> > [...] >> >> >> >> P.S. - The livepatch doesn't have copy_process() but only copy_signal(), >> >> yours had copy_process() somehow. >> > >> > In my build, copy_signal is inlined to copy_process, unless I add noinline. >> > If I do add noinline, the issue will not reproduce. >> > >> > I tried more combinations. The issue doesn't reproduce if I either >> > 1) add noinline to copy_signal, so we are not patching the whole >> > copy_process function; >> > or >> > 2) Switch compiler from gcc 14.2.1 to gcc 11.5.0. >> > >> > So it appears something in gcc 14.2.1 is causing live patch to fail >> > for copy_process(). >> >> So, can you test your RFC set (without SFRAME) with gcc 14.2.1, so we >> can be sure that it is not a sframe problem? >> >> And about having the .sframe section in the livepatch module, I realised >> that this set doesn't include support for reading/using sframe data from >> any module(livepatches included), so the patch I added for generating >> .sframe in kpatch is irrelevant because it is a no-op with the current setup. > > Puranjay, > > Could you please try the following? > > 1. Use gcc 11.4.1; > 2. Add __always_inline to copy_signal(); > 3. Build kernel, and livepatch with the same test (we need to > add __always_inline to the .patch file). > 4. Run gdb livepatch-xxx.ko > 5. In gdb do disassemble copy_process. > > In my tests, both gcc-14.2.1 and gcc-11.5.0 generated a .ko file > that looks weird in gdb-disassemble. Specifically, readels shows > copy_process is about 5.5kB, but gdb-disassemble only shows > 140 bytes or so for copy_process. clang doesn't seem to have > this problem. > > I am really curious whether you have the same problem in your > setup. Hi Song, I did this test and found the same issue as you (gdb assembly broken), but I can see this issue even without the inlining. I think GDB tried to load the debuginfo and that is somehow broken therefore it fails to disassemblt properly. But even with inlining, I couldn't see the warning about the refcount with my setup. Thanks, Puranjay
Attachment:
signature.asc
Description: PGP signature