diff options
author | glebius <glebius@FreeBSD.org> | 2012-01-11 14:19:04 +0000 |
---|---|---|
committer | glebius <glebius@FreeBSD.org> | 2012-01-11 14:19:04 +0000 |
commit | 22ec5af8bffc3eed1ea5fe80f1401aa40abec7ea (patch) | |
tree | 27231248b7ba999d1d607a77e4669acf1ee465e6 /sys/contrib | |
parent | a3888be1ad5300cc905bbf1c4d8503a3e2b1bad0 (diff) | |
download | FreeBSD-src-22ec5af8bffc3eed1ea5fe80f1401aa40abec7ea.zip FreeBSD-src-22ec5af8bffc3eed1ea5fe80f1401aa40abec7ea.tar.gz |
Add necessary locking in pfsync_in_ureq().
Diffstat (limited to 'sys/contrib')
-rw-r--r-- | sys/contrib/pf/net/if_pfsync.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/contrib/pf/net/if_pfsync.c b/sys/contrib/pf/net/if_pfsync.c index 6eb9fe3..151aed6 100644 --- a/sys/contrib/pf/net/if_pfsync.c +++ b/sys/contrib/pf/net/if_pfsync.c @@ -1433,6 +1433,9 @@ pfsync_in_ureq(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) } ura = (struct pfsync_upd_req *)(mp->m_data + offp); +#ifdef __FreeBSD__ + PF_LOCK(); +#endif for (i = 0; i < count; i++) { ur = &ura[i]; @@ -1450,11 +1453,12 @@ pfsync_in_ureq(struct pfsync_pkt *pkt, struct mbuf *m, int offset, int count) if (ISSET(st->state_flags, PFSTATE_NOSYNC)) continue; - PF_LOCK(); pfsync_update_state_req(st); - PF_UNLOCK(); } } +#ifdef __FreeBSD__ + PF_UNLOCK(); +#endif return (len); } @@ -2975,7 +2979,7 @@ pfsync_bulk_start(void) printf("pfsync: received bulk update request\n"); #ifdef __FreeBSD__ - PF_LOCK(); + PF_LOCK_ASSERT(); if (TAILQ_EMPTY(&V_state_list)) #else if (TAILQ_EMPTY(&state_list)) @@ -2994,9 +2998,6 @@ pfsync_bulk_start(void) pfsync_bulk_status(PFSYNC_BUS_START); callout_reset(&sc->sc_bulk_tmo, 1, pfsync_bulk_update, sc); } -#ifdef __FreeBSD__ - PF_UNLOCK(); -#endif } void |