- 10 Feb, 2021 1 commit
-
-
J. R. Okajima authored
Aufs has an internal debugging feature which uses LOCKDEP. Without LOCKDEP, aufs cannot get the correct lock status. As a result, BUG_ON() was called unexpectedly. In other words, with the configuration of CONFIG_AUFS_DEBUG enabled and CONFIG_LOCKDEP disabled, a bug appears. Reported-by: "Zhengyuan Liu" <liuzhengyuan@g.ycsipg.com> See-also: https://www.mail-archive.com/aufs-users@lists.sourceforge.net/msg05829.html Signed-off-by: J. R. Okajima <hooanon05g@gmail.com>
-
- 22 Dec, 2020 1 commit
-
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com>
-
- 20 Dec, 2020 1 commit
-
-
J. R. Okajima authored
Simply follows the mainline, 294f69e662d15 2019-10-11 compiler_attributes.h: Add 'fallthrough' pseudo keyword for switch/case use Signed-off-by: J. R. Okajima <hooanon05g@gmail.com>
-
- 19 Jun, 2020 1 commit
-
-
J. R. Okajima authored
-
- 18 Jun, 2020 5 commits
-
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com>
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
By the recent commit 21913077f9918 2020-06-17 aufs: do not call i_readcount_inc() a very old bug was fixed, which is inblance counter. But still aufs needs to call i_readcount_inc() when the branch permission is chaned from RW to RO. Otherwise the counter reaches 0 and BUG() in i_readcount_dec() will be activated. Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit f10aea57d39d6cd311312e9e7746804f7059b5c8)
-
Mauricio Faria de Oliveira authored
The 'struct inode.i_readcount' field is maintained at the VFS, and should not be modified by filesystems. But aufs does in one place, which causes it to be unbalanced. This started with Linux v2.6.39 commit 890275b5eb79 ("IMA: maintain i_readcount in the VFS layer"), which moved the i_readcount updates from IMA into the VFS (at the same places IMA was called previously) and introduced 'mutex_lock(i_mutex)' in the ima_file_check() path. The former change is functionally equivalent, thus no changes are needed in response to it. The latter change, on the other hand, is _not_; and is reported to cause a deadlock in aufs (see below), thus it dropped the call to ima_file_check(). However, when dropping the ima_file_check() call, aufs introduced the i_readcount_inc() call as well, which according to the commit changes is not necessary. This can be observed in aufs2-standalone.git commit 1dbd1c864e455 ("aufs2.1 standalone version for linux-2.6."), announced to the aufs-users mailing list on 2011-04-04 [1]. diff --git a/ChangeLog b/ChangeLog ... +commit 17eac367b03334e57a93e8051eb712add24d2534 +Author: J. R. Okajima <hooanon05@yahoo.co.jp> +Date: Fri Apr 1 16:31:22 2011 +0900 + + aufs: for 2.6.39, limit the support for IMA + + Since it acquires i_mutex and causes a deadlock, replace a + ima_file_check() call by i_readcount_inc(). + + Signed-off-by: J. R. Okajima <hooanon05@yahoo.co.jp> ... diff --git a/fs/aufs/vfsub.c b/fs/aufs/vfsub.c ... struct file *vfsub_dentry_open(struct path *path, int flags) ... + if (!IS_ERR_OR_NULL(file) + && (file->f_mode & (FMODE_READ | FMODE_WRITE)) == FMODE_READ) + i_readcount_inc(path->dentry->d_inode); - err = ima_file_check(file, au_conv_oflags(flags)); ... Apparently, this might have been a misunderstanding of one hunk in the 2.6.39 commit, that deletes the lines to increment i_readcount, and adds the lines to acquire i_mutex. It reuses code from the removed function ima_counts_get() to create ima_rdwr_violation_check(), and another hunk calls the new function from ima_file_check(). But note that the i_readcount increment was _not_ called from ima_file_check() previously, via ima_counts_get(): -void ima_counts_get(struct file *file) +static void ima_rdwr_violation_check(struct file *file) { ... + mutex_lock(&inode->i_mutex); /* file metadata: permissions, xattr */ ... - atomic_inc(&inode->i_readcount); @@ -318,6 +308,7 @@ int ima_file_check(struct file *file, int mask) ... + ima_rdwr_violation_check(file); So, in order to avoid the unbalance caused to i_readcount, drop the i_readcount_inc() call. Note the issue is not the lack of a corresponding i_readcount_dec() call; it's the mere usage of these functions outside of VFS layer, where i_readcount is maintained. Links: [1] https://sourceforge.net/p/aufs/mailman/message/27304125/ snippet: """ aufs2 Monday GIT release From: <sfjro@us...> - 2011-04-04 04:59:18 o news - begin supporting linux-2.6.39-rcN. ... - aufs2-2.6.git#aufs2.1 branch ... aufs: for 2.6.39, limit the support for IMA ... """ Signed-off-by: Mauricio Faria de Oliveira <mfo@canonical.com> (cherry picked from commit 515a586eeef31e0717d5dea21e2c11a965340b3c)
-
- 13 May, 2020 5 commits
-
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
SELinux's d_instantiate hook calls __vfs_getxattr() BEFORE d_inode is set. Aufs should not rely upon d_inode and should use the parameter inode instead. Reported-by: "jon bird" <news@onasticksoftware.co.uk> Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit 5777718fd657e1cfdf006cd16b524c65cf2fe09b)
-
- 20 Apr, 2020 5 commits
-
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
In linux v5.7-rc2, zero-length array declarations are replaced by FAM (flexible-array member), a2008395fe2e 2020-04-18 dirent.h: Replace zero-length array with flexible-array member Aufs simply follows this trend. Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit 747a01ec1835988fa20177789a6fb65c5198fcb9)
-
- 29 Feb, 2020 5 commits
-
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
In aufs5.4, kmemleak reported several false positives in fs/aufs/xino.c. I don't know why, but it may be related to the "delayed" kfree (by RCU). So I simply replace it by direct kfree() call. Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit 03836b8128073f92b4e4a1cb54f91d0d7c290d1f)
-
- 22 Jan, 2020 5 commits
-
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit 56b4b776c84f364384971c4cdfd66b4a2f0696d4)
-
- 16 Jan, 2020 6 commits
-
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> # Conflicts: # include/uapi/linux/aufs_type.h
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> # Conflicts: # fs/aufs/i_op.c # include/uapi/linux/aufs_type.h
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> # Conflicts: # include/uapi/linux/aufs_type.h
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> # Conflicts: # include/uapi/linux/aufs_type.h
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit 0f5f91bda77d0690c23732fd2592ae97c908a704)
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit 9e47f923ad8bf55c272fed3d3699fa5df14b6f72)
-
- 07 Jan, 2020 2 commits
-
-
J. R. Okajima authored
-
J. R. Okajima authored
-
- 31 Dec, 2019 3 commits
-
-
J. R. Okajima authored
-
J. R. Okajima authored
-
J. R. Okajima authored
Signed-off-by: J. R. Okajima <hooanon05g@gmail.com> (cherry picked from commit 7555811a8741218089016a6abed15a440baca476)
-