From: "K. Y. Srinivasan" <kys@microsoft.com>
To: gregkh@suse.de, linux-kernel@vger.kernel.org,
devel@linuxdriverproject.org, virtualization@lists.osdl.org,
ohering@suse.com
Cc: "K. Y. Srinivasan" <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>
Subject: [PATCH 19/24] Staging: hv: mousevsc: Get rid of ref_count state in struct mousevsc_dev
Date: Thu, 29 Sep 2011 11:54:59 -0700 [thread overview]
Message-ID: <1317322504-9788-19-git-send-email-kys@microsoft.com> (raw)
In-Reply-To: <1317322504-9788-1-git-send-email-kys@microsoft.com>
Now get rid of the machinery for managing the life-cycle of the mousevsc_dev
as this is not needed.
Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
---
drivers/staging/hv/hv_mouse.c | 54 ++--------------------------------------
1 files changed, 3 insertions(+), 51 deletions(-)
diff --git a/drivers/staging/hv/hv_mouse.c b/drivers/staging/hv/hv_mouse.c
index 317d2be..e57e0b4 100644
--- a/drivers/staging/hv/hv_mouse.c
+++ b/drivers/staging/hv/hv_mouse.c
@@ -155,8 +155,6 @@ struct mousevsc_prt_msg {
*/
struct mousevsc_dev {
struct hv_device *device;
- /* 0 indicates the device is being destroyed */
- atomic_t ref_count;
unsigned char init_complete;
struct mousevsc_prt_msg protocol_req;
struct mousevsc_prt_msg protocol_resp;
@@ -182,12 +180,6 @@ static struct mousevsc_dev *alloc_input_device(struct hv_device *device)
if (!input_dev)
return NULL;
- /*
- * Set to 2 to allow both inbound and outbound traffics
- * (ie get_input_device() and must_get_input_device()) to proceed.
- */
- atomic_set(&input_dev->ref_count, 2);
-
input_dev->device = device;
hv_set_drvdata(device, input_dev);
init_completion(&input_dev->wait_event);
@@ -203,32 +195,6 @@ static void free_input_device(struct mousevsc_dev *device)
kfree(device);
}
-/*
- * Get the inputdevice object iff exists and its refcount > 0
- */
-static struct mousevsc_dev *must_get_input_device(struct hv_device *device)
-{
- struct mousevsc_dev *input_dev;
-
- input_dev = hv_get_drvdata(device);
-
- if (input_dev && atomic_read(&input_dev->ref_count))
- atomic_inc(&input_dev->ref_count);
- else
- input_dev = NULL;
-
- return input_dev;
-}
-
-static void put_input_device(struct hv_device *device)
-{
- struct mousevsc_dev *input_dev;
-
- input_dev = hv_get_drvdata(device);
-
- atomic_dec(&input_dev->ref_count);
-}
-
static void mousevsc_on_receive_device_info(struct mousevsc_dev *input_device,
struct synthhid_device_info *device_info)
@@ -325,19 +291,13 @@ static void mousevsc_on_receive(struct hv_device *device,
{
struct pipe_prt_msg *pipe_msg;
struct synthhid_msg *hid_msg;
- struct mousevsc_dev *input_dev;
-
- input_dev = must_get_input_device(device);
- if (!input_dev)
- return;
+ struct mousevsc_dev *input_dev = hv_get_drvdata(device);
pipe_msg = (struct pipe_prt_msg *)((unsigned long)packet +
(packet->offset8 << 3));
- if (pipe_msg->type != PipeMessageData) {
- put_input_device(device);
- return ;
- }
+ if (pipe_msg->type != PipeMessageData)
+ return;
hid_msg = (struct synthhid_msg *)&pipe_msg->data[0];
@@ -370,7 +330,6 @@ static void mousevsc_on_receive(struct hv_device *device,
break;
}
- put_input_device(device);
}
static void mousevsc_on_channel_callback(void *context)
@@ -378,7 +337,6 @@ static void mousevsc_on_channel_callback(void *context)
const int packetSize = 0x100;
int ret = 0;
struct hv_device *device = (struct hv_device *)context;
- struct mousevsc_dev *input_dev;
u32 bytes_recvd;
u64 req_id;
@@ -387,10 +345,6 @@ static void mousevsc_on_channel_callback(void *context)
unsigned char *buffer = packet;
int bufferlen = packetSize;
- input_dev = must_get_input_device(device);
-
- if (!input_dev)
- return;
do {
ret = vmbus_recvpacket_raw(device->channel, buffer,
@@ -452,8 +406,6 @@ static void mousevsc_on_channel_callback(void *context)
}
} while (1);
- put_input_device(device);
-
return;
}
--
1.7.4.1
next prev parent reply other threads:[~2011-09-29 18:54 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-29 18:54 [PATCH 0000/0024] Staging: hv: mousevsc cleanup K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 01/24] Staging: hv: mousevsc: Fixup struct hv_input_dev_info K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 02/24] Staging: hv: mousevsc: Get rid of the struct input_device_context K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 03/24] Staging: hv: mousevsc: Fixup some bogus WARN_ON() calls K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 04/24] Staging: hv: mousevsc: Change the allocation flags to reflect interrupt context K. Y. Srinivasan
2011-09-29 18:54 ` K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 05/24] Staging: hv: mousevsc: Handle the case where we may get bogus report desc size K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 06/24] Staging: hv: mousevsc: Correctly initialize the header size K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 07/24] Staging: hv: mousevsc: Use completion primitive to synchronize K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 08/24] Staging: hv: mousevsc: Cleanup and properly implement reportdesc_callback() K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 09/24] Staging: hv: mousevsc: Get rid of unnecessary DPRINT calls K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 10/24] Staging: hv: mousevsc: Cleanup error handling K. Y. Srinivasan
2011-09-29 18:54 ` K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 11/24] Staging: hv: mousevsc: Get rid of unnecessary pr_* calls K. Y. Srinivasan
2011-09-29 18:54 ` K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 12/24] Staging: hv: mousevsc: Free allocated memory in free_input_device() K. Y. Srinivasan
2011-09-29 18:54 ` K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 13/24] Staging: hv: mousevsc: Get rid of the unused state: num_outstanding_req K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 14/24] Staging: hv: mousevsc: Cleanup alloc_input_device() K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 15/24] Staging: hv: mousevsc: Get rid of mousevsc_on_send_completion() K. Y. Srinivasan
2011-09-29 18:54 ` K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 16/24] Staging: hv: mousevsc: Cleanup mousevsc_connect_to_vsp() K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 17/24] Staging: hv: mousevsc: Get rid of mousevsc_on_device_remove() by inlining code K. Y. Srinivasan
2011-09-29 18:54 ` K. Y. Srinivasan
2011-09-29 18:54 ` [PATCH 18/24] Staging: hv: mousevsc: Now cleanup mousevsc_remove() K. Y. Srinivasan
2011-09-29 18:54 ` K. Y. Srinivasan [this message]
2011-09-29 18:55 ` [PATCH 20/24] Staging: hv: mousevsc: Cleanup camel cased enums K. Y. Srinivasan
2011-09-29 18:55 ` [PATCH 21/24] Staging: hv: mousevsc: Get rid of mousevsc_on_receive_input_report() by inlining K. Y. Srinivasan
2011-09-29 18:55 ` K. Y. Srinivasan
2011-09-29 18:55 ` [PATCH 22/24] Staging: hv: mousevsc: Cleanup mousevsc_on_device_add() K. Y. Srinivasan
2011-09-29 18:55 ` [PATCH 23/24] Staging: hv: mousevsc: Enable autoloading of the mouse driver K. Y. Srinivasan
2011-09-29 18:55 ` [PATCH 24/24] Staging: hv: mousevsc: Get rid of unnecessary comments K. Y. Srinivasan
2011-09-29 18:55 ` K. Y. Srinivasan
2011-09-30 0:47 ` [PATCH 01/24] Staging: hv: mousevsc: Fixup struct hv_input_dev_info Greg KH
2011-09-30 1:34 ` KY Srinivasan
2011-09-30 3:02 ` Greg KH
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=1317322504-9788-19-git-send-email-kys@microsoft.com \
--to=kys@microsoft.com \
--cc=devel@linuxdriverproject.org \
--cc=gregkh@suse.de \
--cc=haiyangz@microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=ohering@suse.com \
--cc=virtualization@lists.osdl.org \
/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.