mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs pile (part one) from Al Viro: "Assorted stuff - cleaning namei.c up a bit, fixing ->d_name/->d_parent locking violations, etc. The most visible changes here are death of FS_REVAL_DOT (replaced with "has ->d_weak_revalidate()") and a new helper getting from struct file to inode. Some bits of preparation to xattr method interface changes. Misc patches by various people sent this cycle *and* ocfs2 fixes from several cycles ago that should've been upstream right then. PS: the next vfs pile will be xattr stuff." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits) saner proc_get_inode() calling conventions proc: avoid extra pde_put() in proc_fill_super() fs: change return values from -EACCES to -EPERM fs/exec.c: make bprm_mm_init() static ocfs2/dlm: use GFP_ATOMIC inside a spin_lock ocfs2: fix possible use-after-free with AIO ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path get_empty_filp()/alloc_file() leave both ->f_pos and ->f_version zero target: writev() on single-element vector is pointless export kernel_write(), convert open-coded instances fs: encode_fh: return FILEID_INVALID if invalid fid_type kill f_vfsmnt vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op nfsd: handle vfs_getattr errors in acl protocol switch vfs_getattr() to struct path default SET_PERSONALITY() in linux/elf.h ceph: prepopulate inodes only when request is aborted d_hash_and_lookup(): export, switch open-coded instances 9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate() 9p: split dropping the acls from v9fs_set_create_acl() ...
This commit is contained in:
commit
d895cb1af1
383 changed files with 1276 additions and 1423 deletions
|
|
@ -1528,7 +1528,7 @@ static int file_has_perm(const struct cred *cred,
|
|||
u32 av)
|
||||
{
|
||||
struct file_security_struct *fsec = file->f_security;
|
||||
struct inode *inode = file->f_path.dentry->d_inode;
|
||||
struct inode *inode = file_inode(file);
|
||||
struct common_audit_data ad;
|
||||
u32 sid = cred_sid(cred);
|
||||
int rc;
|
||||
|
|
@ -1957,7 +1957,7 @@ static int selinux_bprm_set_creds(struct linux_binprm *bprm)
|
|||
struct task_security_struct *new_tsec;
|
||||
struct inode_security_struct *isec;
|
||||
struct common_audit_data ad;
|
||||
struct inode *inode = bprm->file->f_path.dentry->d_inode;
|
||||
struct inode *inode = file_inode(bprm->file);
|
||||
int rc;
|
||||
|
||||
rc = cap_bprm_set_creds(bprm);
|
||||
|
|
@ -2929,7 +2929,7 @@ static void selinux_inode_getsecid(const struct inode *inode, u32 *secid)
|
|||
static int selinux_revalidate_file_permission(struct file *file, int mask)
|
||||
{
|
||||
const struct cred *cred = current_cred();
|
||||
struct inode *inode = file->f_path.dentry->d_inode;
|
||||
struct inode *inode = file_inode(file);
|
||||
|
||||
/* file_mask_to_av won't add FILE__WRITE if MAY_APPEND is set */
|
||||
if ((file->f_flags & O_APPEND) && (mask & MAY_WRITE))
|
||||
|
|
@ -2941,7 +2941,7 @@ static int selinux_revalidate_file_permission(struct file *file, int mask)
|
|||
|
||||
static int selinux_file_permission(struct file *file, int mask)
|
||||
{
|
||||
struct inode *inode = file->f_path.dentry->d_inode;
|
||||
struct inode *inode = file_inode(file);
|
||||
struct file_security_struct *fsec = file->f_security;
|
||||
struct inode_security_struct *isec = inode->i_security;
|
||||
u32 sid = current_sid();
|
||||
|
|
@ -3218,7 +3218,7 @@ static int selinux_file_open(struct file *file, const struct cred *cred)
|
|||
struct inode_security_struct *isec;
|
||||
|
||||
fsec = file->f_security;
|
||||
isec = file->f_path.dentry->d_inode->i_security;
|
||||
isec = file_inode(file)->i_security;
|
||||
/*
|
||||
* Save inode label and policy sequence number
|
||||
* at open-time so that selinux_file_permission
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ static ssize_t sel_read_handle_unknown(struct file *filp, char __user *buf,
|
|||
{
|
||||
char tmpbuf[TMPBUFLEN];
|
||||
ssize_t length;
|
||||
ino_t ino = filp->f_path.dentry->d_inode->i_ino;
|
||||
ino_t ino = file_inode(filp)->i_ino;
|
||||
int handle_unknown = (ino == SEL_REJECT_UNKNOWN) ?
|
||||
security_get_reject_unknown() : !security_get_allow_unknown();
|
||||
|
||||
|
|
@ -671,7 +671,7 @@ static ssize_t (*write_op[])(struct file *, char *, size_t) = {
|
|||
|
||||
static ssize_t selinux_transaction_write(struct file *file, const char __user *buf, size_t size, loff_t *pos)
|
||||
{
|
||||
ino_t ino = file->f_path.dentry->d_inode->i_ino;
|
||||
ino_t ino = file_inode(file)->i_ino;
|
||||
char *data;
|
||||
ssize_t rv;
|
||||
|
||||
|
|
@ -1042,8 +1042,7 @@ static ssize_t sel_read_bool(struct file *filep, char __user *buf,
|
|||
ssize_t length;
|
||||
ssize_t ret;
|
||||
int cur_enforcing;
|
||||
struct inode *inode = filep->f_path.dentry->d_inode;
|
||||
unsigned index = inode->i_ino & SEL_INO_MASK;
|
||||
unsigned index = file_inode(filep)->i_ino & SEL_INO_MASK;
|
||||
const char *name = filep->f_path.dentry->d_name.name;
|
||||
|
||||
mutex_lock(&sel_mutex);
|
||||
|
|
@ -1077,8 +1076,7 @@ static ssize_t sel_write_bool(struct file *filep, const char __user *buf,
|
|||
char *page = NULL;
|
||||
ssize_t length;
|
||||
int new_value;
|
||||
struct inode *inode = filep->f_path.dentry->d_inode;
|
||||
unsigned index = inode->i_ino & SEL_INO_MASK;
|
||||
unsigned index = file_inode(filep)->i_ino & SEL_INO_MASK;
|
||||
const char *name = filep->f_path.dentry->d_name.name;
|
||||
|
||||
mutex_lock(&sel_mutex);
|
||||
|
|
@ -1486,13 +1484,11 @@ static int sel_make_avc_files(struct dentry *dir)
|
|||
static ssize_t sel_read_initcon(struct file *file, char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct inode *inode;
|
||||
char *con;
|
||||
u32 sid, len;
|
||||
ssize_t ret;
|
||||
|
||||
inode = file->f_path.dentry->d_inode;
|
||||
sid = inode->i_ino&SEL_INO_MASK;
|
||||
sid = file_inode(file)->i_ino&SEL_INO_MASK;
|
||||
ret = security_sid_to_context(sid, &con, &len);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
@ -1553,7 +1549,7 @@ static inline u32 sel_ino_to_perm(unsigned long ino)
|
|||
static ssize_t sel_read_class(struct file *file, char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
unsigned long ino = file->f_path.dentry->d_inode->i_ino;
|
||||
unsigned long ino = file_inode(file)->i_ino;
|
||||
char res[TMPBUFLEN];
|
||||
ssize_t len = snprintf(res, sizeof(res), "%d", sel_ino_to_class(ino));
|
||||
return simple_read_from_buffer(buf, count, ppos, res, len);
|
||||
|
|
@ -1567,7 +1563,7 @@ static const struct file_operations sel_class_ops = {
|
|||
static ssize_t sel_read_perm(struct file *file, char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
unsigned long ino = file->f_path.dentry->d_inode->i_ino;
|
||||
unsigned long ino = file_inode(file)->i_ino;
|
||||
char res[TMPBUFLEN];
|
||||
ssize_t len = snprintf(res, sizeof(res), "%d", sel_ino_to_perm(ino));
|
||||
return simple_read_from_buffer(buf, count, ppos, res, len);
|
||||
|
|
@ -1584,7 +1580,7 @@ static ssize_t sel_read_policycap(struct file *file, char __user *buf,
|
|||
int value;
|
||||
char tmpbuf[TMPBUFLEN];
|
||||
ssize_t length;
|
||||
unsigned long i_ino = file->f_path.dentry->d_inode->i_ino;
|
||||
unsigned long i_ino = file_inode(file)->i_ino;
|
||||
|
||||
value = security_policycap_supported(i_ino & SEL_INO_MASK);
|
||||
length = scnprintf(tmpbuf, TMPBUFLEN, "%d", value);
|
||||
|
|
|
|||
Loading…
Reference in a new issue