@@ -164,6 +164,7 @@ struct tst_test {
*/
int all_filesystems:1;
int skip_in_lockdown:1;
+ int skip_in_compat:1;
/*
* The skip_filesystem is a NULL terminated list of filesystems the
@@ -18,6 +18,7 @@
#define TST_NO_DEFAULT_MAIN
#include "tst_test.h"
#include "tst_device.h"
+#include "lapi/abisize.h"
#include "lapi/futex.h"
#include "lapi/syscalls.h"
#include "tst_ansi_color.h"
@@ -978,6 +979,9 @@ static void do_setup(int argc, char *argv[])
if (tst_test->skip_in_lockdown && tst_lockdown_enabled())
tst_brk(TCONF, "Kernel is locked down, skipping test");
+ if (tst_test->skip_in_compat && TST_ABI != tst_kernel_bits())
+ tst_brk(TCONF, "Running in 32-bit compat mode");
+
if (tst_test->needs_cmds) {
const char *cmd;
char path[PATH_MAX];
@@ -66,14 +66,6 @@ static struct tst_kern_exv kvers[] = {
static void setup(void)
{
- /*
- * When running in compat mode we can't pass 64 address to ptrace so we
- * have to skip the test.
- */
- if (tst_kernel_bits() != KERN_ADDR_BITS)
- tst_brk(TCONF, "Cannot pass 64bit kernel address in compat mode");
-
-
/*
* The original fix for the kernel haven't rejected the kernel address
* right away when breakpoint was modified from userspace it was
@@ -164,6 +156,11 @@ static struct tst_test test = {
.setup = setup,
.cleanup = cleanup,
.forks_child = 1,
+ /*
+ * When running in compat mode we can't pass 64 address to ptrace so we
+ * have to skip the test.
+ */
+ .skip_in_compat = 1,
.tags = (const struct tst_tag[]) {
{"linux-git", "f67b15037a7a"},
{"CVE", "2018-1000199"},
@@ -11,6 +11,10 @@
* Date: Sat Jun 19 13:18:13 2021 -0300
*
* can: bcm: delay release of struct bcm_op after synchronize_rcu()
+ *
+ * The test is skipped when running in 32-bit compat mode. The kernel
+ * compatibility layer for CAN structures is not implemented at the
+ * time of writing.
*/
#include "config.h"
@@ -137,6 +141,7 @@ static struct tst_test test = {
.cleanup = cleanup,
.taint_check = TST_TAINT_W | TST_TAINT_D,
.needs_root = 1,
+ .skip_in_compat = 1,
.needs_drivers = (const char *const[]) {
"vcan",
"can-bcm",
Some tests can never be run under 32-bit compatibility mode. This adds a flag to skip them. This will show up in the meta data in addition to causing the test to exit with TCONF if compat mode is detected at runtime. It's possible that support for compat mode will be added to CAN. If this happens then we will have to probe the interface for support when in 32-bit compat mode. Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com> Suggested-by: Cyril Hrubis <chrubis@suse.cz> --- include/tst_test.h | 1 + lib/tst_test.c | 4 ++++ testcases/kernel/syscalls/ptrace/ptrace08.c | 13 +++++-------- testcases/network/can/cve/can_bcm01.c | 5 +++++ 4 files changed, 15 insertions(+), 8 deletions(-)