VMware Communities
arkh4mkn1ght
Contributor
Contributor

VMnet Kernel panic when trying to use USB tethering with smartphone with Vmware Workstation 12.5.6

Hello

I'm experiencing a kernel crash panic when trying to use my android smartphone for USB tethering with VMware Worksation 12.5.6. Host is a Linux machine with kernel 4.10.8:

[  199.933274] BUG: stack guard page was hit at ffffc21d02854208 (stack is ffffc21d02850000..ffffc21d02853fff)

[  199.933278] kernel stack overflow (page fault): 0000 [#1] SMP

[  199.936421] Modules linked in: rndis_host cdc_ether usbnet mii vmnet(O) parport_pc vmw_vsock_vmci_transport vsock vmw_vmci vmmon(O) binfmt_misc nf_conntrack_tftp nf_conntrack_sip nf_conntrack_sane nf_conntrack_pptp nf_conntrack_proto_gre nf_conntrack_netlink nfnetlink nf_conntrack_netbios_ns nf_conntrack_broadcast nf_conntrack_irc nf_conntrack_h323 nf_conntrack_ftp ts_kmp nf_conntrack_amanda nf_conntrack ip6_tables x_tables rfcomm ctr ccm cmac ppdev parport af_packet bnep joydev hid_multitouch btusb btrtl iTCO_wdt iTCO_vendor_support i2c_designware_platform i2c_designware_core tpm_crb msr arc4 intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel uvcvideo pcbc videobuf2_vmalloc videobuf2_memops videobuf2_v4l2

[  199.936441]  videobuf2_core aesni_intel snd_hda_codec_hdmi aes_x86_64 videodev crypto_simd glue_helper cryptd media snd_hda_codec_realtek snd_hda_codec_generic psmouse iwlmvm input_leds serio_raw snd_hda_intel mac80211 snd_hda_codec snd_hda_core snd_hwdep intel_th_gth snd_pcm intel_th_pci snd_timer intel_th fuse snd i2c_i801 soundcore nls_utf8 nls_cp437 iwlwifi vfat fat cfg80211 rtsx_pci_ms memstick mei_me shpchp mei idma64 virt_dma intel_pch_thermal intel_lpss_pci hci_uart thermal wmi i2c_hid hid btbcm btqca btintel bluetooth battery rfkill pinctrl_sunrisepoint pinctrl_intel intel_lpss_acpi intel_lpss fjes tpm_tis tpm_tis_core acpi_pad ac tpm cpufreq_ondemand cpufreq_conservative cpufreq_powersave nvram evdev sch_fq_codel ipv6 crc_ccitt autofs4 efivarfs rtsx_pci_sdmmc mmc_core nvme xhci_pci nvme_core

[  199.936466]  xhci_hcd rtsx_pci usbcore usb_common i915 video button i2c_algo_bit drm_kms_helper drm [last unloaded: vmnet]

[  199.936472] CPU: 2 PID: 4464 Comm: vmnet-bridge Tainted: G     U     O    4.10.8 #1

[  199.936472] Hardware name: VAIO Corporation VJZ13B/VAIO, BIOS R1193SA 09/22/2016

[  199.936473] task: ffff9d551b630000 task.stack: ffffc21d02850000

[  199.936478] RIP: 0010:VNetBridgeNotify+0x3f/0x150 [vmnet]

[  199.936479] RSP: 0018:ffffc21d02853cd8 EFLAGS: 00010246

[  199.936479] RAX: 0000000000000000 RBX: ffff9d55205a8000 RCX: 0000000000000006

[  199.936480] RDX: ffffc21d02853d08 RSI: 0000000000000001 RDI: ffff9d55205a8000

[  199.936480] RBP: ffffc21d02853cf0 R08: 0000000000000001 R09: 00000000000003a2

[  199.936481] R10: fffff9e2906e8a00 R11: 00000000000003a2 R12: ffff9d552be25000

[  199.936481] R13: 0000000000000000 R14: ffffffff88cfd198 R15: ffffffff88cfd080

[  199.936482] FS:  00007f5c9a838700(0000) GS:ffff9d553ed00000(0000) knlGS:0000000000000000

[  199.936482] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033

[  199.936483] CR2: ffffc21d02854208 CR3: 000000041ba88000 CR4: 00000000003406e0

[  199.936483] Call Trace:

[  199.936487]  register_netdevice_notifier+0x184/0x1b0

[  199.936489]  VNetBridge_Create+0x243/0x270 [vmnet]

[  199.936491]  VNetFileOpUnlockedIoctl+0x6cb/0x810 [vmnet]

[  199.936492]  ? filemap_map_pages+0x34f/0x360

[  199.936495]  do_vfs_ioctl+0x90/0x5a0

[  199.936497]  ? tomoyo_file_ioctl+0x19/0x20

[  199.936498]  SyS_ioctl+0x79/0x90

[  199.936499]  entry_SYSCALL_64_fastpath+0x1e/0xad

[  199.936500] RIP: 0033:0x7f5c9a15a557

[  199.936501] RSP: 002b:00007ffd49566588 EFLAGS: 00000246 ORIG_RAX: 0000000000000010

[  199.936501] RAX: ffffffffffffffda RBX: 00005575d4165264 RCX: 00007f5c9a15a557

[  199.936502] RDX: 00007ffd495665a0 RSI: 00000000402499e4 RDI: 0000000000000008

[  199.936502] RBP: 00005575d41650a0 R08: 00000000ffffffff R09: 00005575d51a4120

[  199.936503] R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000003

[  199.936503] R13: 00005575d51a40f0 R14: 00005575d4165180 R15: 00005575d4165264

[  199.936504] Code: 83 fe 02 0f 84 c3 00 00 00 48 83 fe 06 0f 84 8e 00 00 00 48 83 fe 01 74 0b 48 83 c4 08 31 c0 5b 41 5c 5d c3 48 83 7f 28 00 75 ee <48> 81 ba 00 05 00 00 80 d0 cf 88 75 e1 4c 8d 67 18 48 89 d7 48

[  199.936517] RIP: VNetBridgeNotify+0x3f/0x150 [vmnet] RSP: ffffc21d02853cd8

[  199.952320] ---[ end trace a9e08500a27ca42b ]---

Thanks

0 Kudos
2 Replies
bluefirestorm
Champion
Champion

I think it is a reported problem with vmnet module but didn't make it to 12.5.6.

Issue in Workstation 12.5.5 Linux vmnet module

0 Kudos
arkh4mkn1ght
Contributor
Contributor

Thanks, i have solved the issue now and USB tethering works fine with VMware Workstation 12.5.6 and Linux Kernel 4.10.8 by applying that patch plus a another one i had to make for the tethering to work.

I applied the patch shown in the link :

Issue in Workstation 12.5.5 Linux vmnet module

--- bridge.c 2017-05-14 02:24:23.764324763 +0800

+++ bridge_new.c 2017-05-14 02:24:20.494352085 +0800

@@ -1146,7 +1146,7 @@

void *data) // IN: device pertaining to event

