Commit 27cc6fdf authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'linux_kselftest-fixes-6.12-rc2' of...

Merge tag 'linux_kselftest-fixes-6.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest

Pull kselftest fixes from Shuah Khan:
 "Fixes to build warnings, install scripts, run-time error path, and git
  status cleanups to tests:

   - devices/probe: fix for Python3 regex string syntax warnings

   - clone3: removing unused macro from clone3_cap_checkpoint_restore()

   - vDSO: fix to align getrandom states to cache line

   - core and exec: add missing executables to .gitignore files

   - rtc: change to skip test if /dev/rtc0 can't be accessed

   - timers/posix: fix warn_unused_result result in __fatal_error()

   - breakpoints: fix to detect suspend successful condition correctly

   - hid: fix to install required dependencies to run the test"

* tag 'linux_kselftest-fixes-6.12-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
  selftests: breakpoints: use remaining time to check if suspend succeed
  kselftest/devices/probe: Fix SyntaxWarning in regex strings for Python3
  selftest: hid: add missing run-hid-tools-tests.sh
  selftests: vDSO: align getrandom states to cache line
  selftests: exec: update gitignore for load_address
  selftests: core: add unshare_test to gitignore
  clone3: clone3_cap_checkpoint_restore: remove unused MAX_PID_NS_LEVEL macro
  selftests:timers: posix_timers: Fix warn_unused_result in __fatal_error()
  selftest: rtc: Check if could access /dev/rtc0 before testing
