Hi-
nfs4_create_sec_client() and nfs4_lookup_root_sec() both invoke rpcauth_create(). They check to see that it returned something that wasn't NULL.
As far as I can tell, rpcauth_create() reports an error by returning something that IS_ERR. It doesn't return NULL. nfs_init_server_rpcclient() appears to be correct.
The fix looks simple, but since I don't have any unit tests for this area of code, I was hoping you could take it from here.
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
On Jun 25, 2012, at 4:48 PM, Bryan Schumaker wrote:
> On 06/25/2012 04:43 PM, Chuck Lever wrote:
>> Hi-
>>
>> nfs4_create_sec_client() and nfs4_lookup_root_sec() both invoke rpcauth_create(). They check to see that it returned something that wasn't NULL.
>>
>> As far as I can tell, rpcauth_create() reports an error by returning something that IS_ERR. It doesn't return NULL. nfs_init_server_rpcclient() appears to be correct.
>>
>> The fix looks simple, but since I don't have any unit tests for this area of code, I was hoping you could take it from here.
>>
>
> Sure, I'll take a look at it. You're right, checking for an error code instead of NULL sounds like an easy fix.
I'm trying to call rpcauth_create() in a loop, as your code does, and the call is failing with -EEXIST on the GSS flavors. If you just check rpcauth_create's return code for NULL, you will miss this and think the call succeeded.
gss_pipes_dentries_create_net() doesn't seem to like being called twice.
--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com
On 06/25/2012 04:43 PM, Chuck Lever wrote:
> Hi-
>
> nfs4_create_sec_client() and nfs4_lookup_root_sec() both invoke rpcauth_create(). They check to see that it returned something that wasn't NULL.
>
> As far as I can tell, rpcauth_create() reports an error by returning something that IS_ERR. It doesn't return NULL. nfs_init_server_rpcclient() appears to be correct.
>
> The fix looks simple, but since I don't have any unit tests for this area of code, I was hoping you could take it from here.
>
Sure, I'll take a look at it. You're right, checking for an error code instead of NULL sounds like an easy fix.
- Bryan