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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 16 Mar 2016 15:42:58 +0000 (08:42 -0700)
commitdc5a60756e536494af2fb4d044cd65a765eeddae
tree506615a8ed796879f82ce568ced7d2a6fcfa2cc1
parent5833fac3b88d39b39402309399e8b0aaa54e5f75
s390/dasd: fix diag 0x250 inline assembly

commit ce0c12b633846a47e103842149a5bac2e5d261ec upstream.

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")
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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/s390/block/dasd_diag.c