4.18-rc1 regression in /proc/self xattr handling

From: Casey Schaufler
Date: Fri Jun 22 2018 - 10:37:14 EST


There is a regression in behavior regarding xattrs in /proc after:

commit 1bbc55131e59bd099fdc568d3aa0b42634dbd188
Author: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Date: Wed May 2 21:26:16 2018 -0400

procfs: get rid of ancient BS in pid_revalidate() uses


Prior to this change lgetxattr() would provide the correct attributes
for entries in /proc. With this change I see that while the behavior
remains correct if the procid is specified, it is not when "self" is
used. On a system with Smack enabled, where the shell has the Smack label
"Crackle" I see:

[root@localhost linux]# attr -S -g SMACK64 /proc/self/attr/current
Attribute "SMACK64" had a 1 byte value for /proc/self/attr/current:
_
[root@localhost linux]# attr -S -g SMACK64 /proc/$BASHPID/attr/current
Attribute "SMACK64" had a 7 byte value for /proc/1716/attr/current:
Crackle

These should be the same, and in the past have been. I don't know
what SELinux expects as far as attributes in /proc, so I can't say
if the problem is manifest with SELinux.