]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
s390/qdio: fix atomic_sub() misusage
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Mon, 16 Sep 2013 04:59:50 +0000 (06:59 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 17 Oct 2013 07:25:57 +0000 (09:25 +0200)
get_inbound_buffer_frontier() makes use of the return value of atomic_sub()
which shouldn't work, since atomic_sub() is supposed to return void.
This only works on s390 because atomic_sub() gets mapped to atomic_sub_return()
with a define without changing it's return value to void.

So use atomic_sub_return() instead of atomic_sub() in qeth code before fixing
atomic ops.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/cio/qdio_main.c

index 8ed52aa4912269405158e300f1c983577b29caec..556e2b8612ad1380ae72c1797f561a24f19a3b71 100644 (file)
@@ -528,7 +528,7 @@ static int get_inbound_buffer_frontier(struct qdio_q *q)
        case SLSB_P_INPUT_PRIMED:
                inbound_primed(q, count);
                q->first_to_check = add_buf(q->first_to_check, count);
-               if (atomic_sub(count, &q->nr_buf_used) == 0)
+               if (atomic_sub_return(count, &q->nr_buf_used) == 0)
                        qperf_inc(q, inbound_queue_full);
                if (q->irq_ptr->perf_stat_enabled)
                        account_sbals(q, count);