Re: [PATCH v4 00/10] Function Granular KASLR

From: Josh Poimboeuf
Date: Fri Aug 28 2020 - 15:24:38 EST


On Fri, Aug 28, 2020 at 12:21:13PM +0200, Miroslav Benes wrote:
> > Hi there! I was trying to find a super easy way to address this, so I
> > thought the best thing would be if there were a compiler or linker
> > switch to just eliminate any duplicate symbols at compile time for
> > vmlinux. I filed this question on the binutils bugzilla looking to see
> > if there were existing flags that might do this, but H.J. Lu went ahead
> > and created a new one "-z unique", that seems to do what we would need
> > it to do.
> >
> > https://sourceware.org/bugzilla/show_bug.cgi?id=26391
> >
> > When I use this option, it renames any duplicate symbols with an
> > extension - for example duplicatefunc.1 or duplicatefunc.2. You could
> > either match on the full unique name of the specific binary you are
> > trying to patch, or you match the base name and use the extension to
> > determine original position. Do you think this solution would work?
>
> Yes, I think so (thanks, Joe, for testing!).
>
> It looks cleaner to me than the options above, but it may just be a matter
> of taste. Anyway, I'd go with full name matching, because -z unique-symbol
> would allow us to remove sympos altogether, which is appealing.
>
> > If
> > so, I can modify livepatch to refuse to patch on duplicated symbols if
> > CONFIG_FG_KASLR and when this option is merged into the tool chain I
> > can add it to KBUILD_LDFLAGS when CONFIG_FG_KASLR and livepatching
> > should work in all cases.
>
> Ok.
>
> Josh, Petr, would this work for you too?

Sounds good to me. Kristen, thanks for finding a solution!

--
Josh