Просмотр исходного кода

qcacmn: Use local skb pointer for reentrant cld80211_msg_allocator

cld80211_oem_rsp_alloc_skb api is used to alloc skb for reply msg.
A static buffer pointer is returned from this reentrant func
which can be called by kworker and scheduler thread at same
time resulting single buffer access by both threads. After
kworker thread freeing this skb, scheduler is further updating
data in this skb resulting in page fault error. Use local
skb pointer to avoid such race conditions

CRs-Fixed: 2822390
Change-Id: I5f807d06c4890b027c86de9187f17fb83b19db5e
Vinay Gannevaram 4 лет назад
Родитель
Сommit
860977d0dc
1 измененных файлов с 1 добавлено и 1 удалено
  1. 1 1
      utils/nlink/src/wlan_nlink_srv.c

+ 1 - 1
utils/nlink/src/wlan_nlink_srv.c

@@ -283,7 +283,7 @@ struct sk_buff *
 cld80211_oem_rsp_alloc_skb(uint32_t portid, void **hdr, struct nlattr **nest,
 			   int *flags)
 {
-	static struct sk_buff *msg;
+	struct sk_buff *msg;
 
 	if (in_interrupt() || irqs_disabled() || in_atomic())
 		*flags = GFP_ATOMIC;