linux_old1/drivers/s390/net
Ursula Braun 4763b0a010 qeth: suspicious rcu_dereference_check in recovery
qeth layer3 recovery invokes its set_multicast_list function, which
invokes function __vlan_find_dev_deep requiring rcu_read_lock or
rtnl lock. This causes kernel messages:

kernel: [ INFO: suspicious rcu_dereference_check() usage. ]
kernel: ---------------------------------------------------
kernel: net/8021q/vlan_core.c:70 invoked rcu_dereference_check() without protection!

kernel: stack backtrace:
kernel: CPU: 0 Not tainted 3.1.0 #9
kernel: Process qeth_recover (pid: 2078, task: 000000007e584680, ksp: 000000007e3e3930)
kernel: 000000007e3e3d08 000000007e3e3c88 0000000000000002 0000000000000000
kernel:       000000007e3e3d28 000000007e3e3ca0 000000007e3e3ca0 00000000005e77ce
kernel:       0000000000000000 0000000000000001 ffffffffffffffff 0000000000000001
kernel:       000000000000000d 000000000000000c 000000007e3e3cf0 0000000000000000
kernel:       0000000000000000 0000000000100a18 000000007e3e3c88 000000007e3e3cc8
kernel: Call Trace:
kernel: ([<0000000000100926>] show_trace+0xee/0x144)
kernel: [<00000000005d395c>] __vlan_find_dev_deep+0xb0/0x108
kernel: [<00000000004acd3a>] qeth_l3_set_multicast_list+0x976/0xe38
kernel: [<00000000004ae0f4>] __qeth_l3_set_online+0x75c/0x1498
kernel: [<00000000004aefec>] qeth_l3_recover+0xc4/0x1d0
kernel: [<0000000000185372>] kthread+0xa6/0xb0
kernel: [<00000000005ed4c6>] kernel_thread_starter+0x6/0xc
kernel: [<00000000005ed4c0>] kernel_thread_starter+0x0/0xc

The patch makes sure the rtnl lock is held once qeth recovery invokes
its set_multicast_list function.

Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-12-20 14:05:04 -05:00
..
Kconfig net: Fix references to deleted NET_ETHERNET Kconfig setting. 2011-11-09 19:26:53 -05:00
Makefile [S390] smsgiucv_app: deliver z/VM CP special messages (SMSG) as uevents 2010-03-08 12:26:28 +01:00
claw.c [S390] fix mismatch in summation of I/O IRQ statistics 2011-10-30 15:16:15 +01:00
claw.h claw: rename READ/WRITE defines to avoid redefinitions 2010-08-12 16:04:22 -07:00
ctcm_dbug.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ctcm_dbug.h
ctcm_fsms.c Fix common misspellings 2011-03-31 11:26:23 -03:00
ctcm_fsms.h s390: remove cu3088 layer for lcs and ctcm 2009-11-13 20:47:00 -08:00
ctcm_main.c [S390] fix mismatch in summation of I/O IRQ statistics 2011-10-30 15:16:15 +01:00
ctcm_main.h ctcm: rename READ/WRITE defines to avoid redefinitions 2010-08-12 16:04:23 -07:00
ctcm_mpc.c ctcm: get rid of compile warning 2011-05-13 14:55:20 -04:00
ctcm_mpc.h net: remove interrupt.h inclusion from netdevice.h 2011-06-06 22:55:11 -07:00
ctcm_sysfs.c [S390] sparse: fix sparse static warnings 2011-10-30 15:16:46 +01:00
fsm.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
fsm.h atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
lcs.c net: Fix references to deleted NET_ETHERNET Kconfig setting. 2011-11-09 19:26:53 -05:00
lcs.h s390: remove cu3088 layer for lcs and ctcm 2009-11-13 20:47:00 -08:00
netiucv.c netiucv: reinsert dev_alloc_name for device naming 2011-11-16 17:28:10 -05:00
qeth_core.h qeth: Reduce CPU consumption through less SIGA-r calls 2011-11-16 17:28:20 -05:00
qeth_core_main.c qeth: remove WARN_ON leftover 2011-11-16 17:28:04 -05:00
qeth_core_mpc.c qeth: support z/VM VSWITCH Port Isolation 2009-05-20 17:36:50 -07:00
qeth_core_mpc.h qeth: add OSA concurrent hardware trap 2011-05-13 14:55:20 -04:00
qeth_core_sys.c qeth: add OSA concurrent hardware trap 2011-05-13 14:55:20 -04:00
qeth_l2_main.c net: make vlan ndo_vlan_rx_[add/kill]_vid return error value 2011-12-08 19:52:37 -05:00
qeth_l3.h qeth: add support for af_iucv HiperSockets transport 2011-08-13 01:10:17 -07:00
qeth_l3_main.c qeth: suspicious rcu_dereference_check in recovery 2011-12-20 14:05:04 -05:00
qeth_l3_sys.c qeth: return with -EPERM if sniffing is not enabled 2011-11-16 17:27:59 -05:00
smsgiucv.c s390: Fix possibly wrong size in strncmp (smsgiucv) 2011-02-02 15:00:02 -08:00
smsgiucv.h [S390] smsgiucv_app: deliver z/VM CP special messages (SMSG) as uevents 2010-03-08 12:26:28 +01:00
smsgiucv_app.c [S390] cmm, smsgiucv_app: convert sender to uppercase 2010-08-09 18:12:54 +02:00