qcacmn: Fix null pointer issue in LPM case
In the LPM case, if the tx desc has been force freed in the dp_bus_suspend ->dp_find_missing_tx_comp, then after data transfer resumed, fw may report tx complete for the same tx desc, and we should skip it to avoid null pointer access. The reason why set default vdev_id to 0xff is: Since in this case, it happned disconnect before suspend, so the tx desc pool will be deleted and reinitalized when resume, so the pdev is null in the force freed tx_desc and vdev_id should be changed from 0 to DP_INVALID_VDEV_ID, otherwise the below logic in the tx complete handler will not skip handling this freed tx_desc. if (qdf_unlikely((tx_desc->vdev_id == DP_INVALID_VDEV_ID) && !tx_desc->flags)) { DP_STATS_INC(soc, tx.tx_comp_exception,1); dp_tx_desc_check_corruption(tx_desc); continue; } Change-Id: I5f3ff6fd783893f92a0fd6b3db7457b280fcb1c8 CRs-Fixed: 3447465
这个提交包含在:
@@ -582,6 +582,7 @@ QDF_STATUS dp_tx_desc_pool_init_li(struct dp_soc *soc,
|
||||
|
||||
tx_desc->id = id;
|
||||
tx_desc->pool_id = pool_id;
|
||||
tx_desc->vdev_id = DP_INVALID_VDEV_ID;
|
||||
dp_tx_desc_set_magic(tx_desc, DP_TX_MAGIC_PATTERN_FREE);
|
||||
tx_desc = tx_desc->next;
|
||||
count++;
|
||||
|
在新工单中引用
屏蔽一个用户