162
162
au_update_fuse_h_inode(NULL, a->h_dentry); /*ignore*/
163
diff -urNad aufs-0+20080317~/fs/aufs/i_op.c aufs-0+20080317/fs/aufs/i_op.c
164
--- aufs-0+20080317~/fs/aufs25/i_op.c 2008-03-17 14:35:02.000000000 +0100
165
+++ aufs-0+20080317/fs/aufs25/i_op.c 2008-03-17 14:36:13.000000000 +0100
166
@@ -640,12 +640,14 @@
167
si_read_lock(sb, AuLock_FLUSH);
170
+ #if !defined(CONFIG_SECURITY_APPARMOR)
171
if (ia->ia_valid & ATTR_FILE) {
172
/* currently ftruncate(2) only */
175
ia->ia_file = au_h_fptr(file, au_fbstart(file));
180
if ((ia->ia_valid & ATTR_SIZE)
181
@@ -783,11 +785,13 @@
183
di_write_unlock(dentry);
185
+ #if !defined(CONFIG_SECURITY_APPARMOR)
188
//ia->ia_valid |= ATTR_FILE;
189
fi_write_unlock(file);
195
diff -urNad aufs-0+20080317~/fs/aufs/misc.c aufs-0+20080317/fs/aufs/misc.c
196
--- aufs-0+20080317~/fs/aufs25/misc.c 2008-03-17 14:35:02.000000000 +0100
197
+++ aufs-0+20080317/fs/aufs25/misc.c 2008-03-17 14:35:07.000000000 +0100
199
} while (err == -EAGAIN || err == -EINTR);
201
ia->ia_size = dst->f_pos;
202
+ #if defined(CONFIG_SECURITY_APPARMOR)
203
+ ia->ia_valid = ATTR_SIZE;
205
ia->ia_valid = ATTR_SIZE | ATTR_FILE;
208
mutex_lock_nested(&h_i->i_mutex, AuLsc_I_CHILD2);
209
err = vfsub_notify_change(h_d, ia, &vargs);
210
mutex_unlock(&h_i->i_mutex);
211
diff -urNad aufs-0+20080317~/fs/aufs/vfsub.c aufs-0+20080317/fs/aufs/vfsub.c
212
--- aufs-0+20080317~/fs/aufs25/vfsub.c 2008-03-17 14:35:02.000000000 +0100
213
+++ aufs-0+20080317/fs/aufs25/vfsub.c 2008-03-17 14:35:07.000000000 +0100
215
dir->i_ino, AuDLNPair(dentry), symname, mode);
218
+ #ifdef CONFIG_VSERVER
219
+ err = vfs_symlink(dir, dentry, symname, mode, NULL);
220
+ #elif defined(CONFIG_SECURITY_APPARMOR)
221
+ err = vfs_symlink(dir, dentry, NULL, symname, mode);
223
err = vfs_symlink(dir, dentry, symname, mode);
226
/* dir inode is locked */
227
au_update_fuse_h_inode(NULL, dentry->d_parent); /*ignore*/
229
LKTRTrace("i%lu, %.*s, 0x%x\n", dir->i_ino, AuDLNPair(dentry), mode);
232
+ #ifdef CONFIG_VSERVER
233
+ err = vfs_mknod(dir, dentry, mode, dev, NULL);
234
+ #elif defined(CONFIG_SECURITY_APPARMOR)
235
+ err = vfs_mknod(dir, dentry, NULL, mode, dev);
237
err = vfs_mknod(dir, dentry, mode, dev);
240
/* dir inode is locked */
241
au_update_fuse_h_inode(NULL, dentry->d_parent); /*ignore*/
247
+ #ifdef CONFIG_VSERVER
248
+ err = vfs_link(src_dentry, dir, dentry, NULL);
249
+ #elif defined(CONFIG_SECURITY_APPARMOR)
250
+ err = vfs_link(src_dentry, NULL, dir, dentry, NULL);
252
err = vfs_link(src_dentry, dir, dentry);
256
LKTRTrace("src_i %p, dst_i %p\n",
261
+ #ifdef CONFIG_SECURITY_APPARMOR
262
+ err = vfs_rename(src_dir, src_dentry, NULL, dir, dentry, NULL);
264
err = vfs_rename(src_dir, src_dentry, dir, dentry);
268
/* dir inode is locked */
270
LKTRTrace("i%lu, %.*s, 0x%x\n", dir->i_ino, AuDLNPair(dentry), mode);
273
+ #ifdef CONFIG_VSERVER
274
+ err = vfs_mkdir(dir, dentry, mode, NULL);
275
+ #elif defined(CONFIG_SECURITY_APPARMOR)
276
+ err = vfs_mkdir(dir, dentry, NULL, mode);
278
err = vfs_mkdir(dir, dentry, mode);
281
/* dir inode is locked */
282
au_update_fuse_h_inode(NULL, dentry->d_parent); /*ignore*/
287
+ #if defined(CONFIG_VSERVER) || defined(CONFIG_SECURITY_APPARMOR)
288
+ err = vfs_rmdir(dir, dentry, NULL);
290
err = vfs_rmdir(dir, dentry);
293
/* dir inode is locked */
297
/* vfs_unlink() locks inode */
299
+ #if defined(CONFIG_VSERVER) || defined(CONFIG_SECURITY_APPARMOR)
300
+ err = vfs_unlink(dir, dentry, NULL);
302
err = vfs_unlink(dir, dentry);
305
/* dir inode is locked */
307
@@ -1135,7 +1172,11 @@
308
if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) {
309
vfsub_ignore(a->vargs);
311
+ #ifdef CONFIG_SECURITY_APPARMOR
312
+ *a->errp = notify_change(a->h_dentry, NULL, a->ia);
314
*a->errp = notify_change(a->h_dentry, a->ia);
318
au_update_fuse_h_inode(NULL, a->h_dentry); /*ignore*/