Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9757f1d2 authored by Alan Ott's avatar Alan Ott Committed by David S. Miller
Browse files

mrf24j40: Move INIT_COMPLETION() to before packet transmission



This avoids a race condition where complete(tx_complete) could be called
before tx_complete is initialized.

Signed-off-by: default avatarAlan Ott <alan@signal11.us>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 8cc27d17
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -344,6 +344,8 @@ static int mrf24j40_tx(struct ieee802154_dev *dev, struct sk_buff *skb)
	if (ret)
		goto err;

	INIT_COMPLETION(devrec->tx_complete);

	/* Set TXNTRIG bit of TXNCON to send packet */
	ret = read_short_reg(devrec, REG_TXNCON, &val);
	if (ret)
@@ -354,8 +356,6 @@ static int mrf24j40_tx(struct ieee802154_dev *dev, struct sk_buff *skb)
		val |= 0x4;
	write_short_reg(devrec, REG_TXNCON, val);

	INIT_COMPLETION(devrec->tx_complete);

	/* Wait for the device to send the TX complete interrupt. */
	ret = wait_for_completion_interruptible_timeout(
						&devrec->tx_complete,