M Mimi Zohar #
Message details and related content
On Wed, 2021-04-14 at 22:32 +0200, Christian Brauner wrote:
On Wed, Apr 14, 2021, 22:21 Mimi Zohar [off-list ref] wrote:quoted
On Wed, 2021-04-14 at 20:19 +0200, Christian Brauner wrote:quoted
On Wed, Apr 14, 2021 at 01:46:46PM -0400, Mimi Zohar wrote:quoted
Hi Christian, On Wed, 2021-04-14 at 13:50 +0200, Christian Brauner wrote:quoted
Hey, [Resending since the previous mail somehow hasn't made it onto the list.] While working on a patch to port ecryptfs to use clone_private_mount() I hit the splat in [1] with v5.12-rc6 (Without any of my changes.). To reproduce this you can use the config in [5]. Then run the scripts [2] and [3] in two terminals. The kernel command line was [4]: while true; do ./test.sh; done while true; do ./test2.sh; done and wait for [1] to appear. The two test scripts aren't specifically designed to trigger this issue. They were stress tests for my ecryptfs clone_private_mount() port. They just allow to trigger this issue. From a very uninformed position it seemed that: void integrity_inode_free(struct inode *inode) { struct integrity_iint_cache *iint; if (!IS_IMA(inode)) return;Thank you for all the details. A builtin IMA policy wasn't specified on the boot command line. Unless a custom IMA policy is loaded, it shouldn't get beyond this point. Before looking any farther, I would appreciate your confirming that you've loaded a custom IMA policy. To see if a policy has been loaded, cat /sys/kernel/security/ima/policy.Ah, interesting thank you. Here's the output: sudo cat /sys/kernel/security/ima/policy dont_measure fsmagic=0x9fa0 dont_measure fsmagic=0x62656572 dont_measure fsmagic=0x64626720 dont_measure fsmagic=0x1021994 dont_measure fsmagic=0x1cd1 dont_measure fsmagic=0x42494e4d dont_measure fsmagic=0x73636673 dont_measure fsmagic=0xf97cff8c dont_measure fsmagic=0x43415d53 dont_measure fsmagic=0x27e0eb dont_measure fsmagic=0x63677270 dont_measure fsmagic=0x6e736673 dont_measure fsmagic=0xde5e81e4 measure func=MMAP_CHECK mask=MAY_EXEC measure func=BPRM_CHECK mask=MAY_EXEC measure func=FILE_CHECK mask=^MAY_READ euid=0 measure func=FILE_CHECK mask=^MAY_READ uid=0 measure func=MODULE_CHECK measure func=FIRMWARE_CHECK measure func=POLICY_CHECK Hm, note that ecryptfs is not in this list so I guess ecryptfs would be measured?That's the "tcb" policy, which can be specified as "policy=tcb" on the boot command line. The builtin policy rules are generic and would normally be replaced with more specific policy rules based on LSM labels.Ah, thank you.quoted
Right, ecryptfs files are being measured. There's somehow a race freeing the inode. The fix is straight forward. Did you want to fix it or should I?Please do fix it. I've reach eod over here. :) You're simply going to handle the NULL case when freeing the iint?
Yes, but it would be nice to understand the race and whether this is
something or has been there from the beginning.
Mimi