【缺陷描述】 文件/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.
@ylsong 请问这个 case 之前的nightly 是 pass 的吗? 什么时间开始失败的呢?
这个case一直是fail的,记录在社区作为测试基线依据
(In reply to 云霭 from comment #2) > 这个case一直是fail的,记录在社区作为测试基线依据 这个请 @
这个请 @josephqi 帮忙安排个同学看看吧.thanks!
(In reply to Shiloong from comment #4) > 这个请 @josephqi 帮忙安排个同学看看吧.thanks! @hongnan 帮忙看下
文件/proc/unevictable/del_pid来自于以下commit,是自研的特性,不在测试用例的范围内。 7d6cb94f148e9e9cce24d3ce5ccb65b49974b547 alinux: mm: Pin code section of process in memory https://gitcode.net/openanolis/cloud-kernel/-/commit/7d6cb94f148e9e9cce24d3ce5ccb65b49974b547 测试了下是没有权限读写的,看描述应该不是个可读写的文件。
(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是正常的。
(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
我在gitee上提交了一个补丁 78 anolis: mm: change del_pid permission to write only 但是一直没有人审核。 测试代码其实是对del_pid进行了权限判断的,但是内核代码里面对这个文件设置的是可读写的权限(实际上并没有实现写的方法),所以测试脚本才报FAIL,需要修改del_pid为只可写的权限,那么测试就可以通过了。
(In reply to kernel from comment #9) > 我在gitee上提交了一个补丁 > 78 anolis: mm: change del_pid permission to write only > > 但是一直没有人审核。 > > 测试代码其实是对del_pid进行了权限判断的,但是内核代码里面对这个文件设置的是可读写的权限(实际上并没有实现写的方法),所以测试脚本才报FAIL,需要 > 修改del_pid为只可写的权限,那么测试就可以通过了。 估计被选定的审核同学遗漏了,我 review 下
(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
https://gitee.com/anolis/cloud-kernel/pulls/151