From: Daniel Latypov <dlatypov(a)google.com>
kunit parses .config in the `build_reconfig()` of `run_tests()`.
Problematically, the current regex '^CONFIG_\w+=\S+$' does not allow for
spaces anywhere after the "=", even the option is a string.
So kunit will refuse to run if the existing .config has something like
CONFIG_CMDLINE="something and_something_else"
even if kunit.py will drop this entry when it regenerates the .config!
So relax the regex to allow entries that match `CONFIG_\w+=".*"` as a
minimal change. The question remains as to whether we should do any
validation of the string after the "=", however.
Signed-off-by: Daniel Latypov <dlatypov(a)google.com>
Signed-off-by: Brendan Higgins <brendanhiggins(a)google.com>
---
tools/testing/kunit/kunit_config.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/kunit/kunit_config.py b/tools/testing/kunit/kunit_config.py
index e75063d603b5..0733796b0e32 100644
--- a/tools/testing/kunit/kunit_config.py
+++ b/tools/testing/kunit/kunit_config.py
@@ -10,7 +10,7 @@ import collections
import re
CONFIG_IS_NOT_SET_PATTERN = r'^# CONFIG_(\w+) is not set$'
-CONFIG_PATTERN = r'^CONFIG_(\w+)=(\S+)$'
+CONFIG_PATTERN = r'^CONFIG_(\w+)=(".*"|\S+)$'
KconfigEntryBase = collections.namedtuple('KconfigEntry', ['name', 'value'])
base-commit: c0cc271173b2e1c2d8d0ceaef14e4dfa79eefc0d
--
2.26.0.110.g2183baf09c-goog
This series introduces a new KVM selftest (mem_slot_test) that goal
is to verify memory slots can be added up to the maximum allowed. An
extra slot is attempted which should occur on error.
The patch 01 is needed so that the VM fd can be accessed from the
test code (for the ioctl call attempting to add an extra slot).
I ran the test successfully on x86_64, aarch64, and s390x. This
is why it is enabled to build on those arches.
- Changelog -
v3 -> v4:
- Discarded mem_reg_flags variable. Simply using 0 instead [drjones]
- Discarded kvm_region pointer. Instead passing a compound literal in
the ioctl [drjones]
- All variables are declared on the declaration block [drjones]
v2 -> v3:
- Keep alphabetical order of .gitignore and Makefile [drjones]
- Use memory region flags equals to zero [drjones]
- Changed mmap() assert from 'mem != NULL' to 'mem != MAP_FAILED' [drjones]
- kvm_region is declared along side other variables and malloc()'ed
later [drjones]
- Combined two asserts into a single 'ret == -1 && errno == EINVAL'
[drjones]
v1 -> v2:
- Rebased to queue
- vm_get_fd() returns int instead of unsigned int (patch 01) [drjones]
- Removed MEM_REG_FLAGS and GUEST_VM_MODE defines [drjones]
- Replaced DEBUG() with pr_info() [drjones]
- Calculate number of guest pages with vm_calc_num_guest_pages()
[drjones]
- Using memory region of 1 MB sized (matches mininum needed
for s390x)
- Removed the increment of guest_addr after the loop [drjones]
- Added assert for the errno when adding a slot beyond-the-limit [drjones]
- Prefer KVM_MEM_READONLY flag but on s390x it switch to KVM_MEM_LOG_DIRTY_PAGES,
so ensure the coverage of both flags. Also somewhat tests the KVM_CAP_READONLY_MEM capability check [drjones]
- Moved the test logic to test_add_max_slots(), this allows to more easily add new cases in the "suite".
v1: https://lore.kernel.org/kvm/20200330204310.21736-1-wainersm@redhat.com
Wainer dos Santos Moschetta (2):
selftests: kvm: Add vm_get_fd() in kvm_util
selftests: kvm: Add mem_slot_test test
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 3 +
.../testing/selftests/kvm/include/kvm_util.h | 1 +
tools/testing/selftests/kvm/lib/kvm_util.c | 5 ++
tools/testing/selftests/kvm/mem_slot_test.c | 76 +++++++++++++++++++
5 files changed, 86 insertions(+)
create mode 100644 tools/testing/selftests/kvm/mem_slot_test.c
--
2.17.2
Avoid using /usr/bin/timeout unnecessarily if timeout is set to 0
(disabled) in the "settings" file for a specific test.
NOTE: without this change (and adding timeout=0 in the corresponding
settings file - tools/testing/selftests/seccomp/settings) the
seccomp_bpf selftest is always failing with a timeout event during the
syscall_restart step.
Signed-off-by: Andrea Righi <andrea.righi(a)canonical.com>
---
tools/testing/selftests/kselftest/runner.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/kselftest/runner.sh b/tools/testing/selftests/kselftest/runner.sh
index e84d901f8567..2cd3c8def0f6 100644
--- a/tools/testing/selftests/kselftest/runner.sh
+++ b/tools/testing/selftests/kselftest/runner.sh
@@ -32,7 +32,7 @@ tap_prefix()
tap_timeout()
{
# Make sure tests will time out if utility is available.
- if [ -x /usr/bin/timeout ] ; then
+ if [ -x /usr/bin/timeout ] && [ $kselftest_timeout -gt 0 ] ; then
/usr/bin/timeout "$kselftest_timeout" "$1"
else
"$1"
--
2.25.1
Fix several sphinx warnings at 'make htmldocs'
- privately declared members not correctly declared as such
- 'suits' actually is not a function parameter, change declaration to fix
warning but keep information in comment
Signed-off-by: Lothar Rubusch <l.rubusch(a)gmail.com>
---
include/kunit/test.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/kunit/test.h b/include/kunit/test.h
index 9b0c46a6ca1f..fe4ea388528b 100644
--- a/include/kunit/test.h
+++ b/include/kunit/test.h
@@ -175,7 +175,7 @@ struct kunit_suite {
void (*exit)(struct kunit *test);
struct kunit_case *test_cases;
- /* private - internal use only */
+ /* private: internal use only. */
struct dentry *debugfs;
char *log;
};
@@ -232,7 +232,7 @@ void __kunit_test_suites_exit(struct kunit_suite **suites);
* kunit_test_suites() - used to register one or more &struct kunit_suite
* with KUnit.
*
- * @suites: a statically allocated list of &struct kunit_suite.
+ * suites - a statically allocated list of &struct kunit_suite.
*
* Registers @suites with the test framework. See &struct kunit_suite for
* more information.
--
2.20.1
From: Tim Bird <tim.bird(a)sony.com>
It is useful for CI systems to be able to query the list
of targets provided by kselftest by default, so that they
can construct their own loop over the targets if desired.
Signed-off-by: Tim Bird <tim.bird(a)sony.com>
---
tools/testing/selftests/Makefile | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 63430e2..9955e71 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -246,4 +246,7 @@ clean:
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
done;
+show_targets:
+ @echo $(TARGETS)
+
.PHONY: khdr all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean
--
2.1.4
Hello,
I'm running kselftest on Ubuntu 16.04lts.
Details:
deepa@deepa-Inspiron-3576:/usr/src/linux-headers-4.15.0-88/Documentation$
uname -a
Linux deepa-Inspiron-3576 4.15.0-91-generic #92~16.04.1-Ubuntu SMP Fri
Feb 28 14:57:22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Command:
deepa@deepa-Inspiron-3576:/usr/src/linux-headers-4.15.0-91-generic$
make -C tools/testing/selftests
Error:
make: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/android'
Makefile:7: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/android'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/bpf'
Makefile:25: ../lib.mk: No such file or directory
/bin/sh: 1: llc: not found
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/bpf'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/breakpoints'
Makefile:15: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/breakpoints'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/capabilities'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/capabilities'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/cpufreq'
Makefile:7: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/cpufreq'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/cpu-hotplug'
Makefile:6: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/cpu-hotplug'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/efivarfs'
Makefile:6: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/efivarfs'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/exec'
Makefile:11: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/exec'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/filesystems'
Makefile:7: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/filesystems'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/firmware'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/firmware'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/ftrace'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/ftrace'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/futex'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/futex'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/gpio'
Makefile:13: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/gpio'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/intel_pstate'
Makefile:11: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/intel_pstate'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/ipc'
Makefile:17: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/ipc'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/kcmp'
Makefile:7: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/kcmp'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/lib'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/lib'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/membarrier'
Makefile:5: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/membarrier'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/memfd'
Makefile:13: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/memfd'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/memory-hotplug'
Makefile:4: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/memory-hotplug'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/mount'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/mount'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/mqueue'
Makefile:6: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/mqueue'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/net'
Makefile:14: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/net'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/netfilter'
Makefile:6: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/netfilter'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/nsfs'
Makefile:5: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/nsfs'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/powerpc'
Makefile:40: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/powerpc'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/pstore'
Makefile:11: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/pstore'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/ptrace'
Makefile:5: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/ptrace'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/seccomp'
Makefile:4: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/seccomp'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/sigaltstack'
Makefile:4: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/sigaltstack'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/size'
Makefile:5: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/size'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/splice'
Makefile:5: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/splice'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/static_keys'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/static_keys'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/sync'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/sync'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/sysctl'
Makefile:9: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/sysctl'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/timers'
Makefile:17: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/timers'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/user'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/user'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/vm'
Makefile:28: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/vm'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/x86'
Makefile:4: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/x86'
make[1]: Entering directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/zram'
Makefile:8: ../lib.mk: No such file or directory
make[1]: *** No rule to make target '../lib.mk'. Stop.
make[1]: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests/zram'
Makefile:73: recipe for target 'all' failed
make: *** [all] Error 2
make: Leaving directory
'/usr/src/linux-headers-4.15.0-91/tools/testing/selftests'
Can you please help us fix?
Is there an archive available for linux-kselftest? We could check it
once before posting it to this group.Just to avoid duplicates.
Thanks,
Deepa
On Tue, 7 Apr 2020 at 22:09, Greg Kroah-Hartman
<gregkh(a)linuxfoundation.org> wrote:
>
> This is the start of the stable review cycle for the 5.6.3 release.
> There are 30 patches in this series, all will be posted as a response
> to this one. If anyone has any issues with these being applied, please
> let me know.
>
> Responses should be made by Thu, 09 Apr 2020 15:46:32 +0000.
> Anything received after that time might be too late.
>
> The whole patch series can be found in one patch at:
> https://www.kernel.org/pub/linux/kernel/v5.x/stable-review/patch-5.6.3-rc2.…
> or in the git tree and branch at:
> git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.6.y
> and the diffstat can be found below.
>
> thanks,
>
> greg k-h
Results from Linaro’s test farm.
No regressions on arm64, arm, x86_64, and i386.
There are three kernel warnings on stable-rc 5.6 two of them are also
present in Linus's tree.
So these reported issues are not the release blockers.
The Source of these warnings are reported while running kselftests.
1) This warning reported on the mailing list and discussion is active.
Warning reported on x86_64, i386, arm and arm64.
[ 346.741358] kselftest: Running tests in lib
[ 346.872415] test_printf: loaded.
[ 346.876442] BUG: kernel NULL pointer dereference, address: 00000000
[ 346.882703] #PF: supervisor read access in kernel mode
[ 346.887844] #PF: error_code(0x0000) - not-present page
[ 346.892990] *pde = 00000000
[ 346.895877] Oops: 0000 [#1] SMP
[ 346.899025] CPU: 1 PID: 6060 Comm: modprobe Tainted: G W
5.6.3-rc2 #1
[ 346.906772] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
2.0b 07/27/2017
[ 346.914261] EIP: ida_free+0x61/0x130
ref:
https://lore.kernel.org/linux-kselftest/CAFd5g46Bwd8HS9-xjHLh_rB59Nfw8iAnM6…
2) This warning is reported on the mailing list and waiting for response,
warning reported on i386 kernel image running x86_64 device.
[ 166.488084] ------------[ cut here ]------------
[ 166.492749] WARNING: CPU: 2 PID: 1456 at
/usr/src/kernel/kernel/locking/lockdep.c:1119
lockdep_register_key+0xb0/0xf0
[ 166.503357] Modules linked in: algif_hash af_alg
x86_pkg_temp_thermal fuse [last unloaded: test_bpf]
[ 166.512481] CPU: 2 PID: 1456 Comm: ip Not tainted 5.6.3-rc2 #1
[ 166.518306] Hardware name: Supermicro SYS-5019S-ML/X11SSH-F, BIOS
2.0b 07/27/2017
[ 166.525776] EIP: lockdep_register_key+0xb0/0xf0
ref:
https://lore.kernel.org/netdev/CA+G9fYt7-R-_fVDeiwj=sVvBQ-456Pm1oFFtM5Hm_94…
3) This warning is only noticed on stable rc 5.6 and 5.5 seen only on arm64.
This needs to be investigated.
[ 386.349099] kselftest: Running tests in ftrace
[ 393.984018]
[ 393.984290] =============================
[ 393.984781] WARNING: suspicious RCU usage
[ 393.988690] 5.6.3-rc2 #1 Not tainted
[ 393.992679] -----------------------------
[ 393.996327] /usr/src/kernel/include/trace/events/ipi.h:36
suspicious rcu_dereference_check() usage!
[ 394.000241]
[ 394.000241] other info that might help us debug this:
[ 394.000241]
[ 394.009094]
[ 394.009094] RCU used illegally from idle CPU!
[ 394.009094] rcu_scheduler_active = 2, debug_locks = 1
[ 394.017084] RCU used illegally from extended quiescent state!
[ 394.028187] 1 lock held by swapper/3/0:
[ 394.033826] #0: ffff80001237b6a8 (max_trace_lock){....}, at:
check_critical_timing+0x7c/0x1a8
ref:
https://lore.kernel.org/linux-kselftest/CA+G9fYtYRc_mKPDN-Gryw7fhjPNGBUP=Ke…
Summary
------------------------------------------------------------------------
kernel: 5.6.3-rc2
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git
git branch: linux-5.6.y
git commit: f106acd0db7c11e0208a2ecbeb0f7c52fc6c455a
git describe: v5.6.2-31-gf106acd0db7c
Test details: https://qa-reports.linaro.org/lkft/linux-stable-rc-5.6-oe/build/v5.6.2-31-g…
No regressions (compared to build v5.6.2)
No fixes (compared to build v5.6.2)
Ran 22476 total tests in the following environments and test suites.
Environments
--------------
- dragonboard-410c
- hi6220-hikey
- i386
- juno-r2
- nxp-ls2088
- qemu_arm
- qemu_arm64
- qemu_i386
- qemu_x86_64
- x15
- x86
- x86-kasan
Test Suites
-----------
* build
* install-android-platform-tools-r2600
* install-android-platform-tools-r2800
* kselftest
* kvm-unit-tests
* libgpiod
* libhugetlbfs
* linux-log-parser
* ltp-cap_bounds-tests
* ltp-commands-tests
* ltp-cpuhotplug-tests
* ltp-crypto-tests
* ltp-cve-tests
* ltp-dio-tests
* ltp-fcntl-locktests-tests
* ltp-filecaps-tests
* ltp-fs-tests
* ltp-fs_bind-tests
* ltp-fs_perms_simple-tests
* ltp-fsx-tests
* ltp-hugetlb-tests
* ltp-io-tests
* ltp-ipc-tests
* ltp-math-tests
* ltp-nptl-tests
* ltp-pty-tests
* ltp-sched-tests
* ltp-securebits-tests
* perf
* v4l2-compliance
* ltp-containers-tests
* ltp-mm-tests
* ltp-open-posix-tests
* ltp-syscalls-tests
* network-basic-tests
* spectre-meltdown-checker-test
--
Linaro LKFT
https://lkft.linaro.org
This series introduces a new KVM selftest (mem_slot_test) that goal
is to verify memory slots can be added up to the maximum allowed. An
extra slot is attempted which should occur on error.
The patch 01 is needed so that the VM fd can be accessed from the
test code (for the ioctl call attempting to add an extra slot).
I ran the test successfully on x86_64, aarch64, and s390x. This
is why it is enabled to build on those arches.
- Changelog -
v2 -> v3:
- Keep alphabetical order of .gitignore and Makefile [drjones]
- Use memory region flags equals to zero [drjones]
- Changed mmap() assert from 'mem != NULL' to 'mem != MAP_FAILED' [drjones]
- kvm_region is declared along side other variables and malloc()'ed
later [drjones]
- Combined two asserts into a single 'ret == -1 && errno == EINVAL'
[drjones]
v1 -> v2:
- Rebased to queue
- vm_get_fd() returns int instead of unsigned int (patch 01) [drjones]
- Removed MEM_REG_FLAGS and GUEST_VM_MODE defines [drjones]
- Replaced DEBUG() with pr_info() [drjones]
- Calculate number of guest pages with vm_calc_num_guest_pages()
[drjones]
- Using memory region of 1 MB sized (matches mininum needed
for s390x)
- Removed the increment of guest_addr after the loop [drjones]
- Added assert for the errno when adding a slot beyond-the-limit [drjones]
- Prefer KVM_MEM_READONLY flag but on s390x it switch to KVM_MEM_LOG_DIRTY_PAGES,
so ensure the coverage of both flags. Also somewhat tests the KVM_CAP_READONLY_MEM capability check [drjones]
- Moved the test logic to test_add_max_slots(), this allows to more easily add new cases in the "suite".
v1: https://lore.kernel.org/kvm/20200330204310.21736-1-wainersm@redhat.com
Wainer dos Santos Moschetta (2):
selftests: kvm: Add vm_get_fd() in kvm_util
selftests: kvm: Add mem_slot_test test
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 3 +
.../testing/selftests/kvm/include/kvm_util.h | 1 +
tools/testing/selftests/kvm/lib/kvm_util.c | 5 ++
tools/testing/selftests/kvm/mem_slot_test.c | 85 +++++++++++++++++++
5 files changed, 95 insertions(+)
create mode 100644 tools/testing/selftests/kvm/mem_slot_test.c
--
2.17.2
This series introduces a new KVM selftest (mem_slot_test) that goal
is to verify memory slots can be added up to the maximum allowed. An
extra slot is attempted which should occur on error.
The patch 01 is needed so that the VM fd can be accessed from the
test code (for the ioctl call attempting to add an extra slot).
I ran the test successfully on x86_64, aarch64, and s390x. This
is why it is enabled to build on those arches.
v1: https://lore.kernel.org/kvm/20200330204310.21736-1-wainersm@redhat.com
Changes v1 -> v2:
- Rebased to queue
- vm_get_fd() returns int instead of unsigned int (patch 01) [drjones]
- Removed MEM_REG_FLAGS and GUEST_VM_MODE defines [drjones]
- Replaced DEBUG() with pr_info() [drjones]
- Calculate number of guest pages with vm_calc_num_guest_pages()
[drjones]
- Using memory region of 1 MB sized (matches mininum needed
for s390x)
- Removed the increment of guest_addr after the loop [drjones]
- Added assert for the errno when adding a slot beyond-the-limit [drjones]
- Prefer KVM_MEM_READONLY flag but on s390x it switch to KVM_MEM_LOG_DIRTY_PAGES,
so ensure the coverage of both flags. Also somewhat tests the KVM_CAP_READONLY_MEM capability check [drjones]
- Moved the test logic to test_add_max_slots(), this allows to more easily add new cases in the "suite".
Wainer dos Santos Moschetta (2):
selftests: kvm: Add vm_get_fd() in kvm_util
selftests: kvm: Add mem_slot_test test
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 3 +
.../testing/selftests/kvm/include/kvm_util.h | 1 +
tools/testing/selftests/kvm/lib/kvm_util.c | 5 ++
tools/testing/selftests/kvm/mem_slot_test.c | 85 +++++++++++++++++++
5 files changed, 95 insertions(+)
create mode 100644 tools/testing/selftests/kvm/mem_slot_test.c
--
2.17.2
From: Alan Maguire <alan.maguire(a)oracle.com>
[ Upstream commit 83a9b6f639e9f6b632337f9776de17d51d969c77 ]
Many systems build/test up-to-date kernels with older libcs, and
an older glibc (2.17) lacks the definition of SOL_DCCP in
/usr/include/bits/socket.h (it was added in the 4.6 timeframe).
Adding the definition to the test program avoids a compilation
failure that gets in the way of building tools/testing/selftests/net.
The test itself will work once the definition is added; either
skipping due to DCCP not being configured in the kernel under test
or passing, so there are no other more up-to-date glibc dependencies
here it seems beyond that missing definition.
Fixes: 11fb60d1089f ("selftests: net: reuseport_addr_any: add DCCP")
Signed-off-by: Alan Maguire <alan.maguire(a)oracle.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
---
tools/testing/selftests/net/reuseport_addr_any.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/net/reuseport_addr_any.c b/tools/testing/selftests/net/reuseport_addr_any.c
index c6233935fed14..b8475cb29be7a 100644
--- a/tools/testing/selftests/net/reuseport_addr_any.c
+++ b/tools/testing/selftests/net/reuseport_addr_any.c
@@ -21,6 +21,10 @@
#include <sys/socket.h>
#include <unistd.h>
+#ifndef SOL_DCCP
+#define SOL_DCCP 269
+#endif
+
static const char *IP4_ADDR = "127.0.0.1";
static const char *IP6_ADDR = "::1";
static const char *IP4_MAPPED6 = "::ffff:127.0.0.1";
--
2.20.1
From: Alan Maguire <alan.maguire(a)oracle.com>
[ Upstream commit 83a9b6f639e9f6b632337f9776de17d51d969c77 ]
Many systems build/test up-to-date kernels with older libcs, and
an older glibc (2.17) lacks the definition of SOL_DCCP in
/usr/include/bits/socket.h (it was added in the 4.6 timeframe).
Adding the definition to the test program avoids a compilation
failure that gets in the way of building tools/testing/selftests/net.
The test itself will work once the definition is added; either
skipping due to DCCP not being configured in the kernel under test
or passing, so there are no other more up-to-date glibc dependencies
here it seems beyond that missing definition.
Fixes: 11fb60d1089f ("selftests: net: reuseport_addr_any: add DCCP")
Signed-off-by: Alan Maguire <alan.maguire(a)oracle.com>
Signed-off-by: David S. Miller <davem(a)davemloft.net>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
---
tools/testing/selftests/net/reuseport_addr_any.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/net/reuseport_addr_any.c b/tools/testing/selftests/net/reuseport_addr_any.c
index c6233935fed14..b8475cb29be7a 100644
--- a/tools/testing/selftests/net/reuseport_addr_any.c
+++ b/tools/testing/selftests/net/reuseport_addr_any.c
@@ -21,6 +21,10 @@
#include <sys/socket.h>
#include <unistd.h>
+#ifndef SOL_DCCP
+#define SOL_DCCP 269
+#endif
+
static const char *IP4_ADDR = "127.0.0.1";
static const char *IP6_ADDR = "::1";
static const char *IP4_MAPPED6 = "::ffff:127.0.0.1";
--
2.20.1
This patchset contains everything needed to integrate KASAN and KUnit.
KUnit will be able to:
(1) Fail tests when an unexpected KASAN error occurs
(2) Pass tests when an expected KASAN error occurs
Convert KASAN tests to KUnit with the exception of copy_user_test
because KUnit is unable to test those.
Add documentation on how to run the KASAN tests with KUnit and what to
expect when running these tests.
Depends on "[PATCH v3 kunit-next 0/2] kunit: extend kunit resources
API" patchset [1]
[1] https://lore.kernel.org/linux-kselftest/1585313122-26441-1-git-send-email-a…
Changes from v3:
- KUNIT_SET_KASAN_DATA and KUNIT_DO_EXPECT_KASAN_FAIL have been
combined and included in KUNIT_DO_EXPECT_KASAN_FAIL() instead.
- Reordered logic in kasan_update_kunit_status() in report.c to be
easier to read.
- Added comment to not use the name "kasan_data" for any kunit tests
outside of KUNIT_EXPECT_KASAN_FAIL().
Patricia Alfonso (4):
Add KUnit Struct to Current Task
KUnit: KASAN Integration
KASAN: Port KASAN Tests to KUnit
KASAN: Testing Documentation
Documentation/dev-tools/kasan.rst | 70 +++
include/kunit/test.h | 5 +
include/linux/kasan.h | 6 +
include/linux/sched.h | 4 +
lib/Kconfig.kasan | 15 +-
lib/Makefile | 3 +-
lib/kunit/test.c | 13 +-
lib/test_kasan.c | 680 +++++++++++++-----------------
lib/test_kasan_module.c | 76 ++++
mm/kasan/report.c | 30 ++
10 files changed, 511 insertions(+), 391 deletions(-)
create mode 100644 lib/test_kasan_module.c
--
2.26.0.292.g33ef6b2f38-goog
The following 4 tests in timers can take longer than the default 45
seconds that added in commit 852c8cbf (selftests/kselftest/runner.sh:
Add 45 second timeout per test) to run:
* nsleep-lat - 2m7.350s
* set-timer-lat - 2m0.66s
* inconsistency-check - 1m45.074s
* raw_skew - 2m0.013s
Thus they will be marked as failed with the current 45s setting:
not ok 3 selftests: timers: nsleep-lat # TIMEOUT
not ok 4 selftests: timers: set-timer-lat # TIMEOUT
not ok 6 selftests: timers: inconsistency-check # TIMEOUT
not ok 7 selftests: timers: raw_skew # TIMEOUT
Disable the timeout setting for timers can make these tests finish
properly:
ok 3 selftests: timers: nsleep-lat
ok 4 selftests: timers: set-timer-lat
ok 6 selftests: timers: inconsistency-check
ok 7 selftests: timers: raw_skew
https://bugs.launchpad.net/bugs/1864626
Signed-off-by: Po-Hsu Lin <po-hsu.lin(a)canonical.com>
---
tools/testing/selftests/timers/Makefile | 1 +
tools/testing/selftests/timers/settings | 1 +
2 files changed, 2 insertions(+)
create mode 100644 tools/testing/selftests/timers/settings
diff --git a/tools/testing/selftests/timers/Makefile b/tools/testing/selftests/timers/Makefile
index 7656c7c..0e73a16 100644
--- a/tools/testing/selftests/timers/Makefile
+++ b/tools/testing/selftests/timers/Makefile
@@ -13,6 +13,7 @@ DESTRUCTIVE_TESTS = alarmtimer-suspend valid-adjtimex adjtick change_skew \
TEST_GEN_PROGS_EXTENDED = $(DESTRUCTIVE_TESTS)
+TEST_FILES := settings
include ../lib.mk
diff --git a/tools/testing/selftests/timers/settings b/tools/testing/selftests/timers/settings
new file mode 100644
index 0000000..e7b9417
--- /dev/null
+++ b/tools/testing/selftests/timers/settings
@@ -0,0 +1 @@
+timeout=0
--
2.7.4
Summary
------------------------------------------------------------------------
kernel: 5.6.0
git repo: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git branch: master
git commit: b2e2a818a01717ba15c74fd355f76822b81a95f6
git describe: next-20200406
Test details: https://qa-reports.linaro.org/lkft/linux-next-oe/build/next-20200406
Regressions (compared to build next-20200405)
------------------------------------------------------------------------
No regressions
Fixes (compared to build next-20200405)
------------------------------------------------------------------------
No fixes
In total:
------------------------------------------------------------------------
Ran 0 total tests in the following environments and test suites.
pass 0
fail 0
xfail 0
skip 0
Environments
--------------
- x15 - arm
Test Suites
-----------
Failures
------------------------------------------------------------------------
x15:
Skips
------------------------------------------------------------------------
No skips
--
Linaro LKFT
https://lkft.linaro.org
A lot of ftrace testcases get failure if ftrace_enabled is disabled by default
because ftrace_enabled is a big on/off switch for the whole function tracer.
Signed-off-by: Xiao Yang <yangx.jy(a)cn.fujitsu.com>
---
tools/testing/selftests/ftrace/test.d/functions | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions
index 5d4550591ff9..54c18275bd7f 100644
--- a/tools/testing/selftests/ftrace/test.d/functions
+++ b/tools/testing/selftests/ftrace/test.d/functions
@@ -1,3 +1,6 @@
+enable_ftrace() { # enable function tracer
+ echo 1 > /proc/sys/kernel/ftrace_enabled
+}
clear_trace() { # reset trace output
echo > trace
@@ -88,6 +91,7 @@ initialize_ftrace() { # Reset ftrace to initial-state
# As the initial state, ftrace will be set to nop tracer,
# no events, no triggers, no filters, no function filters,
# no probes, and tracing on.
+ enable_ftrace
disable_tracing
reset_tracer
reset_trigger
--
2.23.0
This patchset contains everything needed to integrate KASAN and KUnit.
KUnit will be able to:
(1) Fail tests when an unexpected KASAN error occurs
(2) Pass tests when an expected KASAN error occurs
Convert KASAN tests to KUnit with the exception of copy_user_test
because KUnit is unable to test those.
Add documentation on how to run the KASAN tests with KUnit and what to
expect when running these tests.
Depends on [1].
Changes since v2:
- Due to Alan's changes in [1], KUnit can be built as a module.
- The name of the tests that could not be run with KUnit has been
changed to be more generic: test_kasan_module.
- Documentation on how to run the new KASAN tests and what to expect
when running them has been added.
- Some variables and functions are now static.
- Now save/restore panic_on_warn in a similar way to kasan_multi_shot
and renamed the init/exit functions to be more generic to accommodate.
- Due to [2] in kasan_strings, kasan_memchr, and
kasan_memcmp will fail if CONFIG_AMD_MEM_ENCRYPT is enabled so return
early and print message explaining this circumstance.
- Changed preprocessor checks to C checks where applicable.
[1] https://lore.kernel.org/linux-kselftest/1585313122-26441-1-git-send-email-a…
[2] https://bugzilla.kernel.org/show_bug.cgi?id=206337
Patricia Alfonso (4):
Add KUnit Struct to Current Task
KUnit: KASAN Integration
KASAN: Port KASAN Tests to KUnit
KASAN: Testing Documentation
Documentation/dev-tools/kasan.rst | 70 +++
include/kunit/test.h | 5 +
include/linux/kasan.h | 6 +
include/linux/sched.h | 4 +
lib/Kconfig.kasan | 15 +-
lib/Makefile | 3 +-
lib/kunit/test.c | 13 +-
lib/test_kasan.c | 686 +++++++++++++-----------------
lib/test_kasan_module.c | 76 ++++
mm/kasan/report.c | 33 ++
10 files changed, 521 insertions(+), 390 deletions(-)
create mode 100644 lib/test_kasan_module.c
--
2.26.0.rc2.310.g2932bb562d-goog
From: Colin Ian King <colin.king(a)canonical.com>
Currently pointer 'suite' is dereferenced when variable success
is being initialized before the pointer is null checked. Fix this
by only dereferencing suite after is has been null checked.
Addresses-Coverity: ("Dereference before null check")
Fixes: e2219db280e3 ("kunit: add debugfs /sys/kernel/debug/kunit/<suite>/results display")
Signed-off-by: Colin Ian King <colin.king(a)canonical.com>
---
lib/kunit/debugfs.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/kunit/debugfs.c b/lib/kunit/debugfs.c
index 9214c493d8b7..05547642f37c 100644
--- a/lib/kunit/debugfs.c
+++ b/lib/kunit/debugfs.c
@@ -52,12 +52,13 @@ static void debugfs_print_result(struct seq_file *seq,
static int debugfs_print_results(struct seq_file *seq, void *v)
{
struct kunit_suite *suite = (struct kunit_suite *)seq->private;
- bool success = kunit_suite_has_succeeded(suite);
+ bool success;
struct kunit_case *test_case;
if (!suite || !suite->log)
return 0;
+ success = kunit_suite_has_succeeded(suite);
seq_printf(seq, "%s", suite->log);
kunit_suite_for_each_test_case(suite, test_case)
--
2.25.1
This series introduces a new KVM selftest (mem_slot_test) that goal
is to verify memory slots can be added up to the maximum allowed. An
extra slot is attempted which should occur on error.
The patch 01 is needed so that the VM fd can be accessed from the
test code (for the ioctl call attempting to add an extra slot).
I ran the test successfully on x86_64, aarch64, and s390x. This
is why it is enabled to build on those arches.
Finally, I hope it is useful test!
Wainer dos Santos Moschetta (2):
selftests: kvm: Add vm_get_fd() in kvm_util
selftests: kvm: Add mem_slot_test test
tools/testing/selftests/kvm/.gitignore | 1 +
tools/testing/selftests/kvm/Makefile | 3 +
.../testing/selftests/kvm/include/kvm_util.h | 1 +
tools/testing/selftests/kvm/lib/kvm_util.c | 5 +
tools/testing/selftests/kvm/mem_slot_test.c | 92 +++++++++++++++++++
5 files changed, 102 insertions(+)
create mode 100644 tools/testing/selftests/kvm/mem_slot_test.c
--
2.17.2
Hi Linus,
Please pull the following Kselftest Kunit update for Linux 5.7-rc1.
This kunit update for Linux-5.7-rc1 consists of:
- debugfs support for displaying kunit test suite results; this is
especially useful for module-loaded tests to allow disentangling of
test result display from other dmesg events. CONFIG_KUNIT_DEBUGFS
enables/disables the debugfs support.
- Several fixes and improvements to kunit framework and tool.
diff is attached.
thanks,
-- Shuah
----------------------------------------------------------------
The following changes since commit 2c523b344dfa65a3738e7039832044aa133c75fb:
Linux 5.6-rc5 (2020-03-08 17:44:44 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
tags/linux-kselftest-kunit-5.7-rc1
for you to fetch changes up to e23349af9ee25a5760112a2f8476b94a4ec86f1c:
kunit: tool: add missing test data file content (2020-03-26 14:11:12
-0600)
----------------------------------------------------------------
linux-kselftest-kunit-5.7-rc1
This kunit update for Linux-5.7-rc1 consists of:
- debugfs support for displaying kunit test suite results; this is
especially useful for module-loaded tests to allow disentangling of
test result display from other dmesg events. CONFIG_KUNIT_DEBUGFS
enables/disables the debugfs support.
- Several fixes and improvements to kunit framework and tool.
----------------------------------------------------------------
Alan Maguire (4):
kunit: add debugfs /sys/kernel/debug/kunit/<suite>/results display
kunit: add log test
kunit: subtests should be indented 4 spaces according to TAP
kunit: update documentation to describe debugfs representation
Brendan Higgins (1):
kunit: tool: add missing test data file content
David Gow (4):
kunit: Always print actual pointer values in asserts
kunit: kunit_tool: Allow .kunitconfig to disable config items
Fix linked-list KUnit test when run multiple times
Documentation: kunit: Make the KUnit documentation less UML-specific
Greg Thelen (1):
kunit: add --make_options
Heidi Fahim (2):
kunit: kunit_parser: make parser more robust
kunit: Run all KUnit tests through allyesconfig
Documentation/dev-tools/kunit/index.rst | 40 +++---
Documentation/dev-tools/kunit/kunit-tool.rst | 7 +
Documentation/dev-tools/kunit/start.rst | 80 +++++++++--
Documentation/dev-tools/kunit/usage.rst | 14 ++
include/kunit/test.h | 63 +++++++--
lib/kunit/Kconfig | 8 ++
lib/kunit/Makefile | 4 +
lib/kunit/assert.c | 79 +++++------
lib/kunit/debugfs.c | 116 ++++++++++++++++
lib/kunit/debugfs.h | 30 +++++
lib/kunit/kunit-test.c | 44 +++++-
lib/kunit/test.c | 148
++++++++++++++++-----
lib/list-test.c | 4 +-
tools/testing/kunit/.gitattributes | 1 +
tools/testing/kunit/configs/broken_on_uml.config | 41 ++++++
tools/testing/kunit/kunit.py | 38 ++++--
tools/testing/kunit/kunit_config.py | 41 ++++--
tools/testing/kunit/kunit_kernel.py | 84 ++++++++----
tools/testing/kunit/kunit_parser.py | 51 +++----
tools/testing/kunit/kunit_tool_test.py | 108 ++++++++++++---
.../kunit/test_data/test_config_printk_time.log | Bin 0 -> 1584 bytes
.../test_data/test_interrupted_tap_output.log | Bin 0 -> 1982 bytes
.../test_data/test_kernel_panic_interrupt.log | Bin 0 -> 1321 bytes
.../kunit/test_data/test_multiple_prefixes.log | Bin 0 -> 1832 bytes
.../test_output_with_prefix_isolated_correctly.log | Bin 0 -> 1655 bytes
.../kunit/test_data/test_pound_no_prefix.log | Bin 0 -> 1193 bytes
tools/testing/kunit/test_data/test_pound_sign.log | Bin 0 -> 1656 bytes
27 files changed, 799 insertions(+), 202 deletions(-)
create mode 100644 lib/kunit/debugfs.c
create mode 100644 lib/kunit/debugfs.h
create mode 100644 tools/testing/kunit/.gitattributes
create mode 100644 tools/testing/kunit/configs/broken_on_uml.config
create mode 100644
tools/testing/kunit/test_data/test_config_printk_time.log
create mode 100644
tools/testing/kunit/test_data/test_interrupted_tap_output.log
create mode 100644
tools/testing/kunit/test_data/test_kernel_panic_interrupt.log
create mode 100644
tools/testing/kunit/test_data/test_multiple_prefixes.log
create mode 100644
tools/testing/kunit/test_data/test_output_with_prefix_isolated_correctly.log
create mode 100644 tools/testing/kunit/test_data/test_pound_no_prefix.log
create mode 100644 tools/testing/kunit/test_data/test_pound_sign.log
----------------------------------------------------------------
Hi Linus,
Please pull the following Kselftest update for Linux 5.7-rc1.
This kselftest update Linux 5.7-rc1 consists of:
- resctrl_tests for resctrl file system. resctrl isn't included in the
default TARGETS list in kselftest Makefile. It can be run manually.
- Kselftest harness improvements.
- Kselftest framework and individual test fixes to support runs on
Kernel CI rings and other environments that use relocatable build
and install features.
- Minor cleanups and typo fixes.
diff is attached.
thanks,
-- Shuah
----------------------------------------------------------------
The following changes since commit bb6d3fb354c5ee8d6bde2d576eb7220ea09862b9:
Linux 5.6-rc1 (2020-02-09 16:08:48 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
tags/linux-kselftest-5.7-rc1
for you to fetch changes up to 1056d3d2c97e47397d0037cbbdf24235ae8f88cb:
selftests: enforce local header dependency in lib.mk (2020-03-26
15:29:55 -0600)
----------------------------------------------------------------
linux-kselftest-5.7-rc1
This kselftest update Linux 5.7-rc1 consists of:
- resctrl_tests for resctrl file system. resctrl isn't included in the
default TARGETS list in kselftest Makefile. It can be run manually.
- Kselftest harness improvements.
- Kselftest framework and individual test fixes to support runs on
Kernel CI rings and other environments that use relocatable build
and install features.
- Minor cleanups and typo fixes.
----------------------------------------------------------------
Babu Moger (3):
selftests/resctrl: Add vendor detection mechanism
selftests/resctrl: Use cache index3 id for AMD schemata masks
selftests/resctrl: Disable MBA and MBM tests for AMD
Colin Ian King (1):
selftests/resctrl: fix spelling mistake "Errror" -> "Error"
Fenghua Yu (6):
selftests/resctrl: Add README for resctrl tests
selftests/resctrl: Add MBM test
selftests/resctrl: Add MBA test
selftests/resctrl: Add Cache QoS Monitoring (CQM) selftest
selftests/resctrl: Add Cache Allocation Technology (CAT) selftest
selftests/resctrl: Add the test in MAINTAINERS
Kees Cook (3):
selftests/seccomp: Adjust test fixture counts
selftests/harness: Move test child waiting logic
selftests/harness: Handle timeouts cleanly
Masanari Iida (1):
selftests/ftrace: Fix typo in trigger-multihist.tc
Sai Praneeth Prakhya (4):
selftests/resctrl: Add basic resctrl file system operations and data
selftests/resctrl: Read memory bandwidth from perf IMC counter
and from resctrl file system
selftests/resctrl: Add callback to start a benchmark
selftests/resctrl: Add built in benchmark
Shuah Khan (6):
selftests: Fix kselftest O=objdir build from cluttering top level
objdir
selftests: android: ion: Fix ionmap_test compile error
selftests: android: Fix custom install from skipping test progs
selftests: Fix seccomp to support relocatable build (O=objdir)
selftests: Fix memfd to support relocatable build (O=objdir)
selftests: enforce local header dependency in lib.mk
YueHaibing (1):
selftests/timens: Remove duplicated include <time.h>
MAINTAINERS | 1 +
tools/testing/selftests/Makefile | 4 +-
tools/testing/selftests/android/Makefile | 2 +-
tools/testing/selftests/android/ion/Makefile | 2 +-
.../ftrace/test.d/trigger/trigger-multihist.tc | 2 +-
tools/testing/selftests/kselftest_harness.h | 144 ++--
tools/testing/selftests/lib.mk | 3 +-
tools/testing/selftests/memfd/Makefile | 9 +-
tools/testing/selftests/resctrl/Makefile | 17 +
tools/testing/selftests/resctrl/README | 53 ++
tools/testing/selftests/resctrl/cache.c | 272 ++++++++
tools/testing/selftests/resctrl/cat_test.c | 250 +++++++
tools/testing/selftests/resctrl/cqm_test.c | 176 +++++
tools/testing/selftests/resctrl/fill_buf.c | 213 ++++++
tools/testing/selftests/resctrl/mba_test.c | 171 +++++
tools/testing/selftests/resctrl/mbm_test.c | 145 ++++
tools/testing/selftests/resctrl/resctrl.h | 107 +++
tools/testing/selftests/resctrl/resctrl_tests.c | 202 ++++++
tools/testing/selftests/resctrl/resctrl_val.c | 744
+++++++++++++++++++++
tools/testing/selftests/resctrl/resctrlfs.c | 722
++++++++++++++++++++
tools/testing/selftests/seccomp/Makefile | 17 +-
tools/testing/selftests/seccomp/seccomp_bpf.c | 10 +-
tools/testing/selftests/timens/exec.c | 1 -
tools/testing/selftests/timens/procfs.c | 1 -
tools/testing/selftests/timens/timens.c | 1 -
tools/testing/selftests/timens/timer.c | 1 -
26 files changed, 3191 insertions(+), 79 deletions(-)
create mode 100644 tools/testing/selftests/resctrl/Makefile
create mode 100644 tools/testing/selftests/resctrl/README
create mode 100644 tools/testing/selftests/resctrl/cache.c
create mode 100644 tools/testing/selftests/resctrl/cat_test.c
create mode 100644 tools/testing/selftests/resctrl/cqm_test.c
create mode 100644 tools/testing/selftests/resctrl/fill_buf.c
create mode 100644 tools/testing/selftests/resctrl/mba_test.c
create mode 100644 tools/testing/selftests/resctrl/mbm_test.c
create mode 100644 tools/testing/selftests/resctrl/resctrl.h
create mode 100644 tools/testing/selftests/resctrl/resctrl_tests.c
create mode 100644 tools/testing/selftests/resctrl/resctrl_val.c
create mode 100644 tools/testing/selftests/resctrl/resctrlfs.c
----------------------------------------------------------------
On Mon, Mar 30, 2020 at 5:19 PM Liu Yiding <liuyd.fnst(a)cn.fujitsu.com> wrote:
>
>
> On 3/30/20 2:09 PM, Andrii Nakryiko wrote:
> > On 3/29/20 5:48 PM, Liu Yiding wrote:
> >> Add attachment.
> >>
> >
> > Your BTF seems to be invalid. It has struct perf_ibs, which has a
> > first field `struct pmu pmu` field with valid-looking size of 296
> > bytes, **but** the type that field points to is not a complete `struct
> > pmu` definition, but rather just forward declaration. The way it is it
> > shouldn't be even compilable, because forward declaration of a struct
> > doesn't specify the size of a struct, so compiler should have rejected
> > it. So it must be that either DWARF generated by compiler isn't
> > correct, or there is DWARF -> BTF conversion bug somewhere. Are you
> > using any special DWARF Kconfig settings? Maybe you can share your
> > full .config and I might try to repro it on my machine.
> >
>
> >> Are you using any special DWARF Kconfig settings?
>
> Sorry, i'm a newbie at this. I don't know which settings are related to
> DWARF.
>
> Just search keywords.
>
> ```
>
> liuyd@localhost:~$ cat config-5.6.0-rc5 | grep DWARF
> # CONFIG_DEBUG_INFO_DWARF4 is not set
>
> ```
>
> I built attached config on a clear ubuntu machine. Error could be
> reproduced. So you are right, there is a conflict between kconfigs.
>
>
> >> Maybe you can share your full .config and I might try to repro it on
> my machine.
>
> Thanks a lot. I attached the broken config.
Thanks a lot! I think it's due to DEBUG_INFO_REDUCED which produces
not entirely correct DWARF. I'm asking Slava to disable this config
when BTF is requested in [0].
[0] https://lore.kernel.org/bpf/CAEf4BzadnfAwfa1D0jZb=01Ou783GpK_U7PAYeEJca-L9k…
>
>
> > But either way, that warning you get is a valid one, it should be
> > illegal to have non-pointer forward-declared struct as a type for a
> > struct member.
> >
> >>
> >> On 3/30/20 8:46 AM, Liu Yiding wrote:
> >>> Something wrong with my smtp and this email missed.
> >>>
> >>> Send again.
> >>>
> >>>
> >>> On 3/27/20 11:09 AM, Liu Yiding wrote:
> >>>> Hi, Andrii.
> >>>>
> >>>> Thanks for your prompt reply!
> >>>>
> >>>> Please check attatchment for my_btf.bin.
> >>>>
> >>>>
> >>>> On 3/27/20 4:28 AM, Andrii Nakryiko wrote:
> >>>>> Would you be able to share BTF of vmlinux that is used to generate
> >>>>> vmlinux.h? Please run in verbose mode: `make V=1` and search for
> >>>>> `bpftool btf dump file` command. It should point either to
> >>>>> /sys/kernel/btf/vmlinux or some other location, depending on how
> >>>>> things are set up on your side.
> >>>>>
> >>>>> If it's /sys/kernel/btf/vmlinux, you can just `cat
> >>>>> /sys/kernel/btf/vmlinux > my_btf.bin`. If it's some other file,
> >>>>> easiest would be to just share that file. If not, it's possible to
> >>>>> extract .BTF ELF section, let me know if you need help with that.
> >>>>
> >
> >
> >
> --
> Best Regards.
> Liu Yiding
>
>
>
This patchset contains everything needed to integrate KASAN and KUnit.
KUnit will be able to:
(1) Fail tests when an unexpected KASAN error occurs
(2) Pass tests when an expected KASAN error occurs
KASAN Tests have been converted to KUnit with the exception of
copy_user_test because KUnit is unable to test those. I am working on
documentation on how to use these new tests to be included in the next
version of this patchset.
Changes since v1:
- Make use of Alan Maguire's suggestion to use his patch that allows
static resources for integration instead of adding a new attribute to
the kunit struct
- All KUNIT_EXPECT_KASAN_FAIL statements are local to each test
- The definition of KUNIT_EXPECT_KASAN_FAIL is local to the
test_kasan.c file since it seems this is the only place this will
be used.
- Integration relies on KUnit being builtin
- copy_user_test has been separated into its own file since KUnit
is unable to test these. This can be run as a module just as before,
using CONFIG_TEST_KASAN_USER
- The addition to the current task has been separated into its own
patch as this is a significant enough change to be on its own.
Patricia Alfonso (3):
Add KUnit Struct to Current Task
KUnit: KASAN Integration
KASAN: Port KASAN Tests to KUnit
include/kunit/test.h | 10 +
include/linux/sched.h | 4 +
lib/Kconfig.kasan | 13 +-
lib/Makefile | 1 +
lib/kunit/test.c | 10 +-
lib/test_kasan.c | 639 +++++++++++++++----------------------
lib/test_kasan_copy_user.c | 75 +++++
mm/kasan/report.c | 33 ++
8 files changed, 400 insertions(+), 385 deletions(-)
create mode 100644 lib/test_kasan_copy_user.c
--
2.25.1.696.g5e7596f4ac-goog
Memory protection keys enables an application to protect its address
space from inadvertent access by its own code.
This feature is now enabled on powerpc and has been available since
4.16-rc1. The patches move the selftests to arch neutral directory
and enhance their test coverage.
Tested on powerpc64 and x86_64 (Skylake-SP).
Link to development branch:
https://github.com/sandip4n/linux/tree/pkey-selftests
Resending this based on feedback from maintainers who felt this
can go in via the -mm tree. This has no other changes from the
last version (v18) apart from being rebased.
Changelog
---------
Link to previous version (v18):
https://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=155970
v19:
(1) Rebased on top of latest master.
v18:
(1) Fixed issues with x86 multilib builds based on
feedback from Dave.
(2) Moved patch 2 to the end of the series.
v17:
(1) Fixed issues with i386 builds when running on x86_64
based on feedback from Dave.
(2) Replaced patch 6 from previous version with patch 7.
This addresses u64 format specifier related concerns
that Michael had raised in v15.
v16:
(1) Rebased on top of latest master.
(2) Switched to u64 instead of using an arch-dependent
pkey_reg_t type for references to the pkey register
based on suggestions from Dave, Michal and Michael.
(3) Removed build time determination of page size based
on suggestion from Michael.
(4) Fixed comment before the definition of __page_o_noops()
from patch 13 ("selftests/vm/pkeys: Introduce powerpc
support").
v15:
(1) Rebased on top of latest master.
(2) Addressed review comments from Dave Hansen.
(3) Moved code for getting or setting pkey bits to new
helpers. These changes replace patch 7 of v14.
(4) Added a fix which ensures that the correct count of
reserved keys is used across different platforms.
(5) Added a fix which ensures that the correct page size
is used as powerpc supports both 4K and 64K pages.
v14:
(1) Incorporated another round of comments from Dave Hansen.
v13:
(1) Incorporated comments for Dave Hansen.
(2) Added one more test for correct pkey-0 behavior.
v12:
(1) Fixed the offset of pkey field in the siginfo structure for
x86_64 and powerpc. And tries to use the actual field
if the headers have it defined.
v11:
(1) Fixed a deadlock in the ptrace testcase.
v10 and prior:
(1) Moved the testcase to arch neutral directory.
(2) Split the changes into incremental patches.
Desnes A. Nunes do Rosario (1):
selftests/vm/pkeys: Fix number of reserved powerpc pkeys
Ram Pai (16):
selftests/x86/pkeys: Move selftests to arch-neutral directory
selftests/vm/pkeys: Rename all references to pkru to a generic name
selftests/vm/pkeys: Move generic definitions to header file
selftests/vm/pkeys: Fix pkey_disable_clear()
selftests/vm/pkeys: Fix assertion in pkey_disable_set/clear()
selftests/vm/pkeys: Fix alloc_random_pkey() to make it really random
selftests/vm/pkeys: Introduce generic pkey abstractions
selftests/vm/pkeys: Introduce powerpc support
selftests/vm/pkeys: Fix assertion in test_pkey_alloc_exhaust()
selftests/vm/pkeys: Improve checks to determine pkey support
selftests/vm/pkeys: Associate key on a mapped page and detect access
violation
selftests/vm/pkeys: Associate key on a mapped page and detect write
violation
selftests/vm/pkeys: Detect write violation on a mapped
access-denied-key page
selftests/vm/pkeys: Introduce a sub-page allocator
selftests/vm/pkeys: Test correct behaviour of pkey-0
selftests/vm/pkeys: Override access right definitions on powerpc
Sandipan Das (5):
selftests: vm: pkeys: Use sane types for pkey register
selftests: vm: pkeys: Add helpers for pkey bits
selftests: vm: pkeys: Use the correct huge page size
selftests: vm: pkeys: Use the correct page size on powerpc
selftests: vm: pkeys: Fix multilib builds for x86
Thiago Jung Bauermann (2):
selftests/vm/pkeys: Move some definitions to arch-specific header
selftests/vm/pkeys: Make gcc check arguments of sigsafe_printf()
tools/testing/selftests/vm/.gitignore | 1 +
tools/testing/selftests/vm/Makefile | 73 ++
tools/testing/selftests/vm/pkey-helpers.h | 225 ++++++
tools/testing/selftests/vm/pkey-powerpc.h | 136 ++++
tools/testing/selftests/vm/pkey-x86.h | 181 +++++
.../selftests/{x86 => vm}/protection_keys.c | 696 ++++++++++--------
tools/testing/selftests/x86/.gitignore | 1 -
tools/testing/selftests/x86/Makefile | 2 +-
tools/testing/selftests/x86/pkey-helpers.h | 219 ------
9 files changed, 1002 insertions(+), 532 deletions(-)
create mode 100644 tools/testing/selftests/vm/pkey-helpers.h
create mode 100644 tools/testing/selftests/vm/pkey-powerpc.h
create mode 100644 tools/testing/selftests/vm/pkey-x86.h
rename tools/testing/selftests/{x86 => vm}/protection_keys.c (74%)
delete mode 100644 tools/testing/selftests/x86/pkey-helpers.h
--
2.17.1
Hi,
This new patch series brings improvements, fix some bugs but mainly
simplify the code.
The object, rule and ruleset management are simplified at the expense of
a less aggressive memory freeing (contributed by Jann Horn [1]). There
is now less use of RCU for an improved readability. Access checks that
can be reached by file-descriptor-based syscalls are removed for now
(truncate, getattr, lock, chmod, chown, chgrp, ioctl). This will be
handle in a future evolution of Landlock, but right now the goal is to
lighten the code to ease review. The SLOC count for security/landlock/
was 1542 with the previous patch series while the current series shrinks
it to 1273.
The other main improvement is the addition of rule layer levels to
ensure that a nested sandbox cannot bypass the access restrictions set
by its parents.
The syscall is now wired for all architectures and the tests passed for
x86_32 and x86_64.
The compiled documentation is available here:
https://landlock.io/linux-doc/landlock-v15/security/landlock/index.html
This series can be applied on top of v5.6-rc7. This can be tested with
CONFIG_SECURITY_LANDLOCK and CONFIG_SAMPLE_LANDLOCK. This patch series
can be found in a Git repository here:
https://github.com/landlock-lsm/linux/commits/landlock-v15
I would really appreciate constructive comments on the design and the code.
# Landlock LSM
The goal of Landlock is to enable to restrict ambient rights (e.g.
global filesystem access) for a set of processes. Because Landlock is a
stackable LSM [2], it makes possible to create safe security sandboxes
as new security layers in addition to the existing system-wide
access-controls. This kind of sandbox is expected to help mitigate the
security impact of bugs or unexpected/malicious behaviors in user-space
applications. Landlock empowers any process, including unprivileged
ones, to securely restrict themselves.
Landlock is inspired by seccomp-bpf but instead of filtering syscalls
and their raw arguments, a Landlock rule can restrict the use of kernel
objects like file hierarchies, according to the kernel semantic.
Landlock also takes inspiration from other OS sandbox mechanisms: XNU
Sandbox, FreeBSD Capsicum or OpenBSD Pledge/Unveil.
# Current limitations
## Path walk
Landlock need to use dentries to identify a file hierarchy, which is
needed for composable and unprivileged access-controls. This means that
path resolution/walking (handled with inode_permission()) is not
supported, yet. The same limitation also apply to readlink(2). This
could be filled with a future extension first of the LSM framework. The
Landlock userspace ABI can handle such change with new options (e.g. to
the struct landlock_ruleset).
## UnionFS
An UnionFS super-block use a set of upper and lower directories. Access
request to a file in one of these hierarchy trigger a call to
ovl_path_real() which generate another access request according to the
matching hierarchy. Because such super-block is not aware of its current
mount point, OverlayFS can't create a dedicated mnt_parent for each of
the upper and lower directories mount clones. It is then not currently
possible to track the source of such indirect access-request, and then
not possible to identify a unified OverlayFS hierarchy.
## Memory limits
There is currently no limit on the memory usage. Any idea to leverage
an existing mechanism (e.g. rlimit)?
# Changes since v14
* Simplify the object, rule and ruleset management at the expense of a
less aggressive memory freeing.
* Remove access checks that may be required for FD-only requests:
truncate, getattr, lock, chmod, chown, chgrp, ioctl.
* Add the notion of rule layer level to ensure that a nested sandbox
cannot bypass the access restrictions set by its parent.
* Wire up the syscall for all architectures.
* Clean up the code and add more documentation.
* Some improvements and bug fixes.
# Changes since v13
* Revamp of the LSM: remove the need for eBPF and seccomp(2).
* Implement a full filesystem access-control.
* Take care of the backward compatibility issues, especially for
security features, following a best-effort approach.
Previous version:
https://lore.kernel.org/lkml/20200224160215.4136-1-mic@digikod.net/
[1] https://lore.kernel.org/lkml/CAG48ez21bEn0wL1bbmTiiu8j9jP5iEWtHOwz4tURUJ+ki…
[2] https://lore.kernel.org/lkml/50db058a-7dde-441b-a7f9-f6837fe8b69f@schaufler…
Regards,
Mickaël Salaün (10):
landlock: Add object management
landlock: Add ruleset and domain management
landlock: Set up the security framework and manage credentials
landlock: Add ptrace restrictions
fs,landlock: Support filesystem access-control
landlock: Add syscall implementation
arch: Wire up landlock() syscall
selftests/landlock: Add initial tests
samples/landlock: Add a sandbox manager example
landlock: Add user and kernel documentation
Documentation/security/index.rst | 1 +
Documentation/security/landlock/index.rst | 18 +
Documentation/security/landlock/kernel.rst | 69 +
Documentation/security/landlock/user.rst | 227 +++
MAINTAINERS | 12 +
arch/alpha/kernel/syscalls/syscall.tbl | 1 +
arch/arm/tools/syscall.tbl | 1 +
arch/arm64/include/asm/unistd.h | 2 +-
arch/arm64/include/asm/unistd32.h | 2 +
arch/ia64/kernel/syscalls/syscall.tbl | 1 +
arch/m68k/kernel/syscalls/syscall.tbl | 1 +
arch/microblaze/kernel/syscalls/syscall.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n32.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n64.tbl | 1 +
arch/mips/kernel/syscalls/syscall_o32.tbl | 1 +
arch/parisc/kernel/syscalls/syscall.tbl | 1 +
arch/powerpc/kernel/syscalls/syscall.tbl | 1 +
arch/s390/kernel/syscalls/syscall.tbl | 1 +
arch/sh/kernel/syscalls/syscall.tbl | 1 +
arch/sparc/kernel/syscalls/syscall.tbl | 1 +
arch/x86/entry/syscalls/syscall_32.tbl | 1 +
arch/x86/entry/syscalls/syscall_64.tbl | 1 +
arch/xtensa/kernel/syscalls/syscall.tbl | 1 +
fs/super.c | 2 +
include/linux/fs.h | 5 +
include/linux/landlock.h | 22 +
include/linux/syscalls.h | 3 +
include/uapi/asm-generic/unistd.h | 4 +-
include/uapi/linux/landlock.h | 311 ++++
kernel/sys_ni.c | 3 +
samples/Kconfig | 7 +
samples/Makefile | 1 +
samples/landlock/.gitignore | 1 +
samples/landlock/Makefile | 15 +
samples/landlock/sandboxer.c | 217 +++
security/Kconfig | 11 +-
security/Makefile | 2 +
security/landlock/Kconfig | 18 +
security/landlock/Makefile | 4 +
security/landlock/common.h | 20 +
security/landlock/cred.c | 46 +
security/landlock/cred.h | 55 +
security/landlock/fs.c | 561 ++++++++
security/landlock/fs.h | 42 +
security/landlock/object.c | 66 +
security/landlock/object.h | 92 ++
security/landlock/ptrace.c | 120 ++
security/landlock/ptrace.h | 14 +
security/landlock/ruleset.c | 352 +++++
security/landlock/ruleset.h | 182 +++
security/landlock/setup.c | 39 +
security/landlock/setup.h | 18 +
security/landlock/syscall.c | 521 +++++++
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/landlock/.gitignore | 4 +
tools/testing/selftests/landlock/Makefile | 26 +
tools/testing/selftests/landlock/common.h | 42 +
tools/testing/selftests/landlock/config | 5 +
tools/testing/selftests/landlock/test_base.c | 113 ++
tools/testing/selftests/landlock/test_fs.c | 1249 +++++++++++++++++
.../testing/selftests/landlock/test_ptrace.c | 294 ++++
tools/testing/selftests/landlock/true.c | 5 +
62 files changed, 4833 insertions(+), 7 deletions(-)
create mode 100644 Documentation/security/landlock/index.rst
create mode 100644 Documentation/security/landlock/kernel.rst
create mode 100644 Documentation/security/landlock/user.rst
create mode 100644 include/linux/landlock.h
create mode 100644 include/uapi/linux/landlock.h
create mode 100644 samples/landlock/.gitignore
create mode 100644 samples/landlock/Makefile
create mode 100644 samples/landlock/sandboxer.c
create mode 100644 security/landlock/Kconfig
create mode 100644 security/landlock/Makefile
create mode 100644 security/landlock/common.h
create mode 100644 security/landlock/cred.c
create mode 100644 security/landlock/cred.h
create mode 100644 security/landlock/fs.c
create mode 100644 security/landlock/fs.h
create mode 100644 security/landlock/object.c
create mode 100644 security/landlock/object.h
create mode 100644 security/landlock/ptrace.c
create mode 100644 security/landlock/ptrace.h
create mode 100644 security/landlock/ruleset.c
create mode 100644 security/landlock/ruleset.h
create mode 100644 security/landlock/setup.c
create mode 100644 security/landlock/setup.h
create mode 100644 security/landlock/syscall.c
create mode 100644 tools/testing/selftests/landlock/.gitignore
create mode 100644 tools/testing/selftests/landlock/Makefile
create mode 100644 tools/testing/selftests/landlock/common.h
create mode 100644 tools/testing/selftests/landlock/config
create mode 100644 tools/testing/selftests/landlock/test_base.c
create mode 100644 tools/testing/selftests/landlock/test_fs.c
create mode 100644 tools/testing/selftests/landlock/test_ptrace.c
create mode 100644 tools/testing/selftests/landlock/true.c
--
2.26.0.rc2
Hi,
This new version of Landlock is a major revamp of the previous series
[1], hence the RFC tag. The three main changes are the replacement of
eBPF with a dedicated safe management of access rules, the replacement
of the use of seccomp(2) with a dedicated syscall, and the management of
filesystem access-control (back from the v10).
As discussed in [2], eBPF may be too powerful and dangerous to be put in
the hand of unprivileged and potentially malicious processes, especially
because of side-channel attacks against access-controls or other parts
of the kernel.
Thanks to this new implementation (1540 SLOC), designed from the ground
to be used by unprivileged processes, this series enables a process to
sandbox itself without requiring CAP_SYS_ADMIN, but only the
no_new_privs constraint (like seccomp). Not relying on eBPF also
enables to improve performances, especially for stacked security
policies thanks to mergeable rulesets.
The compiled documentation is available here:
https://landlock.io/linux-doc/landlock-v14/security/landlock/index.html
This series can be applied on top of v5.6-rc3. This can be tested with
CONFIG_SECURITY_LANDLOCK and CONFIG_SAMPLE_LANDLOCK. This patch series
can be found in a Git repository here:
https://github.com/landlock-lsm/linux/commits/landlock-v14
I would really appreciate constructive comments on the design and the code.
# Landlock LSM
The goal of Landlock is to enable to restrict ambient rights (e.g.
global filesystem access) for a set of processes. Because Landlock is a
stackable LSM [3], it makes possible to create safe security sandboxes
as new security layers in addition to the existing system-wide
access-controls. This kind of sandbox is expected to help mitigate the
security impact of bugs or unexpected/malicious behaviors in user-space
applications. Landlock empower any process, including unprivileged ones,
to securely restrict themselves.
Landlock is inspired by seccomp-bpf but instead of filtering syscalls
and their raw arguments, a Landlock rule can restrict the use of kernel
objects like file hierarchies, according to the kernel semantic.
Landlock also takes inspiration from other OS sandbox mechanisms: XNU
Sandbox, FreeBSD Capsicum or OpenBSD Pledge/Unveil.
# Current limitations
## Path walk
Landlock need to use dentries to identify a file hierarchy, which is
needed for composable and unprivileged access-controls. This means that
path resolution/walking (handled with inode_permission()) is not
supported, yet. This could be filled with a future extension first of
the LSM framework. The Landlock userspace ABI can handle such change
with new option (e.g. to the struct landlock_ruleset).
## UnionFS
An UnionFS super-block use a set of upper and lower directories. An
access request to a file in one of these hierarchy trigger a call to
ovl_path_real() which generate another access request according to the
matching hierarchy. Because such super-block is not aware of its current
mount point, OverlayFS can't create a dedicated mnt_parent for each of
the upper and lower directories mount clones. It is then not currently
possible to track the source of such indirect access-request, and then
not possible to identify a unified OverlayFS hierarchy.
## Syscall
Because it is only tested on x86_64, the syscall is only wired up for
this architecture. The whole x86 family (and probably all the others)
will be supported in the next patch series.
## Memory limits
There is currently no limit on the memory usage. Any idea to leverage
an existing mechanism (e.g. rlimit)?
# Changes since v13
* Revamp of the LSM: remove the need for eBPF and seccomp(2).
* Implement a full filesystem access-control.
* Take care of the backward compatibility issues, especially for
this security features.
Previous version:
https://lore.kernel.org/lkml/20191104172146.30797-1-mic@digikod.net/
[1] https://lore.kernel.org/lkml/20191104172146.30797-1-mic@digikod.net/
[2] https://lore.kernel.org/lkml/a6b61f33-82dc-0c1c-7a6c-1926343ef63e@digikod.n…
[3] https://lore.kernel.org/lkml/50db058a-7dde-441b-a7f9-f6837fe8b69f@schaufler…
Regards,
Mickaël Salaün (10):
landlock: Add object and rule management
landlock: Add ruleset and domain management
landlock: Set up the security framework and manage credentials
landlock: Add ptrace restrictions
fs,landlock: Support filesystem access-control
landlock: Add syscall implementation
arch: Wire up landlock() syscall
selftests/landlock: Add initial tests
samples/landlock: Add a sandbox manager example
landlock: Add user and kernel documentation
Documentation/security/index.rst | 1 +
Documentation/security/landlock/index.rst | 18 +
Documentation/security/landlock/kernel.rst | 44 ++
Documentation/security/landlock/user.rst | 233 +++++++
MAINTAINERS | 12 +
arch/x86/entry/syscalls/syscall_64.tbl | 1 +
fs/super.c | 2 +
include/linux/landlock.h | 22 +
include/linux/syscalls.h | 3 +
include/uapi/asm-generic/unistd.h | 4 +-
include/uapi/linux/landlock.h | 315 +++++++++
samples/Kconfig | 7 +
samples/Makefile | 1 +
samples/landlock/.gitignore | 1 +
samples/landlock/Makefile | 15 +
samples/landlock/sandboxer.c | 226 +++++++
security/Kconfig | 11 +-
security/Makefile | 2 +
security/landlock/Kconfig | 16 +
security/landlock/Makefile | 4 +
security/landlock/cred.c | 47 ++
security/landlock/cred.h | 55 ++
security/landlock/fs.c | 591 +++++++++++++++++
security/landlock/fs.h | 42 ++
security/landlock/object.c | 341 ++++++++++
security/landlock/object.h | 134 ++++
security/landlock/ptrace.c | 118 ++++
security/landlock/ptrace.h | 14 +
security/landlock/ruleset.c | 463 +++++++++++++
security/landlock/ruleset.h | 106 +++
security/landlock/setup.c | 38 ++
security/landlock/setup.h | 20 +
security/landlock/syscall.c | 470 +++++++++++++
tools/testing/selftests/Makefile | 1 +
tools/testing/selftests/landlock/.gitignore | 3 +
tools/testing/selftests/landlock/Makefile | 13 +
tools/testing/selftests/landlock/config | 4 +
tools/testing/selftests/landlock/test.h | 40 ++
tools/testing/selftests/landlock/test_base.c | 80 +++
tools/testing/selftests/landlock/test_fs.c | 624 ++++++++++++++++++
.../testing/selftests/landlock/test_ptrace.c | 293 ++++++++
41 files changed, 4429 insertions(+), 6 deletions(-)
create mode 100644 Documentation/security/landlock/index.rst
create mode 100644 Documentation/security/landlock/kernel.rst
create mode 100644 Documentation/security/landlock/user.rst
create mode 100644 include/linux/landlock.h
create mode 100644 include/uapi/linux/landlock.h
create mode 100644 samples/landlock/.gitignore
create mode 100644 samples/landlock/Makefile
create mode 100644 samples/landlock/sandboxer.c
create mode 100644 security/landlock/Kconfig
create mode 100644 security/landlock/Makefile
create mode 100644 security/landlock/cred.c
create mode 100644 security/landlock/cred.h
create mode 100644 security/landlock/fs.c
create mode 100644 security/landlock/fs.h
create mode 100644 security/landlock/object.c
create mode 100644 security/landlock/object.h
create mode 100644 security/landlock/ptrace.c
create mode 100644 security/landlock/ptrace.h
create mode 100644 security/landlock/ruleset.c
create mode 100644 security/landlock/ruleset.h
create mode 100644 security/landlock/setup.c
create mode 100644 security/landlock/setup.h
create mode 100644 security/landlock/syscall.c
create mode 100644 tools/testing/selftests/landlock/.gitignore
create mode 100644 tools/testing/selftests/landlock/Makefile
create mode 100644 tools/testing/selftests/landlock/config
create mode 100644 tools/testing/selftests/landlock/test.h
create mode 100644 tools/testing/selftests/landlock/test_base.c
create mode 100644 tools/testing/selftests/landlock/test_fs.c
create mode 100644 tools/testing/selftests/landlock/test_ptrace.c
--
2.25.0