git: 0ab811d89311 - stable/15 - re: Make sure re_rxeof() is called in net epoch context
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 30 Sep 2025 15:23:49 UTC
The branch stable/15 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=0ab811d89311a37f99da0088d9f6b0063f914c3d commit 0ab811d89311a37f99da0088d9f6b0063f914c3d Author: Mark Johnston <markj@FreeBSD.org> AuthorDate: 2025-09-10 14:35:24 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2025-09-30 09:43:08 +0000 re: Make sure re_rxeof() is called in net epoch context It may pass packets up the stack and so needs to be called in a network epoch. When a watchdog timeout happens, we need to enter a section explicitly. Reviewed by: zlei, glebius, adrian MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D51885 (cherry picked from commit b653a281f5a977ba73b3d405874f8af8e8b6b50d) --- sys/dev/re/if_re.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/dev/re/if_re.c b/sys/dev/re/if_re.c index 76d395165df7..d56c975a43d2 100644 --- a/sys/dev/re/if_re.c +++ b/sys/dev/re/if_re.c @@ -3560,6 +3560,7 @@ re_ioctl(if_t ifp, u_long command, caddr_t data) static void re_watchdog(struct rl_softc *sc) { + struct epoch_tracker et; if_t ifp; RL_LOCK_ASSERT(sc); @@ -3580,7 +3581,9 @@ re_watchdog(struct rl_softc *sc) if_printf(ifp, "watchdog timeout\n"); if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); + NET_EPOCH_ENTER(et); re_rxeof(sc, NULL); + NET_EPOCH_EXIT(et); if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING); re_init_locked(sc); if (!if_sendq_empty(ifp))