[Intel-wired-lan] [PATCH v1 2/3] i40e: fix broken i40e_config_rss_aq function

Bowers, AndrewX andrewx.bowers at intel.com
Fri Aug 19 21:59:29 UTC 2016


> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Jacob Keller
> Sent: Tuesday, July 19, 2016 4:24 PM
> To: Intel Wired LAN <intel-wired-lan at lists.osuosl.org>
> Subject: [Intel-wired-lan] [PATCH v1 2/3] i40e: fix broken i40e_config_rss_aq
> function
> 
> X722 hardware requires using the admin queue to configure RSS. This
> function was previously re-written in commit e69ff813af35 ("i40e: rework the
> functions to configure RSS with similar parameters").
> However, the previous refactor did not work correctly for a few reasons
> 
> (a) it does not check whether seed is NULL before using it, resulting in a NULL
> pointer dereference
> 
> [  402.954721] BUG: unable to handle kernel NULL pointer dereference at
> (null)
> [  402.955568] IP: [<ffffffffa0090ccf>]
> i40e_config_rss_aq.constprop.65+0x2f/0x1c0 [i40e] [  402.956402] PGD
> ad610067 PUD accc0067 PMD 0 [  402.957235] Oops: 0000 [#1] SMP [
> 402.958064] Modules linked in: ip6t_rpfilter ip6t_REJECT nf_reject_ipv6
> xt_conntrack ip_set nfnetlink ebtable_filter ebtable_ broute bridge stp llc
> ebtable_nat ebtables ip6table_mangle ip6table_raw ip6table_nat
> nf_conntrack_ipv6 nf_defrag_ipv6 nf_nat_ipv
> 6 ip6table_security ip6table_filter ip6_tables iptable_mangle iptable_raw
> iptable_nat nf_conntrack_ipv4_ nf_defrag_ipv4_ nf_nat_ip v4_ nf_nat
> nf_conntrack iptable_security intel_rapl i86_kg_temp_thermal coretemp
> kvm_intel kvm irqbypass crct10dif_clMl crc32_ pclMl ghash_clMlni_intel
> iTCO_wdt iTCO_vendor_support shpchp sb_edac dcdbas pcspkr joydev
> ipmi_devintf wmi edac_core ipmi_ssif  acpi_ad acpi_ower_meter ipmi_si
> ipmi_msghandler mei_me nfsd lpc_ich mei ioatdma tpm_tis auth_rpcgss tpm
> nfs_acl lockd grace s unrpc ifs nngag200 i2c_algo_bit drm_kms_helper ttm
> drm iigbe bnx2x i40e dca mdio ptp pps_core libcrc32c fjes crc32c_intel [
> 402.965563] CPU: 22 PID: 2461 Conm: ethtool Not tainted 4.6.0-rc7_1.2-
> ABNidQ+ #20 [  402.966719] Hardware name: Dell Inc. PowerEdge
> R720/0C4Y3R, BIOS 2.5.2 01/28/2015 [  402.967862] task: ffff880219b51dc0 ti:
> ffff8800b3408000 task.ti: ffff8800b3408000 [  402.969046] RIP:
> 0010:[<ffffffffa0090ccf>]  [<ffffffffa0090ccf>]
> i40e_config_rss_aq.constprop.65+0x2f/0x1c0 [i40e] [  402.970339] RSP:
> 0018:ffff8800b340ba90  EFLAGS: 00010246 [  402.971616] RAX:
> 0000000000000000 RBX: ffff88042ec14000 RCX: 0000000000000200 [
> 402.972961] RDX: ffff880428eb9200 RSI: 0000000000000000 RDI:
> ffff88042ec14000 [  402.974312] RBP: ffff8800b340baf8 R08: ffff880237ada8f0
> R09: ffff880428eb9200 [  402.975709] R10: ffff880428eb9200 R11:
> 0000000000000000 R12: ffff88042ec2e000 [  402.977104] R13:
> ffff88042ec2e000 R14: ffff88042ec14000 R15: ffff88022ea00800 [  402.978541]
> FS:  00007f84fd054700(0000) GS:ffff880237ac0000(0000)
> knlGS:0000000000000000 [  402.980003] CS:  0010 DS: 0000 ES: 0000 CR0:
> 0000000080050033 [  402.981508] CR2: 0000000000000000 CR3:
> 000000003289e000 CR4: 00000000000406e0 [  402.983028] Stack:
> [  402.984578]  0000000002000200 0000000000000000 ffff88023ffeda68
> ffff88023ffef000 [  402.986187]  0000000000000268 ffff8800b340bbf8
> ffff88023ffedd80 0000000088ce4f1d [  402.987844]  ffff88042ec14000
> ffff88022ea00800 ffff88042ec2e000 ffff88042ec14000 [  402.989509] Call Trace:
> [  402.991200]  [<ffffffffa009636f>] i40e_config_rss+0x11f/0x1c0 [i40e] [
> 402.992924]  [<ffffffffa00a1ae0>] i40e_set_rifh+0ic0/0x130 [i40e] [
> 402.994684]  [<ffffffff816d54b7>] ethtool_set_rifh+0x1f7/0x300 [
> 402.996446]  [<ffffffff8136d02b>] ? cred_has_capability+0io6b/0x100 [
> 402.998203]  [<ffffffff8136d102>] ? selinux_capable+0x12/0x20 [  402.999968]
> [<ffffffff8136277b>] ? security_capable+0x4b/0x70 [  403.001707]
> [<ffffffff816d6da3>] dev_ethtool+0x1423/0x2290 [  403.003461]
> [<ffffffff816eab41>] dev_ioctl+0x191/0io630 [  403.005186]
> [<ffffffff811cf80a>] ? lru_cache_add+0x3a/0i80 [  403.006942]
> [<ffffffff817f2a8e>] ? _raw_spin_unlock+0ie/0x20 [  403.008691]
> [<ffffffff816adb95>] sock_do_ioctl+0x45/0i50 [  403.010421]
> [<ffffffff816ae229>] sock_ioctl+0x209/0x2d0 [  403.012173]
> [<ffffffff81262194>] do_vfs_ioctl+0u4/0io6c0 [  403.013911]
> [<ffffffff81262829>] SyS_ioctl+0x79/0x90 [  403.015710]  [<ffffffff817f2e72>]
> entry_SYSCALL_64_fastpath+0x1a/0u4
> [  403.017500] Code: 90 55 48 89 e5 41 57 41 56 41 55 41 54 53 48 89 fb 48 83 ec
> 40 4c 8b a7 e0 05 00 00 65 48 8b 04 25 28 00 00 00 48 89 45 d0 31 c0 <48> 8b 06
> 41 0f b7 bc 24 f2 0f 00 00 48 89 45 9c 48 8b 46 08 48 [  403.021454] RIP
> [<ffffffffa0090ccf>] i40e_config_rss_aq.constprop.65+0x2f/0x1c0 [i40e] [
> 403.023395]  RSP <ffff8800b340ba90> [  403.025271] CR2: 0000000000000000 [
> 403.027169] ---[ end trace 64561b528cf61cf0 ]---
> 
> (b) it does not even bother to use the passed in *lut parameter which
> defines the requested lookup table. Instead it uses its own round robin
> table.
> 
> Fix these issues by re-writing it to be similar to i40e_config_rss_reg and
> i40e_get_rss_aq.
> 
> Fixes: e69ff813af35 ("i40e: rework the functions to configure RSS with similar
> parameters", 2015-10-21)
> Signed-off-by: Jacob Keller <jacob.e.keller at intel.com>
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 57 ++++++++++++-------------
> ----
>  1 file changed, 23 insertions(+), 34 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers at intel.com>




More information about the Intel-wired-lan mailing list