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: David Howells <dhowells@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
5f7e08ca7b
commit
bd6dc742a4
@@ -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);
|
|
||||||
call->rxcall = NULL;
|
|
||||||
call->type->destructor(call);
|
|
||||||
afs_free_call(call);
|
|
||||||
_leave(" [error]");
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
rxrpc_kernel_end_call(call->rxcall);
|
||||||
|
call->rxcall = NULL;
|
||||||
|
call->type->destructor(call);
|
||||||
|
afs_free_call(call);
|
||||||
|
_leave(" [error]");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user