diff options
| author | David Howells <dhowells@redhat.com> | 2008-11-13 18:39:22 -0500 |
|---|---|---|
| committer | James Morris <jmorris@namei.org> | 2008-11-13 18:39:22 -0500 |
| commit | 745ca2475a6ac596e3d8d37c2759c0fbe2586227 (patch) | |
| tree | f87c34bdfbc8542477b16a014bbb4e3b415b286a /fs/hppfs | |
| parent | 88e67f3b8898c5ea81d2916dd5b8bc9c0c35ba13 (diff) | |
CRED: Pass credentials through dentry_open()
Pass credentials through dentry_open() so that the COW creds patch can have
SELinux's flush_unauthorized_files() pass the appropriate creds back to itself
when it opens its null chardev.
The security_dentry_open() call also now takes a creds pointer, as does the
dentry_open hook in struct security_operations.
Signed-off-by: David Howells <dhowells@redhat.com>
Acked-by: James Morris <jmorris@namei.org>
Signed-off-by: James Morris <jmorris@namei.org>
Diffstat (limited to 'fs/hppfs')
| -rw-r--r-- | fs/hppfs/hppfs.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/hppfs/hppfs.c b/fs/hppfs/hppfs.c index 2b3d1828db9..795e2c130ad 100644 --- a/fs/hppfs/hppfs.c +++ b/fs/hppfs/hppfs.c | |||
| @@ -426,6 +426,7 @@ static int file_mode(int fmode) | |||
| 426 | 426 | ||
| 427 | static int hppfs_open(struct inode *inode, struct file *file) | 427 | static int hppfs_open(struct inode *inode, struct file *file) |
| 428 | { | 428 | { |
| 429 | const struct cred *cred = current_cred(); | ||
| 429 | struct hppfs_private *data; | 430 | struct hppfs_private *data; |
| 430 | struct vfsmount *proc_mnt; | 431 | struct vfsmount *proc_mnt; |
| 431 | struct dentry *proc_dentry; | 432 | struct dentry *proc_dentry; |
| @@ -446,7 +447,7 @@ static int hppfs_open(struct inode *inode, struct file *file) | |||
| 446 | 447 | ||
| 447 | /* XXX This isn't closed anywhere */ | 448 | /* XXX This isn't closed anywhere */ |
| 448 | data->proc_file = dentry_open(dget(proc_dentry), mntget(proc_mnt), | 449 | data->proc_file = dentry_open(dget(proc_dentry), mntget(proc_mnt), |
| 449 | file_mode(file->f_mode)); | 450 | file_mode(file->f_mode), cred); |
| 450 | err = PTR_ERR(data->proc_file); | 451 | err = PTR_ERR(data->proc_file); |
| 451 | if (IS_ERR(data->proc_file)) | 452 | if (IS_ERR(data->proc_file)) |
| 452 | goto out_free1; | 453 | goto out_free1; |
| @@ -489,6 +490,7 @@ static int hppfs_open(struct inode *inode, struct file *file) | |||
| 489 | 490 | ||
| 490 | static int hppfs_dir_open(struct inode *inode, struct file *file) | 491 | static int hppfs_dir_open(struct inode *inode, struct file *file) |
| 491 | { | 492 | { |
| 493 | const struct cred *cred = current_cred(); | ||
| 492 | struct hppfs_private *data; | 494 | struct hppfs_private *data; |
| 493 | struct vfsmount *proc_mnt; | 495 | struct vfsmount *proc_mnt; |
| 494 | struct dentry *proc_dentry; | 496 | struct dentry *proc_dentry; |
| @@ -502,7 +504,7 @@ static int hppfs_dir_open(struct inode *inode, struct file *file) | |||
| 502 | proc_dentry = HPPFS_I(inode)->proc_dentry; | 504 | proc_dentry = HPPFS_I(inode)->proc_dentry; |
| 503 | proc_mnt = inode->i_sb->s_fs_info; | 505 | proc_mnt = inode->i_sb->s_fs_info; |
| 504 | data->proc_file = dentry_open(dget(proc_dentry), mntget(proc_mnt), | 506 | data->proc_file = dentry_open(dget(proc_dentry), mntget(proc_mnt), |
| 505 | file_mode(file->f_mode)); | 507 | file_mode(file->f_mode), cred); |
| 506 | err = PTR_ERR(data->proc_file); | 508 | err = PTR_ERR(data->proc_file); |
| 507 | if (IS_ERR(data->proc_file)) | 509 | if (IS_ERR(data->proc_file)) |
| 508 | goto out_free; | 510 | goto out_free; |
