Skip to content
  • Sébastien Szymanski's avatar
    net: nfs: fix file handle length in NFSv3 · d2986567
    Sébastien Szymanski authored and Tom Rini's avatar Tom Rini committed
    The NFS protocol uses file handles to refer to file or directory.
    In NFSv2 file handles have a fixed size of 32 bytes.
    In NFSv3 file handles have a variable length up to 64 bytes. This is
    also true for the MOUNT protocol. [1]
    When the NFSv3 server replies with a file handle length > 32 bytes, U-Boot
    only copies 32 bytes of that file handle and the next LOOKUP Call fails:
    
    BIOS> nfs ${loadaddr} 192.168.1.51:/nfsroot/opos93dev-br/boot/Image
    Using ethernet@428a0000 device
    File transfer via NFS from server 192.168.1.51; our IP address is 192.168.1.133
    Filename '/nfsroot/opos93dev-br/boot/Image'.
    Load address: 0x80400000
    Loading: *** ERROR: File lookup fail
    
    done
    BIOS>
    
    Looking at this transfer in Wireshark, we can see that the server
    replies with the following file handle:
    
        length: 36
        [hash (CRC-32): 0x230ac67b]
        FileHandle: 0100070101005e000000000091763911f87c449fa73c298552db19ba0c9f60002980cfd2
    
    and U-Boot sends the following file handle in the next LOOKU...
    d2986567