Z Zenghui Yu #
Message details and related content
From: Feng Tiantian <redacted>
While using "top" on a CentOS guest's VNC-client, then continuously press
"Shift+PgUp", the guest kernel will get panic! Backtrace is attached below.
We tested it on 5.2.0, and the issue remains.
[ 66.946362] Unable to handle kernel paging request at virtual address ffff00000e240840
[ 66.946363] Mem abort info:
[ 66.946364] Exception class = DABT (current EL), IL = 32 bits
[ 66.946365] SET = 0, FnV = 0
[ 66.946366] EA = 0, S1PTW = 0
[ 66.946367] Data abort info:
[ 66.946368] ISV = 0, ISS = 0x00000047
[ 66.946368] CM = 0, WnR = 1
[ 66.946370] swapper pgtable: 64k pages, 48-bit VAs, pgd = ffff000009660000
[ 66.946372] [ffff00000e240840] *pgd 0000023ffe0003, *pud 0000023ffe0003, *pmd 0000023ffd0003, *pte 00000000000000
[ 66.946378] Internal error: Oops: 96000047 [#1] SMP
[ 66.946379] Modules linked in: vfat fat crc32_ce ghash_ce sg sha2_ce sha256_arm64 virtio_balloon virtio_net sha1_ce ip_tables ext4 mbcache jbd2 virtio_gpu drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm drm i2c_core virtio_scsi virtio_pci virtio_mmio virtio_ring virtio
[ 66.946403] CPU: 0 PID: 1035 Comm: top Not tainted 4.14.0-49.el7a.aarch64 #1
[ 66.946404] Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
[ 66.946405] task: ffff8001c18fdc00 task.stack: ffff00000d4e0000
[ 66.946409] PC is at sys_imageblit+0x40c/0x10000 [sysimgblt]
[ 66.946431] LR is at drm_fb_helper_sys_imageblit+0x28/0x4c [drm_kms_helper]
[ 66.946433] pc : [<ffff0000020a040c>] lr : [<ffff000002202e74>] pstate: 00000005
[ 66.946433] sp : ffff00000d4ef7f0
[ 66.946434] x29: ffff00000d4ef7f0 x28: 00000000000001ff
[ 66.946436] x27: ffff8001c1c88100 x26: 0000000000000001
[ 66.946438] x25: 00000000000001f0 x24: 0000000000000018
[ 66.946440] x23: 0000000000000000 x22: ffff00000d4ef978
[ 66.946442] x21: ffff00000e240840 x20: 0000000000000000
[ 66.946444] x19: ffff8001c98c9000 x18: 0000fffff9d56670
[ 66.946445] x17: 0000000000000000 x16: 0000000000000000
[ 66.946447] x15: 0000000000000008 x14: 1b20202020202020
[ 66.946449] x13: 00000000000001f0 x12: 000000000000003e
[ 66.946450] x11: 000000000000000f x10: ffff8001c8400000
[ 66.946452] x9 : 0000000000aaaaaa x8 : 0000000000000001
[ 66.946454] x7 : ffff0000020b0090 x6 : 0000000000000001
[ 66.946456] x5 : 0000000000000000 x4 : 0000000000000000
[ 66.946457] x3 : ffff8001c8400000 x2 : ffff00000e240840
[ 66.946459] x1 : 00000000000001ef x0 : 0000000000000007diff --git a/drivers/video/fbdev/core/fbcon.h b/drivers/video/fbdev/core/fbcon.h
index 20dea85..b1aa00e 100644
--- a/drivers/video/fbdev/core/fbcon.h
+++ b/drivers/video/fbdev/core/fbcon.h@@ -230,7 +230,10 @@ static inline int real_y(struct fbcon_display *p, int ypos) int rows = p->vrows; ypos += p->yscroll; - return ypos < rows ? ypos : ypos - rows; + if (rows = 0) + return ypos; + else + return ypos < rows ? ypos : ypos % rows; }
--
1.8.3.1