qcacld-3.0: Move allocation of tdls private to tdls component
Presently osif tdls memory is freed as part of the osif_priv when the vdev is logically destroyed. There is case seen wherein the tdls is holding vdev reference and in the other thread the interface down is received and the osif_priv is freed resulting in the tdls osif priv also, if the other thread tries to dereference the tdls os priv it will result null pointer exception. Move the tdls osif priv memory creation/deletion to the tdls component. Change-Id: I3782f6304bee5a6eaab4d9122a569ba56fd29947 CRs-Fixed: 2436379
这个提交包含在:
@@ -609,6 +609,26 @@ typedef QDF_STATUS
|
||||
/* This callback is to release vdev ref for tdls offchan param related msg */
|
||||
typedef void (*tdls_offchan_parms_callback)(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* tdls_vdev_init_cb() - Callback for initializing the tdls private structure
|
||||
* @vdev: vdev object
|
||||
*
|
||||
* This callback will be used to create the vdev private object and store
|
||||
* in os_priv.
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
typedef QDF_STATUS (*tdls_vdev_init_cb)(struct wlan_objmgr_vdev *vdev);
|
||||
/**
|
||||
* tdls_vdev_deinit_cb() - Callback for deinitializing the tdls private struct
|
||||
* @vdev: vdev object
|
||||
*
|
||||
* This callback will be used to destroy the vdev private object.
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
typedef void (*tdls_vdev_deinit_cb)(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* struct tdls_start_params - tdls start params
|
||||
* @config: tdls user config
|
||||
@@ -624,6 +644,8 @@ typedef void (*tdls_offchan_parms_callback)(struct wlan_objmgr_vdev *vdev);
|
||||
* @tdls_reg_peer: register tdls peer with datapath
|
||||
* @tdls_dereg_peer: deregister tdls peer from datapath
|
||||
* @tdls_dp_vdev_update: update vdev flags in datapath
|
||||
* @tdls_osif_init_cb: callback to initialize the tdls priv
|
||||
* @tdls_osif_deinit_cb: callback to deinitialize the tdls priv
|
||||
*/
|
||||
struct tdls_start_params {
|
||||
struct tdls_user_config config;
|
||||
@@ -643,6 +665,8 @@ struct tdls_start_params {
|
||||
tdls_register_peer_callback tdls_reg_peer;
|
||||
tdls_deregister_peer_callback tdls_dereg_peer;
|
||||
tdls_dp_vdev_update_flags_callback tdls_dp_vdev_update;
|
||||
tdls_vdev_init_cb tdls_osif_init_cb;
|
||||
tdls_vdev_deinit_cb tdls_osif_deinit_cb;
|
||||
};
|
||||
|
||||
/**
|
||||
|
在新工单中引用
屏蔽一个用户