parents ac308609 c66be905
...@@ -152,7 +152,10 @@ void suspend(void) ...@@ -152,7 +152,10 @@ void suspend(void)
if (err < 0) if (err < 0)
ksft_exit_fail_msg("timerfd_settime() failed\n"); ksft_exit_fail_msg("timerfd_settime() failed\n");
if (write(power_state_fd, "mem", strlen("mem")) != strlen("mem")) system("(echo mem > /sys/power/state) 2> /dev/null");
timerfd_gettime(timerfd, &spec);
if (spec.it_value.tv_sec != 0 || spec.it_value.tv_nsec != 0)
ksft_exit_fail_msg("Failed to enter Suspend state\n"); ksft_exit_fail_msg("Failed to enter Suspend state\n");
close(timerfd); close(timerfd);
......
...@@ -27,8 +27,6 @@ ...@@ -27,8 +27,6 @@
#include "../kselftest_harness.h" #include "../kselftest_harness.h"
#include "clone3_selftests.h" #include "clone3_selftests.h"
#define MAX_PID_NS_LEVEL 32
static void child_exit(int ret) static void child_exit(int ret)
{ {
fflush(stdout); fflush(stdout);
......
close_range_test close_range_test
unshare_test
...@@ -45,7 +45,7 @@ def find_pci_controller_dirs(): ...@@ -45,7 +45,7 @@ def find_pci_controller_dirs():
def find_usb_controller_dirs(): def find_usb_controller_dirs():
usb_controller_sysfs_dir = "usb[\d]+" usb_controller_sysfs_dir = r"usb[\d]+"
dir_regex = re.compile(usb_controller_sysfs_dir) dir_regex = re.compile(usb_controller_sysfs_dir)
for d in os.scandir(sysfs_usb_devices): for d in os.scandir(sysfs_usb_devices):
...@@ -91,7 +91,7 @@ def get_acpi_uid(sysfs_dev_dir): ...@@ -91,7 +91,7 @@ def get_acpi_uid(sysfs_dev_dir):
def get_usb_version(sysfs_dev_dir): def get_usb_version(sysfs_dev_dir):
re_usb_version = re.compile("PRODUCT=.*/(\d)/.*") re_usb_version = re.compile(r"PRODUCT=.*/(\d)/.*")
with open(os.path.join(sysfs_dev_dir, "uevent")) as f: with open(os.path.join(sysfs_dev_dir, "uevent")) as f:
return int(re_usb_version.search(f.read()).group(1)) return int(re_usb_version.search(f.read()).group(1))
......
...@@ -9,7 +9,8 @@ execveat.ephemeral ...@@ -9,7 +9,8 @@ execveat.ephemeral
execveat.denatured execveat.denatured
non-regular non-regular
null-argv null-argv
/load_address_* /load_address.*
!load_address.c
/recursion-depth /recursion-depth
xxxxxxxx* xxxxxxxx*
pipe pipe
......
...@@ -17,6 +17,8 @@ TEST_PROGS += hid-tablet.sh ...@@ -17,6 +17,8 @@ TEST_PROGS += hid-tablet.sh
TEST_PROGS += hid-usb_crash.sh TEST_PROGS += hid-usb_crash.sh
TEST_PROGS += hid-wacom.sh TEST_PROGS += hid-wacom.sh
TEST_FILES := run-hid-tools-tests.sh
CXX ?= $(CROSS_COMPILE)g++ CXX ?= $(CROSS_COMPILE)g++
HOSTPKG_CONFIG := pkg-config HOSTPKG_CONFIG := pkg-config
......
...@@ -412,6 +412,8 @@ TEST_F_TIMEOUT(rtc, alarm_wkalm_set_minute, 65) { ...@@ -412,6 +412,8 @@ TEST_F_TIMEOUT(rtc, alarm_wkalm_set_minute, 65) {
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
int ret = -1;
switch (argc) { switch (argc) {
case 2: case 2:
rtc_file = argv[1]; rtc_file = argv[1];
...@@ -423,5 +425,12 @@ int main(int argc, char **argv) ...@@ -423,5 +425,12 @@ int main(int argc, char **argv)
return 1; return 1;
} }
return test_harness_run(argc, argv); /* Run the test if rtc_file is accessible */
if (access(rtc_file, R_OK) == 0)
ret = test_harness_run(argc, argv);
else
ksft_exit_skip("[SKIP]: Cannot access rtc file %s - Exiting\n",
rtc_file);
return ret;
} }
...@@ -26,13 +26,17 @@ ...@@ -26,13 +26,17 @@
static void __fatal_error(const char *test, const char *name, const char *what) static void __fatal_error(const char *test, const char *name, const char *what)
{ {
char buf[64]; char buf[64];
char *ret_str = NULL;
strerror_r(errno, buf, sizeof(buf)); ret_str = strerror_r(errno, buf, sizeof(buf));
if (name && strlen(name)) if (name && strlen(name) && ret_str)
ksft_exit_fail_msg("%s %s %s %s\n", test, name, what, buf); ksft_exit_fail_msg("%s %s %s %s\n", test, name, what, ret_str);
else if (ret_str)
ksft_exit_fail_msg("%s %s %s\n", test, what, ret_str);
else else
ksft_exit_fail_msg("%s %s %s\n", test, what, buf); ksft_exit_fail_msg("%s %s\n", test, what);
} }
#define fatal_error(name, what) __fatal_error(__func__, name, what) #define fatal_error(name, what) __fatal_error(__func__, name, what)
......
...@@ -59,10 +59,12 @@ static void *vgetrandom_get_state(void) ...@@ -59,10 +59,12 @@ static void *vgetrandom_get_state(void)
size_t page_size = getpagesize(); size_t page_size = getpagesize();
size_t new_cap; size_t new_cap;
size_t alloc_size, num = sysconf(_SC_NPROCESSORS_ONLN); /* Just a decent heuristic. */ size_t alloc_size, num = sysconf(_SC_NPROCESSORS_ONLN); /* Just a decent heuristic. */
size_t state_size_aligned, cache_line_size = sysconf(_SC_LEVEL1_DCACHE_LINESIZE) ?: 1;
void *new_block, *new_states; void *new_block, *new_states;
alloc_size = (num * vgrnd.params.size_of_opaque_state + page_size - 1) & (~(page_size - 1)); state_size_aligned = (vgrnd.params.size_of_opaque_state + cache_line_size - 1) & (~(cache_line_size - 1));
num = (page_size / vgrnd.params.size_of_opaque_state) * (alloc_size / page_size); alloc_size = (num * state_size_aligned + page_size - 1) & (~(page_size - 1));
num = (page_size / state_size_aligned) * (alloc_size / page_size);
new_block = mmap(0, alloc_size, vgrnd.params.mmap_prot, vgrnd.params.mmap_flags, -1, 0); new_block = mmap(0, alloc_size, vgrnd.params.mmap_prot, vgrnd.params.mmap_flags, -1, 0);
if (new_block == MAP_FAILED) if (new_block == MAP_FAILED)
goto out; goto out;
...@@ -78,7 +80,7 @@ static void *vgetrandom_get_state(void) ...@@ -78,7 +80,7 @@ static void *vgetrandom_get_state(void)
if (((uintptr_t)new_block & (page_size - 1)) + vgrnd.params.size_of_opaque_state > page_size) if (((uintptr_t)new_block & (page_size - 1)) + vgrnd.params.size_of_opaque_state > page_size)
new_block = (void *)(((uintptr_t)new_block + page_size - 1) & (~(page_size - 1))); new_block = (void *)(((uintptr_t)new_block + page_size - 1) & (~(page_size - 1)));
vgrnd.states[i] = new_block; vgrnd.states[i] = new_block;
new_block += vgrnd.params.size_of_opaque_state; new_block += state_size_aligned;
} }
vgrnd.len = num; vgrnd.len = num;
goto success; goto success;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment