Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 's390-5.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux

Pull s390 bug fixes from Martin Schwidefsky:

- Fix overwrite of the initial ramdisk due to misuse of IS_ENABLED

- Fix integer overflow in the dasd driver resulting in incorrect number
of blocks for large devices

- Fix a lockdep false positive in the 3270 driver

- Fix a deadlock in the zcrypt driver

- Fix incorrect debug feature entries in the pkey api

- Fix inline assembly constraints fallout with CONFIG_KASAN=y

* tag 's390-5.1-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
s390: correct some inline assembly constraints
s390/pkey: add one more argument space for debug feature entry
s390/zcrypt: fix possible deadlock situation on ap queue remove
s390/3270: fix lockdep false positive on view->lock
s390/dasd: Fix capacity calculation for large volumes
s390/mem_detect: Use IS_ENABLED(CONFIG_BLK_DEV_INITRD)

+22 -16
+1 -1
arch/s390/boot/mem_detect.c
··· 25 25 { 26 26 unsigned long offset = ALIGN(mem_safe_offset(), sizeof(u64)); 27 27 28 - if (IS_ENABLED(BLK_DEV_INITRD) && INITRD_START && INITRD_SIZE && 28 + if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) && INITRD_START && INITRD_SIZE && 29 29 INITRD_START < offset + ENTRIES_EXTENDED_MAX) 30 30 offset = ALIGN(INITRD_START + INITRD_SIZE, sizeof(u64)); 31 31
+1 -1
arch/s390/kernel/fpu.c
··· 23 23 24 24 if (flags & KERNEL_FPC) 25 25 /* Save floating point control */ 26 - asm volatile("stfpc %0" : "=m" (state->fpc)); 26 + asm volatile("stfpc %0" : "=Q" (state->fpc)); 27 27 28 28 if (!MACHINE_HAS_VX) { 29 29 if (flags & KERNEL_VXR_V0V7) {
+4 -4
arch/s390/kernel/vtime.c
··· 37 37 { 38 38 u64 timer; 39 39 40 - asm volatile("stpt %0" : "=m" (timer)); 40 + asm volatile("stpt %0" : "=Q" (timer)); 41 41 return timer; 42 42 } 43 43 ··· 48 48 asm volatile( 49 49 " stpt %0\n" /* Store current cpu timer value */ 50 50 " spt %1" /* Set new value imm. afterwards */ 51 - : "=m" (timer) : "m" (expires)); 51 + : "=Q" (timer) : "Q" (expires)); 52 52 S390_lowcore.system_timer += S390_lowcore.last_update_timer - timer; 53 53 S390_lowcore.last_update_timer = expires; 54 54 } ··· 135 135 #else 136 136 " stck %1" /* Store current tod clock value */ 137 137 #endif 138 - : "=m" (S390_lowcore.last_update_timer), 139 - "=m" (S390_lowcore.last_update_clock)); 138 + : "=Q" (S390_lowcore.last_update_timer), 139 + "=Q" (S390_lowcore.last_update_clock)); 140 140 clock = S390_lowcore.last_update_clock - clock; 141 141 timer -= S390_lowcore.last_update_timer; 142 142
+3 -3
drivers/s390/block/dasd_eckd.c
··· 2004 2004 blk_per_trk = recs_per_track(&private->rdc_data, 0, block->bp_block); 2005 2005 2006 2006 raw: 2007 - block->blocks = (private->real_cyl * 2007 + block->blocks = ((unsigned long) private->real_cyl * 2008 2008 private->rdc_data.trk_per_cyl * 2009 2009 blk_per_trk); 2010 2010 2011 2011 dev_info(&device->cdev->dev, 2012 - "DASD with %d KB/block, %d KB total size, %d KB/track, " 2012 + "DASD with %u KB/block, %lu KB total size, %u KB/track, " 2013 2013 "%s\n", (block->bp_block >> 10), 2014 - ((private->real_cyl * 2014 + (((unsigned long) private->real_cyl * 2015 2015 private->rdc_data.trk_per_cyl * 2016 2016 blk_per_trk * (block->bp_block >> 9)) >> 1), 2017 2017 ((blk_per_trk * block->bp_block) >> 10),
+1 -1
drivers/s390/char/con3270.c
··· 629 629 (void (*)(unsigned long)) con3270_read_tasklet, 630 630 (unsigned long) condev->read); 631 631 632 - raw3270_add_view(&condev->view, &con3270_fn, 1); 632 + raw3270_add_view(&condev->view, &con3270_fn, 1, RAW3270_VIEW_LOCK_IRQ); 633 633 634 634 INIT_LIST_HEAD(&condev->freemem); 635 635 for (i = 0; i < CON3270_STRING_PAGES; i++) {
+2 -1
drivers/s390/char/fs3270.c
··· 463 463 464 464 init_waitqueue_head(&fp->wait); 465 465 fp->fs_pid = get_pid(task_pid(current)); 466 - rc = raw3270_add_view(&fp->view, &fs3270_fn, minor); 466 + rc = raw3270_add_view(&fp->view, &fs3270_fn, minor, 467 + RAW3270_VIEW_LOCK_BH); 467 468 if (rc) { 468 469 fs3270_free_view(&fp->view); 469 470 goto out;
+2 -1
drivers/s390/char/raw3270.c
··· 920 920 * Add view to device with minor "minor". 921 921 */ 922 922 int 923 - raw3270_add_view(struct raw3270_view *view, struct raw3270_fn *fn, int minor) 923 + raw3270_add_view(struct raw3270_view *view, struct raw3270_fn *fn, int minor, int subclass) 924 924 { 925 925 unsigned long flags; 926 926 struct raw3270 *rp; ··· 942 942 view->cols = rp->cols; 943 943 view->ascebc = rp->ascebc; 944 944 spin_lock_init(&view->lock); 945 + lockdep_set_subclass(&view->lock, subclass); 945 946 list_add(&view->list, &rp->view_list); 946 947 rc = 0; 947 948 spin_unlock_irqrestore(get_ccwdev_lock(rp->cdev), flags);
+3 -1
drivers/s390/char/raw3270.h
··· 150 150 struct raw3270_view { 151 151 struct list_head list; 152 152 spinlock_t lock; 153 + #define RAW3270_VIEW_LOCK_IRQ 0 154 + #define RAW3270_VIEW_LOCK_BH 1 153 155 atomic_t ref_count; 154 156 struct raw3270 *dev; 155 157 struct raw3270_fn *fn; ··· 160 158 unsigned char *ascebc; /* ascii -> ebcdic table */ 161 159 }; 162 160 163 - int raw3270_add_view(struct raw3270_view *, struct raw3270_fn *, int); 161 + int raw3270_add_view(struct raw3270_view *, struct raw3270_fn *, int, int); 164 162 int raw3270_activate_view(struct raw3270_view *); 165 163 void raw3270_del_view(struct raw3270_view *); 166 164 void raw3270_deactivate_view(struct raw3270_view *);
+2 -1
drivers/s390/char/tty3270.c
··· 980 980 return PTR_ERR(tp); 981 981 982 982 rc = raw3270_add_view(&tp->view, &tty3270_fn, 983 - tty->index + RAW3270_FIRSTMINOR); 983 + tty->index + RAW3270_FIRSTMINOR, 984 + RAW3270_VIEW_LOCK_BH); 984 985 if (rc) { 985 986 tty3270_free_view(tp); 986 987 return rc;
+1 -1
drivers/s390/crypto/ap_queue.c
··· 751 751 __ap_flush_queue(aq); 752 752 /* set REMOVE state to prevent new messages are queued in */ 753 753 aq->state = AP_STATE_REMOVE; 754 - del_timer_sync(&aq->timeout); 755 754 spin_unlock_bh(&aq->lock); 755 + del_timer_sync(&aq->timeout); 756 756 } 757 757 758 758 void ap_queue_remove(struct ap_queue *aq)
+2 -1
drivers/s390/crypto/pkey_api.c
··· 51 51 52 52 static void __init pkey_debug_init(void) 53 53 { 54 - debug_info = debug_register("pkey", 1, 1, 4 * sizeof(long)); 54 + /* 5 arguments per dbf entry (including the format string ptr) */ 55 + debug_info = debug_register("pkey", 1, 1, 5 * sizeof(long)); 55 56 debug_register_view(debug_info, &debug_sprintf_view); 56 57 debug_set_level(debug_info, 3); 57 58 }