mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-10-24 04:09:07 +03:00
linuxkm/lkcapi_sha_glue.c: in wc_get_random_bytes_user() and wc_extract_crng_user(), map -EINTR from rng_invalidation_pre_check() to -ERESTARTSYS, for proper SA_RESTART dynamics, matching in-tree get_random_bytes_user().
This commit is contained in:
@@ -4272,7 +4272,10 @@ static ssize_t wc_get_random_bytes_user(struct iov_iter *iter) {
|
||||
ret = rng_invalidation_pre_check(¤t_default_wc_rng_bank->root_rng, iov_iter_count(iter));
|
||||
if (ret != 0) {
|
||||
(void)wc_rng_bank_default_checkin(¤t_default_wc_rng_bank);
|
||||
return ret;
|
||||
if (ret == -WC_NO_ERR_TRACE(EINTR))
|
||||
return -ERESTARTSYS; /* as at the end with no output -- SA_RESTART contract */
|
||||
else
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -4372,7 +4375,10 @@ static ssize_t wc_extract_crng_user(void __user *buf, size_t nbytes) {
|
||||
ret = rng_invalidation_pre_check(¤t_default_wc_rng_bank->root_rng, nbytes);
|
||||
if (ret != 0) {
|
||||
(void)wc_rng_bank_default_checkin(¤t_default_wc_rng_bank);
|
||||
return ret;
|
||||
if (ret == -WC_NO_ERR_TRACE(EINTR))
|
||||
return -ERESTARTSYS; /* as at the end with no output -- SA_RESTART contract */
|
||||
else
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user