This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Hurd".
The branch, master has been updated
via 1ce4c9449d06bd20e6af4f13763d01fad3c7e484 (commit)
from 9723c18737011b723ed7d00334b898a0ca72f212 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 1ce4c9449d06bd20e6af4f13763d01fad3c7e484
Author: David Bidner <[email protected]>
Date: Mon Oct 12 20:28:25 2026 +0200
pfinet: Serialize the backlog queue with net_bh_lock
The loopback send path reaches netif_rx() without net_bh_lock:
start_bh_atomic() is a no-op, so an application send or a TCP retransmit
runs dev_queue_xmit() -> loopback_xmit() holding only global_lock, while
the ethernet and tunnel receive paths enqueue under net_bh_lock. The skb
queue spinlocks are no-ops on Hurd, so the two enqueues can corrupt the
receive backlog. net_bh_lock is the lock meant to protect the backlog.
loopback_xmit() and dev_loopback_xmit() must take it around netif_rx().
net_bh() never holds both locks, and the receive threads are not blocked
while the protocol handlers run. dev_clear_backlog() also touches the
backlog, so protect it with net_bh_lock. Correct the loopback.c and
sched.c comments.
* pfinet/sched.c (net_bh_worker): Do not take global_lock around net_bh();
release net_bh_lock for the duration of net_bh().
* pfinet/loopback.c (loopback_xmit): Take net_bh_lock around netif_rx().
* pfinet/linux-src/net/core/dev.c (dev_loopback_xmit): Likewise.
(net_bh): Run protocol handlers under global_lock, take net_bh_lock only
for the backlog dequeue, and never hold both locks at once.
(dev_clear_backlog): Protect the backlog with net_bh_lock.
* pfinet/glue-include/linux/interrupt.h: Update the start_bh_atomic()
comment.
Message-ID: <[email protected]>
-----------------------------------------------------------------------
Summary of changes:
pfinet/glue-include/linux/interrupt.h | 2 +-
pfinet/linux-src/net/core/dev.c | 57 +++++++++++++++++++++--------------
pfinet/loopback.c | 6 ++--
pfinet/sched.c | 9 +++---
4 files changed, 43 insertions(+), 31 deletions(-)
hooks/post-receive
--
Hurd