diff options
author | John Baldwin <jhb@FreeBSD.org> | 2020-12-10 22:26:51 +0000 |
---|---|---|
committer | John Baldwin <jhb@FreeBSD.org> | 2020-12-10 22:26:51 +0000 |
commit | f566474bcb238106723a9e25d962983a52dc30f9 (patch) | |
tree | 649fd00a22c92526cc755c425fbef5bd7747459d | |
parent | 15af8574cc269c0afc17961511aebba25bfb1607 (diff) | |
download | src-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.c | 2 |
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(); |