svn commit: r346319 - head/sys/netpfil/pf
Gleb Smirnoff
glebius at freebsd.org
Wed Apr 17 21:17:28 UTC 2019
Kristof,
On Wed, Apr 17, 2019 at 04:42:54PM +0000, Kristof Provost wrote:
K> Modified: head/sys/netpfil/pf/pf_ioctl.c
K> ==============================================================================
K> --- head/sys/netpfil/pf/pf_ioctl.c Wed Apr 17 16:31:30 2019 (r346318)
K> +++ head/sys/netpfil/pf/pf_ioctl.c Wed Apr 17 16:42:54 2019 (r346319)
K> @@ -3103,24 +3103,24 @@ DIOCCHANGEADDR_error:
K> break;
K> }
K>
K> - PF_RULES_WLOCK();
K> + PF_RULES_RLOCK();
K> n = pfr_table_count(&io->pfrio_table, io->pfrio_flags);
K> io->pfrio_size = min(io->pfrio_size, n);
K> + PF_RULES_RUNLOCK();
K>
K> totlen = io->pfrio_size * sizeof(struct pfr_table);
K> pfrts = mallocarray(io->pfrio_size, sizeof(struct pfr_table),
K> M_TEMP, M_NOWAIT);
K> if (pfrts == NULL) {
K> error = ENOMEM;
K> - PF_RULES_WUNLOCK();
K> break;
K> }
K> error = copyin(io->pfrio_buffer, pfrts, totlen);
K> if (error) {
K> free(pfrts, M_TEMP);
K> - PF_RULES_WUNLOCK();
K> break;
K> }
K> + PF_RULES_WLOCK();
K> error = pfr_set_tflags(pfrts, io->pfrio_size,
K> io->pfrio_setflag, io->pfrio_clrflag, &io->pfrio_nchange,
K> &io->pfrio_ndel, io->pfrio_flags | PFR_FLAG_USERIOCTL);
Couple comments:
1) Now we can malloc with M_WAITOK.
2) Are we sure that table count won't change while we dropped the lock?
--
Gleb Smirnoff
More information about the svn-src-head
mailing list