]> git.baikalelectronics.ru Git - kernel.git/commit
apparmor: delete the dentry in aafs_remove() to avoid a leak
authorChris Coulson <chris.coulson@canonical.com>
Mon, 4 Feb 2019 10:21:23 +0000 (10:21 +0000)
committerJohn Johansen <john.johansen@canonical.com>
Tue, 12 Mar 2019 10:48:02 +0000 (03:48 -0700)
commit960ee8002f58ed4a271e0eaa36e04c15aecc5ce0
tree9f375de24babb88d6b14e42f2824adb232798873
parente5e2de5a13c325d87a1bfb374465e057326b6db8
apparmor: delete the dentry in aafs_remove() to avoid a leak

Although the apparmorfs dentries are always dropped from the dentry cache
when the usage count drops to zero, there is no guarantee that this will
happen in aafs_remove(), as another thread might still be using it. In
this scenario, this means that the dentry will temporarily continue to
appear in the results of lookups, even after the call to aafs_remove().

In the case of removal of a profile - it also causes simple_rmdir()
on the profile directory to fail, as the directory won't be empty until
the usage counts of all child dentries have decreased to zero. This
results in the dentry for the profile directory leaking and appearing
empty in the file system tree forever.

Signed-off-by: Chris Coulson <chris.coulson@canonical.com>
Signed-off-by: John Johansen <john.johansen@canonical.com>
security/apparmor/apparmorfs.c