mirror of
https://github.com/systemd/systemd
synced 2026-04-11 17:44:58 +02:00
Compare commits
2 Commits
4b7b73c714
...
04b457d8ef
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
04b457d8ef | ||
|
|
289b41aae7 |
@ -231,6 +231,14 @@ evdev:name:Asus Laptop extra buttons:dmi:bvn*:bvr*:bd*:svnASUS*:pn*:*
|
||||
evdev:input:b0003v0B05p1869*
|
||||
KEYBOARD_KEY_ff31007c=f20 # Remap micmute to f20
|
||||
|
||||
# Asus TF103C misses the home button in its PNP0C40 GPIO resources
|
||||
# causing the volume-button mappings to be off by one, correct this
|
||||
evdev:name:gpio-keys:phys:gpio-keys/input0:ev:3:dmi:*:svnASUSTeKCOMPUTERINC.:pnTF103C*:*
|
||||
KEYBOARD_KEY_1=volumeup
|
||||
|
||||
evdev:name:gpio-keys:phys:gpio-keys/input0:ev:100003:dmi:*:svnASUSTeKCOMPUTERINC.:pnTF103C*:*
|
||||
KEYBOARD_KEY_0=volumedown
|
||||
|
||||
###########################################################
|
||||
# BenQ
|
||||
###########################################################
|
||||
|
||||
@ -78,7 +78,8 @@ static inline int missing_memfd_create(const char *name, unsigned int flags) {
|
||||
/* ======================================================================= */
|
||||
|
||||
#if !HAVE_GETRANDOM
|
||||
static inline int missing_getrandom(void *buffer, size_t count, unsigned flags) {
|
||||
/* glibc says getrandom() returns ssize_t */
|
||||
static inline ssize_t missing_getrandom(void *buffer, size_t count, unsigned flags) {
|
||||
# ifdef __NR_getrandom
|
||||
return syscall(__NR_getrandom, buffer, count, flags);
|
||||
# else
|
||||
|
||||
@ -161,7 +161,6 @@ int genuine_random_bytes(void *p, size_t n, RandomFlags flags) {
|
||||
static int have_syscall = -1;
|
||||
_cleanup_close_ int fd = -1;
|
||||
bool got_some = false;
|
||||
int r;
|
||||
|
||||
/* Gathers some high-quality randomness from the kernel (or potentially mid-quality randomness from
|
||||
* the CPU if the RANDOM_ALLOW_RDRAND flag is set). This call won't block, unless the RANDOM_BLOCK
|
||||
@ -220,18 +219,19 @@ int genuine_random_bytes(void *p, size_t n, RandomFlags flags) {
|
||||
if (have_syscall != 0 && !HAS_FEATURE_MEMORY_SANITIZER) {
|
||||
|
||||
for (;;) {
|
||||
r = getrandom(p, n,
|
||||
ssize_t l;
|
||||
l = getrandom(p, n,
|
||||
(FLAGS_SET(flags, RANDOM_BLOCK) ? 0 : GRND_NONBLOCK) |
|
||||
(FLAGS_SET(flags, RANDOM_ALLOW_INSECURE) ? GRND_INSECURE : 0));
|
||||
if (r > 0) {
|
||||
if (l > 0) {
|
||||
have_syscall = true;
|
||||
|
||||
if ((size_t) r == n)
|
||||
if ((size_t) l == n)
|
||||
return 0; /* Yay, success! */
|
||||
|
||||
assert((size_t) r < n);
|
||||
p = (uint8_t*) p + r;
|
||||
n -= r;
|
||||
assert((size_t) l < n);
|
||||
p = (uint8_t*) p + l;
|
||||
n -= l;
|
||||
|
||||
if (FLAGS_SET(flags, RANDOM_EXTEND_WITH_PSEUDO)) {
|
||||
/* Fill in the remaining bytes using pseudo-random values */
|
||||
@ -248,7 +248,7 @@ int genuine_random_bytes(void *p, size_t n, RandomFlags flags) {
|
||||
/* Fill in the rest with /dev/urandom */
|
||||
break;
|
||||
|
||||
} else if (r == 0) {
|
||||
} else if (l == 0) {
|
||||
have_syscall = true;
|
||||
return -EIO;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user