wireguard: selftests: set fake real time in init
Not all platforms have an RTC, and rather than trying to force one into each, it's much easier to just set a fixed time. This is necessary because WireGuard's latest handshakes parameter is returned in wallclock time, and if the system time isn't set, and the system is really fast, then this returns 0, which trips the test. Turning this on requires setting CONFIG_COMPAT_32BIT_TIME=y, as musl doesn't support settimeofday without it. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
faa4e04e5e
commit
829be057db
@ -7,6 +7,7 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_VIRTIO_MENU=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyAMA0 wg.success=vport0p1 panic_on_warn=1"
|
||||
CONFIG_FRAME_WARN=1024
|
||||
|
@ -7,6 +7,7 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||
CONFIG_VIRTIO_MENU=y
|
||||
CONFIG_VIRTIO_MMIO=y
|
||||
CONFIG_VIRTIO_CONSOLE=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyAMA0 wg.success=vport0p1 panic_on_warn=1"
|
||||
CONFIG_CPU_BIG_ENDIAN=y
|
||||
|
@ -1,6 +1,7 @@
|
||||
CONFIG_ACPI=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0 wg.success=ttyS1 panic_on_warn=1"
|
||||
CONFIG_FRAME_WARN=1024
|
||||
|
@ -5,5 +5,6 @@ CONFIG_MAC=y
|
||||
CONFIG_SERIAL_PMACZILOG=y
|
||||
CONFIG_SERIAL_PMACZILOG_TTYS=y
|
||||
CONFIG_SERIAL_PMACZILOG_CONSOLE=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CMDLINE="console=ttyS0 wg.success=ttyS1 panic_on_warn=1"
|
||||
CONFIG_FRAME_WARN=1024
|
||||
|
@ -6,6 +6,7 @@ CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0 wg.success=ttyS1 panic_on_warn=1"
|
||||
CONFIG_FRAME_WARN=1024
|
||||
|
@ -7,6 +7,7 @@ CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0 wg.success=ttyS1 panic_on_warn=1"
|
||||
CONFIG_FRAME_WARN=1024
|
||||
|
@ -4,6 +4,7 @@ CONFIG_PPC_85xx=y
|
||||
CONFIG_PHYS_64BIT=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_COMPAT_32BIT_TIME=y
|
||||
CONFIG_MATH_EMULATION=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0 wg.success=ttyS1 panic_on_warn=1"
|
||||
|
@ -11,6 +11,7 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/mount.h>
|
||||
#include <sys/stat.h>
|
||||
@ -70,6 +71,15 @@ static void seed_rng(void)
|
||||
close(fd);
|
||||
}
|
||||
|
||||
static void set_time(void)
|
||||
{
|
||||
if (time(NULL))
|
||||
return;
|
||||
pretty_message("[+] Setting fake time...");
|
||||
if (stime(&(time_t){1433512680}) < 0)
|
||||
panic("settimeofday()");
|
||||
}
|
||||
|
||||
static void mount_filesystems(void)
|
||||
{
|
||||
pretty_message("[+] Mounting filesystems...");
|
||||
@ -259,6 +269,7 @@ int main(int argc, char *argv[])
|
||||
print_banner();
|
||||
mount_filesystems();
|
||||
seed_rng();
|
||||
set_time();
|
||||
kmod_selftests();
|
||||
enable_logging();
|
||||
clear_leaks();
|
||||
|
Loading…
Reference in New Issue
Block a user