Skip to content

Commit

Permalink
wlcore: adding a u32 in struct wl1271 to make fields 64bit aligned
Browse files Browse the repository at this point in the history
Add a u32 in struct wl1271 to make fields reg_ch_conf_last and
reg_ch_conf_pending 64bit aligned.

Without this, on 64bit ARM, wlcore_set_pending_regdomain_ch() will fail at
the point it calls set_bit(ch_bit_idx, (long*)wl->reg_ch_conf_pending);
Here is the error message while doing iw wlan0 scan or connect:

[  760.644782] wlcore: WL1271_ACX_INTR_DATA
[  760.648734] Unhandled fault: alignment fault (0x96000021) at 0xffffffc01bdc1b54
[  760.656048] Internal error: : 96000021 [#1] PREEMPT SMP
[  760.661267] Modules linked in: arc4 wl18xx wlcore mac80211 cfg80211 wlcore_sdio ti_conf_wl18xx btwilink st_drv bluetooth rfkill
[  760.672824] CPU: 0 PID: 1514 Comm: irq/198-wl18xx Tainted: G        W    3.10.52-wl-00204-gf704232-dirty #8
[  760.682558] task: ffffffc01d956040 ti: ffffffc01bea4000 task.ti: ffffffc01bea4000
[  760.690043] PC is at set_bit+0x14/0x30
[  760.693806] LR is at wlcore_set_pending_regdomain_ch+0x38/0x44 [wlcore]

Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
  • Loading branch information
docularxu authored and koenkooi committed May 22, 2015
1 parent 8694279 commit 9c3617a
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions drivers/net/wireless/ti/wlcore/wlcore.h
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,10 @@ struct wl1271 {
struct work_struct recovery_work;
bool watchdog_recovery;

/* FIXME: adding u32 to make the next field 64bit alignment
* see commit message to learn more
*/
u32 reserved;
/* Reg domain last configuration */
u32 reg_ch_conf_last[2];
/* Reg domain pending configuration */
Expand Down

0 comments on commit 9c3617a

Please sign in to comment.