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

Commit bd6dc742 authored by David Howells's avatar David Howells Committed by Linus Torvalds
Browse files

AFS: Use patched rxrpc_kernel_send_data() correctly



Fix afs_send_simple_reply() to accept a greater-than-zero return value from
rxrpc_kernel_send_data() as being a successful return rather than thinking it
an error and aborting the call.

rxrpc_kernel_send_data() previously returned zero incorrectly when it worked
successfully, but has been patched to return the number of bytes it
transmitted.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5f7e08ca
Loading
Loading
Loading
Loading
+10 −11
Original line number Original line Diff line number Diff line
@@ -792,6 +792,7 @@ void afs_send_simple_reply(struct afs_call *call, const void *buf, size_t len)
{
{
	struct msghdr msg;
	struct msghdr msg;
	struct iovec iov[1];
	struct iovec iov[1];
	int n;


	_enter("");
	_enter("");


@@ -806,22 +807,20 @@ void afs_send_simple_reply(struct afs_call *call, const void *buf, size_t len)
	msg.msg_flags		= 0;
	msg.msg_flags		= 0;


	call->state = AFS_CALL_AWAIT_ACK;
	call->state = AFS_CALL_AWAIT_ACK;
	switch (rxrpc_kernel_send_data(call->rxcall, &msg, len)) {
	n = rxrpc_kernel_send_data(call->rxcall, &msg, len);
	case 0:
	if (n >= 0) {
		_leave(" [replied]");
		_leave(" [replied]");
		return;
		return;

	}
	case -ENOMEM:
	if (n == -ENOMEM) {
		_debug("oom");
		_debug("oom");
		rxrpc_kernel_abort_call(call->rxcall, RX_USER_ABORT);
		rxrpc_kernel_abort_call(call->rxcall, RX_USER_ABORT);
	default:
	}
	rxrpc_kernel_end_call(call->rxcall);
	rxrpc_kernel_end_call(call->rxcall);
	call->rxcall = NULL;
	call->rxcall = NULL;
	call->type->destructor(call);
	call->type->destructor(call);
	afs_free_call(call);
	afs_free_call(call);
	_leave(" [error]");
	_leave(" [error]");
		return;
	}
}
}


/*
/*