Hello,

On Thu, Nov 24, 2022 at 10:29:37AM -0500, David Hill wrote:
> > > 
> 
> With this diff against -current - my dmesg is spammed with:
> 
> splassert: pfsync_delete_state: want 2 have 0
> Starting stack trace...
> pfsync_delete_state(fffffd820af9f940) at pfsync_delete_state+0x58
> pf_remove_state(fffffd820af9f940) at pf_remove_state+0x14b
> pf_purge_expired_states(42,40) at pf_purge_expired_states+0x202
> pf_purge_states(0) at pf_purge_states+0x1c
> taskq_thread(ffffffff822c78f0) at taskq_thread+0x11a
> 

    there are forgotten NET_ASSERT_LOCK() which are no longer valid,
    in pfsync. diff below removes those which are either hit
    from purge_thread() or from ioctl().

    I think remaining NET_ASSERT_LOCK() should stay at least for now.
    those belong to path which runs under NET_LOCK()

can you give a try diff below?

thanks and
regards
sashan

--------8<---------------8<---------------8<------------------8<--------
diff --git a/sys/net/if_pfsync.c b/sys/net/if_pfsync.c
index f69790ee98d..24963a546de 100644
--- a/sys/net/if_pfsync.c
+++ b/sys/net/if_pfsync.c
@@ -1865,8 +1865,6 @@ pfsync_undefer(struct pfsync_deferral *pd, int drop)
 {
        struct pfsync_softc *sc = pfsyncif;
 
-       NET_ASSERT_LOCKED();
-
        if (sc == NULL)
                return;
 
@@ -2128,8 +2126,6 @@ pfsync_delete_state(struct pf_state *st)
 {
        struct pfsync_softc *sc = pfsyncif;
 
-       NET_ASSERT_LOCKED();
-
        if (sc == NULL || !ISSET(sc->sc_if.if_flags, IFF_RUNNING))
                return;
 
@@ -2188,8 +2184,6 @@ pfsync_clear_states(u_int32_t creatorid, const char 
*ifname)
                struct pfsync_clr clr;
        } __packed r;
 
-       NET_ASSERT_LOCKED();
-
        if (sc == NULL || !ISSET(sc->sc_if.if_flags, IFF_RUNNING))
                return;
 

Reply via email to