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() Here is what I'm seeing: If rpc_alloc_task() fails, rpc_new_task() returns ERR_PTR(-ENOMEM) In rpc_run_task() we do task = rpc_new_task(task_setup_data); if (IS_ERR(task)) goto out; : : : out: return task; In nfs4_run_open_task() we do kref_get(&data->kref); : : : task = rpc_run_task(&task_setup_data) If (IS_ERR(task)) return PTR_ERR(task); What am I missing? steved. -- 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