diff options
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/cmd/fs.d/nfs/mountd/nfsauth.c | 15 | ||||
| -rw-r--r-- | usr/src/uts/common/rpc/clnt_clts.c | 2 | ||||
| -rw-r--r-- | usr/src/uts/common/rpc/clnt_cots.c | 5 |
3 files changed, 19 insertions, 3 deletions
diff --git a/usr/src/cmd/fs.d/nfs/mountd/nfsauth.c b/usr/src/cmd/fs.d/nfs/mountd/nfsauth.c index 4890a6a129..6b29434d03 100644 --- a/usr/src/cmd/fs.d/nfs/mountd/nfsauth.c +++ b/usr/src/cmd/fs.d/nfs/mountd/nfsauth.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -74,7 +74,7 @@ nfsauth_access(auth_req *argp, auth_res *result) nbuf.buf = argp->req_client.n_bytes; if (nbuf.len == 0 || nbuf.buf == NULL) - return; + goto done; if (netdir_getbyaddr(nconf, &clnames, &nbuf)) { host = &tmp[0]; @@ -93,6 +93,17 @@ nfsauth_access(auth_req *argp, auth_res *result) } clnames = anon_client(host); } + /* + * Both netdir_getbyaddr() and anon_client() can return a NULL + * clnames. This has been seen when the DNS entry for the client + * name does not have the correct format or a reverse lookup DNS + * entry cannot be found for the client's IP address. + */ + if (clnames == NULL) { + syslog(LOG_ERR, "Could not find DNS entry for %s", + argp->req_netid); + goto done; + } /* * Now find the export diff --git a/usr/src/uts/common/rpc/clnt_clts.c b/usr/src/uts/common/rpc/clnt_clts.c index e42d15644f..b4386df80c 100644 --- a/usr/src/uts/common/rpc/clnt_clts.c +++ b/usr/src/uts/common/rpc/clnt_clts.c @@ -2210,6 +2210,8 @@ done_xid_copy: if (e->call_zoneid != zoneid) { mutex_exit(&e->call_lock); mutex_exit(&chtp->ct_lock); + RPCLOG0(8, "clnt_dispatch_notify (clts): incorrect " + "zoneid\n"); freemsg(mp); return; } diff --git a/usr/src/uts/common/rpc/clnt_cots.c b/usr/src/uts/common/rpc/clnt_cots.c index 85874c885a..08e02ad74a 100644 --- a/usr/src/uts/common/rpc/clnt_cots.c +++ b/usr/src/uts/common/rpc/clnt_cots.c @@ -2667,8 +2667,10 @@ connmgr_connect( e->call_status = RPC_INTR; else if (error == ETIME) e->call_status = RPC_TIMEDOUT; - else if (error == EPROTO) + else if (error == EPROTO) { e->call_status = RPC_SYSTEMERROR; + e->call_reason = EPROTO; + } RPCLOG(8, "connmgr_connect: can't connect, status: " "%s\n", clnt_sperrno(e->call_status)); @@ -3022,6 +3024,7 @@ done_xid_copy: if (e->call_zoneid != zoneid) { mutex_exit(&e->call_lock); mutex_exit(&chtp->ct_lock); + RPCLOG0(1, "clnt_dispatch_notify: incorrect zoneid\n"); return (FALSE); } |
