diff --git a/fs/ext4/ialloc.c b/fs/ext4/ialloc.c index 650091bf4945..98f0c1a04f9e 100644 --- a/fs/ext4/ialloc.c +++ b/fs/ext4/ialloc.c @@ -945,6 +945,7 @@ struct inode *__ext4_new_inode(handle_t *handle, struct inode *dir, struct ext4_group_info *grp = NULL; bool encrypt = false; + printk("!!! new inode \n"); /* Cannot create files in a deleted directory */ if (!dir || !dir->i_nlink) return ERR_PTR(-EPERM); @@ -1314,15 +1315,18 @@ struct inode *__ext4_new_inode(handle_t *handle, struct inode *dir, goto fail_free_drop; } + printk("new inode 1\n"); if (!(ei->i_flags & EXT4_EA_INODE_FL)) { err = ext4_init_acl(handle, inode, dir); if (err) goto fail_free_drop; + printk("new inode 2\n"); err = ext4_init_security(handle, inode, dir, qstr); if (err) goto fail_free_drop; } + printk("new inode 3\n"); if (ext4_has_feature_extents(sb)) { /* set extent flag only for directory, file and normal symlink*/ @@ -1344,6 +1348,7 @@ struct inode *__ext4_new_inode(handle_t *handle, struct inode *dir, } ext4_debug("allocating inode %lu\n", inode->i_ino); + printk("allocating inode %lu\n", inode->i_ino); trace_ext4_allocate_inode(inode, dir, mode); brelse(inode_bitmap_bh); return ret; @@ -1358,6 +1363,8 @@ struct inode *__ext4_new_inode(handle_t *handle, struct inode *dir, inode->i_flags |= S_NOQUOTA; iput(inode); brelse(inode_bitmap_bh); + + printk("!!! new inode ret %d \n", err); return ERR_PTR(err); } diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c index 6b27be96b6e5..f9159879c5fc 100644 --- a/fs/ext4/namei.c +++ b/fs/ext4/namei.c @@ -2934,6 +2934,9 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) struct inode *inode; int err, err2 = 0, credits, retries = 0; + //if (printk_ratelimit()) + printk("!!! ext4_mkdir %s\n", dentry->d_name.name); + if (EXT4_DIR_LINK_MAX(dir)) return -EMLINK; @@ -2989,6 +2992,9 @@ static int ext4_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) out_retry: if (err == -ENOSPC && ext4_should_retry_alloc(dir->i_sb, &retries)) goto retry; + //if (printk_ratelimit()) + printk("!!! ext4_mkdir ret %d\n", err); + return err; } diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c index 38531c5e16c6..b15c4c85a981 100644 --- a/fs/ext4/xattr.c +++ b/fs/ext4/xattr.c @@ -1581,9 +1581,12 @@ static int ext4_xattr_set_entry(struct ext4_xattr_info *i, goto update_hash; } +printk("In ext4_xattr_set_entry s %lx, last = %lx, name len %x\n", s, s->first, s->first, EXT4_XATTR_LEN((s->first)->e_name_len)); /* Compute min_offs and last. */ last = s->first; + for (; !IS_LAST_ENTRY(last); last = next) { +printk("In next ext4_xattr_set_entry s %lx, name len %d", last, EXT4_XATTR_LEN((last)->e_name_len)); next = EXT4_XATTR_NEXT(last); if ((void *)next >= s->end) { EXT4_ERROR_INODE(inode, "corrupted xattr entries"); @@ -2303,6 +2306,8 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, int no_expand; int error; + printk("!!! ext4_xattr_set_handle 1 %s\n", name); + if (!name) return -EINVAL; if (strlen(name) > 255) @@ -2431,6 +2436,7 @@ ext4_xattr_set_handle(handle_t *handle, struct inode *inode, int name_index, brelse(is.iloc.bh); brelse(bs.bh); ext4_write_unlock_xattr(inode, &no_expand); + printk("!!! ext4_xattr_set_handle ret %d\n", error); return error; } diff --git a/fs/ext4/xattr.h b/fs/ext4/xattr.h index 87e5863bb493..c4602c19d1b5 100644 --- a/fs/ext4/xattr.h +++ b/fs/ext4/xattr.h @@ -213,6 +213,7 @@ extern int ext4_init_security(handle_t *handle, struct inode *inode, static inline int ext4_init_security(handle_t *handle, struct inode *inode, struct inode *dir, const struct qstr *qstr) { +printk("!!! HERE NO CONFIG_EXT4_FS_SECURITY !!!\n"); return 0; } #endif diff --git a/fs/ext4/xattr_security.c b/fs/ext4/xattr_security.c index 50fb71393fb6..9c76b1683404 100644 --- a/fs/ext4/xattr_security.c +++ b/fs/ext4/xattr_security.c @@ -39,7 +39,9 @@ ext4_initxattrs(struct inode *inode, const struct xattr *xattr_array, handle_t *handle = fs_info; int err = 0; +printk("!!!ext4_initxattrs 1\n"); for (xattr = xattr_array; xattr->name != NULL; xattr++) { +printk("!!!ext4_initxattrs set hndl name %s \n", xattr->name); err = ext4_xattr_set_handle(handle, inode, EXT4_XATTR_INDEX_SECURITY, xattr->name, xattr->value, @@ -54,6 +56,7 @@ int ext4_init_security(handle_t *handle, struct inode *inode, struct inode *dir, const struct qstr *qstr) { + printk("!!! HERE 2 HAS CONFIG_EXT4_FS_SECURITY !!!!\n"); return security_inode_init_security(inode, dir, qstr, &ext4_initxattrs, handle); } diff --git a/security/security.c b/security/security.c index 615c42becb3e..6f2552894cdb 100644 --- a/security/security.c +++ b/security/security.c @@ -1011,29 +1011,39 @@ int security_inode_init_security(struct inode *inode, struct inode *dir, struct xattr *lsm_xattr, *evm_xattr, *xattr; int ret; +printk("!!!! security_inode_init_security \n"); + if (unlikely(IS_PRIVATE(inode))) return 0; +printk("!!!! security_inode_init_security 1\n"); if (!initxattrs) return call_int_hook(inode_init_security, -EOPNOTSUPP, inode, dir, qstr, NULL, NULL, NULL); +printk("!!!! security_inode_init_security 2\n"); memset(new_xattrs, 0, sizeof(new_xattrs)); lsm_xattr = new_xattrs; + ret = call_int_hook(inode_init_security, -EOPNOTSUPP, inode, dir, qstr, &lsm_xattr->name, &lsm_xattr->value, &lsm_xattr->value_len); +printk("!!!! security_inode_init_security 3 ret %d\n", ret); if (ret) goto out; +printk("!!!! security_inode_init_security 4 ret %d\n", ret); evm_xattr = lsm_xattr + 1; ret = evm_inode_init_security(inode, lsm_xattr, evm_xattr); +printk("!!!! security_inode_init_security 5 ret %d\n", ret); if (ret) goto out; ret = initxattrs(inode, new_xattrs, fs_data); +printk("!!!! security_inode_init_security 6 ret %d\n", ret); out: for (xattr = new_xattrs; xattr->value != NULL; xattr++) kfree(xattr->value); +printk("!!!! security_inode_init_security 7 ret %d\n", ret); return (ret == -EOPNOTSUPP) ? 0 : ret; } EXPORT_SYMBOL(security_inode_init_security);