um: ubd: use 64-bit time_t where possible

The ubd code suffers from a possible y2038 overflow on 32-bit
architectures, both for the cow header and the os_file_modtime()
function.

Replace time_t with time64_t to extend the ubd_kern side as much
as possible.

Whether this makes a difference for the user side depends on
the host libc implementation that may use either 32-bit or 64-bit
time_t.

For the cow file format, the header contains an unsigned 32-bit
timestamp, which is good until y2106, passing this through a
'long long' gives us a consistent interpretation between 32-bit
and 64-bit um kernels.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann
2019-11-05 09:39:51 +01:00
orang tua 37e86e0fd0
melakukan 853bc0ab34
5 mengubah file dengan 12 tambahan dan 11 penghapusan

Melihat File

@@ -341,7 +341,7 @@ int os_file_size(const char *file, unsigned long long *size_out)
return 0;
}
int os_file_modtime(const char *file, unsigned long *modtime)
int os_file_modtime(const char *file, long long *modtime)
{
struct uml_stat buf;
int err;