David Bidner, le mer. 07 oct. 2026 06:11:02 +0200, a ecrit: > Ethernet receive threads and loopback sends can enqueue packets at the > same time: they hold different locks,
? They don't? loopback_xmit() assumes that net_bh_lock() is already taken, and ethernet_demuxer takes it. > and the skb queue spinlocks are no-ops on Hurd. Yes, because we essentially run the whole tcp/ip stack single-threaded from net_bh_worker(). > Concurrent updates can corrupt the receive backlog, causing packet > loss and TCP timeouts. I have never observed such a thing. Did you really observe it? How? > Add backlog_lock to protect the queue and netdev_dropping in netif_rx(), > net_bh() and dev_clear_backlog(). “I had a problem, so I added a lock. Now I have two problems: a deadlock and a race condition.” More seriously, net_bh_lock should already be the mutex that you are looking for, that protects the backlog without blocking RPCs. Samuel
