The bytes_compl and pkts_compl pointers passed to ef4_dequeue_buffers cannot be NULL. Add a paranoid warning to check this condition and fix the one case where they were NULL.
Signed-off-by: Young Xiao <92siuy...@gmail.com> --- drivers/net/ethernet/sfc/falcon/tx.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/sfc/falcon/tx.c b/drivers/net/ethernet/sfc/falcon/tx.c index c5059f4..ed89bc6 100644 --- a/drivers/net/ethernet/sfc/falcon/tx.c +++ b/drivers/net/ethernet/sfc/falcon/tx.c @@ -69,6 +69,7 @@ static void ef4_dequeue_buffer(struct ef4_tx_queue *tx_queue, } if (buffer->flags & EF4_TX_BUF_SKB) { + EF4_WARN_ON_PARANOID(!pkts_compl || !bytes_compl); (*pkts_compl)++; (*bytes_compl) += buffer->skb->len; dev_consume_skb_any((struct sk_buff *)buffer->skb); @@ -271,12 +272,14 @@ static int ef4_tx_map_data(struct ef4_tx_queue *tx_queue, struct sk_buff *skb) static void ef4_enqueue_unwind(struct ef4_tx_queue *tx_queue) { struct ef4_tx_buffer *buffer; + unsigned int bytes_compl = 0; + unsigned int pkts_compl = 0; /* Work backwards until we hit the original insert pointer value */ while (tx_queue->insert_count != tx_queue->write_count) { --tx_queue->insert_count; buffer = __ef4_tx_queue_get_insert_buffer(tx_queue); - ef4_dequeue_buffer(tx_queue, buffer, NULL, NULL); + ef4_dequeue_buffer(tx_queue, buffer, &pkts_compl, &bytes_compl); } } -- 2.7.4