lkml.org 
[lkml]   [2014]   [May]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.14 070/158] nfsd: revert v2 half of "nfsd: dont return high mode bits"
    Date
    3.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "J. Bruce Fields" <bfields@redhat.com>

    commit 082f31a2169bd639785e45bf252f3d5bce0303c6 upstream.

    This reverts the part of commit 6e14b46b91fee8a049b0940333ce13a820beaaa5
    that changes NFSv2 behavior.

    Mark Lord found that it broke nfs-root for Linux clients, because it
    broke NFSv2.

    In fact, from RFC 1094:

    "Notice that the file type is specified both in the mode bits
    and in the file type. This is really a bug in the protocol and
    will be fixed in future versions."

    So NFSv2 clients really are expected to depend on the high bits of the
    mode.

    Reported-by: Mark Lord <mlord@pobox.com>
    Reviewed-by: Jeff Layton <jlayton@redhat.com>
    Signed-off-by: J. Bruce Fields <bfields@redhat.com>
    Cc: Johan Hovold <jhovold@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    fs/nfsd/nfsxdr.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    --- a/fs/nfsd/nfsxdr.c
    +++ b/fs/nfsd/nfsxdr.c
    @@ -152,7 +152,7 @@ encode_fattr(struct svc_rqst *rqstp, __b
    type = (stat->mode & S_IFMT);

    *p++ = htonl(nfs_ftypes[type >> 12]);
    - *p++ = htonl((u32) (stat->mode & S_IALLUGO));
    + *p++ = htonl((u32) stat->mode);
    *p++ = htonl((u32) stat->nlink);
    *p++ = htonl((u32) from_kuid(&init_user_ns, stat->uid));
    *p++ = htonl((u32) from_kgid(&init_user_ns, stat->gid));



    \
     
     \ /
      Last update: 2014-05-04 19:21    [W:4.096 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site