]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - fs/nfs/client.c
Merge branch 'for-linus' of git://ceph.newdream.net/git/ceph-client
[karo-tx-linux.git] / fs / nfs / client.c
index 5833fbbf59b05532638cedc7aea694c137b4e534..873bf00d51a2b8d000ef9d45bdb9f139186ec6e5 100644 (file)
@@ -336,11 +336,12 @@ static int nfs_sockaddr_match_ipaddr6(const struct sockaddr *sa1,
        const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sa1;
        const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sa2;
 
-       if (ipv6_addr_scope(&sin1->sin6_addr) == IPV6_ADDR_SCOPE_LINKLOCAL &&
-           sin1->sin6_scope_id != sin2->sin6_scope_id)
+       if (!ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr))
                return 0;
+       else if (ipv6_addr_type(&sin1->sin6_addr) & IPV6_ADDR_LINKLOCAL)
+               return sin1->sin6_scope_id == sin2->sin6_scope_id;
 
-       return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr);
+       return 1;
 }
 #else  /* !defined(CONFIG_IPV6) && !defined(CONFIG_IPV6_MODULE) */
 static int nfs_sockaddr_match_ipaddr6(const struct sockaddr *sa1,
@@ -1867,6 +1868,10 @@ static int nfs_server_list_show(struct seq_file *m, void *v)
        /* display one transport per line on subsequent lines */
        clp = list_entry(v, struct nfs_client, cl_share_link);
 
+       /* Check if the client is initialized */
+       if (clp->cl_cons_state != NFS_CS_READY)
+               return 0;
+
        seq_printf(m, "v%u %s %s %3d %s\n",
                   clp->rpc_ops->version,
                   rpc_peeraddr2str(clp->cl_rpcclient, RPC_DISPLAY_HEX_ADDR),