This is an automated email from the ASF dual-hosted git repository.

xiaoxiang781216 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit b6583cc4b604dc1f5e6ffc23fc1c52caa195941d
Author: Felipe Moura <[email protected]>
AuthorDate: Sun Aug 16 17:28:55 2026 -0300

    net/arp: release the device lock before waiting for a resolution
    
    The -EINPROGRESS path jumps over the netdev_unlock() below it, so the
    caller waits holding d_lock.  The receive path needs that same lock to
    dispatch the ARP reply, and the interface stalls for good.
    
    Assisted-by: Claude Code:claude-opus-5
    Signed-off-by: Felipe Moura <[email protected]>
---
 net/arp/arp_send.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/net/arp/arp_send.c b/net/arp/arp_send.c
index 5f97a9807b0..01c5e5bb80b 100644
--- a/net/arp/arp_send.c
+++ b/net/arp/arp_send.c
@@ -328,8 +328,13 @@ int arp_send(in_addr_t ipaddr)
         {
           /* ARP request for the same destination is in progress, directly
            * wait arp response notify.
+           *
+           * Drop the device lock: this path skips the netdev_unlock()
+           * below, and the receive path needs that same lock to deliver
+           * the reply.  The waiter above is already installed.
            */
 
+          netdev_unlock(dev);
           goto wait;
         }
 

Reply via email to