Sat Nov 21 03:34:28 2015 UTC ()
The correct default return value from a module's xxx_modcmd() routine
is ENOTTY, not EOPNOTSUPP!  The former will allow the module to be
auto-unloaded, while the latter will prevent it.

Note that manual unloading of the filemon module is unaffected, as
that is controlled by actual usage of the module.


(pgoyette)
diff -r1.15 -r1.16 src/sys/dev/filemon/filemon.c

cvs diff -r1.15 -r1.16 src/sys/dev/filemon/Attic/filemon.c (expand / switch to unified diff)

--- src/sys/dev/filemon/Attic/filemon.c 2015/11/20 02:58:19 1.15
+++ src/sys/dev/filemon/Attic/filemon.c 2015/11/21 03:34:28 1.16
@@ -14,27 +14,27 @@ @@ -14,27 +14,27 @@
14 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 14 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
15 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 15 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
16 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 16 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
17 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 17 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
18 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 18 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26#include <sys/cdefs.h> 26#include <sys/cdefs.h>
27__KERNEL_RCSID(0, "$NetBSD: filemon.c,v 1.15 2015/11/20 02:58:19 pgoyette Exp $"); 27__KERNEL_RCSID(0, "$NetBSD: filemon.c,v 1.16 2015/11/21 03:34:28 pgoyette Exp $");
28 28
29#include <sys/param.h> 29#include <sys/param.h>
30#include <sys/kernel.h> 30#include <sys/kernel.h>
31#include <sys/module.h> 31#include <sys/module.h>
32#include <sys/conf.h> 32#include <sys/conf.h>
33#include <sys/file.h> 33#include <sys/file.h>
34#include <sys/filedesc.h> 34#include <sys/filedesc.h>
35#include <sys/systm.h> 35#include <sys/systm.h>
36#include <sys/buf.h> 36#include <sys/buf.h>
37#include <sys/fcntl.h> 37#include <sys/fcntl.h>
38#include <sys/rwlock.h> 38#include <sys/rwlock.h>
39#include <sys/condvar.h> 39#include <sys/condvar.h>
40#include <sys/lwp.h> 40#include <sys/lwp.h>
@@ -416,20 +416,20 @@ filemon_modcmd(modcmd_t cmd, void *data) @@ -416,20 +416,20 @@ filemon_modcmd(modcmd_t cmd, void *data)
416 break; 416 break;
417 417
418 case MODULE_CMD_FINI: 418 case MODULE_CMD_FINI:
419 error = filemon_unload(); 419 error = filemon_unload();
420 if (!error) 420 if (!error)
421 error = devsw_detach(NULL, &filemon_cdevsw); 421 error = devsw_detach(NULL, &filemon_cdevsw);
422 break; 422 break;
423 423
424 case MODULE_CMD_STAT: 424 case MODULE_CMD_STAT:
425 log(LOG_INFO, "filemon: open=%d", n_open); 425 log(LOG_INFO, "filemon: open=%d", n_open);
426 break; 426 break;
427 427
428 default: 428 default:
429 error = EOPNOTSUPP; 429 error = ENOTTY;
430 break; 430 break;
431 431
432 } 432 }
433 433
434 return (error); 434 return (error);
435} 435}