s390/dasd: fix diag 0x250 inline assembly
authorHeiko Carstens <heiko.carstens@de.ibm.com>
Tue, 1 Mar 2016 11:58:06 +0000 (12:58 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 2 Mar 2016 12:43:48 +0000 (06:43 -0600)
commitce0c12b633846a47e103842149a5bac2e5d261ec
treeb8e305b904aff2c4e798ae9ec0372506df27051e
parentf691b77b1fc491dae601631c8531a0a13e915466
s390/dasd: fix diag 0x250 inline assembly

git commit 1ec2772e0c3c ("s390/diag: add a statistic for diagnose
calls") added function calls to gather diagnose statistics.

In case of the dasd diag driver the function call was added between a
register asm statement which initialized register r2 and the inline
assembly itself.  The function call clobbers the contents of register
r2 and therefore the diag 0x250 call behaves in a more or less random
way.

Fix this by extracting the function call into a separate function like
we do everywhere else.

Fixes: 1ec2772e0c3c ("s390/diag: add a statistic for diagnose calls")
Cc: <stable@vger.kernel.org> # 4.4+
Reported-and-tested-by: Stefan Haberland <sth@linux.vnet.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/block/dasd_diag.c