From: <gregkh@suse.de>
To: tglx@linutronix.de, gregkh@suse.de, kay.sievers@vrfy.org,
linux-kernel@vger.kernel.org, stable@kernel.org
Subject: patch devtmpfs-convert-dirlock-to-a-mutex.patch added to gregkh-2.6 tree
Date: Thu, 17 Dec 2009 06:55:25 -0800 [thread overview]
Message-ID: <12610617252519@kroah.org> (raw)
In-Reply-To: <20091216212730.308081108@linutronix.de>
This is a note to let you know that I've just added the patch titled
Subject: devtmpfs: Convert dirlock to a mutex
to my gregkh-2.6 tree. Its filename is
devtmpfs-convert-dirlock-to-a-mutex.patch
This tree can be found at
http://www.kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/patches/
>From tglx@linutronix.de Thu Dec 17 06:44:07 2009
From: Thomas Gleixner <tglx@linutronix.de>
Date: Wed, 16 Dec 2009 21:31:33 -0000
Subject: devtmpfs: Convert dirlock to a mutex
To: LKML <linux-kernel@vger.kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>, Greg Kroah-Hartman <gregkh@suse.de>
Message-ID: <20091216212730.308081108@linutronix.de>
devtmpfs has a rw_lock dirlock which serializes delete_path and
create_path.
This code was obviously never tested with the usual set of debugging
facilities enabled. In the dirlock held sections the code calls:
- vfs functions which take mutexes
- kmalloc(, GFP_KERNEL)
In both code pathes the might sleep warning triggers and spams dmesg.
Convert the rw_lock to a mutex. There is no reason why this needs to
be a rwlock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/base/devtmpfs.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
--- a/drivers/base/devtmpfs.c
+++ b/drivers/base/devtmpfs.c
@@ -32,7 +32,7 @@ static int dev_mount = 1;
static int dev_mount;
#endif
-static rwlock_t dirlock;
+static DEFINE_MUTEX(dirlock);
static int __init mount_param(char *str)
{
@@ -93,7 +93,7 @@ static int create_path(const char *nodep
{
int err;
- read_lock(&dirlock);
+ mutex_lock(&dirlock);
err = dev_mkdir(nodepath, 0755);
if (err == -ENOENT) {
char *path;
@@ -117,7 +117,7 @@ static int create_path(const char *nodep
}
kfree(path);
}
- read_unlock(&dirlock);
+ mutex_unlock(&dirlock);
return err;
}
@@ -229,7 +229,7 @@ static int delete_path(const char *nodep
if (!path)
return -ENOMEM;
- write_lock(&dirlock);
+ mutex_lock(&dirlock);
for (;;) {
char *base;
@@ -241,7 +241,7 @@ static int delete_path(const char *nodep
if (err)
break;
}
- write_unlock(&dirlock);
+ mutex_unlock(&dirlock);
kfree(path);
return err;
@@ -352,8 +352,6 @@ int __init devtmpfs_init(void)
int err;
struct vfsmount *mnt;
- rwlock_init(&dirlock);
-
err = register_filesystem(&dev_fs_type);
if (err) {
printk(KERN_ERR "devtmpfs: unable to register devtmpfs "
prev parent reply other threads:[~2009-12-17 14:55 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-16 21:31 [patch 1/1] devtmpfs: Convert dirlock to a mutex Thomas Gleixner
2009-12-16 22:15 ` Greg KH
2009-12-17 14:55 ` gregkh [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=12610617252519@kroah.org \
--to=gregkh@suse.de \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@kernel.org \
--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.