NFS: Clean up address comparison in __nfs_find_client()
The address comparison in the __nfs_find_client() function is deceptive. It uses a memcmp() to check a pair of u32 fields for equality. Not only is this inefficient, but usually memcmp() is used for comparing two *whole* sockaddr_in's (which includes comparisons of the address family and port number), so it's easy to mistake the comparison here for a whole sockaddr comparison, which it isn't. So for clarity and efficiency, we replace the memcmp() with a simple test for equality between the two s_addr fields. This should have no behavioral effect. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
6a0ed1de8e
commit
d45273ed6f
|
@ -220,8 +220,7 @@ static struct nfs_client *__nfs_find_client(const struct sockaddr_in *addr, int
|
|||
if (clp->cl_nfsversion != nfsversion)
|
||||
continue;
|
||||
|
||||
if (memcmp(&clp->cl_addr.sin_addr, &addr->sin_addr,
|
||||
sizeof(clp->cl_addr.sin_addr)) != 0)
|
||||
if (clp->cl_addr.sin_addr.s_addr != addr->sin_addr.s_addr)
|
||||
continue;
|
||||
|
||||
if (!match_port || clp->cl_addr.sin_port == addr->sin_port)
|
||||
|
|
Loading…
Reference in New Issue