rpc_timeout_scan uses the LIBNFS_LIST_REMOVE macro to remove items from rpc_queues, but doesn't set the queue.tail to NULL if every item in the queue was removed.

libnfs-4.0.0-vitalif
Daniel Abrecht 2017-10-14 13:46:19 +00:00
parent 2911afe9d0
commit 51476e50e1
1 changed files with 6 additions and 0 deletions

View File

@ -396,6 +396,9 @@ rpc_timeout_scan(struct rpc_context *rpc)
continue;
}
LIBNFS_LIST_REMOVE(&rpc->outqueue.head, pdu);
if (!rpc->outqueue.head) {
rpc->outqueue.tail = NULL;
}
rpc_set_error(rpc, "command timed out");
pdu->cb(rpc, RPC_STATUS_TIMEOUT,
NULL, pdu->private_data);
@ -416,6 +419,9 @@ rpc_timeout_scan(struct rpc_context *rpc)
continue;
}
LIBNFS_LIST_REMOVE(&q->head, pdu);
if (!q->head) {
q->tail = NULL;
}
rpc_set_error(rpc, "command timed out");
pdu->cb(rpc, RPC_STATUS_TIMEOUT,
NULL, pdu->private_data);