diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-22 15:43:18 -0800 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-12-22 15:43:18 -0800 | 
| commit | ad3d1abb305459592f9dcf47d3c7d30f5e8dd5b7 (patch) | |
| tree | eccc63c0a71bf7372e548cc7295de61179c022c0 | |
| parent | ea828131909d77ae3185991669ecc0152519ea1d (diff) | |
| parent | 272fa59ccb4fc802af28b1d699c2463db6a71bf7 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 fixes from Martin Schwidefsky:
 "Two late bug fixes for kernel 4.4.
  Merry Christmas"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
  s390/dis: Fix handling of format specifiers
  s390/zcrypt: Fix AP queue handling if queue is full
| -rw-r--r-- | arch/s390/kernel/dis.c | 17 | ||||
| -rw-r--r-- | drivers/s390/crypto/ap_bus.c | 4 | 
2 files changed, 15 insertions, 6 deletions
| diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c index 8140d10c6785..6e72961608f0 100644 --- a/arch/s390/kernel/dis.c +++ b/arch/s390/kernel/dis.c @@ -1920,16 +1920,23 @@ static int print_insn(char *buffer, unsigned char *code, unsigned long addr)  			}  			if (separator)  				ptr += sprintf(ptr, "%c", separator); +			/* +			 * Use four '%' characters below because of the +			 * following two conversions: +			 * +			 *  1) sprintf: %%%%r -> %%r +			 *  2) printk : %%r   -> %r +			 */  			if (operand->flags & OPERAND_GPR) -				ptr += sprintf(ptr, "%%r%i", value); +				ptr += sprintf(ptr, "%%%%r%i", value);  			else if (operand->flags & OPERAND_FPR) -				ptr += sprintf(ptr, "%%f%i", value); +				ptr += sprintf(ptr, "%%%%f%i", value);  			else if (operand->flags & OPERAND_AR) -				ptr += sprintf(ptr, "%%a%i", value); +				ptr += sprintf(ptr, "%%%%a%i", value);  			else if (operand->flags & OPERAND_CR) -				ptr += sprintf(ptr, "%%c%i", value); +				ptr += sprintf(ptr, "%%%%c%i", value);  			else if (operand->flags & OPERAND_VR) -				ptr += sprintf(ptr, "%%v%i", value); +				ptr += sprintf(ptr, "%%%%v%i", value);  			else if (operand->flags & OPERAND_PCREL)  				ptr += sprintf(ptr, "%lx", (signed int) value  								      + addr); diff --git a/drivers/s390/crypto/ap_bus.c b/drivers/s390/crypto/ap_bus.c index 61f768518a34..24ec282e15d8 100644 --- a/drivers/s390/crypto/ap_bus.c +++ b/drivers/s390/crypto/ap_bus.c @@ -599,8 +599,10 @@ static enum ap_wait ap_sm_read(struct ap_device *ap_dev)  	status = ap_sm_recv(ap_dev);  	switch (status.response_code) {  	case AP_RESPONSE_NORMAL: -		if (ap_dev->queue_count > 0) +		if (ap_dev->queue_count > 0) { +			ap_dev->state = AP_STATE_WORKING;  			return AP_WAIT_AGAIN; +		}  		ap_dev->state = AP_STATE_IDLE;  		return AP_WAIT_NONE;  	case AP_RESPONSE_NO_PENDING_REPLY: | 
