Commit 2bbcaae
ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb
In ath9k_hif_usb_rx_cb interface number is assumed to be 0.
usb_ifnum_to_if(urb->dev, 0)
But it isn't always true.
The case reported by syzbot:
https://lore.kernel.org/linux-usb/000000000000666c9c05a1c05d12@google.com
usb 2-1: new high-speed USB device number 2 using dummy_hcd
usb 2-1: config 1 has an invalid interface number: 2 but max is 0
usb 2-1: config 1 has no interface number 0
usb 2-1: New USB device found, idVendor=0cf3, idProduct=9271, bcdDevice=
1.08
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
general protection fault, probably for non-canonical address
0xdffffc0000000015: 0000 [Freescale#1] SMP KASAN
KASAN: null-ptr-deref in range [0x00000000000000a8-0x00000000000000af]
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.6.0-rc5-syzkaller #0
Call Trace
__usb_hcd_giveback_urb+0x29a/0x550 drivers/usb/core/hcd.c:1650
usb_hcd_giveback_urb+0x368/0x420 drivers/usb/core/hcd.c:1716
dummy_timer+0x1258/0x32ae drivers/usb/gadget/udc/dummy_hcd.c:1966
call_timer_fn+0x195/0x6f0 kernel/time/timer.c:1404
expire_timers kernel/time/timer.c:1449 [inline]
__run_timers kernel/time/timer.c:1773 [inline]
__run_timers kernel/time/timer.c:1740 [inline]
run_timer_softirq+0x5f9/0x1500 kernel/time/timer.c:1786
__do_softirq+0x21e/0x950 kernel/softirq.c:292
invoke_softirq kernel/softirq.c:373 [inline]
irq_exit+0x178/0x1a0 kernel/softirq.c:413
exiting_irq arch/x86/include/asm/apic.h:546 [inline]
smp_apic_timer_interrupt+0x141/0x540 arch/x86/kernel/apic/apic.c:1146
apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:829
Reported-and-tested-by: syzbot+40d5d2e8a4680952f042@syzkaller.appspotmail.com
Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20200404041838.10426-6-hqjagain@gmail.com1 parent 19d6c37 commit 2bbcaae
2 files changed
+42
-11
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
643 | 643 | | |
644 | 644 | | |
645 | 645 | | |
646 | | - | |
647 | | - | |
648 | | - | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
649 | 649 | | |
650 | 650 | | |
651 | 651 | | |
| |||
685 | 685 | | |
686 | 686 | | |
687 | 687 | | |
| 688 | + | |
688 | 689 | | |
689 | 690 | | |
690 | 691 | | |
691 | 692 | | |
692 | | - | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
693 | 696 | | |
694 | | - | |
695 | | - | |
696 | 697 | | |
697 | 698 | | |
698 | 699 | | |
| |||
750 | 751 | | |
751 | 752 | | |
752 | 753 | | |
| 754 | + | |
753 | 755 | | |
754 | 756 | | |
755 | 757 | | |
| |||
795 | 797 | | |
796 | 798 | | |
797 | 799 | | |
798 | | - | |
| 800 | + | |
799 | 801 | | |
800 | 802 | | |
801 | 803 | | |
| |||
832 | 834 | | |
833 | 835 | | |
834 | 836 | | |
835 | | - | |
| 837 | + | |
836 | 838 | | |
| 839 | + | |
837 | 840 | | |
838 | 841 | | |
839 | 842 | | |
840 | 843 | | |
841 | 844 | | |
842 | 845 | | |
843 | 846 | | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
844 | 853 | | |
845 | 854 | | |
846 | 855 | | |
| |||
855 | 864 | | |
856 | 865 | | |
857 | 866 | | |
| 867 | + | |
| 868 | + | |
| 869 | + | |
858 | 870 | | |
859 | 871 | | |
860 | 872 | | |
861 | 873 | | |
862 | | - | |
| 874 | + | |
863 | 875 | | |
864 | 876 | | |
865 | 877 | | |
| |||
885 | 897 | | |
886 | 898 | | |
887 | 899 | | |
| 900 | + | |
| 901 | + | |
888 | 902 | | |
889 | 903 | | |
890 | 904 | | |
| |||
896 | 910 | | |
897 | 911 | | |
898 | 912 | | |
899 | | - | |
| 913 | + | |
900 | 914 | | |
| 915 | + | |
901 | 916 | | |
902 | 917 | | |
903 | 918 | | |
904 | 919 | | |
905 | 920 | | |
906 | 921 | | |
| 922 | + | |
| 923 | + | |
| 924 | + | |
| 925 | + | |
| 926 | + | |
| 927 | + | |
907 | 928 | | |
908 | 929 | | |
909 | 930 | | |
| |||
918 | 939 | | |
919 | 940 | | |
920 | 941 | | |
| 942 | + | |
| 943 | + | |
| 944 | + | |
921 | 945 | | |
922 | 946 | | |
923 | 947 | | |
924 | 948 | | |
925 | | - | |
| 949 | + | |
926 | 950 | | |
927 | 951 | | |
928 | 952 | | |
| |||
948 | 972 | | |
949 | 973 | | |
950 | 974 | | |
| 975 | + | |
| 976 | + | |
951 | 977 | | |
952 | 978 | | |
953 | 979 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
89 | 94 | | |
90 | 95 | | |
91 | 96 | | |
| |||
0 commit comments