• Vasanthakumar Thiagarajan's avatar
    ath6kl: Fix accessing wrong skb->data in ath6kl_tx_complete() · f3803eb2
    Vasanthakumar Thiagarajan authored
    When buffer alignmnet is applied, the data pointer of skb taken from
    cookie will no longer point to the first byte of the actual data.
    But the skb->data pointer is used in ath6kl_tx_complete() to get
    the index of the virtual interface which will not give the correct
    interface index and sometimes may give the following WARN_ON() message.
    Use packet->buf instead of skb->data to fix this.
    
    WARNING: at drivers/net/wireless/ath/ath6kl/wmi.c:88 ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]()
    Hardware name: 2842K3U
    Modules linked in: ath6kl mmc_block cfg80211 binfmt_misc ppdev nfs nfsd lockd nfs_acl auth_rpcgss sunrpc exportfs snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_intel
    +snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy thinkpad_acpi snd_seq_oss snd_seq_midi snd_rawmidi joydev fbcon tileblit font bitblit softcursor
    +snd_seq_midi_event snd_seq snd_timer snd_seq_device i915 uvcvideo drm_kms_helper drm psmouse serio_raw snd i2c_algo_bit sdhci_pci videodev intel_agp soundcore intel_gtt jmb38x_ms
    +memstick sdhci snd_page_alloc nvram lp parport agpgart video ahci r8169 mii libahci [last unloaded: ath6kl]
    Pid: 15482, comm: kworker/u:1 Tainted: G        W   3.1.0-rc10-wl+ #2
    Call Trace:
     [<c0144d72>] warn_slowpath_common+0x72/0xa0
     [<fb7c94fb>] ? ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]
     [<fb7c94fb>] ? ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]
     [<c0144dc2>] warn_slowpath_null+0x22/0x30
     [<fb7c94fb>] ath6kl_get_vif_by_index+0x5b/0x60 [ath6kl]
     [<fb7c7028>] ath6kl_tx_complete+0x128/0x4d0 [ath6kl]
     [<c04df920>] ? mmc_request_done+0x80/0x80
     [<fb7b9e2e>] htc_tx_complete+0x5e/0x70 [ath6kl]
     [<c05e4cf6>] ? _raw_spin_unlock_bh+0x16/0x20
     [<fb7ce588>] ? ath6kl_sdio_scatter_req_add+0x48/0x60 [ath6kl]
     [<fb7b9f42>] htc_async_tx_scat_complete+0xb2/0x120 [ath6kl]
     [<fb7ce9e7>] ath6kl_sdio_scat_rw+0x87/0x370 [ath6kl]
     [<c0101e12>] ? __switch_to+0xd2/0x190
     [<c01397b5>] ? finish_task_switch+0x45/0xd0
     [<c05e272e>] ? __schedule+0x3ae/0x8b0
     [<fb7cf00a>] ath6kl_sdio_write_async_work+0x4a/0xf0 [ath6kl]
     [<c015d266>] process_one_work+0x116/0x3c0
     [<fb7cefc0>] ? ath6kl_sdio_read_write_sync+0xb0/0xb0 [ath6kl]
     [<c015f5b0>] worker_thread+0x140/0x3b0
     [<c015f470>] ? manage_workers+0x1f0/0x1f0
     [<c0163424>] kthread+0x74/0x80
     [<c01633b0>] ? kthread_worker_fn+0x160/0x160
     [<c05ebdc6>] kernel_thread_helper+0x6/0x10
    Reported-by: default avatarAarthi Thiruvengadam <athiruve@qca.qualcomm.com>
    Signed-off-by: default avatarVasanthakumar Thiagarajan <vthiagar@qca.qualcomm.com>
    Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
    f3803eb2
txrx.c 36 KB