svn commit: r343273 - stable/11/sys/netinet
Brooks Davis
brooks at FreeBSD.org
Mon Jan 21 19:33:06 UTC 2019
Author: brooks
Date: Mon Jan 21 19:33:05 2019
New Revision: 343273
URL: https://svnweb.freebsd.org/changeset/base/343273
Log:
MFC r343162:
Make SIFTR work again after r342125 (D18443).
Correct a logic error.
Only disable when already enabled or enable when disabled.
Submitted by: Richard Scheffenegger
Reviewed by: Cheng Cui
Obtained from: Cheng Cui
Differential Revision: https://reviews.freebsd.org/D18885
Modified:
stable/11/sys/netinet/siftr.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/netinet/siftr.c
==============================================================================
--- stable/11/sys/netinet/siftr.c Mon Jan 21 19:22:02 2019 (r343272)
+++ stable/11/sys/netinet/siftr.c Mon Jan 21 19:33:05 2019 (r343273)
@@ -1217,7 +1217,7 @@ siftr_manage_ops(uint8_t action)
if ((s = sbuf_new(NULL, NULL, 200, SBUF_AUTOEXTEND)) == NULL)
return (-1);
- if (action == SIFTR_ENABLE) {
+ if (action == SIFTR_ENABLE && siftr_pkt_manager_thr == NULL) {
/*
* Create our alq
* XXX: We should abort if alq_open fails!
@@ -1422,7 +1422,8 @@ siftr_manage_ops(uint8_t action)
alq_close(siftr_alq);
siftr_alq = NULL;
- }
+ } else
+ error = EINVAL;
sbuf_delete(s);
@@ -1443,13 +1444,15 @@ siftr_sysctl_enabled_handler(SYSCTL_HANDLER_ARGS)
new = siftr_enabled;
error = sysctl_handle_int(oidp, &new, 0, req);
- if (error != 0 && req->newptr != NULL) {
+ if (error == 0 && req->newptr != NULL) {
if (new > 1)
return (EINVAL);
else if (new != siftr_enabled) {
- error = siftr_manage_ops(new);
- if (error != 0)
+ if ((error = siftr_manage_ops(new)) == 0) {
+ siftr_enabled = new;
+ } else {
siftr_manage_ops(SIFTR_DISABLE);
+ }
}
}
@@ -1460,7 +1463,9 @@ siftr_sysctl_enabled_handler(SYSCTL_HANDLER_ARGS)
static void
siftr_shutdown_handler(void *arg)
{
- siftr_manage_ops(SIFTR_DISABLE);
+ if (siftr_enabled == 1) {
+ siftr_manage_ops(SIFTR_DISABLE);
+ }
}
More information about the svn-src-all
mailing list