From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by ash.osuosl.org (Postfix) with ESMTP id 169F01C151A for ; Sat, 11 Jun 2016 01:49:11 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by hemlock.osuosl.org (Postfix) with ESMTP id 131F095715 for ; Sat, 11 Jun 2016 01:49:11 +0000 (UTC) Received: from hemlock.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id m3yDDsvpIFbm for ; Sat, 11 Jun 2016 01:49:10 +0000 (UTC) Received: from mail1.bemta8.messagelabs.com (mail1.bemta8.messagelabs.com [216.82.243.198]) by hemlock.osuosl.org (Postfix) with ESMTPS id 580CF95704 for ; Sat, 11 Jun 2016 01:49:10 +0000 (UTC) From: David Kershner Subject: [PATCH RESEND 28/28] staging: unisys: visorinput: make lock_visor_dev a mutex Date: Fri, 10 Jun 2016 21:48:26 -0400 Message-ID: <1465609706-15443-29-git-send-email-david.kershner@unisys.com> In-Reply-To: <1465609706-15443-1-git-send-email-david.kershner@unisys.com> References: <1465609706-15443-1-git-send-email-david.kershner@unisys.com> MIME-Version: 1.0 List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" 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 From: Tim Sell Since lock_visor_dev is a binary semaphore it makes more sense to use a mutex lock. Signed-off-by: Tim Sell Signed-off-by: David Kershner Acked-By: Neil Horman Reviewed-by: Thomas Gleixner --- 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