qcacmn: Avoid reference of peer object after peer_teardown
In API dp_peer_find_by_id return NULL if delete_in_progress bit is set, this will avoid referencing peer memory which will be free in peer_unmap event asynchronously. Change-Id: Ieab559b9274a886809a9baa9bb348d348e924625 CRs-fixed: 2194265
这个提交包含在:
@@ -23,9 +23,8 @@
|
||||
#include "dp_types.h"
|
||||
|
||||
#define DP_INVALID_PEER_ID 0xffff
|
||||
|
||||
/**
|
||||
* dp_peer_find_by_id() - Returns peer object given the peer id
|
||||
* __dp_peer_find_by_id() - Returns peer object given the peer id
|
||||
*
|
||||
* @soc : core DP soc context
|
||||
* @peer_id : peer id from peer object can be retrieved
|
||||
@@ -33,7 +32,7 @@
|
||||
* Return: struct dp_peer*: Pointer to DP peer object
|
||||
*/
|
||||
static inline struct dp_peer *
|
||||
dp_peer_find_by_id(struct dp_soc *soc,
|
||||
__dp_peer_find_by_id(struct dp_soc *soc,
|
||||
uint16_t peer_id)
|
||||
{
|
||||
struct dp_peer *peer;
|
||||
@@ -53,6 +52,30 @@ dp_peer_find_by_id(struct dp_soc *soc,
|
||||
return peer;
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_peer_find_by_id() - Returns peer object given the peer id
|
||||
* if delete_in_progress in not set for peer
|
||||
*
|
||||
* @soc : core DP soc context
|
||||
* @peer_id : peer id from peer object can be retrieved
|
||||
*
|
||||
* Return: struct dp_peer*: Pointer to DP peer object
|
||||
*/
|
||||
static inline struct dp_peer *
|
||||
dp_peer_find_by_id(struct dp_soc *soc,
|
||||
uint16_t peer_id)
|
||||
{
|
||||
struct dp_peer *peer;
|
||||
|
||||
peer = __dp_peer_find_by_id (soc, peer_id);
|
||||
|
||||
if (peer && peer->delete_in_progress) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return peer;
|
||||
}
|
||||
|
||||
void dp_rx_peer_map_handler(void *soc_handle, uint16_t peer_id,
|
||||
uint16_t hw_peer_id, uint8_t vdev_id, uint8_t *peer_mac_addr);
|
||||
void dp_rx_peer_unmap_handler(void *soc_handle, uint16_t peer_id);
|
||||
|
在新工单中引用
屏蔽一个用户