git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git]
/
fs
/
debugfs
/
inode.c
diff --git
a/fs/debugfs/inode.c
b/fs/debugfs/inode.c
index
b529786
..
b55b4ea
100644
(file)
--- a/
fs/debugfs/inode.c
+++ b/
fs/debugfs/inode.c
@@
-67,12
+67,13
@@
static struct inode *debugfs_get_inode(struct super_block *sb, int mode, dev_t d
static int debugfs_mknod(struct inode *dir, struct dentry *dentry,
int mode, dev_t dev)
{
static int debugfs_mknod(struct inode *dir, struct dentry *dentry,
int mode, dev_t dev)
{
- struct inode *inode
= debugfs_get_inode(dir->i_sb, mode, dev)
;
+ struct inode *inode;
int error = -EPERM;
if (dentry->d_inode)
return -EEXIST;
int error = -EPERM;
if (dentry->d_inode)
return -EEXIST;
+ inode = debugfs_get_inode(dir->i_sb, mode, dev);
if (inode) {
d_instantiate(dentry, inode);
dget(dentry);
if (inode) {
d_instantiate(dentry, inode);
dget(dentry);
@@
-110,16
+111,6
@@
static int debug_fill_super(struct super_block *sb, void *data, int silent)
return simple_fill_super(sb, DEBUGFS_MAGIC, debug_files);
}
return simple_fill_super(sb, DEBUGFS_MAGIC, debug_files);
}
-static struct dentry * get_dentry(struct dentry *parent, const char *name)
-{
- struct qstr qstr;
-
- qstr.name = name;
- qstr.len = strlen(name);
- qstr.hash = full_name_hash(name,qstr.len);
- return lookup_hash(&qstr,parent);
-}
-
static struct super_block *debug_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name,
void *data)
static struct super_block *debug_get_sb(struct file_system_type *fs_type,
int flags, const char *dev_name,
void *data)
@@
-156,8
+147,8
@@
static int debugfs_create_by_name(const char *name, mode_t mode,
}
*dentry = NULL;
}
*dentry = NULL;
-
down(&parent->d_inode->i_sem
);
- *dentry =
get_dentry (parent, name
);
+
mutex_lock(&parent->d_inode->i_mutex
);
+ *dentry =
lookup_one_len(name, parent, strlen(name)
);
if (!IS_ERR(dentry)) {
if ((mode & S_IFMT) == S_IFDIR)
error = debugfs_mkdir(parent->d_inode, *dentry, mode);
if (!IS_ERR(dentry)) {
if ((mode & S_IFMT) == S_IFDIR)
error = debugfs_mkdir(parent->d_inode, *dentry, mode);
@@
-165,7
+156,7
@@
static int debugfs_create_by_name(const char *name, mode_t mode,
error = debugfs_create(parent->d_inode, *dentry, mode);
} else
error = PTR_ERR(dentry);
error = debugfs_create(parent->d_inode, *dentry, mode);
} else
error = PTR_ERR(dentry);
-
up(&parent->d_inode->i_sem
);
+
mutex_unlock(&parent->d_inode->i_mutex
);
return error;
}
return error;
}
@@
-201,7
+192,7
@@
static int debugfs_create_by_name(const char *name, mode_t mode,
*/
struct dentry *debugfs_create_file(const char *name, mode_t mode,
struct dentry *parent, void *data,
*/
struct dentry *debugfs_create_file(const char *name, mode_t mode,
struct dentry *parent, void *data,
- struct file_operations *fops)
+
const
struct file_operations *fops)
{
struct dentry *dentry = NULL;
int error;
{
struct dentry *dentry = NULL;
int error;
@@
-283,7
+274,7
@@
void debugfs_remove(struct dentry *dentry)
if (!parent || !parent->d_inode)
return;
if (!parent || !parent->d_inode)
return;
-
down(&parent->d_inode->i_sem
);
+
mutex_lock(&parent->d_inode->i_mutex
);
if (debugfs_positive(dentry)) {
if (dentry->d_inode) {
if (S_ISDIR(dentry->d_inode->i_mode))
if (debugfs_positive(dentry)) {
if (dentry->d_inode) {
if (S_ISDIR(dentry->d_inode->i_mode))
@@
-293,7
+284,7
@@
void debugfs_remove(struct dentry *dentry)
dput(dentry);
}
}
dput(dentry);
}
}
-
up(&parent->d_inode->i_sem
);
+
mutex_unlock(&parent->d_inode->i_mutex
);
simple_release_fs(&debugfs_mount, &debugfs_mount_count);
}
EXPORT_SYMBOL_GPL(debugfs_remove);
simple_release_fs(&debugfs_mount, &debugfs_mount_count);
}
EXPORT_SYMBOL_GPL(debugfs_remove);