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,
	tglx@linutronix.de, david.binder@unisys.com, nhorman@redhat.com
Cc: Tim Sell <Timothy.Sell@unisys.com>
Subject: [PATCH RESEND 28/28] staging: unisys: visorinput: make lock_visor_dev a mutex
Date: Fri, 10 Jun 2016 21:48:26 -0400	[thread overview]
Message-ID: <1465609706-15443-29-git-send-email-david.kershner@unisys.com> (raw)
In-Reply-To: <1465609706-15443-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>
Acked-By: Neil Horman <nhorman@tuxdriver.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
---
 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-11  1:49 UTC|newest]

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

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=1465609706-15443-29-git-send-email-david.kershner@unisys.com \
    --to=david.kershner@unisys.com \
    --cc=Timothy.Sell@unisys.com \
    --cc=david.binder@unisys.com \
    --cc=driverdev-devel@linuxdriverproject.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jes.sorensen@redhat.com \
    --cc=nhorman@redhat.com \
    --cc=sparmaintainer@unisys.com \
    --cc=tglx@linutronix.de \
    /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.