]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
s390/sclp_early: Return correct HSA block count also for zero
authorMichael Holzheu <holzheu@linux.vnet.ibm.com>
Mon, 24 Feb 2014 13:30:00 +0000 (14:30 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Mon, 24 Feb 2014 16:13:57 +0000 (17:13 +0100)
Currently we return a negative block count if SCLP returns HSA block
count zero. The reason is that we subtract one for the header page.

So fix this and correctly return zero block count if SCLP returns zero.

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/char/sclp_early.c

index 82f2c389b4d1f51e882de45cd5e0fadfa3405f3e..2c6aac66e2b04e6ec1885c29dd20a2b80207c141 100644 (file)
@@ -184,9 +184,9 @@ static long __init sclp_hsa_size_init(struct sdias_sccb *sccb)
        sccb_init_eq_size(sccb);
        if (sclp_cmd_early(SCLP_CMDW_WRITE_EVENT_DATA, sccb))
                return -EIO;
-       if (sccb->evbuf.blk_cnt != 0)
-               return (sccb->evbuf.blk_cnt - 1) * PAGE_SIZE;
-       return 0;
+       if (sccb->evbuf.blk_cnt == 0)
+               return 0;
+       return (sccb->evbuf.blk_cnt - 1) * PAGE_SIZE;
 }
 
 static long __init sclp_hsa_copy_wait(struct sccb_header *sccb)
@@ -195,6 +195,8 @@ static long __init sclp_hsa_copy_wait(struct sccb_header *sccb)
        sccb->length = PAGE_SIZE;
        if (sclp_cmd_early(SCLP_CMDW_READ_EVENT_DATA, sccb))
                return -EIO;
+       if (((struct sdias_sccb *) sccb)->evbuf.blk_cnt == 0)
+               return 0;
        return (((struct sdias_sccb *) sccb)->evbuf.blk_cnt - 1) * PAGE_SIZE;
 }