Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d76b0d9b authored by David Howells's avatar David Howells Committed by James Morris
Browse files

CRED: Use creds in file structs



Attach creds to file structs and discard f_uid/f_gid.

file_operations::open() methods (such as hppfs_open()) should use file->f_cred
rather than current_cred().  At the moment file->f_cred will be current_cred()
at this point.

Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Reviewed-by: default avatarJames Morris <jmorris@namei.org>
Signed-off-by: default avatarJames Morris <jmorris@namei.org>
parent 1d045980
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1085,8 +1085,8 @@ static int vpe_open(struct inode *inode, struct file *filp)
	v->load_addr = NULL;
	v->len = 0;

	v->uid = filp->f_uid;
	v->gid = filp->f_gid;
	v->uid = filp->f_cred->fsuid;
	v->gid = filp->f_cred->fsgid;

#ifdef CONFIG_MIPS_APSP_KSPD
	/* get kspd to tell us when a syscall_exit happens */
+4 −2
Original line number Diff line number Diff line
@@ -246,7 +246,8 @@ hysdn_conf_open(struct inode *ino, struct file *filep)
	}
	if (card->debug_flags & (LOG_PROC_OPEN | LOG_PROC_ALL))
		hysdn_addlog(card, "config open for uid=%d gid=%d mode=0x%x",
			     filep->f_uid, filep->f_gid, filep->f_mode);
			     filep->f_cred->fsuid, filep->f_cred->fsgid,
			     filep->f_mode);

	if ((filep->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_WRITE) {
		/* write only access -> write boot file or conf line */
@@ -331,7 +332,8 @@ hysdn_conf_close(struct inode *ino, struct file *filep)
	}
	if (card->debug_flags & (LOG_PROC_OPEN | LOG_PROC_ALL))
		hysdn_addlog(card, "config close for uid=%d gid=%d mode=0x%x",
			     filep->f_uid, filep->f_gid, filep->f_mode);
			     filep->f_cred->fsuid, filep->f_cred->fsgid,
			     filep->f_mode);

	if ((filep->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_WRITE) {
		/* write only access -> write boot file or conf line */
+1 −1
Original line number Diff line number Diff line
@@ -174,7 +174,7 @@ int coda_release(struct inode *coda_inode, struct file *coda_file)
	BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC);

	err = venus_close(coda_inode->i_sb, coda_i2f(coda_inode),
			  coda_flags, coda_file->f_uid);
			  coda_flags, coda_file->f_cred->fsuid);

	host_inode = cfi->cfi_container->f_path.dentry->d_inode;
	cii = ITOC(coda_inode);
+4 −3
Original line number Diff line number Diff line
@@ -37,6 +37,8 @@ static struct percpu_counter nr_files __cacheline_aligned_in_smp;
static inline void file_free_rcu(struct rcu_head *head)
{
	struct file *f = container_of(head, struct file, f_u.fu_rcuhead);

	put_cred(f->f_cred);
	kmem_cache_free(filp_cachep, f);
}

@@ -121,8 +123,7 @@ struct file *get_empty_filp(void)
	INIT_LIST_HEAD(&f->f_u.fu_list);
	atomic_long_set(&f->f_count, 1);
	rwlock_init(&f->f_owner.lock);
	f->f_uid = cred->fsuid;
	f->f_gid = cred->fsgid;
	f->f_cred = get_cred(cred);
	eventpoll_init_file(f);
	/* f->f_version: 0 */
	return f;
+2 −2
Original line number Diff line number Diff line
@@ -426,7 +426,7 @@ static int file_mode(int fmode)

static int hppfs_open(struct inode *inode, struct file *file)
{
	const struct cred *cred = current_cred();
	const struct cred *cred = file->f_cred;
	struct hppfs_private *data;
	struct vfsmount *proc_mnt;
	struct dentry *proc_dentry;
@@ -490,7 +490,7 @@ static int hppfs_open(struct inode *inode, struct file *file)

static int hppfs_dir_open(struct inode *inode, struct file *file)
{
	const struct cred *cred = current_cred();
	const struct cred *cred = file->f_cred;
	struct hppfs_private *data;
	struct vfsmount *proc_mnt;
	struct dentry *proc_dentry;
Loading