• Chuck Lever's avatar
    NFS: Clean up debugging in decode_pathname() · 02a2976c
    Chuck Lever authored
    I noticed recently that decode_attr_fs_locations() is not generating
    very pretty debugging output.  The pathname components each appear on
    a separate line of output, though that does not appear to be the
    intended display behavior.  The preferred way to generate continued
    lines of output on the console is to use pr_cont().
    
    Note that incoming pathname4 components contain a string that is not
    necessarily NUL-terminated.  I did actually see some trailing garbage
    on the console.  In addition to correcting the line continuation
    problem, add a string precision format specifier to ensure that each
    component string is displayed properly, and that vsnprintf() does
    not Oops.
    
    Someone pointed out that allowing incoming network data to possibly
    generate a console line of unbounded length may not be such a good
    idea.  Since this output will rarely be enabled, and there is a hard
    upper bound (NFS4_PATHNAME_MAXCOMPONENTS) in our implementation, this
    is probably not a major concern.
    
    It might be useful to additionally sanity-check the length of each
    incoming component, however.  RFC 3530bis15 does not suggest a maximum
    number of UTF-8 characters per component for either the pathname4 or
    component4 types.  However, we could invent one that is appropriate
    for our implementation.
    
    Another possibility is to scrap all of this and print these pathnames
    in upper layers after a reasonable amount of sanity checking in the
    XDR layer.  This would give us an opportunity to allocate a full
    buffer so that the whole pathname would be output via a single
    dprintk.
    
    Introduced by commit 7aaa0b3b: "NFSv4: convert fs-locations-components
    to conform to RFC3530," (June 9, 2006).
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    02a2976c
nfs4xdr.c 186 KB