linux/drivers/net/ixgbe
Eric Dumazet 1a51502bdd ixgbe: delay rx_ring freeing
"cat /proc/net/dev" uses RCU protection only.

Its quite possible we call a driver get_stats() method while device is
dismantling and freeing its data structures.

So get_stats() methods must be very careful not accessing driver private
data without appropriate locking.

In ixgbe case, we access rx_ring pointers. These pointers are freed in
ixgbe_clear_interrupt_scheme() and set to NULL, this can trigger NULL
dereference in ixgbe_get_stats64()

A possible fix is to use RCU locking in ixgbe_get_stats64() and defer
rx_ring freeing after a grace period in ixgbe_clear_interrupt_scheme()

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Reported-by: Tantilov, Emil S <emil.s.tantilov@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2010-11-16 19:26:42 -08:00
..
ixgbe_82598.c ixgbe:add support for a new 82599 10G Base-T device 2010-05-20 23:07:06 -07:00
ixgbe_82599.c ixgbe: declare functions as static 2010-10-14 10:49:43 -07:00
ixgbe_common.c ixgbe: declare functions as static 2010-10-14 10:49:43 -07:00
ixgbe_common.h ixgbe: declare functions as static 2010-10-14 10:49:43 -07:00
ixgbe_dcb_82598.c ixgbe: declare functions as static 2010-10-14 10:49:43 -07:00
ixgbe_dcb_82598.h ixgbe: declare functions as static 2010-10-14 10:49:43 -07:00
ixgbe_dcb_82599.c ixgbe: DCB, fix TX hang occurring in stress condition with PFC 2010-10-28 10:19:00 -07:00
ixgbe_dcb_82599.h ixgbe: DCB, fix TX hang occurring in stress condition with PFC 2010-10-28 10:19:00 -07:00
ixgbe_dcb_nl.c ixgbe: use netif_<level> instead of netdev_<level> 2010-07-05 18:50:55 -07:00
ixgbe_dcb.c ixgbe: DCB, fix TX hang occurring in stress condition with PFC 2010-10-28 10:19:00 -07:00
ixgbe_dcb.h ixgbe: DCB, fix TX hang occurring in stress condition with PFC 2010-10-28 10:19:00 -07:00
ixgbe_ethtool.c ixgbe: fix stats handling 2010-10-21 03:55:22 -07:00
ixgbe_fcoe.c ixgbe: add a refcnt when turning on/off FCoE offload capability 2010-10-21 03:55:23 -07:00
ixgbe_fcoe.h ixgbe: add a refcnt when turning on/off FCoE offload capability 2010-10-21 03:55:23 -07:00
ixgbe_main.c ixgbe: delay rx_ring freeing 2010-11-16 19:26:42 -08:00
ixgbe_mbx.c ixgbe: update copyright info 2010-10-21 03:55:21 -07:00
ixgbe_mbx.h ixgbe: update copyright info 2010-10-21 03:55:21 -07:00
ixgbe_phy.c ixgbe: add 1g PHY support for 82599 2010-06-30 14:27:40 -07:00
ixgbe_phy.h ixgbe: add 1g PHY support for 82599 2010-06-30 14:27:40 -07:00
ixgbe_sriov.c drivers/net/ixgbe: Remove unnecessary semicolons 2010-11-15 11:06:19 -08:00
ixgbe_sriov.h ixgbe: update copyright info 2010-10-21 03:55:21 -07:00
ixgbe_type.h ixgbe: move all Rx DMA control register writes to one central location 2010-08-19 16:44:24 -07:00
ixgbe.h ixgbe: delay rx_ring freeing 2010-11-16 19:26:42 -08:00
Makefile Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-01-23 00:31:06 -08:00