diff options
author | Jan Glauber <jang@linux.vnet.ibm.com> | 2011-01-05 06:47:59 -0500 |
---|---|---|
committer | Martin Schwidefsky <sky@mschwide.boeblingen.de.ibm.com> | 2011-01-05 06:47:29 -0500 |
commit | aa3a41d009d433dd9775b356b2d70551816f1f3c (patch) | |
tree | b1ea7f491edfef628ccd663e1a762f42119114b2 /drivers/s390 | |
parent | 4bc4e965d3e86897e4c7c487a477ccdf13db5b82 (diff) |
[S390] qeth: buffer count imbalance
The used buffers counter is not incremented in case of an error so
the counter can become negative. Increment the used buffers counter
before checking for errors.
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390')
-rw-r--r-- | drivers/s390/net/qeth_core_main.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/net/qeth_core_main.c b/drivers/s390/net/qeth_core_main.c index f65320babf71..29f848bfc12f 100644 --- a/drivers/s390/net/qeth_core_main.c +++ b/drivers/s390/net/qeth_core_main.c | |||
@@ -2840,6 +2840,7 @@ static void qeth_flush_buffers(struct qeth_qdio_out_q *queue, int index, | |||
2840 | queue->card->perf_stats.outbound_do_qdio_time += | 2840 | queue->card->perf_stats.outbound_do_qdio_time += |
2841 | qeth_get_micros() - | 2841 | qeth_get_micros() - |
2842 | queue->card->perf_stats.outbound_do_qdio_start_time; | 2842 | queue->card->perf_stats.outbound_do_qdio_start_time; |
2843 | atomic_add(count, &queue->used_buffers); | ||
2843 | if (rc) { | 2844 | if (rc) { |
2844 | queue->card->stats.tx_errors += count; | 2845 | queue->card->stats.tx_errors += count; |
2845 | /* ignore temporary SIGA errors without busy condition */ | 2846 | /* ignore temporary SIGA errors without busy condition */ |
@@ -2853,7 +2854,6 @@ static void qeth_flush_buffers(struct qeth_qdio_out_q *queue, int index, | |||
2853 | qeth_schedule_recovery(queue->card); | 2854 | qeth_schedule_recovery(queue->card); |
2854 | return; | 2855 | return; |
2855 | } | 2856 | } |
2856 | atomic_add(count, &queue->used_buffers); | ||
2857 | if (queue->card->options.performance_stats) | 2857 | if (queue->card->options.performance_stats) |
2858 | queue->card->perf_stats.bufs_sent += count; | 2858 | queue->card->perf_stats.bufs_sent += count; |
2859 | } | 2859 | } |