On 8/24/22 11:48, Borislav Petkov wrote:
On Wed, Aug 24, 2022 at 11:43:10AM -0700, Dave Hansen wrote:
So, we don't have *ANY* control over where the compiler uses jump tables. The kernel just happened to add some code that uses them, fell over, and this adds a hack to get booting again.
Isn't this a bigger problem?
I had the same question already. Was thinking of maybe disabling the compiler from producing jump tables in the ident-mapped code. Tom's argument is that that might prevent the compiler from doing optimizations but I haven't talked to compiler folks whether those optimizations are even worth the effort.
Regardless, the potential problem is limited:
"# (jump-tables are implicitly disabled by RETPOLINE)"
Ahh, I missed the connection with retpoline. The ubiquity of RETPOLINE=y probably means we'll see more of these issues because people won't find them unless they're building and running weirdo configurations.
i.e., only RETPOLINE=n builds for now which should be a minority?
I guess when this explodes somewhere else again, we will have to generalize a fix.
Yep. It also reminds me to add RETPOLINE=n build to my tests.