Re: [PATCH] NFSv4: Memory not being freed on memory allocation failure

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mar 26, 2014, at 10:48, Steve Dickson <SteveD@xxxxxxxxxx> wrote:

> 
> 
> On 03/26/2014 01:25 PM, Trond Myklebust wrote:
>> 
>> On Mar 26, 2014, at 8:50, Steve Dickson <steved@xxxxxxxxxx> wrote:
>> 
>>> nfs4_run_open_task() puts a ref count on the nfs4_opendata
>>> data pointer, then tries to allocate the task pointer.
>>> If that task allocation fails nfs4_run_open_task() returns
>>> leaving the ref count on the data pointer.
>>> 
>> 
>> Hi Steve,
>> 
>> That should not be the case. rpc_run_task() will always call nfs4_open_release() even if it returns an error.
> How can rpc_run_task() run without a task pointer? and I think 
> you need a task allocated pointer to even call nfs4_open_release()

No. nfs4_open_release() is called without an rpc task. This is how it is designed to work.

> 
> Here is what I'm seeing:
> 
> If rpc_alloc_task() fails, rpc_new_task() returns ERR_PTR(-ENOMEM)

Yes, but before returning ERR_PTR(-ENOMEM), it calls

rpc_release_calldata(setup_data->callback_ops, setup_data->callback_data);

which again calls rpc_ops->rpc_release(calldata)

_________________________________
Trond Myklebust
Linux NFS client maintainer, PrimaryData
trond.myklebust@xxxxxxxxxxxxxxx

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux