| Summary: | 64 bit time and seccomp conflict (OpenSSH server crash) | ||
|---|---|---|---|
| Product: | buildroot | Reporter: | Lacky <alacki93> |
| Component: | Other | Assignee: | unassigned |
| Status: | RESOLVED FIXED | ||
| Severity: | major | CC: | buildroot, yann.morin.1998 |
| Priority: | P5 | ||
| Version: | 2022.02 | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | Linux | ||
| Host: | Target: | ||
| Build: | |||
|
Description
Lacky
2022-05-10 06:54:57 UTC
Peter Korsgaard and I finally had a look at this today, and we think we finally understand what is going on. glibc does not care about the kernel headers when deciding whether to use the clock_gettime64() syscall or not: it always use it, and if that fails at runtime, it falls back to clock_gettime(). This is how glibc ends up using clock_gettime64() even if your kernel does not support it. On the other hand, the OpenSSL seccomp code relies on kernel headers to decide whether the clock_gettime64() syscall should be in the allowed list of syscalls or not. So when you are in a situation where glibc is recent, but your kernel is older, you get into precisely the problem you have: glibc tries to use clock_gettime64, but OpenSSH seccomp configuration prevents that, which does not allow glibc to gracefully fallback to clock_gettime. The only solution that we see is to disable seccomp support in OpenSSH. Peter will send a patch for this. I will keep this bug open until this patch is posted and hopefully merged. Lacky, All, Thanks for the report. We believe this has now been fixed with commit f204766b8fd8 (package/openssh: allow sandboxing to be disabled as workaround for seccomp issues) from Peter, that has just been applied. I've now closed this bug report. If there is still an issue, please reopen. Regards, Yann E. MORIN. |