From nobody Tue Apr 7 10:39:26 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BCA233D5667 for ; Fri, 13 Mar 2026 20:59:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773435557; cv=none; b=GlhZvpP3OcMEqJXhx0hGv21/2D90v7WEabxlNtaKIF254e1st4XJr6/uVyWrb+UBHR52Xepavf1gtq9ho1WHAOAS09xZNQGnyoKVG820KFOwKMPkFxrYByTlvxWEvOfM2HAazkrW07yl2rsj37VjNIuDRarqhMqmQL5Yx0nWzR0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773435557; c=relaxed/simple; bh=7miD+iiagzq5C2pRyxmlazC6IojzoSp0vrZTCyoeCrc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CpF7uUfiatCKKmzdLeQBrW0iHgfURRF+GES9KEDxnMcp/NijgOF4HMDD46qjAq3P4568EqhwW/Q9zfoBWXhxQVAcuRQOnLqg4StviBCafD+qc125CBHEY+V3aroMPhxxsMwaW+48EPfT3cnNOe7Q3O/RNjHskMtXXWbOTP0nNMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=RzDVTsBb; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="RzDVTsBb" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4853f2826f7so26128005e9.1 for ; Fri, 13 Mar 2026 13:59:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1773435552; x=1774040352; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=CtpindbIzqkRgW7Z2vVcHsOf0RGWeyCQynvMr4lGYeE=; b=RzDVTsBb4+kQ4+bDTyzmjLlcHSSoP9B8q6WireKq4OM1N4oQzwSYLdL3HhfbM9H+Qz eKbEfuH2DJss0wJE/k6OWjZbW4ECo2LFRBWPFsW7EQf+37BbAAz8Ki2buija+fWMPv01 niOV7riQGMzsPK7IP7p+YKqhD3QRH8H1YJc+oBta5t9+jutVY2VEjh4X900fmz917FMX w5sh/LzNxXQT3U4fvnV3U7EiZhhM3l1tzBmkLo/FDBd3Fc8f7D8GluJ380UFAJ2KB+21 6MncctgOPIrpzrP0QJ8fKkXkrQE3fF3c51mDCoGVGVWkfe+qUzhSxA/8vJ8gaAgtBU+g dshQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773435552; x=1774040352; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=CtpindbIzqkRgW7Z2vVcHsOf0RGWeyCQynvMr4lGYeE=; b=Et3PPUcB3nr5vmD2W99EASbkmZDVcIGL6lgzJInYNbx1/glNZE7P/OilfmWEM6Zty7 F7GRToZs5BMJi4hAZWnHbXFO/h6rFUVlaCgLxKVG+zwD7sJV/wc7AJpD9VIrGRlXEZTQ XA2p3NKC7GVObQ5WFpbzANnWCiMCkgkdMWNECHpuGx8YR6oPs543J+qLYNt0u+oE1xnH ily3HwZFnGVD+n5z0ovVwk9AlQZLD2ZKshXCes8lKuRNn/1gw6QsKTZNuHF52BfWPghN S8nXaMXaAypc6pIRJUxTurayWHF6oSChLnLQ+NQwArmWtdNJ6o9yLww7O/X10IeMfUYy ZwMw== X-Forwarded-Encrypted: i=1; AJvYcCVeoTP+ed2ujHnKY8ykAxSGrHCfO8qaev+YOAwfgOg2j09XWTSx6MamZV6kNJv7D8WJTKygMoDvHRBFZPc=@vger.kernel.org X-Gm-Message-State: AOJu0Yyy55xLJuedgwF/q1Khgtm1uZgE+7s+f5WtUvls4Oy/5X8cYWyX 68Mj2wEEgOSYWB4ufKJXkiDELRzQS2NWrspNSV/anQKyZ3a3JgC139Nw2lXzloQIG0Q= X-Gm-Gg: ATEYQzx8PQGQ2WUIdYCALyU28VpJHbWoFMT9Q5IjT1yE+9l1OXMshOjdr8kJ10ZETMF wq9Avym2vKVrEnohh7MBW0aUNxafMSDzT3QWFQzlaFC/s5KjEluxTN2xGt8aIZdkm7vorNKrglX Yme3AKSb4DEKfa5rnA3JLRghbtOhymVhyLCt2F7CBS5c5XBNJkEK/yyHYn5pcuxq6novKAo6TXp 8SkqoV5ZHauIzTL0KHpC55nUHEiV5W3Pc3mPCmRzR3Co94zbcgtXdhZFcgeE6lFZJ4JHPPHMd5B Nt4dpas6t4I3+P4s/HlEYkp9thRWtYmUShl/l2QYjy176nVGCVzwpp+l6Jw6QelrlSgeKMZYM+X mBroUSCsiVYcXLm8PzCTsO+RAWTFXRiUq89QOAhVea+ksKi3KgP2+sBsByTMb3tjI7sPzABEvjZ fEJmiokeZu53nZ4hqI5ucm X-Received: by 2002:a05:600c:4f8f:b0:485:40c6:f507 with SMTP id 5b1f17b1804b1-48556711c6cmr83526535e9.30.1773435551766; Fri, 13 Mar 2026 13:59:11 -0700 (PDT) Received: from [127.0.0.1] ([2804:5078:834:1300:58f2:fc97:371f:3]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2beab526d3csm4042611eec.18.2026.03.13.13.59.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 13:59:10 -0700 (PDT) From: Marcos Paulo de Souza Date: Fri, 13 Mar 2026 17:58:38 -0300 Subject: [PATCH 7/8] selftests: livepatch: sysfs: Split tests of patched attribute Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260313-lp-tests-old-fixes-v1-7-71ac6dfb3253@suse.com> References: <20260313-lp-tests-old-fixes-v1-0-71ac6dfb3253@suse.com> In-Reply-To: <20260313-lp-tests-old-fixes-v1-0-71ac6dfb3253@suse.com> To: Josh Poimboeuf , Jiri Kosina , Miroslav Benes , Petr Mladek , Joe Lawrence , Shuah Khan Cc: live-patching@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, Marcos Paulo de Souza X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1773435515; l=8340; i=mpdesouza@suse.com; s=20231031; h=from:subject:message-id; bh=7miD+iiagzq5C2pRyxmlazC6IojzoSp0vrZTCyoeCrc=; b=uqFFQEX3HHu+zZW7rPQBC5tgv3eZjksDN3DnrZZTJSoo2WkJagFHOjl28pWkfB32qKuM46tb1 cUCGhosNsX3CVCG+M5/SA0H3NlXSuYSkLfbexViZpdixDx9EgM6z4Gi X-Developer-Key: i=mpdesouza@suse.com; a=ed25519; pk=/Ni/TsKkr69EOmdZXkp1Q/BlzDonbOBRsfPa18ySIwU= In order to run the selftests on older kernels, split the sysfs tests to another file, making it able to skip the tests when the attributes don't exists. No functional changes. Signed-off-by: Marcos Paulo de Souza --- tools/testing/selftests/livepatch/Makefile | 1 + .../selftests/livepatch/test-sysfs-patched-attr.sh | 95 ++++++++++++++++++= ++++ tools/testing/selftests/livepatch/test-sysfs.sh | 45 ---------- 3 files changed, 96 insertions(+), 45 deletions(-) diff --git a/tools/testing/selftests/livepatch/Makefile b/tools/testing/sel= ftests/livepatch/Makefile index 1982056670fc2..31ca4669b6ae7 100644 --- a/tools/testing/selftests/livepatch/Makefile +++ b/tools/testing/selftests/livepatch/Makefile @@ -12,6 +12,7 @@ TEST_PROGS :=3D \ test-sysfs.sh \ test-sysfs-replace-attr.sh \ test-sysfs-stack-attr.sh \ + test-sysfs-patched-attr.sh \ test-syscall.sh \ test-kprobe.sh =20 diff --git a/tools/testing/selftests/livepatch/test-sysfs-patched-attr.sh b= /tools/testing/selftests/livepatch/test-sysfs-patched-attr.sh new file mode 100755 index 0000000000000..2cefd1159fb11 --- /dev/null +++ b/tools/testing/selftests/livepatch/test-sysfs-patched-attr.sh @@ -0,0 +1,95 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2022 Song Liu + +. $(dirname $0)/functions.sh + +MOD_LIVEPATCH=3Dtest_klp_livepatch + +setup_config + +# - load a livepatch and verifies the sysfs patched attribute + +start_test "check sysfs patched attribute" + +load_lp $MOD_LIVEPATCH + +check_sysfs_exists "$MOD_LIVEPATCH" "vmlinux/patched" +file_exists=3D$? + +disable_lp $MOD_LIVEPATCH + +unload_lp $MOD_LIVEPATCH + +if [[ "$file_exists" =3D=3D "0" ]]; then + skip "sysfs attribute doesn't exists." +fi + +start_test "check sysfs patched values" + +load_lp $MOD_LIVEPATCH + +check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--" +check_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1" + +disable_lp $MOD_LIVEPATCH + +unload_lp $MOD_LIVEPATCH + +check_result "% insmod test_modules/$MOD_LIVEPATCH.ko +livepatch: enabling patch '$MOD_LIVEPATCH' +livepatch: '$MOD_LIVEPATCH': initializing patching transition +livepatch: '$MOD_LIVEPATCH': starting patching transition +livepatch: '$MOD_LIVEPATCH': completing patching transition +livepatch: '$MOD_LIVEPATCH': patching complete +% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH/enabled +livepatch: '$MOD_LIVEPATCH': initializing unpatching transition +livepatch: '$MOD_LIVEPATCH': starting unpatching transition +livepatch: '$MOD_LIVEPATCH': completing unpatching transition +livepatch: '$MOD_LIVEPATCH': unpatching complete +% rmmod $MOD_LIVEPATCH" + +start_test "sysfs test object/patched" + +MOD_LIVEPATCH=3Dtest_klp_callbacks_demo +MOD_TARGET=3Dtest_klp_callbacks_mod +load_lp $MOD_LIVEPATCH + +# check the "patch" file changes as target module loads/unloads +check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" +load_mod $MOD_TARGET +check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1" +unload_mod $MOD_TARGET +check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" + +disable_lp $MOD_LIVEPATCH +unload_lp $MOD_LIVEPATCH + +check_result "% insmod test_modules/test_klp_callbacks_demo.ko +livepatch: enabling patch 'test_klp_callbacks_demo' +livepatch: 'test_klp_callbacks_demo': initializing patching transition +test_klp_callbacks_demo: pre_patch_callback: vmlinux +livepatch: 'test_klp_callbacks_demo': starting patching transition +livepatch: 'test_klp_callbacks_demo': completing patching transition +test_klp_callbacks_demo: post_patch_callback: vmlinux +livepatch: 'test_klp_callbacks_demo': patching complete +% insmod test_modules/test_klp_callbacks_mod.ko +livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'tes= t_klp_callbacks_mod' +test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MO= DULE_STATE_COMING] Full formed, running module_init +test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [M= ODULE_STATE_COMING] Full formed, running module_init +test_klp_callbacks_mod: test_klp_callbacks_mod_init +% rmmod test_klp_callbacks_mod +test_klp_callbacks_mod: test_klp_callbacks_mod_exit +test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [= MODULE_STATE_GOING] Going away +livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module '= test_klp_callbacks_mod' +test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> = [MODULE_STATE_GOING] Going away +% echo 0 > $SYSFS_KLP_DIR/test_klp_callbacks_demo/enabled +livepatch: 'test_klp_callbacks_demo': initializing unpatching transition +test_klp_callbacks_demo: pre_unpatch_callback: vmlinux +livepatch: 'test_klp_callbacks_demo': starting unpatching transition +livepatch: 'test_klp_callbacks_demo': completing unpatching transition +test_klp_callbacks_demo: post_unpatch_callback: vmlinux +livepatch: 'test_klp_callbacks_demo': unpatching complete +% rmmod test_klp_callbacks_demo" + +exit 0 diff --git a/tools/testing/selftests/livepatch/test-sysfs.sh b/tools/testin= g/selftests/livepatch/test-sysfs.sh index 3327bde59e73d..d24c13ad86124 100755 --- a/tools/testing/selftests/livepatch/test-sysfs.sh +++ b/tools/testing/selftests/livepatch/test-sysfs.sh @@ -20,8 +20,6 @@ check_sysfs_value "$MOD_LIVEPATCH" "enabled" "1" check_sysfs_rights "$MOD_LIVEPATCH" "force" "--w-------" check_sysfs_rights "$MOD_LIVEPATCH" "transition" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH" "transition" "0" -check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--" -check_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1" =20 disable_lp $MOD_LIVEPATCH =20 @@ -40,47 +38,4 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching trans= ition livepatch: '$MOD_LIVEPATCH': unpatching complete % rmmod $MOD_LIVEPATCH" =20 -start_test "sysfs test object/patched" - -MOD_LIVEPATCH=3Dtest_klp_callbacks_demo -MOD_TARGET=3Dtest_klp_callbacks_mod -load_lp $MOD_LIVEPATCH - -# check the "patch" file changes as target module loads/unloads -check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" -load_mod $MOD_TARGET -check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "1" -unload_mod $MOD_TARGET -check_sysfs_value "$MOD_LIVEPATCH" "$MOD_TARGET/patched" "0" - -disable_lp $MOD_LIVEPATCH -unload_lp $MOD_LIVEPATCH - -check_result "% insmod test_modules/test_klp_callbacks_demo.ko -livepatch: enabling patch 'test_klp_callbacks_demo' -livepatch: 'test_klp_callbacks_demo': initializing patching transition -test_klp_callbacks_demo: pre_patch_callback: vmlinux -livepatch: 'test_klp_callbacks_demo': starting patching transition -livepatch: 'test_klp_callbacks_demo': completing patching transition -test_klp_callbacks_demo: post_patch_callback: vmlinux -livepatch: 'test_klp_callbacks_demo': patching complete -% insmod test_modules/test_klp_callbacks_mod.ko -livepatch: applying patch 'test_klp_callbacks_demo' to loading module 'tes= t_klp_callbacks_mod' -test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MO= DULE_STATE_COMING] Full formed, running module_init -test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [M= ODULE_STATE_COMING] Full formed, running module_init -test_klp_callbacks_mod: test_klp_callbacks_mod_init -% rmmod test_klp_callbacks_mod -test_klp_callbacks_mod: test_klp_callbacks_mod_exit -test_klp_callbacks_demo: pre_unpatch_callback: test_klp_callbacks_mod -> [= MODULE_STATE_GOING] Going away -livepatch: reverting patch 'test_klp_callbacks_demo' on unloading module '= test_klp_callbacks_mod' -test_klp_callbacks_demo: post_unpatch_callback: test_klp_callbacks_mod -> = [MODULE_STATE_GOING] Going away -% echo 0 > $SYSFS_KLP_DIR/test_klp_callbacks_demo/enabled -livepatch: 'test_klp_callbacks_demo': initializing unpatching transition -test_klp_callbacks_demo: pre_unpatch_callback: vmlinux -livepatch: 'test_klp_callbacks_demo': starting unpatching transition -livepatch: 'test_klp_callbacks_demo': completing unpatching transition -test_klp_callbacks_demo: post_unpatch_callback: vmlinux -livepatch: 'test_klp_callbacks_demo': unpatching complete -% rmmod test_klp_callbacks_demo" - exit 0 --=20 2.52.0