RFR: 8238566: java.security.Provider$Service.supportsParameter() is racy

Daniel Fuchs daniel.fuchs at oracle.com
Thu Mar 12 11:42:23 UTC 2020


Hi Valerie,

Please ignore my comment. Sorry for the noise.
I somehow clicked on the wrong webrev link :-(

best regards,

-- daniel

On 12/03/2020 11:35, Daniel Fuchs wrote:
> Hi Valerie,
> 
> Given that hasKeyAttributes is already decelared as volatile,
> may I suggest the following change that uses double locking?
> It will  avoid synchronizing in the happy case where `hasKeyAttributes`
> has already been computed.
> 
> 1924         private boolean hasKeyAttributes() {
> 1925             Boolean b = hasKeyAttributes;
>                   if (b != null) return b;
>                   synchronized (this) {
>                       b = hasKeyAttributes;
> 1926                 if (b != null) return b;
> 1927                 String s;
> 1928                 s = getAttribute("SupportedKeyFormats");
> 
>                       ...
> 
> 1948                 hasKeyAttributes = b;
> 1949             }
> 1950             return b;
> 1951         }
> 
> 
> best regards,
> 
> -- daniel
> 
> On 11/03/2020 20:31, Valerie Peng wrote:
>>
>> Anyone can help reviewing this?
>>
>> I addressed this by applying the double-checked-locking pattern for 
>> lazy initialization of instance fields.
>>
>> Existing code already have most of the code structured for the pattern 
>> but misses the second check.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8238566
>>
>> Webrev: http://cr.openjdk.java.net/~valeriep/8238566/webrev.00/
>>
>> Thanks,
>>
>> Valerie




More information about the security-dev mailing list