• A
    ALSA: hdspm - Abort on unknown firmware revision · 5027f347
    Adrian Knoth 提交于
    Don't continue if we cannot detect the real card type, otherwise, all
    subsequent functions, especially strcpy(), would fail, leaving the whole
    driver in an unusable state.
    
    Without such a protection, dmesg would look like this:
    
    Pid: 1525, comm: modprobe Not tainted 2.6.38-rc6 #1 MSI MS-7250/MS-7250
    EIP: 0060:[<c114e700>] EFLAGS: 00010296 CPU: 1
    EIP is at strcpy+0x10/0x30
    EAX: f4d33e58 EBX: f5990800 ECX: f4d33e58 EDX: 00000000
    ESI: 00000000 EDI: f4d33e58 EBP: f5990930 ESP: f3dd3e0c
    DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    f53d4204 00000000 f90bfc03 00000001 00000001 f3dd3e64 c10fedff f3dd3e7c
    f3d854e4 f53d4000 c10307b8 00000001 c10307b8 f5990860 c10307b8 00000001
    c10332e5 f59908bc c12f4339 f59908bc f5990860 c11ef207 f4d33e00 f53d4000
    [<f90bfc03>] ? snd_hdspm_probe+0x7e7/0x1166 [snd_hdspm]
    [<c10fedff>] ? __sysfs_add_one+0x1f/0xf0
    [<c10307b8>] ? get_parent_ip+0x8/0x20
    [<c10307b8>] ? get_parent_ip+0x8/0x20
    [<c10307b8>] ? get_parent_ip+0x8/0x20
    [<c10332e5>] ? add_preempt_count+0xa5/0xd0
    [<c12f4339>] ? _raw_spin_lock_irqsave+0x19/0x40
    [<c11ef207>] ? pm_runtime_enable+0x17/0x80
    [<c1160172>] ? local_pci_probe+0x42/0xb0
    [<c1161091>] ? pci_device_probe+0x61/0x80
    [<c11e9587>] ? driver_probe_device+0x77/0x180
    [<c11600f0>] ? pci_match_device+0xa0/0xc0
    [<c11e9709>] ? __driver_attach+0x79/0x80
    [<c11e9690>] ? __driver_attach+0x0/0x80
    [<c11e8e32>] ? bus_for_each_dev+0x52/0x80
    [<c11e9416>] ? driver_attach+0x16/0x20
    [<c11e9690>] ? __driver_attach+0x0/0x80
    [<c11e8771>] ? bus_add_driver+0xa1/0x220
    [<c1160f20>] ? pci_device_remove+0x0/0xf0
    [<c11e99a3>] ? driver_register+0x63/0x120
    [<c11612bd>] ? __pci_register_driver+0x3d/0xb0
    [<c1001132>] ? do_one_initcall+0x32/0x160
    [<f90d6000>] ? alsa_card_hdspm_init+0x0/0x14 [snd_hdspm]
    [<c10676a9>] ? sys_init_module+0x99/0x1e0
    [<c10ade3d>] ? sys_close+0x6d/0xc0
    [<c1002c90>] ? sysenter_do_call+0x12/0x26
    ---[ end trace 239f0661c558378b ]---
    Signed-off-by: NAdrian Knoth <adi@drcomp.erfurt.thur.de>
    Signed-off-by: NTakashi Iwai <tiwai@suse.de>
    5027f347
hdspm.c 176.2 KB