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