Messages in this thread | | | From | Florian Weimer <> | Subject | Re: [PATCH net-next v4] net: skb: prevent the split of kfree_skb_reason() by gcc | Date | Tue, 06 Sep 2022 14:37:47 +0200 |
| |
* Menglong Dong:
> Hello, > > On Mon, Aug 22, 2022 at 4:01 PM Florian Weimer <fweimer@redhat.com> wrote: >> >> * Menglong Dong: >> >> > /* >> > * Used by functions that use '__builtin_return_address'. These function >> > * don't want to be splited or made inline, which can make >> > * the '__builtin_return_address' got unexpected address. >> > */ >> > #define __fix_address noinline __noclone >> >> You need something on the function *declaration* as well, to inhibit >> sibcalls. >> > > I did some research on the 'sibcalls' you mentioned above. Feel like > It's a little similar to 'inline', and makes the callee use the same stack > frame with the caller, which obviously will influence the result of > '__builtin_return_address'. > > Hmm......but I'm not able to find any attribute to disable this optimization. > Do you have any ideas?
Unless something changed quite recently, GCC does not allow disabling the optimization with a simple attribute (which would have to apply to function pointers as well, not functions). asm ("") barriers that move out a call out of the tail position are supposed to prevent the optimization.
Thanks, Florian
| |