.. | .. |
---|
144 | 144 | unsigned int flags, bool weak) |
---|
145 | 145 | { |
---|
146 | 146 | struct ovl_entry *oe = dentry->d_fsdata; |
---|
| 147 | + struct inode *inode = d_inode_rcu(dentry); |
---|
147 | 148 | struct dentry *upper; |
---|
148 | 149 | unsigned int i; |
---|
149 | 150 | int ret = 1; |
---|
150 | 151 | |
---|
151 | | - upper = ovl_dentry_upper(dentry); |
---|
| 152 | + /* Careful in RCU mode */ |
---|
| 153 | + if (!inode) |
---|
| 154 | + return -ECHILD; |
---|
| 155 | + |
---|
| 156 | + upper = ovl_i_dentry_upper(inode); |
---|
152 | 157 | if (upper) |
---|
153 | 158 | ret = ovl_revalidate_real(upper, flags, weak); |
---|
154 | 159 | |
---|
.. | .. |
---|
1887 | 1892 | ovl_dentry_set_flag(OVL_E_CONNECTED, root); |
---|
1888 | 1893 | ovl_set_upperdata(d_inode(root)); |
---|
1889 | 1894 | ovl_inode_init(d_inode(root), &oip, ino, fsid); |
---|
1890 | | - ovl_dentry_update_reval(root, upperdentry, DCACHE_OP_WEAK_REVALIDATE); |
---|
| 1895 | + ovl_dentry_init_flags(root, upperdentry, DCACHE_OP_WEAK_REVALIDATE); |
---|
1891 | 1896 | |
---|
1892 | 1897 | return root; |
---|
1893 | 1898 | } |
---|
.. | .. |
---|
2047 | 2052 | sb->s_xattr = ovl_xattr_handlers; |
---|
2048 | 2053 | sb->s_fs_info = ofs; |
---|
2049 | 2054 | sb->s_flags |= SB_POSIXACL; |
---|
2050 | | - sb->s_iflags |= SB_I_SKIP_SYNC; |
---|
| 2055 | + sb->s_iflags |= SB_I_SKIP_SYNC | SB_I_IMA_UNVERIFIABLE_SIGNATURE; |
---|
2051 | 2056 | |
---|
2052 | 2057 | err = -ENOMEM; |
---|
2053 | 2058 | root_dentry = ovl_get_root(sb, upperpath.dentry, oe); |
---|