On Tue, 11 Aug, at 02:16:25PM, Lee, Chun-Yi wrote: > + > +static unsigned long efi_get_rng64(efi_system_table_t *sys_table, > + void **rng_handle) > +{ > + const struct efi_config *efi_early = __efi_early(); > + efi_rng_protocol_64 *rng = NULL; > + efi_guid_t rng_proto = EFI_RNG_PROTOCOL_GUID; > + u64 *handles = (u64 *)(unsigned long)rng_handle; > + efi_status_t status; > + unsigned long rng_number; > + > + status = efi_call_early(handle_protocol, handles[0], > + &rng_proto, (void **)&rng); > + if (status != EFI_SUCCESS) > + efi_printk(sys_table, "Failed to get EFI_RNG_PROTOCOL handles\n"); > + > + if (status == EFI_SUCCESS && rng) { > + status = efi_early->call((unsigned long)rng->get_rng, rng, NULL, > + sizeof(rng_number), &rng_number); Actually, one thing just occurred to me - you're not passing an RNGAlgorithm value and are relying upon the firmware's default implementation. I don't think that's a safe bet, the default could be anything and might vary across implementations. Can we do a little better here and pick a "preferred" algorithm instead of the default? -- Matt Fleming, Intel Open Source Technology Center -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html