Bug 217 - [anck-4.19]文件/proc/unevictable/del_pid的读写权限异常导致用例ltp_fs_proc01失败
Summary: [anck-4.19]文件/proc/unevictable/del_pid的读写权限异常导致用例ltp_fs_proc01失败
Status: RESOLVED FIXED
Alias: None
Product: ANCK 4.19 Dev
Classification: ANCK
Component: fs (show other bugs) fs
Version: unspecified
Hardware: All Linux
: P3-Medium S5-enhancement
Target Milestone: ---
Assignee: hongnan_Li
QA Contact: 云霭
URL:
Whiteboard:
Keywords: NeedInfo
Depends on:
Blocks:
 
Reported: 2021-12-28 17:42 UTC by 云霭
Modified: 2022-02-09 17:36 UTC (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description 云霭 2021-12-28 17:42:31 UTC
【缺陷描述】 
文件/proc/unevictable/del_pid的读写权限异常导致用例ltp_fs_proc01失败

【重现环境】 
x86_64:
[root@iZbp1dzskfrqwd5cbtwpv0Z ~]# uname -r
4.19.91-41.git.32ba9892b966.an8.x86_64
Tone job:https://tone.openanolis.cn/ws/jfupduzb/test_result/187

aarch64也有这个问题
Tone job:https://tone.openanolis.cn/ws/jfupduzb/test_result/196

【重现步骤】 
git clone https://gitee.com/mirrors_linux-test-project/ltp.git
cd ltp
make autotools
./configure
make
make intall
cd testcases/kernel/fs/proc/
./proc01

【重现概率】 
必现
【期望结果】 
case pass
【实际结果】
proc01      0  TINFO  :  /proc/fs/nfsd/unlock_filesystem: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/fs/nfsd/unlock_ip: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/fs/nfsd/filehandle: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/sys/fs/binfmt_misc/register: is write-only.
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/all/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/default/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/erspan0/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/eth0/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/gretap0/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/ip6gre0/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/ip6tnl0/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/lo/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/ltp_ns_veth2/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sys/net/ipv6/conf/sit0/stable_secret: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/kmsg: known issue: errno=EAGAIN/EWOULDBLOCK(11): Resource temporarily unavailable
proc01      1  TFAIL  :  proc01.c:402: read failed: /proc/unevictable/del_pid: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/sysrq-trigger: is write-only.
proc01      0  TINFO  :  /proc/self/task/1009324/mem: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/self/task/1009324/clear_refs: is write-only.

proc01      0  TINFO  :  /proc/self/task/1009324/attr/current: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/task/1009324/attr/prev: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/task/1009324/attr/exec: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/task/1009324/attr/fscreate: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/task/1009324/attr/keycreate: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/task/1009324/attr/sockcreate: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/task/1009324/attr/smack/current: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/mem: known issue: errno=EIO(5): Input/output error
proc01      0  TINFO  :  /proc/self/clear_refs: is write-only.
proc01      0  TINFO  :  /proc/self/attr/current: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/attr/prev: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/attr/exec: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/attr/fscreate: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/attr/keycreate: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/attr/sockcreate: known issue: errno=EINVAL(22): Invalid argument
proc01      0  TINFO  :  /proc/self/attr/smack/current: known issue: errno=EINVAL(22): Invalid argument
proc01      2  TFAIL  :  proc01.c:471: readproc() failed with 1 errors.
Comment 1 Shiloong admin 2021-12-31 15:07:54 UTC
@ylsong
请问这个 case 之前的nightly 是 pass 的吗? 
什么时间开始失败的呢?
Comment 2 云霭 2022-01-06 17:45:28 UTC
这个case一直是fail的,记录在社区作为测试基线依据
Comment 3 Shiloong admin 2022-02-08 15:30:55 UTC
(In reply to 云霭 from comment #2)
> 这个case一直是fail的,记录在社区作为测试基线依据

这个请 @
Comment 4 Shiloong admin 2022-02-08 15:31:27 UTC
这个请 @josephqi 帮忙安排个同学看看吧.thanks!
Comment 5 Joseph Qi alibaba_cloud_group 2022-02-08 15:40:29 UTC
(In reply to Shiloong from comment #4)
> 这个请 @josephqi 帮忙安排个同学看看吧.thanks!

@hongnan 帮忙看下
Comment 6 hongnan_Li alibaba_cloud_group 2022-02-08 20:45:44 UTC
文件/proc/unevictable/del_pid来自于以下commit,是自研的特性,不在测试用例的范围内。
7d6cb94f148e9e9cce24d3ce5ccb65b49974b547 alinux: mm: Pin code section of process in memory
https://gitcode.net/openanolis/cloud-kernel/-/commit/7d6cb94f148e9e9cce24d3ce5ccb65b49974b547
测试了下是没有权限读写的,看描述应该不是个可读写的文件。
Comment 7 hongnan_Li alibaba_cloud_group 2022-02-08 21:25:38 UTC
(In reply to hongnan_Li from comment #6)
> 文件/proc/unevictable/del_pid来自于以下commit,是自研的特性,不在测试用例的范围内。
> 7d6cb94f148e9e9cce24d3ce5ccb65b49974b547 alinux: mm: Pin code section of
> process in memory
> https://gitcode.net/openanolis/cloud-kernel/-/commit/
> 7d6cb94f148e9e9cce24d3ce5ccb65b49974b547
> 测试了下是没有权限读写的,看描述应该不是个可读写的文件。

和内存的同学确认了下,del_pid没有实现.read回调,返回EIO是正常的。
Comment 8 Joseph Qi alibaba_cloud_group 2022-02-09 09:26:06 UTC
(In reply to hongnan_Li from comment #7)
> (In reply to hongnan_Li from comment #6)
> > 文件/proc/unevictable/del_pid来自于以下commit,是自研的特性,不在测试用例的范围内。
> > 7d6cb94f148e9e9cce24d3ce5ccb65b49974b547 alinux: mm: Pin code section of
> > process in memory
> > https://gitcode.net/openanolis/cloud-kernel/-/commit/
> > 7d6cb94f148e9e9cce24d3ce5ccb65b49974b547
> > 测试了下是没有权限读写的,看描述应该不是个可读写的文件。
> 
> 和内存的同学确认了下,del_pid没有实现.read回调,返回EIO是正常的。

感觉权限设置不对,add_pid 是可读可写,所以 0600 是 okay 的:
echo PID > /proc/unevictable/add_pid
cat /proc/unevictable/add_pid

但 del_pid 既然只允许写入,那么应该设置成 0400:
echo PID > /proc/unevictable/del_pid
Comment 9 kernel uniontech_group 2022-02-09 11:08:31 UTC
我在gitee上提交了一个补丁
78 anolis: mm: change del_pid permission to write only

但是一直没有人审核。

测试代码其实是对del_pid进行了权限判断的,但是内核代码里面对这个文件设置的是可读写的权限(实际上并没有实现写的方法),所以测试脚本才报FAIL,需要修改del_pid为只可写的权限,那么测试就可以通过了。
Comment 10 Joseph Qi alibaba_cloud_group 2022-02-09 11:12:07 UTC
(In reply to kernel from comment #9)
> 我在gitee上提交了一个补丁
> 78 anolis: mm: change del_pid permission to write only
> 
> 但是一直没有人审核。
> 
> 测试代码其实是对del_pid进行了权限判断的,但是内核代码里面对这个文件设置的是可读写的权限(实际上并没有实现写的方法),所以测试脚本才报FAIL,需要
> 修改del_pid为只可写的权限,那么测试就可以通过了。

估计被选定的审核同学遗漏了,我 review 下
Comment 11 Joseph Qi alibaba_cloud_group 2022-02-09 11:12:41 UTC
(In reply to josephqi from comment #8)
> (In reply to hongnan_Li from comment #7)
> > (In reply to hongnan_Li from comment #6)
> > > 文件/proc/unevictable/del_pid来自于以下commit,是自研的特性,不在测试用例的范围内。
> > > 7d6cb94f148e9e9cce24d3ce5ccb65b49974b547 alinux: mm: Pin code section of
> > > process in memory
> > > https://gitcode.net/openanolis/cloud-kernel/-/commit/
> > > 7d6cb94f148e9e9cce24d3ce5ccb65b49974b547
> > > 测试了下是没有权限读写的,看描述应该不是个可读写的文件。
> > 
> > 和内存的同学确认了下,del_pid没有实现.read回调,返回EIO是正常的。
> 
> 感觉权限设置不对,add_pid 是可读可写,所以 0600 是 okay 的:
> echo PID > /proc/unevictable/add_pid
> cat /proc/unevictable/add_pid
> 
> 但 del_pid 既然只允许写入,那么应该设置成 0400:
> echo PID > /proc/unevictable/del_pid

typo,应该是 0200