diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-06-12 15:05:50 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-06-25 16:42:42 +0200 |
commit | 868bdd798190a689ddebf1fff7c41509e73c7cc0 (patch) | |
tree | eda7b6e3f06ea2e5ae20c175944a433231681b4c /src/cookie.c | |
parent | 07b71d592d4c172f3311e91a36b65e98cae68198 (diff) |
global: switch to coarse ktime
Coarse ktime is broken until [1] in 5.2 and kernels without the
backport, so we use fallback code there.
The fallback code has also been improved significantly. It now only uses
slower clocks on kernels < 3.17, at the expense of some accuracy we're
not overly concerned about.
[1] https://lore.kernel.org/lkml/tip-e3ff9c3678b4d80e22d2557b68726174578eaf52@git.kernel.org/
Suggested-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src/cookie.c')
-rw-r--r-- | src/cookie.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/cookie.c b/src/cookie.c index a2ddbcd..8b7d1fe 100644 --- a/src/cookie.c +++ b/src/cookie.c @@ -20,7 +20,7 @@ void wg_cookie_checker_init(struct cookie_checker *checker, struct wg_device *wg) { init_rwsem(&checker->secret_lock); - checker->secret_birthdate = ktime_get_boot_fast_ns(); + checker->secret_birthdate = ktime_get_coarse_boottime_ns(); get_random_bytes(checker->secret, NOISE_HASH_LEN); checker->device = wg; } @@ -96,7 +96,7 @@ static void make_cookie(u8 cookie[COOKIE_LEN], struct sk_buff *skb, if (wg_birthdate_has_expired(checker->secret_birthdate, COOKIE_SECRET_MAX_AGE)) { down_write(&checker->secret_lock); - checker->secret_birthdate = ktime_get_boot_fast_ns(); + checker->secret_birthdate = ktime_get_coarse_boottime_ns(); get_random_bytes(checker->secret, NOISE_HASH_LEN); up_write(&checker->secret_lock); } @@ -222,7 +222,7 @@ void wg_cookie_message_consume(struct message_handshake_cookie *src, if (ret) { down_write(&peer->latest_cookie.lock); memcpy(peer->latest_cookie.cookie, cookie, COOKIE_LEN); - peer->latest_cookie.birthdate = ktime_get_boot_fast_ns(); + peer->latest_cookie.birthdate = ktime_get_coarse_boottime_ns(); peer->latest_cookie.is_valid = true; peer->latest_cookie.have_sent_mac1 = false; up_write(&peer->latest_cookie.lock); |