From 4e83b32a80574fef36c0cf23694d97f1854b1f7e Mon Sep 17 00:00:00 2001 From: Sean Bruno Date: Wed, 24 Jun 2015 15:52:26 +0000 Subject: [PATCH] At the suggestion of jhb, replace atomic_set/clear calls with use of exclusive locks in the enable/disable interpreter path. Tested with WITNESS/INVARIANTS on and off. Reviewed by: sson davide --- sys/kern/imgact_binmisc.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sys/kern/imgact_binmisc.c b/sys/kern/imgact_binmisc.c index d4fa40a8789e..dd57717e9b4c 100644 --- a/sys/kern/imgact_binmisc.c +++ b/sys/kern/imgact_binmisc.c @@ -308,14 +308,14 @@ imgact_binmisc_disable_entry(char *name) { imgact_binmisc_entry_t *ibe; - sx_slock(&interp_list_sx); + sx_xlock(&interp_list_sx); if ((ibe = imgact_binmisc_find_entry(name)) == NULL) { - sx_sunlock(&interp_list_sx); + sx_xunlock(&interp_list_sx); return (ENOENT); } - atomic_clear_32(&ibe->ibe_flags, IBF_ENABLED); - sx_sunlock(&interp_list_sx); + ibe->ibe_flags &= ~IBF_ENABLED; + sx_xunlock(&interp_list_sx); return (0); } @@ -329,14 +329,14 @@ imgact_binmisc_enable_entry(char *name) { imgact_binmisc_entry_t *ibe; - sx_slock(&interp_list_sx); + sx_xlock(&interp_list_sx); if ((ibe = imgact_binmisc_find_entry(name)) == NULL) { - sx_sunlock(&interp_list_sx); + sx_xunlock(&interp_list_sx); return (ENOENT); } - atomic_set_32(&ibe->ibe_flags, IBF_ENABLED); - sx_sunlock(&interp_list_sx); + ibe->ibe_flags |= IBF_ENABLED; + sx_xunlock(&interp_list_sx); return (0); }