net: arp: Fix memory corruption in arp_send()

Summary:
- In arp_send(), arp_wait_setup() adds a notify object to g_arp_waiters
  which is removed in arp_wait() in normal case.
- However, in timeout and error cases, the object was not removed and
  caused memory corruption.
- This commit fixes this issue.

Impact:
- None

Testing:
- Tested with spresense:rndis_smp

Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
This commit is contained in:
Masayuki Ishikawa 2021-03-31 06:33:37 +09:00 committed by Xiang Xiao
parent 106a471ef1
commit b3f7cf9ad9
1 changed files with 2 additions and 0 deletions

View File

@ -341,6 +341,7 @@ int arp_send(in_addr_t ipaddr)
CONFIG_ARP_SEND_DELAYMSEC);
if (ret == -ETIMEDOUT)
{
arp_wait_cancel(&notify);
goto timeout;
}
}
@ -354,6 +355,7 @@ int arp_send(in_addr_t ipaddr)
/* Break out on a send failure */
nerr("ERROR: Send failed: %d\n", ret);
arp_wait_cancel(&notify);
break;
}