浏览代码

[PATCH] s390: fix arp_tbl lock usage in qeth

qeth: bhs must be disabled when accessing neighbour tables.

=================================
[ INFO: inconsistent lock state ]

Signed-off-by: Jeff Garzik <jeff@garzik.org>
Heiko Carstens 19 年之前
父节点
当前提交
3d8f3f3c36
共有 1 个文件被更改,包括 4 次插入4 次删除
  1. 4 4
      drivers/s390/net/qeth_main.c

+ 4 - 4
drivers/s390/net/qeth_main.c

@@ -8510,9 +8510,9 @@ static int
 qeth_ipv6_init(void)
 qeth_ipv6_init(void)
 {
 {
 	qeth_old_arp_constructor = arp_tbl.constructor;
 	qeth_old_arp_constructor = arp_tbl.constructor;
-	write_lock(&arp_tbl.lock);
+	write_lock_bh(&arp_tbl.lock);
 	arp_tbl.constructor = qeth_arp_constructor;
 	arp_tbl.constructor = qeth_arp_constructor;
-	write_unlock(&arp_tbl.lock);
+	write_unlock_bh(&arp_tbl.lock);
 
 
 	arp_direct_ops = (struct neigh_ops*)
 	arp_direct_ops = (struct neigh_ops*)
 		kmalloc(sizeof(struct neigh_ops), GFP_KERNEL);
 		kmalloc(sizeof(struct neigh_ops), GFP_KERNEL);
@@ -8528,9 +8528,9 @@ qeth_ipv6_init(void)
 static void
 static void
 qeth_ipv6_uninit(void)
 qeth_ipv6_uninit(void)
 {
 {
-	write_lock(&arp_tbl.lock);
+	write_lock_bh(&arp_tbl.lock);
 	arp_tbl.constructor = qeth_old_arp_constructor;
 	arp_tbl.constructor = qeth_old_arp_constructor;
-	write_unlock(&arp_tbl.lock);
+	write_unlock_bh(&arp_tbl.lock);
 	kfree(arp_direct_ops);
 	kfree(arp_direct_ops);
 }
 }
 #endif /* CONFIG_QETH_IPV6 */
 #endif /* CONFIG_QETH_IPV6 */