[<prev] [next>] [day] [month] [year] [list]
Message-ID: <SA2PR11MB47770A9C3665761D697086C6D5089@SA2PR11MB4777.namprd11.prod.outlook.com>
Date: Wed, 23 Jun 2021 11:37:43 +0000
From: "Ismail, Mohammad Athari" <mohammad.athari.ismail@...el.com>
To: netdev <netdev@...r.kernel.org>
CC: Jose Abreu <joabreu@...opsys.com>
Subject: [BUG] Kernel panic when running stmmac selftest
Hi,
I'm getting Kernel panic when running stmmac selftest using "ethtool -t enp0s30f4 offline" command. I'm using net/master branch with last commit ID f4b29d2ee903 (net/master) Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.
It is tested on Intel ElkhartLake platform which has DesignWare Core Ethernet QoS version 5.20 (MAC), DesignWare Core Ethernet PCS version 3.30 and Marvell88E2110 PHY.
Below is the Kernel dump:
[ 40.099871] ------------[ cut here ]------------
[ 40.105049] kernel BUG at net/core/skbuff.c:1673!
[ 40.110331] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
[ 40.116179] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G U 5.13.0-rc6-intel-lts-mismail5+ #89
[ 40.126786] Hardware name: Intel Corporation Elkhart Lake Embedded Platform/ElkhartLake LPDDR4x T4 RVP1, BIOS EHLSFWI1.R00.3192.A01.2105041421 05/04/2021
[ 40.142135] RIP: 0010:pskb_expand_head+0x24b/0x2d0
[ 40.147491] Code: df e8 c9 fc ff ff e9 ae fe ff ff 44 2b 74 24 04 31 c0 44 01 b3 d0 00 00 00 48 83 c4 08 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 0b <0f> 0b be 02 00 00 00 e8 49 41 be ff e9 67 ff ff ff f6 c2 01 75 0d
[ 40.168474] RSP: 0018:ffffa78100003b78 EFLAGS: 00010202
[ 40.174308] RAX: 000000000000028d RBX: ffff8c0907ac3300 RCX: 0000000000000a20
[ 40.182272] RDX: 0000000000000002 RSI: 0000000000000000 RDI: ffff8c0907ac3300
[ 40.190241] RBP: ffffa78100003bf0 R08: ffff8c0907ac33d4 R09: 0000000000000043
[ 40.198212] R10: 0000000000000008 R11: ffff8c0908788090 R12: 0000000000000224
[ 40.206182] R13: ffff8c0907ac3300 R14: ffff8c090896bd40 R15: ffff8c0907ac3300
[ 40.214150] FS: 0000000000000000(0000) GS:ffff8c0a64200000(0000) knlGS:0000000000000000
[ 40.223188] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 40.229602] CR2: 00007f81a5a99e30 CR3: 0000000103c6c000 CR4: 0000000000350ef0
[ 40.237573] Call Trace:
[ 40.240297] <IRQ>
[ 40.242528] __pskb_pull_tail+0x4f/0x3b0
[ 40.246924] stmmac_test_loopback_validate+0x6c/0x220 [stmmac]
[ 40.253452] __netif_receive_skb_core+0x66a/0x1120
[ 40.258800] ? domain_unmap+0x6e/0xf0
[ 40.262888] __netif_receive_skb_list_core+0x10d/0x280
[ 40.268625] ? mod_timer+0x1b5/0x320
[ 40.272614] netif_receive_skb_list_internal+0x1cd/0x2d0
[ 40.278537] gro_normal_list.part.160+0x19/0x40
[ 40.283594] napi_complete_done+0x65/0x150
[ 40.288165] stmmac_napi_poll_rx+0xc7f/0xd70 [stmmac]
[ 40.293811] ? __napi_schedule+0x7a/0x90
[ 40.298190] __napi_poll+0x28/0x140
[ 40.302082] net_rx_action+0x23d/0x290
[ 40.306268] __do_softirq+0xa3/0x2ef
[ 40.310258] irq_exit_rcu+0xbc/0xd0
[ 40.314151] common_interrupt+0xaf/0xe0
[ 40.318434] </IRQ>
[ 40.320772] asm_common_interrupt+0x1e/0x40
[ 40.325443] RIP: 0010:cpuidle_enter_state+0xd9/0x370
[ 40.330987] Code: 85 c0 0f 8f 0a 02 00 00 31 ff e8 a2 71 7c ff 45 84 ff 74 12 9c 58 f6 c4 02 0f 85 47 02 00 00 31 ff e8 0b 43 82 ff fb 45 85 f6 <0f> 88 ab 00 00 00 49 63 ce 48 2b 2c 24 48 89 c8 48 6b d1 68 48 c1
[ 40.351969] RSP: 0018:ffffffff93803e50 EFLAGS: 00000202
[ 40.357806] RAX: ffff8c0a64200000 RBX: 0000000000000001 RCX: 000000000000001f
[ 40.365774] RDX: 0000000956207c60 RSI: ffffffff93664a37 RDI: ffffffff9366ed64
[ 40.373742] RBP: 0000000956207c60 R08: 0000000000000000 R09: 000000000002a340
[ 40.381712] R10: 0000001a53fb88c6 R11: ffff8c0a64229ae4 R12: ffffc780ffc24618
[ 40.389679] R13: ffffffff93977380 R14: 0000000000000001 R15: 0000000000000000
[ 40.397650] cpuidle_enter+0x29/0x40
[ 40.401638] do_idle+0x250/0x290
[ 40.405238] cpu_startup_entry+0x19/0x20
[ 40.409608] start_kernel+0x537/0x55c
[ 40.413695] secondary_startup_64_no_verify+0xb0/0xbb
[ 40.419335] Modules linked in: bnep 8021q bluetooth ecryptfs marvell10g nfsd snd_sof_pci_intel_tgl iTCO_wdt snd_sof_intel_hda_common x86_pkg_temp_thermal intel_ishtp_loader mei_hdcp soundwire_intel sch_fq_codel iTCO_vendor_support intel_ishtp_hid kvm_intel marvell soundwire_generic_allocation soundwire_cadence soundwire_bus kvm snd_hda_codec_hdmi snd_sof_xtensa_dsp uio snd_soc_acpi_intel_match uhid dwmac_intel snd_soc_acpi irqbypass stmmac intel_rapl_msr igb pcspkr snd_hda_intel pcs_xpcs snd_intel_dspcfg phylink i2c_i801 snd_intel_sdw_acpi libphy dca intel_ish_ipc snd_hda_codec mei_me snd_hda_core intel_ishtp mei i2c_smbus 8250_lpss spi_dw_pci dw_dmac_core spi_dw thermal tpm_crb tpm_tis tpm_tis_core parport_pc parport tpm intel_pmc_core i915 fuse configfs snd_sof_pci snd_sof snd_soc_core snd_compress ac97_bus ledtrig_audio snd_pcm snd_timer snd soundcore
[ 40.503980] ---[ end trace a6a698bb4b2d1455 ]---
[ 40.561709] RIP: 0010:pskb_expand_head+0x24b/0x2d0
[ 40.567069] Code: df e8 c9 fc ff ff e9 ae fe ff ff 44 2b 74 24 04 31 c0 44 01 b3 d0 00 00 00 48 83 c4 08 5b 5d 41 5c 41 5d 41 5e 41 5f c3 0f 0b <0f> 0b be 02 00 00 00 e8 49 41 be ff e9 67 ff ff ff f6 c2 01 75 0d
[ 40.588052] RSP: 0018:ffffa78100003b78 EFLAGS: 00010202
[ 40.593888] RAX: 000000000000028d RBX: ffff8c0907ac3300 RCX: 0000000000000a20
[ 40.601864] RDX: 0000000000000002 RSI: 0000000000000000 RDI: ffff8c0907ac3300
[ 40.609838] RBP: ffffa78100003bf0 R08: ffff8c0907ac33d4 R09: 0000000000000043
[ 40.609840] R10: 0000000000000008 R11: ffff8c0908788090 R12: 0000000000000224
[ 40.609841] R13: ffff8c0907ac3300 R14: ffff8c090896bd40 R15: ffff8c0907ac3300
[ 40.609841] FS: 0000000000000000(0000) GS:ffff8c0a64200000(0000) knlGS:0000000000000000
[ 40.609843] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 40.609844] CR2: 00007f81a5a99e30 CR3: 0000000103c6c000 CR4: 0000000000350ef0
[ 40.609845] Kernel panic - not syncing: Fatal exception in interrupt
[ 40.609885] Kernel Offset: 0x11200000 from 0xffffffff81000000 (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
[ 40.727867] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
I`m not really have much knowledge and expertise on skb framework. It look like the issue is due to the skb is still shared by other user before running skb_linearize().
The Kernel panic can be fixed (as workaround) by below change:
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
index 0462dcc93e53..53b1a9efb3d4 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_selftests.c
@@ -261,6 +261,10 @@ static int stmmac_test_loopback_validate(struct sk_buff *skb,
if (!skb)
goto out;
+ skb = skb_share_check(skb, GFP_ATOMIC);
+ if (!skb)
+ goto out;
+
if (skb_linearize(skb))
goto out;
if (skb_headlen(skb) < (STMMAC_TEST_PKT_SIZE - ETH_HLEN))
Please comment and advise.
Thank you.
Regards,
Athari
Powered by blists - more mailing lists