linux/drivers/net/bonding
Mitsuo Hayasaka e8c492bd9c bonding: use local function pointer of bond->recv_probe in bond_handle_frame
[ Upstream commit 4d97480b18 ]

The bond->recv_probe is called in bond_handle_frame() when
a packet is received, but bond_close() sets it to NULL. So,
a panic occurs when both functions work in parallel.

Why this happen:
After null pointer check of bond->recv_probe, an sk_buff is
duplicated and bond->recv_probe is called in bond_handle_frame.
So, a panic occurs when bond_close() is called between the
check and call of bond->recv_probe.

Patch:
This patch uses a local function pointer of bond->recv_probe
in bond_handle_frame(). So, it can avoid the null pointer
dereference.

Signed-off-by: Mitsuo Hayasaka <mitsuo.hayasaka.hu@hitachi.com>
Cc: Jay Vosburgh <fubar@us.ibm.com>
Cc: Andy Gospodarek <andy@greyhouse.net>
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Cc: WANG Cong <xiyou.wangcong@gmail.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2011-11-11 09:36:24 -08:00
..
bond_3ad.c net: bonding: factor out rlock(bond->lock) in xmit path 2011-05-09 12:05:59 -07:00
bond_3ad.h Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2011-05-17 17:33:11 -04:00
bond_alb.c bonding: prevent deadlock on slave store with alb mode (v3) 2011-05-25 17:55:33 -04:00
bond_alb.h bonding: move processing of recv handlers into handle_frame() 2011-04-25 12:00:30 -07:00
bond_debugfs.c bonding: add the debugfs interface to see RLB hash table 2010-12-16 13:16:05 -08:00
bond_ipv6.c bonding/vlan: Fix mangled NAs on slaves without VLAN tag insertion 2010-12-16 12:43:22 -08:00
bond_main.c bonding: use local function pointer of bond->recv_probe in bond_handle_frame 2011-11-11 09:36:24 -08:00
bond_procfs.c net-bonding: Fix minor sparse complaints 2011-04-14 22:00:31 -07:00
bond_sysfs.c bonding: fix string comparison errors 2011-08-15 18:31:38 -07:00
bonding.h net: drivers: kill two unused macro definitions 2011-05-15 18:01:15 -04:00
Makefile bonding, ipv4, ipv6, vlan: Handle NETDEV_BONDING_FAILOVER like NETDEV_NOTIFY_PEERS 2011-04-17 23:36:03 -07:00