{

VNetBridge *bridge = list_entry(this, VNetBridge, notifier);

- struct net_device *dev = (struct net_device *) data;

+ struct net_device *dev = netdev_notifier_info_to_dev(data);

switch (msg) {

case NETDEV_UNREGISTER:

That patch fixed the kernel panic but still the USB tethering was not working.

For some reason that check was making the Kernel abort enabling the bridge:

[ 2796.200693] bridge-enp0s20f0u2: can't bridge with enp0s20f0u2, bad header length 58

[ 2796.200697] bridge-enp0s20f0u2: enabling the bridge on dev up

[ 2796.200698] bridge-enp0s20f0u2: can't bridge with enp0s20f0u2, bad header length 58

[ 2796.200698] bridge-enp0s20f0u2: interface enp0s20f0u2 is not a valid Ethernet interface

[ 2796.200699] bridge-enp0s20f0u2: attached

So investigating i had to comment the following lines also in bridge.c:

938    / * if (bridge->dev->hard_header_len != ETH_HLEN) {

939       LOG(1, (KERN_DEBUG "bridge-%s: can't bridge with %s, bad header length %d\n",

940               bridge->name, bridge->dev->name, bridge->dev->hard_header_len));

941       dev_unlock_list();

942       retval = -EINVAL;

943       goto out;

944    } */

After commenting those lines and recompiling the vmnet module i was able to switch between WIFI and USB tethering in my virtual machines without kernel panics or

kernel bridge errors. I hope this info helps more people

Thanks !

0 Kudos