• Lin Feng Shen's avatar
    [PATCH] NFS: fix error handling on access_ok in compat_sys_nfsservctl · d64b1c87
    Lin Feng Shen authored
    Functions compat_nfs_svc_trans, compat_nfs_clnt_trans,
    compat_nfs_exp_trans, compat_nfs_getfd_trans and compat_nfs_getfs_trans,
    which are called by compat_sys_nfsservctl(fs/compat.c), don't handle the
    return value of access_ok properly.  access_ok return 1 when the addr is
    valid, and 0 when it's not, but these functions have the reversed
    understanding.  When the address is valid, they always return -EFAULT to
    compat_sys_nfsservctl.
    
    An example is to run /usr/sbin/rpc.nfsd(32bit program on Power5).  It
    doesn't function as expected.  strace showes that nfsservctl returns
    -EFAULT.
    
    The patch fixes this by correcting the error handling on the return value
    of access_ok in the five functions.
    Signed-off-by: default avatarLin Feng Shen <shenlinf@cn.ibm.com>
    Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
    Acked-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    d64b1c87
compat.c 52.5 KB