Created
November 14, 2018 16:45
-
-
Save vianpl/6483bc7b8375cb1d851fd17d15ce2c40 to your computer and use it in GitHub Desktop.
eBPF USB atomic alloction error injection
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
USB ATOMIC ALLOCATION ERROR INJECTION | |
Prerequisites: | |
- Install bcc and bcc-tools, this patch https://github.com/iovisor/bcc/pull/2044 | |
is needed | |
- The BCC tools are available at: /usr/share/bcc/tools | |
- Boot with the latest KOTD-debug kernel which has CONFIG_BPF_KPROBE_OVERRIDE | |
enabled | |
Injecting errors into an USB network device: | |
- lsusb output: | |
Bus 004 Device 004: ID 0424:5734 Standard Microsystems Corp. | |
>>> Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp. RTL8153 Gigabit Ethernet Adapter | |
Bus 004 Device 002: ID 0424:5807 Standard Microsystems Corp. | |
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub | |
Bus 003 Device 008: ID 0853:0100 Topre Corporation HHKB Professional | |
Bus 003 Device 006: ID 0409:005a NEC Corp. HighSpeed Hub | |
Bus 003 Device 004: ID 0bda:4014 Realtek Semiconductor Corp. | |
Bus 003 Device 007: ID 0424:274c Standard Microsystems Corp. | |
Bus 003 Device 005: ID 046d:c52e Logitech, Inc. MK260 Wireless Combo Receiver | |
Bus 003 Device 003: ID 0424:2734 Standard Microsystems Corp. | |
Bus 003 Device 002: ID 0424:2807 Standard Microsystems Corp. | |
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub | |
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub | |
Bus 001 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port | |
Bus 001 Device 004: ID 0c45:6713 Microdia | |
Bus 001 Device 005: ID 15aa:1555 Gearway Electronics (Dong Guan) Co., Ltd. | |
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub | |
- Error injection; will fail 10 times to allocate atomic memory during any | |
URB sumbission by USB device [bus 4: dev 3]: | |
sudo ./inject kmalloc -c 10 -P 1 -I linux/usb.h "(true) | |
=> usb_submit_urb(struct urb *urb, gfp_t mem_flags)(mem_flags == GFP_ATOMIC && urb->dev->bus->busnum == 4 && urb->dev->devnum == 3) | |
" | |
- dmesg output: | |
[24734.915723] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915727] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915730] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915734] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915737] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915741] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915745] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915748] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915752] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 | |
[24734.915756] r8152 4-1.2:1.0 enp62s0u1u2: Couldn't submit rx[000000004cd74c10], ret = -12 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment