All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Kershner <david.kershner@unisys.com>
To: gregkh@linuxfoundation.org,
	driverdev-devel@linuxdriverproject.org,
	sparmaintainer@unisys.com, jes.sorensen@redhat.com
Cc: Tim Sell <Timothy.Sell@unisys.com>
Subject: [PATCH 28/28] staging: unisys: visorinput: make lock_visor_dev a mutex
Date: Fri, 10 Jun 2016 19:35:57 -0400	[thread overview]
Message-ID: <1465601757-14330-29-git-send-email-david.kershner@unisys.com> (raw)
In-Reply-To: <1465601757-14330-1-git-send-email-david.kershner@unisys.com>

From: Tim Sell <Timothy.Sell@unisys.com>

Since lock_visor_dev is a binary semaphore it makes more sense to
use a mutex lock.

Signed-off-by: Tim Sell <Timothy.Sell@unisys.com>
Signed-off-by: David Kershner <david.kershner@unisys.com>
---
 drivers/staging/unisys/visorinput/visorinput.c | 34 +++++++++++++-------------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/drivers/staging/unisys/visorinput/visorinput.c b/drivers/staging/unisys/visorinput/visorinput.c
index c13e698..2aff945 100644
--- a/drivers/staging/unisys/visorinput/visorinput.c
+++ b/drivers/staging/unisys/visorinput/visorinput.c
@@ -63,7 +63,7 @@ enum visorinput_device_type {
  */
 struct visorinput_devdata {
 	struct visor_device *dev;
-	struct rw_semaphore lock_visor_dev; /* lock for dev */
+	struct mutex lock_visor_dev; /* lock for dev */
 	struct input_dev *visorinput_dev;
 	bool paused;
 	bool interrupts_enabled;
@@ -236,14 +236,14 @@ static int visorinput_open(struct input_dev *visorinput_dev)
 	 * interrupts should be enabled so when we resume, interrupts
 	 * will really be enabled.
 	 */
-	down_write(&devdata->lock_visor_dev);
+	mutex_lock(&devdata->lock_visor_dev);
 	devdata->interrupts_enabled = true;
 	if (devdata->paused)
 		goto out_unlock;
 	visorbus_enable_channel_interrupts(devdata->dev);
 
 out_unlock:
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 	return 0;
 }
 
@@ -266,14 +266,14 @@ static void visorinput_close(struct input_dev *visorinput_dev)
 	 * not re-enable them.
 	 */
 
-	down_write(&devdata->lock_visor_dev);
+	mutex_lock(&devdata->lock_visor_dev);
 	devdata->interrupts_enabled = false;
 	if (devdata->paused)
 		goto out_unlock;
 	visorbus_disable_channel_interrupts(devdata->dev);
 
 out_unlock:
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 }
 
 /*
@@ -377,8 +377,8 @@ devdata_create(struct visor_device *dev, enum visorinput_device_type devtype)
 	devdata = kzalloc(sizeof(*devdata) + extra_bytes, GFP_KERNEL);
 	if (!devdata)
 		return NULL;
-	init_rwsem(&devdata->lock_visor_dev);
-	down_write(&devdata->lock_visor_dev);
+	mutex_init(&devdata->lock_visor_dev);
+	mutex_lock(&devdata->lock_visor_dev);
 	devdata->dev = dev;
 
 	/*
@@ -414,7 +414,7 @@ devdata_create(struct visor_device *dev, enum visorinput_device_type devtype)
 	}
 
 	dev_set_drvdata(&dev->device, devdata);
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 
 	/*
 	 * Device struct is completely set up now, with the exception of
@@ -428,7 +428,7 @@ devdata_create(struct visor_device *dev, enum visorinput_device_type devtype)
 		goto err_kfree_devdata;
 	}
 
-	down_write(&devdata->lock_visor_dev);
+	mutex_lock(&devdata->lock_visor_dev);
 	/*
 	 * Establish calls to visorinput_channel_interrupt() if that is
 	 * the desired state that we've kept track of in interrupts_enabled
@@ -437,12 +437,12 @@ devdata_create(struct visor_device *dev, enum visorinput_device_type devtype)
 	devdata->paused = false;
 	if (devdata->interrupts_enabled)
 		visorbus_enable_channel_interrupts(dev);
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 
 	return devdata;
 
 cleanups_register:
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 err_kfree_devdata:
 	kfree(devdata);
 	return NULL;
@@ -482,7 +482,7 @@ visorinput_remove(struct visor_device *dev)
 	if (!devdata)
 		return;
 
-	down_write(&devdata->lock_visor_dev);
+	mutex_lock(&devdata->lock_visor_dev);
 	visorbus_disable_channel_interrupts(dev);
 
 	/*
@@ -491,7 +491,7 @@ visorinput_remove(struct visor_device *dev)
 	 */
 
 	dev_set_drvdata(&dev->device, NULL);
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 
 	unregister_client_input(devdata->visorinput_dev);
 	kfree(devdata);
@@ -671,7 +671,7 @@ visorinput_pause(struct visor_device *dev,
 		goto out;
 	}
 
-	down_write(&devdata->lock_visor_dev);
+	mutex_lock(&devdata->lock_visor_dev);
 	if (devdata->paused) {
 		rc = -EBUSY;
 		goto out_locked;
@@ -688,7 +688,7 @@ visorinput_pause(struct visor_device *dev,
 	complete_func(dev, 0);
 	rc = 0;
 out_locked:
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 out:
 	return rc;
 }
@@ -704,7 +704,7 @@ visorinput_resume(struct visor_device *dev,
 		rc = -ENODEV;
 		goto out;
 	}
-	down_write(&devdata->lock_visor_dev);
+	mutex_lock(&devdata->lock_visor_dev);
 	if (!devdata->paused) {
 		rc = -EBUSY;
 		goto out_locked;
@@ -722,7 +722,7 @@ visorinput_resume(struct visor_device *dev,
 
 	rc = 0;
 out_locked:
-	up_write(&devdata->lock_visor_dev);
+	mutex_unlock(&devdata->lock_visor_dev);
 out:
 	return rc;
 }
-- 
1.9.1

_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

      parent reply	other threads:[~2016-06-10 23:36 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-10 23:35 [PATCH 00/28] staging: unisys: fix visorbus & visorinput issues raised by tglx David Kershner
2016-06-10 23:35 ` [PATCH 01/28] staging: unisys: visorbus: remove return values for write_vbus functions David Kershner
2016-06-10 23:35 ` [PATCH 02/28] staging: unisys: visorbus: check parahotplug_request_complete_result David Kershner
2016-06-10 23:35 ` [PATCH 03/28] staging: unisys: visorbus: remove unused module parameters David Kershner
2016-06-10 23:35 ` [PATCH 04/28] staging: unisys: visorbus: remove unused struct David Kershner
2016-06-10 23:35 ` [PATCH 05/28] staging: unisys: visorbus: modify format string to match argument David Kershner
2016-06-10 23:35 ` [PATCH 06/28] staging: unisys: visornic: Correct comment spelling mistake David Kershner
2016-06-10 23:35 ` [PATCH 07/28] staging: unisys: include: Remove thread-related enum members David Kershner
2016-06-10 23:35 ` [PATCH 08/28] staging: unisys: visorbus: removed unused periodic_test_workqueue David Kershner
2016-06-10 23:35 ` [PATCH 09/28] staging: unisys: visorinput: remove unnecessary locking David Kershner
2016-06-10 23:35 ` [PATCH 10/28] staging: unisys: visorbus: use kernel timer instead of workqueue David Kershner
2016-06-10 23:35 ` [PATCH 11/28] staging: unisys: visorbus: remove periodic_work.h/.c David Kershner
2016-06-10 23:35 ` [PATCH 12/28] staging: unisys: visorbus: Make visordriver_callback_lock a mutex David Kershner
2016-06-10 23:35 ` [PATCH 13/28] staging: unisys: visorbus: Remove unnecessary EXPORT_SYMBOL statements David Kershner
2016-06-10 23:35 ` [PATCH 14/28] staging: unisys: visorbus: Remove unused functions David Kershner
2016-06-10 23:35 ` [PATCH 15/28] staging: unisys: Remove reference to unused STANDALONE_CLIENT David Kershner
2016-06-10 23:35 ` [PATCH 16/28] staging: unisys: visorbus: remove unused parameter from function David Kershner
2016-06-10 23:35 ` [PATCH 17/28] staging: unisys: visorbus: fix commenting in vbusdevinfo.h David Kershner
2016-06-10 23:35 ` [PATCH 18/28] staging: unisys: visorbus: fix commenting in visorbus_main.c David Kershner
2016-06-10 23:35 ` [PATCH 19/28] staging: unisys: visorbus: fix visorchannel.c comments David Kershner
2016-06-10 23:35 ` [PATCH 20/28] staging: unisys: visorbus: Rectify commenting in visorchipset.c David Kershner
2016-06-10 23:35 ` [PATCH 21/28] staging: unisys: visorbus: Move visorbus-unique functions to private header David Kershner
2016-06-10 23:35 ` [PATCH 22/28] staging: unisys: visorbus: rectify kerneldoc comment for struct David Kershner
2016-06-10 23:35 ` [PATCH 23/28] staging: unisys: visorbus: Remove notifier-related code from visorbus David Kershner
2016-06-10 23:35 ` [PATCH 24/28] staging: unisys: visorbus: Rename function to follow existing convention David Kershner
2016-06-10 23:35 ` [PATCH 25/28] staging: unisys: visorbus: fix visorbus_private.h comments David Kershner
2016-06-10 23:35 ` [PATCH 26/28] staging: unisys: Move vbushelper.h to visorbus directory David Kershner
2016-06-10 23:35 ` [PATCH 27/28] staging: unisys: visorinput: ensure proper locking wrt creation & ints David Kershner
2016-06-10 23:35 ` David Kershner [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1465601757-14330-29-git-send-email-david.kershner@unisys.com \
    --to=david.kershner@unisys.com \
    --cc=Timothy.Sell@unisys.com \
    --cc=driverdev-devel@linuxdriverproject.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jes.sorensen@redhat.com \
    --cc=sparmaintainer@unisys.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.