linux-uconsole/drivers/net
Stefan Assmann cbfe360a15 igb: assume MSI-X interrupts during initialization
In igb_sw_init() the sequence of calls was changed from
igb_init_queue_configuration()
igb_init_interrupt_scheme()
igb_probe_vfs()
to
igb_probe_vfs()
igb_init_queue_configuration()
igb_init_interrupt_scheme()

This results in adapter->flags not having the IGB_FLAG_HAS_MSIX bit set
during igb_probe_vfs()->igb_enable_sriov(). Therefore SR-IOV does not
get enabled properly and we run into a NULL pointer if the max_vfs
module parameter is specified (adapter->vf_data does not get allocated,
crash on accessing the structure).

[    7.419348] BUG: unable to handle kernel NULL pointer dereference at 0000000000000048
[    7.419367] IP: [<ffffffffa02161c6>] igb_reset+0xe6/0x5d0 [igb]
[    7.419370] PGD 0
[    7.419373] Oops: 0002 [#1] SMP
[    7.419381] Modules linked in: ahci(+) libahci igb(+) i40e(+) vxlan ip6_udp_tunnel udp_tunnel megaraid_sas(+) ixgbe(+) mdio
[    7.419385] CPU: 0 PID: 4 Comm: kworker/0:0 Not tainted 4.2.0+ #153
[    7.419387] Hardware name: Dell Inc. PowerEdge R720/0C4Y3R, BIOS 1.6.0 03/07/2013
[...]
[    7.419431] Call Trace:
[    7.419442]  [<ffffffffa0217236>] igb_probe+0x8b6/0x1340 [igb]
[    7.419447]  [<ffffffff814c7f15>] local_pci_probe+0x45/0xa0

Prevent this by setting the IGB_FLAG_HAS_MSIX bit before calling
igb_probe_vfs(). The real interrupt capabilities will be checked during
igb_init_interrupt_scheme() so this is safe to do.

Signed-off-by: Stefan Assmann <sassmann@kpanic.de>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2015-09-28 17:48:34 -07:00
..
appletalk
arcnet Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-09-26 16:08:27 -07:00
bonding bonding: use l4 hash if available 2015-09-17 21:01:05 -07:00
caif net: caif: convert to using IFF_NO_QUEUE 2015-08-18 11:55:07 -07:00
can can: flexcan: enable interrupts atomically at the end of flexcan_chip_start() 2015-09-21 08:38:23 +02:00
cris
dsa Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-09-26 16:08:27 -07:00
ethernet igb: assume MSI-X interrupts during initialization 2015-09-28 17:48:34 -07:00
fddi net/fddi: remove HWM_REVERSE() macro 2015-08-13 21:12:17 -07:00
fjes fjes: fix off-by-one error at fjes_hw_update_zone_task() 2015-09-17 22:34:09 -07:00
hamradio Merge branch 'x86/urgent' into x86/asm to fix up conflicts and to pick up fixes 2015-08-18 09:39:47 +02:00
hippi
hyperv flow_dissector: Add flags argument to skb_flow_dissector functions 2015-09-01 15:06:22 -07:00
ieee802154 drivers/net/ieee802154/at86rf230.c: seq_printf() now returns NULL 2015-09-21 20:41:44 -07:00
ipvlan net: ipvlan: convert to using IFF_NO_QUEUE 2015-08-18 11:55:06 -07:00
irda irda: ali-ircc: Fix deadlock in ali_ircc_sir_change_speed() 2015-09-11 16:18:33 -07:00
phy net: update docbook comment for __mdiobus_register() 2015-09-25 21:37:19 -07:00
plip
ppp ppp: fix lockdep splat in ppp_dev_uninit() 2015-09-25 12:38:11 -07:00
slip
team net: team: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
usb Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-09-26 16:08:27 -07:00
vmxnet3 Driver: Vmxnet3: Extend register dump support 2015-09-23 15:06:27 -07:00
wan net: wan: sbni: fix device usage count 2015-09-05 17:32:53 -07:00
wimax
wireless genetlink: simplify genl_notify 2015-09-24 12:25:23 -07:00
xen-netback xen: MFN/GFN/BFN terminology changes for 4.3-rc0 2015-09-10 16:21:11 -07:00
dummy.c net: dummy: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
eql.c
geneve.c geneve: use network byte order for destination port config parameter 2015-09-23 15:41:04 -07:00
ifb.c
Kconfig geneve: Consolidate Geneve functionality in single module. 2015-08-27 15:42:48 -07:00
LICENSE.SRC
loopback.c net: loopback: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
macvlan.c macvlan: Don't segment multiple tagged packets on macvlan device 2015-08-03 14:24:49 -07:00
macvtap.c macvtap: fix TUNSETSNDBUF values > 64k 2015-09-20 22:44:39 -07:00
Makefile fjes: Introduce FUJITSU Extended Socket Network Device driver 2015-08-24 14:06:33 -07:00
mdio.c
mii.c
netconsole.c
nlmon.c net: nlmon: convert to using IFF_NO_QUEUE 2015-08-18 11:55:05 -07:00
ntb_netdev.c NTB: Add flow control to the ntb_netdev 2015-09-07 15:17:08 -04:00
rionet.c bus: subsys: update return type of ->remove_dev() to void 2015-08-05 17:08:14 -07:00
sb1000.c
Space.c
sungem_phy.c
tun.c tuntap: Don't segment multiple tagged packets on tap device 2015-08-03 14:24:50 -07:00
veth.c net: veth: enable noqueue operation by default 2015-08-18 11:55:04 -07:00
virtio_net.c virtio-net: avoid unnecessary sg initialzation 2015-08-27 15:51:45 -07:00
vrf.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-09-26 16:08:27 -07:00
vxlan.c vxlan: support both IPv4 and IPv6 sockets in a single vxlan device 2015-09-26 22:40:55 -07:00
xen-netfront.c xen-netfront: always set num queues if possible 2015-09-20 21:39:21 -07:00