From: Wanlong Gao <gaowanlong@cn.fujitsu.com>
To: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: linux-input@vger.kernel.org, Thomas Tuttle <ttuttle@chromium.org>
Subject: Re: [PATCH 1/9] Input: serio-raw - use kref instead of rolling out its own refcounting
Date: Thu, 06 Oct 2011 14:05:18 +0800 [thread overview]
Message-ID: <4E8D451E.6000800@cn.fujitsu.com> (raw)
In-Reply-To: <1317877696-7719-1-git-send-email-dmitry.torokhov@gmail.com>
On 10/06/2011 01:08 PM, Dmitry Torokhov wrote:
> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Reviewed-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
All the 9 patches.
Thanks
> ---
> drivers/input/serio/serio_raw.c | 28 +++++++++++++---------------
> 1 files changed, 13 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/input/serio/serio_raw.c b/drivers/input/serio/serio_raw.c
> index b7ba459..ef3a69c 100644
> --- a/drivers/input/serio/serio_raw.c
> +++ b/drivers/input/serio/serio_raw.c
> @@ -9,6 +9,7 @@
> * the Free Software Foundation.
> */
>
> +#include <linux/kref.h>
> #include <linux/sched.h>
> #include <linux/slab.h>
> #include <linux/poll.h>
> @@ -33,7 +34,7 @@ struct serio_raw {
> unsigned int tail, head;
>
> char name[16];
> - unsigned int refcnt;
> + struct kref kref;
> struct serio *serio;
> struct miscdevice dev;
> wait_queue_head_t wait;
> @@ -104,7 +105,7 @@ static int serio_raw_open(struct inode *inode, struct file *file)
> list->serio_raw = serio_raw;
> file->private_data = list;
>
> - serio_raw->refcnt++;
> + kref_get(&serio_raw->kref);
> list_add_tail(&list->node, &serio_raw->list);
>
> out:
> @@ -112,17 +113,14 @@ out:
> return retval;
> }
>
> -static int serio_raw_cleanup(struct serio_raw *serio_raw)
> +static void serio_raw_cleanup(struct kref *kref)
> {
> - if (--serio_raw->refcnt == 0) {
> - misc_deregister(&serio_raw->dev);
> - list_del_init(&serio_raw->node);
> - kfree(serio_raw);
> + struct serio_raw *serio_raw =
> + container_of(kref, struct serio_raw, kref);
>
> - return 1;
> - }
> -
> - return 0;
> + misc_deregister(&serio_raw->dev);
> + list_del_init(&serio_raw->node);
> + kfree(serio_raw);
> }
>
> static int serio_raw_release(struct inode *inode, struct file *file)
> @@ -132,7 +130,7 @@ static int serio_raw_release(struct inode *inode, struct file *file)
>
> mutex_lock(&serio_raw_mutex);
>
> - serio_raw_cleanup(serio_raw);
> + kref_put(&serio_raw->kref, serio_raw_cleanup);
>
> mutex_unlock(&serio_raw_mutex);
> return 0;
> @@ -283,7 +281,7 @@ static int serio_raw_connect(struct serio *serio, struct serio_driver *drv)
> mutex_lock(&serio_raw_mutex);
>
> snprintf(serio_raw->name, sizeof(serio_raw->name), "serio_raw%d", serio_raw_no++);
> - serio_raw->refcnt = 1;
> + kref_init(&serio_raw->kref);
> serio_raw->serio = serio;
> INIT_LIST_HEAD(&serio_raw->list);
> init_waitqueue_head(&serio_raw->wait);
> @@ -357,8 +355,8 @@ static void serio_raw_disconnect(struct serio *serio)
> serio_set_drvdata(serio, NULL);
>
> serio_raw->serio = NULL;
> - if (!serio_raw_cleanup(serio_raw))
> - wake_up_interruptible(&serio_raw->wait);
> + wake_up_interruptible(&serio_raw->wait);
> + kref_put(&serio_raw->kref, serio_raw_cleanup);
>
> mutex_unlock(&serio_raw_mutex);
> }
prev parent reply other threads:[~2011-10-06 6:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-06 5:08 [PATCH 1/9] Input: serio-raw - use kref instead of rolling out its own refcounting Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 2/9] Input: serio_raw - rename serio_raw_list to serio_raw_client Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 3/9] Input: serio_raw - perform proper locking when adding clients to list Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 4/9] Input: serio_raw - use bool for boolean data Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 5/9] Input: serio_raw - use dev_*() for messages Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 6/9] Input: serio_raw - fix coding style issues Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 7/9] Input: serio_raw - explicitly mark disconnected ports as dead Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 8/9] Input: serio_raw - kick clients when disconnecting port Dmitry Torokhov
2011-10-06 5:08 ` [PATCH 9/9] Input: serio_raw - fix memory leak when closing char device Dmitry Torokhov
2011-10-06 6:05 ` Wanlong Gao [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=4E8D451E.6000800@cn.fujitsu.com \
--to=gaowanlong@cn.fujitsu.com \
--cc=dmitry.torokhov@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=ttuttle@chromium.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.