Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 1624

kernel-2.6.18-238.el5.src.rpm

From: Peter Martuccelli <peterm@redhat.com>
Date: Mon, 10 Dec 2007 16:47:53 -0500
Subject: [ipmi] remove superfluous semapahore from watchdog
Message-id: 200712102147.lBALlrgT021281@redrum.boston.redhat.com
O-Subject: [RHEL 5.2][Patch 3/7] IPMI: Remove superfluous semapahore from watchdog
Bugzilla: 279191

The register semaphore is not needed in the watchdog driver, remove it entirely.

Patch is from upstream, please ACK.

When the ipmi_watchdog() driver was being

diff --git a/drivers/char/ipmi/ipmi_watchdog.c b/drivers/char/ipmi/ipmi_watchdog.c
index 7f20472..23ce321 100644
--- a/drivers/char/ipmi/ipmi_watchdog.c
+++ b/drivers/char/ipmi/ipmi_watchdog.c
@@ -164,8 +164,6 @@ static char expect_close;
 
 static int ifnum_to_use = -1;
 
-static DECLARE_RWSEM(register_sem);
-
 /* Parameters to ipmi_set_timeout */
 #define IPMI_SET_TIMEOUT_NO_HB			0
 #define IPMI_SET_TIMEOUT_HB_IF_NECESSARY	1
@@ -191,11 +189,9 @@ static int set_param_int(const char *val, struct kernel_param *kp)
 	if (endp == val)
 		return -EINVAL;
 
-	down_read(&register_sem);
 	*((int *)kp->arg) = l;
 	if (watchdog_user)
 		rv = ipmi_set_timeout(IPMI_SET_TIMEOUT_HB_IF_NECESSARY);
-	up_read(&register_sem);
 
 	return rv;
 }
@@ -224,17 +220,15 @@ static int set_param_str(const char *val, struct kernel_param *kp)
 
 	s = strstrip(valcp);
 
-	down_read(&register_sem);
 	rv = fn(s, NULL);
 	if (rv)
-		goto out_unlock;
+		goto out;
 
 	check_parms();
 	if (watchdog_user)
 		rv = ipmi_set_timeout(IPMI_SET_TIMEOUT_HB_IF_NECESSARY);
 
- out_unlock:
-	up_read(&register_sem);
+ out:
 	return rv;
 }
 
@@ -893,7 +887,6 @@ static void ipmi_register_watchdog(int ipmi_intf)
 {
 	int rv = -EBUSY;
 
-	down_write(&register_sem);
 	if (watchdog_user)
 		goto out;
 
@@ -920,8 +913,6 @@ static void ipmi_register_watchdog(int ipmi_intf)
 	}
 
  out:
-	up_write(&register_sem);
-
 	if ((start_now) && (rv == 0)) {
 		/* Run from startup, so start the timer now. */
 		start_now = 0; /* Disable this function after first startup. */
@@ -935,8 +926,6 @@ static void ipmi_unregister_watchdog(int ipmi_intf)
 {
 	int rv;
 
-	down_write(&register_sem);
-
 	if (!watchdog_user)
 		goto out;
 
@@ -961,7 +950,7 @@ static void ipmi_unregister_watchdog(int ipmi_intf)
 	watchdog_user = NULL;
 
  out:
-	up_write(&register_sem);
+	return;
 }
 
 #ifdef HAVE_NMI_HANDLER