projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
[powerpc.git]
/
fs
/
binfmt_misc.c
diff --git
a/fs/binfmt_misc.c
b/fs/binfmt_misc.c
index
2568eb4
..
34ebbc1
100644
(file)
--- a/
fs/binfmt_misc.c
+++ b/
fs/binfmt_misc.c
@@
-55,6
+55,7
@@
typedef struct {
} Node;
static DEFINE_RWLOCK(entries_lock);
} Node;
static DEFINE_RWLOCK(entries_lock);
+static struct file_system_type bm_fs_type;
static struct vfsmount *bm_mnt;
static int entry_count;
static struct vfsmount *bm_mnt;
static int entry_count;
@@
-203,7
+204,6
@@
static int load_misc_binary(struct linux_binprm *bprm, struct pt_regs *regs)
goto _error;
if (files) {
goto _error;
if (files) {
- steal_locks(files);
put_files_struct(files);
files = NULL;
}
put_files_struct(files);
files = NULL;
}
@@
-264,7
+264,7
@@
static int unquote(char *from)
return p - from;
}
return p - from;
}
-static
inline
char * check_special_flags (char * sfs, Node * e)
+static char * check_special_flags (char * sfs, Node * e)
{
char * p = sfs;
int cont = 1;
{
char * p = sfs;
int cont = 1;
@@
-588,11
+588,11
@@
static ssize_t bm_entry_write(struct file *file, const char __user *buffer,
case 2: set_bit(Enabled, &e->flags);
break;
case 3: root = dget(file->f_vfsmnt->mnt_sb->s_root);
case 2: set_bit(Enabled, &e->flags);
break;
case 3: root = dget(file->f_vfsmnt->mnt_sb->s_root);
-
down(&root->d_inode->i_sem
);
+
mutex_lock(&root->d_inode->i_mutex
);
kill_node(e);
kill_node(e);
-
up(&root->d_inode->i_sem
);
+
mutex_unlock(&root->d_inode->i_mutex
);
dput(root);
break;
default: return res;
dput(root);
break;
default: return res;
@@
-600,7
+600,7
@@
static ssize_t bm_entry_write(struct file *file, const char __user *buffer,
return count;
}
return count;
}
-static struct file_operations bm_entry_operations = {
+static
const
struct file_operations bm_entry_operations = {
.read = bm_entry_read,
.write = bm_entry_write,
};
.read = bm_entry_read,
.write = bm_entry_write,
};
@@
-622,7
+622,7
@@
static ssize_t bm_register_write(struct file *file, const char __user *buffer,
return PTR_ERR(e);
root = dget(sb->s_root);
return PTR_ERR(e);
root = dget(sb->s_root);
-
down(&root->d_inode->i_sem
);
+
mutex_lock(&root->d_inode->i_mutex
);
dentry = lookup_one_len(e->name, root, strlen(e->name));
err = PTR_ERR(dentry);
if (IS_ERR(dentry))
dentry = lookup_one_len(e->name, root, strlen(e->name));
err = PTR_ERR(dentry);
if (IS_ERR(dentry))
@@
-638,7
+638,7
@@
static ssize_t bm_register_write(struct file *file, const char __user *buffer,
if (!inode)
goto out2;
if (!inode)
goto out2;
- err = simple_pin_fs(
"binfmt_misc"
, &bm_mnt, &entry_count);
+ err = simple_pin_fs(
&bm_fs_type
, &bm_mnt, &entry_count);
if (err) {
iput(inode);
inode = NULL;
if (err) {
iput(inode);
inode = NULL;
@@
-658,7
+658,7
@@
static ssize_t bm_register_write(struct file *file, const char __user *buffer,
out2:
dput(dentry);
out:
out2:
dput(dentry);
out:
-
up(&root->d_inode->i_sem
);
+
mutex_unlock(&root->d_inode->i_mutex
);
dput(root);
if (err) {
dput(root);
if (err) {
@@
-668,7
+668,7
@@
out:
return count;
}
return count;
}
-static struct file_operations bm_register_operations = {
+static
const
struct file_operations bm_register_operations = {
.write = bm_register_write,
};
.write = bm_register_write,
};
@@
-703,19
+703,19
@@
static ssize_t bm_status_write(struct file * file, const char __user * buffer,
case 1: enabled = 0; break;
case 2: enabled = 1; break;
case 3: root = dget(file->f_vfsmnt->mnt_sb->s_root);
case 1: enabled = 0; break;
case 2: enabled = 1; break;
case 3: root = dget(file->f_vfsmnt->mnt_sb->s_root);
-
down(&root->d_inode->i_sem
);
+
mutex_lock(&root->d_inode->i_mutex
);
while (!list_empty(&entries))
kill_node(list_entry(entries.next, Node, list));
while (!list_empty(&entries))
kill_node(list_entry(entries.next, Node, list));
-
up(&root->d_inode->i_sem
);
+
mutex_unlock(&root->d_inode->i_mutex
);
dput(root);
default: return res;
}
return count;
}
dput(root);
default: return res;
}
return count;
}
-static struct file_operations bm_status_operations = {
+static
const
struct file_operations bm_status_operations = {
.read = bm_status_read,
.write = bm_status_write,
};
.read = bm_status_read,
.write = bm_status_write,
};
@@
-740,10
+740,10
@@
static int bm_fill_super(struct super_block * sb, void * data, int silent)
return err;
}
return err;
}
-static
struct super_block *
bm_get_sb(struct file_system_type *fs_type,
- int flags, const char *dev_name, void *data)
+static
int
bm_get_sb(struct file_system_type *fs_type,
+ int flags, const char *dev_name, void *data
, struct vfsmount *mnt
)
{
{
- return get_sb_single(fs_type, flags, data, bm_fill_super);
+ return get_sb_single(fs_type, flags, data, bm_fill_super
, mnt
);
}
static struct linux_binfmt misc_format = {
}
static struct linux_binfmt misc_format = {