net: arp: Fix a potential bug in arp_notify()

Summary:
- In arp_wait_setup() and arp_wait_cancel(), g_arp_waiters
  is protected by a critical section.
- However, I noticed that arp_notify() does not protect the
  g_arp_waiters that would cause memory corruption
- This commit fixes the issue.

Impact:
- None

Testing:
- Tested with spresense:rndis_smp, spresense:rndis

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

View File

@ -188,6 +188,9 @@ int arp_wait(FAR struct arp_notify_s *notify, unsigned int timeout)
void arp_notify(in_addr_t ipaddr)
{
FAR struct arp_notify_s *curr;
irqstate_t flags;
flags = enter_critical_section();
/* Find an entry with the matching IP address in the list of waiters */
@ -207,6 +210,8 @@ void arp_notify(in_addr_t ipaddr)
break;
}
}
leave_critical_section(flags);
}
#endif /* CONFIG_NET_ARP_SEND */