From 00cce59bcdc51644cd2e2494ba9cd32ea2464551 Mon Sep 17 00:00:00 2001 From: Manjunathappa Prakash Date: Mon, 20 Jan 2020 18:45:53 -0800 Subject: [PATCH] qcacld-3.0: Check validity of dp_vdev while flushing Validate vdev before delivering the packets for vdev. Drop the packets if vdev is deleted. Change-Id: If92d0fba04d96e3830bb4e6f04c395b4fcd54f84 CRs-Fixed: 2606760 --- core/dp/txrx3.0/dp_fisa_rx.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/dp/txrx3.0/dp_fisa_rx.c b/core/dp/txrx3.0/dp_fisa_rx.c index 9b421d68484b..2dad01c5c388 100644 --- a/core/dp/txrx3.0/dp_fisa_rx.c +++ b/core/dp/txrx3.0/dp_fisa_rx.c @@ -243,11 +243,13 @@ dp_rx_fisa_setup_hw_fse(struct dp_rx_fst *fisa_hdl, static void dp_rx_fisa_update_sw_ft_entry(struct dp_fisa_rx_sw_ft *sw_ft_entry, uint32_t flow_hash, struct dp_vdev *vdev, + struct dp_soc *soc_hdl, uint32_t flow_id) { sw_ft_entry->flow_hash = flow_hash; sw_ft_entry->flow_id = flow_id; sw_ft_entry->vdev = vdev; + sw_ft_entry->soc_hdl = soc_hdl; } /** @@ -362,6 +364,7 @@ dp_rx_fisa_add_ft_entry(struct dp_rx_fst *fisa_hdl, /* Add SW FT entry */ dp_rx_fisa_update_sw_ft_entry(sw_ft_entry, flow_hash, vdev, + fisa_hdl->soc_hdl, hashed_flow_idx); if (!rx_flow_tuple_info.tuple_populated) get_flow_tuple_from_nbuf(hal_soc_hdl, @@ -716,6 +719,7 @@ dp_rx_fisa_flush_udp_flow(struct dp_vdev *vdev, struct udphdr *head_skb_udp_hdr; struct skb_shared_info *shinfo; qdf_nbuf_t linear_skb; + struct dp_vdev *fisa_flow_vdev; dp_fisa_debug("head_skb %pk", head_skb); dp_fisa_debug("cumulative ip length %d", @@ -787,6 +791,12 @@ dp_rx_fisa_flush_udp_flow(struct dp_vdev *vdev, hex_dump_skb_data(fisa_flow->head_skb, false); + fisa_flow_vdev = dp_get_vdev_from_soc_vdev_id_wifi3(fisa_flow->soc_hdl, + QDF_NBUF_CB_RX_VDEV_ID(fisa_flow->head_skb)); + if (qdf_unlikely(!fisa_flow_vdev || + (fisa_flow_vdev != fisa_flow->vdev))) { + qdf_nbuf_free(fisa_flow->head_skb); + } dp_fisa_debug("fisa_flow->curr_aggr %d", fisa_flow->cur_aggr); linear_skb = dp_fisa_rx_linear_skb(vdev, fisa_flow->head_skb, 24000); if (linear_skb) {