summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2020-12-10 22:26:51 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2020-12-10 22:26:51 +0000
commitf566474bcb238106723a9e25d962983a52dc30f9 (patch)
tree649fd00a22c92526cc755c425fbef5bd7747459d
parent15af8574cc269c0afc17961511aebba25bfb1607 (diff)
downloadsrc-test2-f566474bcb238106723a9e25d962983a52dc30f9.tar.gz
src-test2-f566474bcb238106723a9e25d962983a52dc30f9.zip
MFC 366584: Don't invoke semunload() if seminit() fails during MOD_LOAD.
The module handler code invokes a MOD_UNLOAD event immediately if MOD_LOAD fails. The result was that if seminit() failed, semunload() was invoked twice. semunload() is not idempotent however and would try to remove it's process_exit eventhandler twice resulting in a panic.
Notes
Notes: svn path=/stable/12/; revision=368528
-rw-r--r--sys/kern/sysv_sem.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/sys/kern/sysv_sem.c b/sys/kern/sysv_sem.c
index d660fd767664..612f45a3144a 100644
--- a/sys/kern/sysv_sem.c
+++ b/sys/kern/sysv_sem.c
@@ -382,8 +382,6 @@ sysvsem_modload(struct module *module, int cmd, void *arg)
switch (cmd) {
case MOD_LOAD:
error = seminit();
- if (error != 0)
- semunload();
break;
case MOD_UNLOAD:
error = semunload();