Hello,

When looking at the usages of 
`InstanceKlass::get_inline_type_field_klass_or_null` I saw that 
`SystemDictionary::try_preload_from_loadable_descriptors` uses the returned 
value even though it may be null, which can resolve in a SIGSGV. This change 
aligns well with what is done just above in 
`SystemDictionary::preload_from_null_free_field`, using the local variable 
`name` instead of getting the name from the klass.


Given the right conditions this will result in a crash, but it seems rare as it 
requires "the stars to be aligned just right" for it to happen.

I'm not sure how much testing testing there is for classes which have inlined 
and non-inlined fields in them in connection to the code being changed. Such 
classes would result in an inline_layout_info_array having null-entires, since 
it is a sparse array.

Testing:
* Oracle's tier1-3
* Testing with a local reproducer that this does not crash with the changes

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

-------------

Commit messages:
 - 8382560: [lworld] Unsafe access to klass name in 
SystemDictionary::try_preload_from_loadable_descriptors

Changes: https://git.openjdk.org/valhalla/pull/2344/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2344&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8382560
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.org/valhalla/pull/2344.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2344/head:pull/2344

PR: https://git.openjdk.org/valhalla/pull/2344

Reply via email to