Files
kernel_realme_nemo/include/linux
Serge Hallyn e7f7033799 fix namespaced fscaps when !CONFIG_SECURITY
[ Upstream commit ed9b25d1970a4787ac6a39c2091e63b127ecbfc1 ]

Namespaced file capabilities were introduced in 8db6c34f1d .
When userspace reads an xattr for a namespaced capability, a
virtualized representation of it is returned if the caller is
in a user namespace owned by the capability's owning rootid.
The function which performs this virtualization was not hooked
up if CONFIG_SECURITY=n.  Therefore in that case the original
xattr was shown instead of the virtualized one.

To test this using libcap-bin (*1),

$ v=$(mktemp)
$ unshare -Ur setcap cap_sys_admin-eip $v
$ unshare -Ur setcap -v cap_sys_admin-eip $v
/tmp/tmp.lSiIFRvt8Y: OK

"setcap -v" verifies the values instead of setting them, and
will check whether the rootid value is set.  Therefore, with
this bug un-fixed, and with CONFIG_SECURITY=n, setcap -v will
fail:

$ v=$(mktemp)
$ unshare -Ur setcap cap_sys_admin=eip $v
$ unshare -Ur setcap -v cap_sys_admin=eip $v
nsowner[got=1000, want=0],/tmp/tmp.HHDiOOl9fY differs in []

Fix this bug by calling cap_inode_getsecurity() in
security_inode_getsecurity() instead of returning
-EOPNOTSUPP, when CONFIG_SECURITY=n.

*1 - note, if libcap is too old for getcap to have the '-n'
option, then use verify-caps instead.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=209689
Cc: Hervé Guillemet <herve@guillemet.org>
Acked-by: Casey Schaufler <casey@schaufler-ca.com>
Signed-off-by: Serge Hallyn <shallyn@cisco.com>
Signed-off-by: Andrew G. Morgan <morgan@kernel.org>
Signed-off-by: James Morris <jamorris@linux.microsoft.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-12-29 13:47:04 +01:00
..
2019-12-17 20:39:59 +01:00
2018-04-24 09:36:39 +02:00
2018-02-22 15:42:23 +01:00
2017-08-30 14:40:40 +02:00
2018-08-03 07:50:38 +02:00
2017-08-24 13:23:03 -07:00
2017-08-03 19:09:26 -07:00
2019-11-24 08:22:48 +01:00
2017-08-07 17:22:14 +02:00
2020-09-03 11:22:32 +02:00
2020-04-02 16:34:21 +02:00
2018-02-22 15:42:24 +01:00
2019-12-17 20:38:50 +01:00
2017-08-28 20:51:22 +02:00
2017-09-07 11:53:11 +02:00
2019-12-31 12:37:21 +01:00
2020-07-29 07:42:55 +02:00
2018-02-22 15:42:23 +01:00
2017-07-25 18:05:25 +02:00
2017-09-25 08:56:05 -06:00
2020-11-18 18:28:00 +01:00
2020-03-20 10:54:12 +01:00
2017-08-06 20:55:29 -07:00
2019-06-11 12:21:48 +02:00
2020-04-24 08:00:38 +02:00
2020-04-02 16:34:36 +02:00
2017-08-16 16:28:47 -07:00
2018-11-13 11:15:11 -08:00
2020-12-11 13:39:04 +01:00
2017-07-24 17:50:37 +02:00
2020-04-02 16:34:36 +02:00
2017-08-31 18:50:14 +02:00
2017-08-15 09:02:07 -07:00
2017-08-15 09:02:08 -07:00