git: e5ca5e801d3c - main - pf: ensure we don't destroy an uninitialised lock

From: Kristof Provost <kp_at_FreeBSD.org>
Date: Sun, 16 Jan 2022 11:48:12 UTC
The branch main has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=e5ca5e801d3c806a767c427360c48e935a5facd4

commit e5ca5e801d3c806a767c427360c48e935a5facd4
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2022-01-16 07:52:18 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2022-01-16 08:04:57 +0000

    pf: ensure we don't destroy an uninitialised lock
    
    The new lock introduced in 5f5e32f1b3 needs to be initialised early so
    that it can be safely destroyed if we error out.
    
    Reported-by: syzbot+d76113e9a4ae0c0fcac2@syzkaller.appspotmail.com
    MFC after:      3 weeks
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sys/netpfil/pf/pf_ioctl.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
index 20bf8943e774..d66b13f61b79 100644
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -1862,6 +1862,8 @@ pf_ioctl_addrule(struct pf_krule *rule, uint32_t ticket,
 	int			 rs_num;
 	int			 error = 0;
 
+	mtx_init(&rule->rpool.mtx, "pf_krule_pool", NULL, MTX_DEF);
+
 	if ((rule->return_icmp >> 8) > ICMP_MAXTYPE) {
 		error = EINVAL;
 		goto errout_unlocked;
@@ -2002,7 +2004,6 @@ pf_ioctl_addrule(struct pf_krule *rule, uint32_t ticket,
 	    rule, entries);
 	ruleset->rules[rs_num].inactive.rcount++;
 
-	mtx_init(&rule->rpool.mtx, "pf_krule_pool", NULL, MTX_DEF);
 	PF_RULES_WUNLOCK();
 
 	return (0);