projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
e223b6d
)
p54: set_tim must be atomic.
author
Artur Skawina
<
[email protected]
>
Thu, 15 Jan 2009 20:07:03 +0000
(21:07 +0100)
committer
John W. Linville
<
[email protected]
>
Fri, 16 Jan 2009 22:08:24 +0000
(17:08 -0500)
Fix for:
BUG: scheduling while atomic: named/2004/0x10000200
Pid: 2004, comm: named Not tainted
2.6.29-rc1-00271-ge9fa6b0
#45
Call Trace:
[<
c04d4ef7
>] schedule+0x2a7/0x320
[<
c03aed74
>] __alloc_skb+0x34/0x110
[<
c011f5b3
>] __cond_resched+0x13/0x30
[<
c04d501d
>] _cond_resched+0x2d/0x40
[<
c016d8c5
>] kmem_cache_alloc+0x95/0xc0
[<
c016b8d4
>] check_object+0xc4/0x230
[<
c03aed74
>] __alloc_skb+0x34/0x110
[<
c02ede91
>] p54_alloc_skb+0x71/0xf0
[<
c02ee36f
>] p54_set_tim+0x3f/0xa0
[<
c04ae064
>] sta_info_set_tim_bit+0x64/0x80
[<
c04c1017
>] invoke_tx_handlers+0xd57/0xd80
[<
c016c397
>] free_debug_processing+0x197/0x210
[<
c03ae215
>] pskb_expand_head+0xf5/0x170
[<
c04bfd94
>] __ieee80211_tx_prepare+0x164/0x2f0
[<
c04c1a8d
>] ieee80211_skb_resize+0x6d/0xe0
[<
c04c250f
>] ieee80211_master_start_xmit+0x23f/0x550
[<
c016d188
>] __slab_alloc+0x2b8/0x4f0
[<
c013a711
>] getnstimeofday+0x51/0x120
[<
c03b5e7b
>] dev_hard_start_xmit+0x1db/0x240
[<
c03c6a4b
>] __qdisc_run+0x1ab/0x200
[<
c0136aa1
>] __run_hrtimer+0x31/0xf0
[<
c03b6247
>] dev_queue_xmit+0x247/0x500
[<
c04c1e56
>] ieee80211_subif_start_xmit+0x356/0x7d0
[<
c0466ff7
>] packet_rcv_spkt+0x37/0x150
[<
c0466ff7
>] packet_rcv_spkt+0x37/0x150
[<
c03b5e7b
>] dev_hard_start_xmit+0x1db/0x240
[<
c03c6a4b
>] __qdisc_run+0x1ab/0x200
[<
c03b6247
>] dev_queue_xmit+0x247/0x500
[<
c03bc1e2
>] neigh_resolve_output+0xe2/0x200
[<
c0410080
>] ip_finish_output+0x0/0x290
[<
c0410267
>] ip_finish_output+0x1e7/0x290
[<
c040f355
>] ip_local_out+0x15/0x20
[<
c040f5d2
>] ip_push_pending_frames+0x272/0x380
[<
c042bbc6
>] udp_push_pending_frames+0x146/0x3a0
[<
c042d52a
>] udp_sendmsg+0x2fa/0x6b0
[<
c0433bc7
>] inet_sendmsg+0x37/0x70
[<
c03a7b7e
>] sock_sendmsg+0xbe/0x100
[<
c0133cd0
>] autoremove_wake_function+0x0/0x50
[<
c011c043
>] __wake_up_common+0x43/0x70
[<
c024a892
>] copy_from_user+0x32/0x130
[<
c024a892
>] copy_from_user+0x32/0x130
[<
c03b001e
>] verify_iovec+0x2e/0xb0
[<
c03a7d3f
>] sys_sendmsg+0x17f/0x290
[<
c017730a
>] pipe_write+0x29a/0x570
[<
c013a172
>] update_wall_time+0x492/0x8e0
[<
c013a711
>] getnstimeofday+0x51/0x120
[<
c011b05d
>] sched_slice+0x3d/0x80
[<
c013a711
>] getnstimeofday+0x51/0x120
[<
c0136657
>] hrtimer_forward+0x147/0x1a0
[<
c01101b0
>] lapic_next_event+0x10/0x20
[<
c013ccb3
>] clockevents_program_event+0xa3/0x170
[<
c03a9054
>] sys_socketcall+0xa4/0x290
[<
c0110920
>] smp_apic_timer_interrupt+0x40/0x70
[<
c0103165
>] sysenter_do_call+0x12/0x25
Signed-off-by: Artur Skawina <
[email protected]
>
Acked-by: Christian Lamparter <
[email protected]
>
Signed-off-by: John W. Linville <
[email protected]
>
drivers/net/wireless/p54/p54common.c
patch
|
blob
|
history
diff --git
a/drivers/net/wireless/p54/p54common.c
b/drivers/net/wireless/p54/p54common.c
index 3b44e8e76030ad1ae3e2379e5ce4358cedf308b9..ae31e3775e0c173c10a181ad3e34368ffefc603e 100644
(file)
--- a/
drivers/net/wireless/p54/p54common.c
+++ b/
drivers/net/wireless/p54/p54common.c
@@
-1147,7
+1147,7
@@
static int p54_set_tim(struct ieee80211_hw *dev, struct ieee80211_sta *sta,
skb = p54_alloc_skb(dev, P54_HDR_FLAG_CONTROL_OPSET,
sizeof(struct p54_hdr) + sizeof(*tim),
- P54_CONTROL_TYPE_TIM, GFP_
KERNEL
);
+ P54_CONTROL_TYPE_TIM, GFP_
ATOMIC
);
if (!skb)
return -ENOMEM;