Hi, Since 2015 pf_rollback_rules always returns 0. Make it void.
OK? mbuhl Index: sys/net/pf_ioctl.c =================================================================== RCS file: /cvs/src/sys/net/pf_ioctl.c,v retrieving revision 1.376 diff -u -p -r1.376 pf_ioctl.c --- sys/net/pf_ioctl.c 4 Apr 2022 12:57:36 -0000 1.376 +++ sys/net/pf_ioctl.c 7 Apr 2022 13:14:28 -0000 @@ -93,7 +93,7 @@ int pfopen(dev_t, int, int, struct pr int pfclose(dev_t, int, int, struct proc *); int pfioctl(dev_t, u_long, caddr_t, int, struct proc *); int pf_begin_rules(u_int32_t *, const char *); -int pf_rollback_rules(u_int32_t, char *); +void pf_rollback_rules(u_int32_t, char *); void pf_remove_queues(void); int pf_commit_queues(void); void pf_free_queues(struct pf_queuehead *); @@ -537,7 +537,7 @@ pf_begin_rules(u_int32_t *ticket, const return (0); } -int +void pf_rollback_rules(u_int32_t ticket, char *anchor) { struct pf_ruleset *rs; @@ -546,7 +546,7 @@ pf_rollback_rules(u_int32_t ticket, char rs = pf_find_ruleset(anchor); if (rs == NULL || !rs->rules.inactive.open || rs->rules.inactive.ticket != ticket) - return (0); + return; while ((rule = TAILQ_FIRST(rs->rules.inactive.ptr)) != NULL) { pf_rm_rule(rs->rules.inactive.ptr, rule); rs->rules.inactive.rcount--; @@ -555,11 +555,9 @@ pf_rollback_rules(u_int32_t ticket, char /* queue defs only in the main ruleset */ if (anchor[0]) - return (0); + return; pf_free_queues(pf_queues_inactive); - - return (0); } void @@ -2597,14 +2595,7 @@ pfioctl(dev_t dev, u_long cmd, caddr_t a } break; case PF_TRANS_RULESET: - if ((error = pf_rollback_rules(ioe->ticket, - ioe->anchor))) { - PF_UNLOCK(); - NET_UNLOCK(); - free(table, M_TEMP, sizeof(*table)); - free(ioe, M_TEMP, sizeof(*ioe)); - goto fail; /* really bad */ - } + pf_rollback_rules(ioe->ticket, ioe->anchor); break; default: PF_UNLOCK();