Weinan Li
a1ac5f0943
drm/i915/gvt: request srcu_read_lock before checking if one gfn is valid
...
Fix the suspicious RCU usage issue in intel_vgpu_emulate_mmio_write.
Here need to request the srcu read lock of kvm->srcu before doing
gfn_to_memslot(). The detailed log is as below:
[ 218.710688] =============================
[ 218.710690] WARNING: suspicious RCU usage
[ 218.710693] 4.14.15-dd+ #314 Tainted: G U
[ 218.710695] -----------------------------
[ 218.710697] ./include/linux/kvm_host.h:575 suspicious rcu_dereference_check() usage!
[ 218.710699]
other info that might help us debug this:
[ 218.710702]
rcu_scheduler_active = 2, debug_locks = 1
[ 218.710704] 1 lock held by qemu-system-x86/2144:
[ 218.710706] #0 : (&gvt->lock){+.+.}, at: [<ffffffff816a1eea>] intel_vgpu_emulate_mmio_write+0x5a/0x2d0
[ 218.710721]
stack backtrace:
[ 218.710724] CPU: 0 PID: 2144 Comm: qemu-system-x86 Tainted: G U 4.14.15-dd+ #314
[ 218.710727] Hardware name: Dell Inc. OptiPlex 7040/0Y7WYT, BIOS 1.1.1 10/07/2015
[ 218.710729] Call Trace:
[ 218.710734] dump_stack+0x7c/0xb3
[ 218.710739] gfn_to_memslot+0x15f/0x170
[ 218.710743] kvm_is_visible_gfn+0xa/0x30
[ 218.710746] intel_vgpu_emulate_gtt_mmio_write+0x267/0x3c0
[ 218.710751] ? __mutex_unlock_slowpath+0x3b/0x260
[ 218.710754] intel_vgpu_emulate_mmio_write+0x182/0x2d0
[ 218.710759] intel_vgpu_rw+0xba/0x170 [kvmgt]
[ 218.710763] intel_vgpu_write+0x14d/0x1a0 [kvmgt]
[ 218.710767] __vfs_write+0x23/0x130
[ 218.710770] vfs_write+0xb0/0x1b0
[ 218.710774] SyS_pwrite64+0x73/0x90
[ 218.710777] entry_SYSCALL_64_fastpath+0x25/0x9c
[ 218.710780] RIP: 0033:0x7f33e8a91da3
[ 218.710783] RSP: 002b:00007f33dddc8700 EFLAGS: 00000293
v2: add 'Fixes' tag, refine log format.(Zhenyu)
Fixes: cc753fbe1ac4 ("drm/i915/gvt: validate gfn before set shadow page")
Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com>
Signed-off-by: Weinan Li <weinan.z.li@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
2018-09-18 10:37:55 +08:00
..
2018-08-24 09:22:54 -07:00
2018-07-13 18:40:27 +02:00
2018-07-31 16:31:50 +01:00
2018-07-30 11:53:06 +01:00
2018-07-13 18:40:27 +02:00
2018-07-04 10:27:12 +10:00
2018-07-13 18:40:27 +02:00
2018-08-15 17:39:07 -07:00
2018-07-13 18:40:27 +02:00
2018-08-08 06:07:30 +10:00
2018-07-24 16:28:53 +09:00
2018-07-13 18:40:27 +02:00
2018-08-23 18:48:43 -07:00
2018-07-13 18:40:27 +02:00
2018-08-17 10:40:09 -07:00
2018-07-03 15:00:42 +02:00
2018-09-18 10:37:55 +08:00
2018-08-10 11:13:36 +10:00
2018-08-18 11:04:51 -07:00
2018-07-16 11:14:59 +02:00
2018-07-13 18:40:27 +02:00
2018-08-10 18:49:18 -04:00
2018-07-30 10:39:22 +10:00
2018-07-13 18:40:27 +02:00
2018-08-14 13:42:37 -04:00
2018-07-17 11:25:18 -07:00
2018-07-13 18:40:27 +02:00
2018-08-22 10:52:44 -07:00
2018-07-13 18:40:27 +02:00
2018-07-18 16:59:27 +01:00
2018-07-04 14:27:01 +02:00
2018-08-09 11:57:39 -05:00
2018-06-22 12:58:08 +10:00
2018-07-13 18:40:27 +02:00
2018-07-13 18:40:27 +02:00
2018-07-13 10:11:02 +02:00
2018-08-18 11:04:51 -07:00
2018-08-15 17:39:07 -07:00
2018-07-20 10:46:49 +10:00
2018-07-12 12:10:07 -05:00
2018-08-01 17:23:56 -05:00
2018-07-31 08:24:33 +10:00
2018-07-25 15:06:19 -05:00
2018-08-15 17:39:07 -07:00
2018-07-03 15:06:15 +02:00
2018-06-12 16:19:22 -07:00
2018-07-13 18:40:27 +02:00
2018-07-28 16:09:39 -03:00
2018-08-26 11:48:42 -07:00
2018-06-22 12:58:08 +10:00
2018-07-13 18:40:27 +02:00
2018-08-15 17:39:07 -07:00
2018-07-07 07:51:19 +02:00
2018-07-13 12:07:46 +02:00
2018-07-16 13:18:09 -04:00
2018-07-16 10:01:19 -04:00
2018-07-13 18:40:27 +02:00
2018-07-13 17:58:19 +03:00
2018-07-06 14:57:03 +02:00
2018-07-13 18:40:27 +02:00
2018-07-28 15:50:40 -03:00
2018-07-16 11:47:53 -04:00
2018-07-13 18:40:27 +02:00
2018-07-16 11:47:53 -04:00
2018-06-28 13:29:07 +10:00
2018-08-23 10:25:39 +02:00
2018-07-10 14:54:50 +02:00
2018-07-10 14:54:09 +02:00
2018-07-10 14:51:37 +02:00
2018-07-18 16:56:45 +01:00
2018-07-02 18:45:55 +03:00
2018-06-20 14:43:13 +02:00
2018-07-13 16:14:04 +01:00
2018-06-29 15:28:47 -05:00
2018-06-12 16:19:22 -07:00
2018-06-25 16:17:03 +02:00
2018-07-13 18:40:27 +02:00
2018-07-10 23:29:03 -04:00
2018-06-12 16:19:22 -07:00
2018-07-25 07:51:05 -04:00
2018-05-24 15:04:30 +01:00
2018-06-20 15:30:20 +01:00
2018-07-13 18:40:27 +02:00
2018-07-13 18:40:27 +02:00
2018-07-03 09:46:05 +02:00
2018-07-13 18:40:28 +02:00
2018-05-10 11:36:25 -04:00
2018-07-10 17:59:05 +02:00
2018-07-05 16:40:00 -05:00
2018-07-03 09:30:19 +02:00
2018-07-13 17:58:19 +03:00
2018-06-20 15:59:34 +02:00
2018-07-30 08:49:41 -04:00
2018-07-13 18:40:27 +02:00
2018-07-02 11:05:21 -05:00
2018-05-04 11:09:54 +02:00
2018-07-13 18:40:27 +02:00
2018-07-03 13:13:22 +02:00
2018-05-29 08:58:46 +02:00
2018-06-29 15:28:47 -05:00
2018-07-16 16:35:27 +01:00
2018-07-13 17:58:19 +03:00
2018-07-13 17:58:19 +03:00