diff options
Diffstat (limited to 'drivers/char/ipmi')
-rw-r--r-- | drivers/char/ipmi/ipmi_watchdog.c | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c index 41f78e2c158f..806106b8c980 100644 --- a/drivers/char/ipmi/ipmi_watchdog.c +++ b/drivers/char/ipmi/ipmi_watchdog.c | |||
@@ -166,8 +166,6 @@ static char expect_close; | |||
166 | 166 | ||
167 | static int ifnum_to_use = -1; | 167 | static int ifnum_to_use = -1; |
168 | 168 | ||
169 | static DECLARE_RWSEM(register_sem); | ||
170 | |||
171 | /* Parameters to ipmi_set_timeout */ | 169 | /* Parameters to ipmi_set_timeout */ |
172 | #define IPMI_SET_TIMEOUT_NO_HB 0 | 170 | #define IPMI_SET_TIMEOUT_NO_HB 0 |
173 | #define IPMI_SET_TIMEOUT_HB_IF_NECESSARY 1 | 171 | #define IPMI_SET_TIMEOUT_HB_IF_NECESSARY 1 |
@@ -193,11 +191,9 @@ static int set_param_int(const char *val, struct kernel_param *kp) | |||
193 | if (endp == val) | 191 | if (endp == val) |
194 | return -EINVAL; | 192 | return -EINVAL; |
195 | 193 | ||
196 | down_read(®ister_sem); | ||
197 | *((int *)kp->arg) = l; | 194 | *((int *)kp->arg) = l; |
198 | if (watchdog_user) | 195 | if (watchdog_user) |
199 | rv = ipmi_set_timeout(IPMI_SET_TIMEOUT_HB_IF_NECESSARY); | 196 | rv = ipmi_set_timeout(IPMI_SET_TIMEOUT_HB_IF_NECESSARY); |
200 | up_read(®ister_sem); | ||
201 | 197 | ||
202 | return rv; | 198 | return rv; |
203 | } | 199 | } |
@@ -226,17 +222,15 @@ static int set_param_str(const char *val, struct kernel_param *kp) | |||
226 | 222 | ||
227 | s = strstrip(valcp); | 223 | s = strstrip(valcp); |
228 | 224 | ||
229 | down_read(®ister_sem); | ||
230 | rv = fn(s, NULL); | 225 | rv = fn(s, NULL); |
231 | if (rv) | 226 | if (rv) |
232 | goto out_unlock; | 227 | goto out; |
233 | 228 | ||
234 | check_parms(); | 229 | check_parms(); |
235 | if (watchdog_user) | 230 | if (watchdog_user) |
236 | rv = ipmi_set_timeout(IPMI_SET_TIMEOUT_HB_IF_NECESSARY); | 231 | rv = ipmi_set_timeout(IPMI_SET_TIMEOUT_HB_IF_NECESSARY); |
237 | 232 | ||
238 | out_unlock: | 233 | out: |
239 | up_read(®ister_sem); | ||
240 | return rv; | 234 | return rv; |
241 | } | 235 | } |
242 | 236 | ||
@@ -895,7 +889,6 @@ static void ipmi_register_watchdog(int ipmi_intf) | |||
895 | { | 889 | { |
896 | int rv = -EBUSY; | 890 | int rv = -EBUSY; |
897 | 891 | ||
898 | down_write(®ister_sem); | ||
899 | if (watchdog_user) | 892 | if (watchdog_user) |
900 | goto out; | 893 | goto out; |
901 | 894 | ||
@@ -922,8 +915,6 @@ static void ipmi_register_watchdog(int ipmi_intf) | |||
922 | } | 915 | } |
923 | 916 | ||
924 | out: | 917 | out: |
925 | up_write(®ister_sem); | ||
926 | |||
927 | if ((start_now) && (rv == 0)) { | 918 | if ((start_now) && (rv == 0)) { |
928 | /* Run from startup, so start the timer now. */ | 919 | /* Run from startup, so start the timer now. */ |
929 | start_now = 0; /* Disable this function after first startup. */ | 920 | start_now = 0; /* Disable this function after first startup. */ |
@@ -937,8 +928,6 @@ static void ipmi_unregister_watchdog(int ipmi_intf) | |||
937 | { | 928 | { |
938 | int rv; | 929 | int rv; |
939 | 930 | ||
940 | down_write(®ister_sem); | ||
941 | |||
942 | if (!watchdog_user) | 931 | if (!watchdog_user) |
943 | goto out; | 932 | goto out; |
944 | 933 | ||
@@ -963,7 +952,7 @@ static void ipmi_unregister_watchdog(int ipmi_intf) | |||
963 | watchdog_user = NULL; | 952 | watchdog_user = NULL; |
964 | 953 | ||
965 | out: | 954 | out: |
966 | up_write(®ister_sem); | 955 | return; |
967 | } | 956 | } |
968 | 957 | ||
969 | #ifdef HAVE_NMI_HANDLER | 958 | #ifdef HAVE_NMI_HANDLER |