• Chuck Lever's avatar
    NLM: client-side nlm_lookup_host() should avoid matching on srcaddr · a8d82d9b
    Chuck Lever authored
    Since commit c98451bd, the loop in nlm_lookup_host() unconditionally
    compares the host's h_srcaddr field to the incoming source address.
    For client-side nlm_host entries, both are always AF_UNSPEC, so this
    check is unnecessary.
    
    Since commit 781b61a6, which added support for AF_INET6 addresses to
    nlm_cmp_addr(), nlm_cmp_addr() now returns FALSE for AF_UNSPEC
    addresses, which causes nlm_lookup_host() to create a fresh nlm_host
    entry every time it is called on the client.
    
    These extra entries will eventually expire once the server is
    unmounted, so the impact of this regression, introduced with lockd
    IPv6 support in 2.6.28, should be minor.
    
    We could fix this by adding an arm in nlm_cmp_addr() for AF_UNSPEC
    addresses, but really, nlm_lookup_host() shouldn't be matching on the
    srcaddr field for client-side nlm_host lookups.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
    a8d82d9b
host.c 18 KB