xen/gntdev: convert priv->lock to a mutex

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Please apply upstream 1401c00e59ea021c575f74612fe2dbba36d6a4ee to
linux-3.14.y stable.

Since upstream commit 30b03d05e07467b8c6ec683ea96b5bffcbcd3931
("xen/gntdevt: Fix race condition in gntdev_release()") was applied to
the linux-3.14.y stable tree, a lockdep oops occurs whenever a PV DomU
shuts down:

# xl destroy myvm
(XEN) irq.c:2136: dom1: forcing unbind of pirq 17
[   67.525247] device vif1.0 left promiscuous mode
[   67.548408] INFO: trying to register non-static key.
[   67.551747] lock:ffff88000377cb88 key:ffff88000377cb88.
[   67.555684] the code is fine but needs lockdep annotation.
[   67.559092] turning off the locking correctness validator.
[   67.562817] CPU: 0 PID: 1463 Comm: qemu-system-i38 Tainted: GF
      3.14.51-grsec-xxx #1
[   67.568435] Hardware name: VMware, Inc. VMware Virtual
Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
[   67.575870]  0000000000000000 ffff880064597a68 ffffffff8166f0c2
ffff88000377cb88
[   67.580577]  ffff880064597a80 ffffffff8166c417 ffff8800673baea0
ffff880064597b60
[   67.585132]  ffffffff810cba03 ffff880064597aa0 ffff8800673baea0
ffff8800673baea0
[   67.589828] Call Trace:
[   67.591556]  [<ffffffff8166f0c2>] dump_stack+0x45/0x56
[   67.595172]  [<ffffffff8166c417>] register_lock_class.part.41+0x50/0x55
[   67.599770]  [<ffffffff810cba03>] __lock_acquire+0x2103/0x2190
[   67.603342]  [<ffffffff810c9ddd>] ? __lock_acquire+0x4dd/0x2190
[   67.607555]  [<ffffffff810ccbcb>] lock_acquire+0xcb/0x190
[   67.611225]  [<ffffffff81428851>] ? gntdev_release+0x31/0xd0
[   67.615569]  [<ffffffff81428851>] ? gntdev_release+0x31/0xd0
[   67.619024]  [<ffffffff81672d6c>] mutex_lock_nested+0x4c/0x560
[   67.622250]  [<ffffffff81428851>] ? gntdev_release+0x31/0xd0
[   67.625653]  [<ffffffff8121229e>] ? mntput_no_expire+0x4e/0x240
[   67.628919]  [<ffffffff810cce99>] ? lock_release+0x129/0x330
[   67.631940]  [<ffffffff81428851>] gntdev_release+0x31/0xd0
[   67.635500]  [<ffffffff811ed361>] __fput+0xd1/0x240
[   67.638554]  [<ffffffff811ed51e>] ____fput+0xe/0x10
[   67.641586]  [<ffffffff81092b14>] task_work_run+0xd4/0xf0
[   67.645361]  [<ffffffff8106dc32>] do_exit+0x2f2/0xac0
[   67.649019]  [<ffffffff8101ed13>] ? sched_clock+0x13/0x30
[   67.652862]  [<ffffffff8167736c>] ? _raw_spin_unlock_irq+0x2c/0x50
[   67.657167]  [<ffffffff8106e48e>] do_group_exit+0x4e/0xc0
[   67.661725]  [<ffffffff81081d33>] get_signal_to_deliver+0x253/0x680
[   67.665797]  [<ffffffff81015197>] do_signal+0x57/0xbf0
[   67.669100]  [<ffffffff8119afc0>] ? might_fault+0x40/0xa0
[   67.672846]  [<ffffffff81015d91>] do_notify_resume+0x61/0xa0
[   67.676762]  [<ffffffff81681c01>] int_signal+0x12/0x17
[   67.680546] BUG: unable to handle kernel NULL pointer dereference
at            (nil)
[   67.686141] IP: [<ffffffff81396a20>] __list_add_debug+0x10/0x80
[   67.690156] PGD 0
[   67.691664] Oops: 0000 [#1] SMP
[   67.693686] Modules linked in: xt_physdev(F) xen_netback(F)
xen_pciback(F) dm_crypt(F) algif_skcipher(F) af_alg(F) openvswitch(F)
vxlan(F) gre(F) libcrc32c(F) nfsd(F) auth_rpcgss(F) nfs_acl(F) nfs(F)
lockd(F) fscache(F) sunrpc(F) coretemp(F) crc32_pclmul(F)
ghash_clmulni_intel(F) aesni_intel(F) aes_x86_64(F) lrw(F) gf128mul(F)
glue_helper(F) ablk_helper(F) cryptd(F) xt_LOG(F) xt_limit(F)
xt_tcpudp(F) nf_conntrack_ipv4(F) nf_defrag_ipv4(F) xt_conntrack(F)
nf_conntrack(F) iptable_filter(F) ip_tables(F) x_tables(F) squashfs(F)
ahci(F) libahci(F)
[   67.729262] CPU: 0 PID: 1463 Comm: qemu-system-i38 Tainted: GF
      3.14.51-grsec-xxx #1
[   67.735098] Hardware name: VMware, Inc. VMware Virtual
Platform/440BX Desktop Reference Platform, BIOS 6.00 05/20/2014
[   67.742497] task: ffff8800673baea0 ti: ffff8800673bb5a8 task.ti:
ffff8800673bb5a8
[   67.748262] RIP: e030:[<ffffffff81396a20>]  [<ffffffff81396a20>]
__list_add_debug+0x10/0x80
[   67.754546] RSP: e02b:ffff880064597ba0  EFLAGS: 00010046
[   67.758338] RAX: ffff88000377cb60 RBX: ffff880064597bf0 RCX: 0000000000000000
[   67.764073] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff880064597bf0
[   67.768405] RBP: ffff880064597ba0 R08: 0000000000000000 R09: 0000000000000000
[   67.772565] R10: ffff880064597bf0 R11: 00000000000002b5 R12: 0000000000000000
[   67.777059] R13: ffff88000377cb60 R14: 0000000000000200 R15: ffffffff81428851
[   67.781471] FS:  00006bbfdbfff700(0000) GS:ffff88007ca00000(0000)
knlGS:0000000000000000
[   67.786635] CS:  e033 DS: 0000 ES: 0000 CR0: 000000008005003b
[   67.790102] CR2: 0000000000000000 CR3: 0000000001697000 CR4: 0000000000042620
[   67.794229] Stack:
[   67.795473]  ffff880064597bc8 ffffffff81396aa7 ffff88000377cb10
ffff88000377cb18
[   67.799782]  ffff8800673baea0 ffff880064597c38 ffffffff81672e33
ffffffff81428851
[   67.805223]  ffff88000377cb60 ffff88000377cb88 ffff880064597bf0
ffff880064597bf0
[   67.811023] Call Trace:
[   67.812823]  [<ffffffff81396aa7>] __list_add+0x17/0x40
[   67.816665]  [<ffffffff81672e33>] mutex_lock_nested+0x113/0x560
[   67.820162]  [<ffffffff81428851>] ? gntdev_release+0x31/0xd0
[   67.823506]  [<ffffffff81428851>] gntdev_release+0x31/0xd0
[   67.827264]  [<ffffffff811ed361>] __fput+0xd1/0x240
[   67.830993]  [<ffffffff811ed51e>] ____fput+0xe/0x10
[   67.834210]  [<ffffffff81092b14>] task_work_run+0xd4/0xf0
[   67.838243]  [<ffffffff8106dc32>] do_exit+0x2f2/0xac0
[   67.841233]  [<ffffffff8101ed13>] ? sched_clock+0x13/0x30
[   67.845049]  [<ffffffff8167736c>] ? _raw_spin_unlock_irq+0x2c/0x50
[   67.849413]  [<ffffffff8106e48e>] do_group_exit+0x4e/0xc0
[   67.853271]  [<ffffffff81081d33>] get_signal_to_deliver+0x253/0x680
[   67.856624]  [<ffffffff81015197>] do_signal+0x57/0xbf0
[   67.859608]  [<ffffffff8119afc0>] ? might_fault+0x40/0xa0
[   67.863242]  [<ffffffff81015d91>] do_notify_resume+0x61/0xa0
[   67.866266]  [<ffffffff81681c01>] int_signal+0x12/0x17
[   67.869163] Code: 47 08 55 48 89 42 08 48 89 e5 48 89 10 48 89 3f
48 89 7f 08 5d c3 0f 1f 44 00 00 55 48 89 d0 48 8b 52 08 48 89 e5 48
39 f2 75 20 <48> 8b 32 48 39 f0 75 30 48 39 c7 74 4b 48 39 fa 74 46 b8
01 00
[   67.887882] RIP  [<ffffffff81396a20>] __list_add_debug+0x10/0x80
[   67.891678]  RSP <ffff880064597ba0>
[   67.893746] CR2: 0000000000000000
[   67.896286] ---[ end trace 6f0e0f0d650d3e2d ]---

Per http://lkml.iu.edu/hypermail/linux/kernel/1508.3/01274.html,
upstream commit 1401c00e59ea021c575f74612fe2dbba36d6a4ee is a
prerequisite for the gntdev_release() change. I applied the commit to
my own tree and verified that the oops goes away.

--Ed
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]