Re: two more objtool warnings: lib/ubsan.o and fs/fs_pin.o

From: Josh Poimboeuf
Date: Fri Jul 28 2017 - 13:04:53 EST


On Fri, Jul 28, 2017 at 01:25:27PM +0200, Arnd Bergmann wrote:
> Hi Josh,
>
> I ran into two more warnings with the two patches you sent me in private,
> using gcc-7.1.1:
>
> lib/ubsan.o: warning: objtool: val_to_string.constprop.7()+0x97: leave
> instruction with modified stack frame
> .config: https://pastebin.com/dl/g04Dwdwx
>
> fs/fs_pin.o: warning: objtool: pin_kill()+0x139: stack state mismatch:
> cfa1=7+88 cfa2=7+96
> .config: https://pastebin.com/dl/6gK6MadB
>
> I assume you are faster at analysing than me, so I have not tried to get
> to the bottom of these at all. Let me know if you need help reproducing
> the warnings. It's also possible that they are fixed by some other patches
> that you already sent but that are not in linux-next yet.

Thanks. The first one is a relatively easy fix in objtool's drap
register handling. I have a working patch for it.

The second one is a little trickier.

Instead of:

lea 0x8(%rsp), %rsp

GCC is doing:

lea 0x8(%rsp), %rcx
mov %rcx, %rsp

I don't see why GCC would do that. We should probably ask some GCC
folks. Objtool isn't built to track register values, so it may be a
little tricky to deal with that pattern correctly if we can't convince
GCC to fix it.

Anyway, I'm going to be on vacation next week, but I'll investigate
further when I get back.

--
Josh