diff options
Diffstat (limited to 'fs/nfs/nfs4proc.c')
-rw-r--r-- | fs/nfs/nfs4proc.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index ab6b2e5c923e..81ccdbbb43e8 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -3908,8 +3908,15 @@ static void nfs4_construct_boot_verifier(struct nfs_client *clp, | |||
3908 | { | 3908 | { |
3909 | __be32 verf[2]; | 3909 | __be32 verf[2]; |
3910 | 3910 | ||
3911 | verf[0] = (__be32)clp->cl_boot_time.tv_sec; | 3911 | if (test_bit(NFS4CLNT_PURGE_STATE, &clp->cl_state)) { |
3912 | verf[1] = (__be32)clp->cl_boot_time.tv_nsec; | 3912 | /* An impossible timestamp guarantees this value |
3913 | * will never match a generated boot time. */ | ||
3914 | verf[0] = 0; | ||
3915 | verf[1] = (__be32)(NSEC_PER_SEC + 1); | ||
3916 | } else { | ||
3917 | verf[0] = (__be32)clp->cl_boot_time.tv_sec; | ||
3918 | verf[1] = (__be32)clp->cl_boot_time.tv_nsec; | ||
3919 | } | ||
3913 | memcpy(bootverf->data, verf, sizeof(bootverf->data)); | 3920 | memcpy(bootverf->data, verf, sizeof(bootverf->data)); |
3914 | } | 3921 | } |
3915 | 3922 | ||