Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cf12869 authored by Nathaniel Wesley Filardo's avatar Nathaniel Wesley Filardo Committed by David Howells
Browse files

AFS: Part of afs_end_call() is identical to code elsewhere, so split it



Split afs_end_call() into two pieces, one of which is identical to code in
afs_process_async_call().  Replace the latter with a call to the first part of
afs_end_call().

Signed-off-by: default avatarNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
parent 6c67c7c3
Loading
Loading
Loading
Loading
+13 −7
Original line number Diff line number Diff line
@@ -184,15 +184,24 @@ static void afs_free_call(struct afs_call *call)
}

/*
 * End a call
 * End a call but do not free it
 */
static void afs_end_call(struct afs_call *call)
static void afs_end_call_nofree(struct afs_call *call)
{
	if (call->rxcall) {
		rxrpc_kernel_end_call(call->rxcall);
		call->rxcall = NULL;
	}
	if (call->type->destructor)
		call->type->destructor(call);
}

/*
 * End a call and free it
 */
static void afs_end_call(struct afs_call *call)
{
	afs_end_call_nofree(call);
	afs_free_call(call);
}

@@ -640,10 +649,7 @@ static void afs_process_async_call(struct work_struct *work)
		call->reply = NULL;

		/* kill the call */
		rxrpc_kernel_end_call(call->rxcall);
		call->rxcall = NULL;
		if (call->type->destructor)
			call->type->destructor(call);
		afs_end_call_nofree(call);

		/* we can't just delete the call because the work item may be
		 * queued */