Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits) init: Open /dev/console from rootfs mqueue: fix typo "failues" -> "failures" mqueue: only set error codes if they are really necessary mqueue: simplify do_open() error handling mqueue: apply mathematics distributivity on mq_bytes calculation mqueue: remove unneeded info->messages initialization mqueue: fix mq_open() file descriptor leak on user-space processes fix race in d_splice_alias() set S_DEAD on unlink() and non-directory rename() victims vfs: add NOFOLLOW flag to umount(2) get rid of ->mnt_parent in tomoyo/realpath hppfs can use existing proc_mnt, no need for do_kern_mount() in there Mirror MS_KERNMOUNT in ->mnt_flags get rid of useless vfsmount_lock use in put_mnt_ns() Take vfsmount_lock to fs/internal.h get rid of insanity with namespace roots in tomoyo take check for new events in namespace (guts of mounts_poll()) to namespace.c Don't mess with generic_permission() under ->d_lock in hpfs sanitize const/signedness for udf nilfs: sanitize const/signedness in dealing with ->d_name.name ... Fix up fairly trivial (famous last words...) conflicts in drivers/infiniband/core/uverbs_main.c and security/tomoyo/realpath.c
This commit is contained in:
commit
0f2cc4ecd8
73 changed files with 794 additions and 1101 deletions
|
@ -647,17 +647,11 @@ static int mounts_release(struct inode *inode, struct file *file)
|
|||
static unsigned mounts_poll(struct file *file, poll_table *wait)
|
||||
{
|
||||
struct proc_mounts *p = file->private_data;
|
||||
struct mnt_namespace *ns = p->ns;
|
||||
unsigned res = POLLIN | POLLRDNORM;
|
||||
|
||||
poll_wait(file, &ns->poll, wait);
|
||||
|
||||
spin_lock(&vfsmount_lock);
|
||||
if (p->event != ns->event) {
|
||||
p->event = ns->event;
|
||||
poll_wait(file, &p->ns->poll, wait);
|
||||
if (mnt_had_events(p))
|
||||
res |= POLLERR | POLLPRI;
|
||||
}
|
||||
spin_unlock(&vfsmount_lock);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
@ -662,6 +662,7 @@ struct proc_dir_entry *proc_symlink(const char *name,
|
|||
}
|
||||
return ent;
|
||||
}
|
||||
EXPORT_SYMBOL(proc_symlink);
|
||||
|
||||
struct proc_dir_entry *proc_mkdir_mode(const char *name, mode_t mode,
|
||||
struct proc_dir_entry *parent)
|
||||
|
@ -700,6 +701,7 @@ struct proc_dir_entry *proc_mkdir(const char *name,
|
|||
{
|
||||
return proc_mkdir_mode(name, S_IRUGO | S_IXUGO, parent);
|
||||
}
|
||||
EXPORT_SYMBOL(proc_mkdir);
|
||||
|
||||
struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,
|
||||
struct proc_dir_entry *parent)
|
||||
|
@ -728,6 +730,7 @@ struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,
|
|||
}
|
||||
return ent;
|
||||
}
|
||||
EXPORT_SYMBOL(create_proc_entry);
|
||||
|
||||
struct proc_dir_entry *proc_create_data(const char *name, mode_t mode,
|
||||
struct proc_dir_entry *parent,
|
||||
|
@ -762,6 +765,7 @@ out_free:
|
|||
out:
|
||||
return NULL;
|
||||
}
|
||||
EXPORT_SYMBOL(proc_create_data);
|
||||
|
||||
static void free_proc_entry(struct proc_dir_entry *de)
|
||||
{
|
||||
|
@ -853,3 +857,4 @@ continue_removing:
|
|||
de->parent->name, de->name, de->subdir->name);
|
||||
pde_put(de);
|
||||
}
|
||||
EXPORT_SYMBOL(remove_proc_entry);
|
||||
|
|
|
@ -220,9 +220,3 @@ void pid_ns_release_proc(struct pid_namespace *ns)
|
|||
{
|
||||
mntput(ns->proc_mnt);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(proc_symlink);
|
||||
EXPORT_SYMBOL(proc_mkdir);
|
||||
EXPORT_SYMBOL(create_proc_entry);
|
||||
EXPORT_SYMBOL(proc_create_data);
|
||||
EXPORT_SYMBOL(remove_proc_entry);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue