2010-12-02 19:32:21

by Frank Filz

[permalink] [raw]
Subject: Re: [PATCH] (try3) Fix nfs_compat_user_ino64 so it doesn't cause problems if bit 31 or 63 are set in fileid

>From c501e5e10c5e5b63412c99b2b16f5978738f61c2 Mon Sep 17 00:00:00 2001
From: Frank S. Filz <[email protected]>
Date: Thu, 2 Dec 2010 09:48:16 -0800
Subject: [PATCH] Fix nfs_compat_user_ino64 so it doesn't cause problems if bit 31 or 63 are set in fileid

The problem was use of an int32, which when converted to a uint64
is sign extended resulting in a fileid that doesn't fit in 32 bits
even though the intent of the function is to fit the fileid into
32 bits.

Signed-off-by: Frank Filz <[email protected]>
---
fs/nfs/inode.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 314f571..bc0b938 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -89,7 +89,11 @@ int nfs_wait_bit_killable(void *word)
*/
u64 nfs_compat_user_ino64(u64 fileid)
{
- int ino;
+#ifdef CONFIG_COMPAT
+ compat_ulong_t ino;
+#else
+ unsigned long ino;
+#endif

if (enable_ino64)
return fileid;
--
1.5.5.6