Looks good to me.
/Jesper

> On 11 Jun 2018, at 22:42, Erik Joelsson <erik.joels...@oracle.com> wrote:
> 
> Hello,
> 
> Based on the discussion here, I have reverted back to something more similar 
> to webrev.02, but with a few changes. Mainly fixing a bug that caused 
> JVM_FEATURES_hardened to not actually be the same as for server (if you have 
> custom additions in configure). I also added a check so that configure fails 
> if you try to enable either variant hardened or feature no-speculative-cti 
> and the flags aren't available.
> 
> Webrev: http://cr.openjdk.java.net/~erikj/8202384/webrev.05/index.html
> 
> /Erik
> 
> On 2018-06-11 00:10, Magnus Ihse Bursie wrote:
>> On 2018-06-08 23:50, Erik Joelsson wrote:
>>> On 2018-06-07 17:30, David Holmes wrote:
>>>> On 8/06/2018 6:11 AM, Erik Joelsson wrote:
>>>>> I just don't think the extra work is warranted or should be prioritized 
>>>>> at this point. I also cannot think of a combination of options required 
>>>>> for what you are suggesting that wouldn't be confusing to the user. If 
>>>>> someone truly feels like these flags are forced on them and can't live 
>>>>> with them, we or preferably that person can fix it then. I don't think 
>>>>> that's dictatorship. OpenJDK is still open source and anyone can 
>>>>> contribute.
>>>> 
>>>> I don't see why --enable-hardened-jdk and --enable-hardened-hotspot to add 
>>>> to the right flags would be either complicated or confusing.
>>>> 
>>> For me the confusion surrounds the difference between 
>>> --enable-hardened-hotspot and --with-jvm-variants=server, hardened and 
>>> making the user understand it. But sure, it is doable. Here is a new webrev 
>>> with those two options as I interpret them. Here is the help text:
>>> 
>>>  --enable-hardened-jdk   enable hardenening compiler flags for all jdk
>>>                           libraries (except the JVM), typically disabling
>>>                           speculative cti. [disabled]
>>>  --enable-hardened-hotspot
>>>                           enable hardenening compiler flags for hotspot (all
>>>                           jvm variants), typically disabling speculative 
>>> cti.
>>>                           To make hardening of hotspot a runtime choice,
>>>                           consider the "hardened" jvm variant instead of 
>>> this
>>>                           option. [disabled]
>>> 
>>> Note that this changes the default for jdk libraries to not enable 
>>> hardening unless the user requests it.
>>> 
>>> Webrev: http://cr.openjdk.java.net/~erikj/8202384/webrev.04/
>> 
>> Hold it, hold it! I'm not sure how we ended up here, but I don't like it at 
>> all. :-(
>> 
>> I think Eriks initial patch is much better than this. Some arguments in 
>> random order to defend this position:
>> 
>> 1) Why should we have a configure option to disable security relevant flags 
>> for the JDK, if there has been no measured negative effect? We don't do this 
>> for any other compiler flags, especially not security relevant ones!
>> 
>> I've re-read the entire thread to see if I could understand what could 
>> possibly motivate this, but the only thing I can find is David Holmes vague 
>> fear that these flags would not be well-tested enough. Let me counter with 
>> my own vague guesses: I believe the spectre mitigation methods to have been 
>> fully and properly tested, since they are rolled-out massively on all 
>> products. And let me complement with my own fear: the PR catastrophe if 
>> OpenJDK were *not* built with spectre mitigations, and someone were to 
>> exploit that!
>> 
>> In fact, I could even argue that "server" should be hardened *by default*, 
>> and that we should instead introduce a non-hardened JVM named something akin 
>> to "quick-but-dangerous-server" instead. But I realize that a 25% 
>> performance hit is hard to swallow, so I won't push this agenda.
>> 
>> 2) It is by no means clear that "--enable-hardened-jdk" does not harden all 
>> aspects of the JDK! If we should keep the option (which I definitely do not 
>> think we should!) it should be renamed to "--enable-hardened-libraries", or 
>> something like that. And it should be on by default, so it should be a 
>> "--disabled-hardened-jdk-libraries".
>> 
>> Also, the general-sounding name "hardened" sounds like it might encompass 
>> more things than it does. What if I disabled a hardened jdk build, should I 
>> still get stack banging protection? If so, you need to move a lot more 
>> security-related flags to this option. (And, just to be absolutely clear: I 
>> don't think you should do that.)
>> 
>> 3) Having two completely different ways of turning on Spectre protection for 
>> hotspot is just utterly confusing! This was a perfect example of how to use 
>> the JVM features, just as in the original patch.
>> 
>> If you want to have spectre mitigation enabled for both server and client, 
>> by default, you would just need to run "configure 
>> --with-jvm-variants=server,client --with-jvm-features=no-speculative-cti", 
>> which will enable that feature for all variants. That's not really hard *at 
>> all* for anyone building OpenJDK. And it's way clearer what will happen, 
>> than a --enable-hardened-hotspot.
>> 
>> 4) If you are a downstream provider building OpenJDK and you are dead set on 
>> not including Spectre mitigations in the JDK libraries, despite being shown 
>> to have no negative effects, then you can do just as any other downstream 
>> user with highly specialized requirements, and patch the source. I have no 
>> sympathies for this; I can't stop it but I don't think there's any reason 
>> for us to complicate the code to support this unlikely case.
>> 
>> So, to recap, I think the webrev as published in 
>> http://cr.openjdk.java.net/~erikj/8202384/webrev.02/ (with "altserver" 
>> renamed to "hardened") is the way to go.
>> 
>> /Magnus
>> 
>> 
>> 
>>> 
>>> /Erik
>> 
> 

Reply via email to