Skip to content

Commit fb7453e

Browse files
committed
Merge tag 's390-5.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 bug fixes from Martin Schwidefsky: - Fix specification exception on z196 during ap probe - A fix for suspend-to-disk, the VMAP stack patch broke the swsusp_arch_suspend function - The EMC CKD ioctl of the dasd driver needs an additional size check for user space data - Revert an incorrect patch for the PCI base code that removed a bit lock that turned out to be required after all * tag 's390-5.0-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: Revert "s390/pci: remove bit_lock usage in interrupt handler" s390/zcrypt: fix specification exception on z196 during ap probe s390/dasd: fix using offset into zero size array error s390/suspend: fix stack setup in swsusp_arch_suspend
2 parents 244cce1 + 614db26 commit fb7453e

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

arch/s390/kernel/swsusp.S

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
.section .text
3131
ENTRY(swsusp_arch_suspend)
3232
lg %r1,__LC_NODAT_STACK
33-
aghi %r1,-STACK_FRAME_OVERHEAD
3433
stmg %r6,%r15,__SF_GPRS(%r1)
34+
aghi %r1,-STACK_FRAME_OVERHEAD
3535
stg %r15,__SF_BACKCHAIN(%r1)
36-
lgr %r1,%r15
36+
lgr %r15,%r1
3737

3838
/* Store FPU registers */
3939
brasl %r14,save_fpu_regs

arch/s390/pci/pci.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,9 @@ static void zpci_irq_handler(struct airq_struct *airq)
382382
if (ai == -1UL)
383383
break;
384384
inc_irq_stat(IRQIO_MSI);
385+
airq_iv_lock(aibv, ai);
385386
generic_handle_irq(airq_iv_get_data(aibv, ai));
387+
airq_iv_unlock(aibv, ai);
386388
}
387389
}
388390
}
@@ -408,7 +410,7 @@ int arch_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
408410
zdev->aisb = aisb;
409411

410412
/* Create adapter interrupt vector */
411-
zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA);
413+
zdev->aibv = airq_iv_create(msi_vecs, AIRQ_IV_DATA | AIRQ_IV_BITLOCK);
412414
if (!zdev->aibv)
413415
return -ENOMEM;
414416

drivers/s390/block/dasd_eckd.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4469,6 +4469,14 @@ static int dasd_symm_io(struct dasd_device *device, void __user *argp)
44694469
usrparm.psf_data &= 0x7fffffffULL;
44704470
usrparm.rssd_result &= 0x7fffffffULL;
44714471
}
4472+
/* at least 2 bytes are accessed and should be allocated */
4473+
if (usrparm.psf_data_len < 2) {
4474+
DBF_DEV_EVENT(DBF_WARNING, device,
4475+
"Symmetrix ioctl invalid data length %d",
4476+
usrparm.psf_data_len);
4477+
rc = -EINVAL;
4478+
goto out;
4479+
}
44724480
/* alloc I/O data area */
44734481
psf_data = kzalloc(usrparm.psf_data_len, GFP_KERNEL | GFP_DMA);
44744482
rssd_result = kzalloc(usrparm.rssd_result_len, GFP_KERNEL | GFP_DMA);

drivers/s390/crypto/ap_bus.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,8 @@ static inline int ap_test_config(unsigned int *field, unsigned int nr)
248248
static inline int ap_test_config_card_id(unsigned int id)
249249
{
250250
if (!ap_configuration) /* QCI not supported */
251-
return 1;
251+
/* only ids 0...3F may be probed */
252+
return id < 0x40 ? 1 : 0;
252253
return ap_test_config(ap_configuration->apm, id);
253254
}
254255

0 commit comments

Comments
 (0)