(try3-resend) 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 <ffilzlnx@us.ibm.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> [Trond: Added an include for compat.h] Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
43b7c3f051
commit
3fa0b4e201
|
@ -37,6 +37,7 @@
|
|||
#include <linux/inet.h>
|
||||
#include <linux/nfs_xdr.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/compat.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
@ -89,7 +90,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;
|
||||
|
|
Loading…
Reference in New Issue