coda: change Coda's user api to use 64-bit time_t in timespec
Move the 32-bit time_t problems to userspace. Link: http://lkml.kernel.org/r/8d089068823bfb292a4020f773922fbd82ffad39.1558117389.git.jaharkes@cs.cmu.edu Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Colin Ian King <colin.king@canonical.com> Cc: Dan Carpenter <dan.carpenter@oracle.com> Cc: David Howells <dhowells@redhat.com> Cc: Fabian Frederick <fabf@skynet.be> Cc: Mikko Rapeli <mikko.rapeli@iki.fi> Cc: Sam Protsenko <semen.protsenko@linaro.org> Cc: Yann Droneaud <ydroneaud@opteya.com> Cc: Zhouyang Jia <jiazhouyang09@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

vanhempi
6ced9aa7b5
commit
5e7c31dfe7
@@ -66,13 +66,8 @@ unsigned short coda_flags_to_cflags(unsigned short flags)
|
||||
return coda_flags;
|
||||
}
|
||||
|
||||
static struct timespec64 coda_to_timespec64(struct vtimespec ts)
|
||||
static struct timespec64 coda_to_timespec64(struct coda_timespec ts)
|
||||
{
|
||||
/*
|
||||
* We interpret incoming timestamps as 'signed' to match traditional
|
||||
* usage and support pre-1970 timestamps, but this breaks in y2038
|
||||
* on 32-bit machines.
|
||||
*/
|
||||
struct timespec64 ts64 = {
|
||||
.tv_sec = ts.tv_sec,
|
||||
.tv_nsec = ts.tv_nsec,
|
||||
@@ -81,12 +76,10 @@ static struct timespec64 coda_to_timespec64(struct vtimespec ts)
|
||||
return ts64;
|
||||
}
|
||||
|
||||
static struct vtimespec timespec64_to_coda(struct timespec64 ts64)
|
||||
static struct coda_timespec timespec64_to_coda(struct timespec64 ts64)
|
||||
{
|
||||
/* clamp the timestamps to the maximum range rather than wrapping */
|
||||
struct vtimespec ts = {
|
||||
.tv_sec = lower_32_bits(clamp_t(time64_t, ts64.tv_sec,
|
||||
LONG_MIN, LONG_MAX)),
|
||||
struct coda_timespec ts = {
|
||||
.tv_sec = ts64.tv_sec,
|
||||
.tv_nsec = ts64.tv_nsec,
|
||||
};
|
||||
|
||||
@@ -156,11 +149,11 @@ void coda_iattr_to_vattr(struct iattr *iattr, struct coda_vattr *vattr)
|
||||
vattr->va_uid = (vuid_t) -1;
|
||||
vattr->va_gid = (vgid_t) -1;
|
||||
vattr->va_size = (off_t) -1;
|
||||
vattr->va_atime.tv_sec = (long) -1;
|
||||
vattr->va_atime.tv_sec = (int64_t) -1;
|
||||
vattr->va_atime.tv_nsec = (long) -1;
|
||||
vattr->va_mtime.tv_sec = (long) -1;
|
||||
vattr->va_mtime.tv_sec = (int64_t) -1;
|
||||
vattr->va_mtime.tv_nsec = (long) -1;
|
||||
vattr->va_ctime.tv_sec = (long) -1;
|
||||
vattr->va_ctime.tv_sec = (int64_t) -1;
|
||||
vattr->va_ctime.tv_nsec = (long) -1;
|
||||
vattr->va_type = C_VNON;
|
||||
vattr->va_fileid = -1;
|
||||
|
Viittaa uudesa ongelmassa
Block a user