> http://cr.opensolaris.org/~gtb/6791302/webrev-O/
More comments: - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c All calls to cmn_err(CE_NOTE, "gtb: ..."... must go. But I'm sure you knew that. - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c:858-860 I don't think the cstyle requires it, but I prefer not putting curly braces around single statement bodies. In any case, be consistent: 858 + if (output_token.length != 0) { 859 + GSS_COPY_BUFFER(call_res.token, output_token); 860 + } 903 + if (free_mech_type && mech_type) 904 + kgss_free_oid(mech_type); I know, it was like that in the original... Plus, GSS_COPY_BUFFER already puts curly braces in there: #define GSS_COPY_BUFFER(dest, src) { \ (dest).length = (src).length; \ (dest).value = (src).value; } (For a macro used exactly twice that's a very ugly macro. Any reason why it can just eval to (dest) = (src)? Maybe dest and src are of diff types?) - Total nit: you can set *no_dispatch much earlier in rpcsec_gss_init(). It's OK to set it to TRUE and return an error. - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c:715-716 I don't get this comment. Can you explain a bit more? - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c:757-760 Another comment I don't understand. What's "Server_creds" and in what way was it "right"? - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c:808 "We have a failure... Don't dispatch. ..." Well, yes, but we never dispatch except in successful RPCSEC_GSS_DATA cases... - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c:1306-1307 "Kernel client" -- do you mean our NFS/RPCSEC_GSS client? Just remove this comment, even if you can't find a client to test this code path with, or perhaps just say that. (And no "XXX" -- GKs no likey.) - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c:1340-1345 1340 + (void) svc_sendreply(rqst->rq_xprt, xdr_void, NULL); 1341 + *no_dispatch = TRUE; 1342 + ASSERT(client_data->ref_cnt > 0); 1343 + client_data->ref_cnt--; 1344 + client_data->stale = TRUE; 1345 + mutex_exit(&client_data->clm); Do we want to call svc_sendreply() while holding a mutex?? See all other calls to svc_sendreply(), as well as the call to kgss_accept_sec_context() (since it upcalls, and therefore blocks). - usr/src/uts/common/rpc/sec_gss/svc_rpcsec_gss.c:rpcsec_gss_data() Hmmm, we do quite a bit of work while holding client_data->clm. Specifically, the calls to check_verf() and set_response_verf() should probably be done without holding that lock, but note that check_seq *must* be called with that lock held. If you want to file a separate CR for this, go ahead. Done. Nico --