Message ID | 1459457986-29222-1-git-send-email-greearb@candelatech.com (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
On 31 March 2016 at 22:59, <greearb@candelatech.com> wrote: > From: Ben Greear <greearb@candelatech.com> > > Otherwise, the txrx-compl-task may access some bad memory? > > Signed-off-by: Ben Greear <greearb@candelatech.com> > --- > drivers/net/wireless/ath/ath10k/htt_tx.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/wireless/ath/ath10k/htt_tx.c b/drivers/net/wireless/ath/ath10k/htt_tx.c > index 07b960e..58e88d3 100644 > --- a/drivers/net/wireless/ath/ath10k/htt_tx.c > +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c > @@ -376,6 +376,8 @@ void ath10k_htt_tx_free(struct ath10k_htt *htt) > { > int size; > > + tasklet_kill(&htt->txrx_compl_task); > + I think, instead, the ordering of ath10k_htt_tx_free() and ath10k_htt_rx_free() should be reversed. It's already in the "correct" order in ath10k_core_stop() on error path. Micha?
On 03/31/2016 11:12 PM, Michal Kazior wrote: > On 31 March 2016 at 22:59, <greearb@candelatech.com> wrote: >> From: Ben Greear <greearb@candelatech.com> >> >> Otherwise, the txrx-compl-task may access some bad memory? >> >> Signed-off-by: Ben Greear <greearb@candelatech.com> >> --- >> drivers/net/wireless/ath/ath10k/htt_tx.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/drivers/net/wireless/ath/ath10k/htt_tx.c b/drivers/net/wireless/ath/ath10k/htt_tx.c >> index 07b960e..58e88d3 100644 >> --- a/drivers/net/wireless/ath/ath10k/htt_tx.c >> +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c >> @@ -376,6 +376,8 @@ void ath10k_htt_tx_free(struct ath10k_htt *htt) >> { >> int size; >> >> + tasklet_kill(&htt->txrx_compl_task); >> + > > I think, instead, the ordering of ath10k_htt_tx_free() and > ath10k_htt_rx_free() should be reversed. It's already in the "correct" > order in ath10k_core_stop() on error path. That seems a bit too subtle for my taste, but either way is fine with me. You want to cook up a patch? Thanks, Ben
diff --git a/drivers/net/wireless/ath/ath10k/htt_tx.c b/drivers/net/wireless/ath/ath10k/htt_tx.c index 07b960e..58e88d3 100644 --- a/drivers/net/wireless/ath/ath10k/htt_tx.c +++ b/drivers/net/wireless/ath/ath10k/htt_tx.c @@ -376,6 +376,8 @@ void ath10k_htt_tx_free(struct ath10k_htt *htt) { int size; + tasklet_kill(&htt->txrx_compl_task); + idr_for_each(&htt->pending_tx, ath10k_htt_tx_clean_up_pending, htt->ar); idr_destroy(&htt->pending_tx);