From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 39CAE3E3D94 for ; Mon, 4 May 2026 18:35:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777919722; cv=none; b=ZHjAVas3EdWpFu39IjrU846oC+KrOUidY7gI2b+JDvDSebub70XnU1mD+NL/MFZw1WroM7eJGqM2TrdrtuR7KnbMtd7PO1izFv5C+ENPgscxlDlowTjKfYCxLwz+cMCZw0gZ4Q7x6OL2OmDO68419uq2gywYMSM4JwvJUMLc3B8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777919722; c=relaxed/simple; bh=6P0e0A8QxWyaPvsGL9j3Ar96CdheOubVPAEIrUABQpk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fCHQkh18+qIYEUv6uWnx9AJ3qvqsOOGq57ImGZIv5J37OLwbUqDSkMF/PTAdvMtCFNppHF/kVo2YdkRB6EVezkZ7ulib49C2GCKReC30/62Uy8IsOXKwxV0SavMBMhNBnCVWvUIxyn8OSUN0EYCZKZpOCSWPsgQtZsk1nO0oj9w= 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=GFZAz9Hx; arc=none smtp.client-ip=209.85.128.45 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="GFZAz9Hx" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-48984d29fe3so64884615e9.0 for ; Mon, 04 May 2026 11:35:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1777919718; x=1778524518; 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=Ol7qxl3WD4B6OBEXdhGIzOFnzr53HJ0GeqePRgqXLMM=; b=GFZAz9HxgfyGAim3wPzXguYIYZaPiW64rcS6bgsNCT7YCgofVGrmBivlEfdE2wdkU1 4p71F9V8Tnt90LR2b4avvZB0mP3Oy53CH8UeZYbBHDW0OwYFH71oEb3HKzEf2oVl4wA7 aTh0EUdybP0+yLArmOlmWQ89gV3g5R7OKaWLJcFUuiUc/OyyhA0AokMOH+k1XL7Tqa1W r1mWEpJu5P69t31015bM36FJGXipmM1OdAeewlP5z9QQDd7ampikH/AsbkjLKI/Vle2f MFNjGAhGIpLK+E9gpxe931kfgo/GljJZJSO6b/ePfy6xFWCtFB3af7E/TnAbyuL7ObPM qwAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777919718; x=1778524518; 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=Ol7qxl3WD4B6OBEXdhGIzOFnzr53HJ0GeqePRgqXLMM=; b=bZOowHwD0wWuu/t0fek9w6FJ/o9MQQ8y7fpI8Pc6DX6o0P0Rg7lBHYNIRZc3IioACO DIESV3eMyzIiK4XPaRH1CmVPp8gzQu9tsl7x/u0b0GExls2OfHAfmzlakCnMzL4Hf3Om 9SDb7ykjKvgr0hom4fEz+JgRKbH1lsKm+RRWlzcdLwYMGGtZqts/JkvZNbetzWZzYrxU ipMgO3gNm0aa0Nl88c5s5pw1/WaZbij4AFMK7WV2/Xzwdg4Qam9sY32g8wmpNsccmhpE hsiM6bVy8cxRqwq/LgRKUDjdnPZiILisq3CFPdqTxNsF3Jvykc2ZaP3x+0/IN8h+1LVh L/Rw== X-Forwarded-Encrypted: i=1; AFNElJ8YHywQ4H6Lr5YdgZMVJbMHTooEdzVkMP0qaiT3UtJQ+JGsT+BaBtxHP1YFkyErDVnkoOVIqmYjEKGhB0c=@vger.kernel.org X-Gm-Message-State: AOJu0YyfhOb4nV5tx9D+TU+zvnxlXFKMjzBn1hhZT1OcHhUqxox3rI61 HYfhhPuPuOATbXMAltEJ+tbvMXBd0jKTJs1O7kgAtbS4IKnQH+SdzqAhsQDwsbnvcKU= X-Gm-Gg: AeBDietYqMaxP6ipI2SCAXHfrlu+cMXaG0igi4fWH68/gOkwHw7V16bpd/o+xMu97vJ TlsTBJjnsxtzueklXQ/8Wv1VsxAF0T5Rx9a4bXEUG5JP922d4LA5uL+dfm02Hr9tl1QKpz+NKkv fJ2Wff5GbsbCUuDIKILOEDJESudhmRF0Bz271cGjQG6IE7Zzg5RO7VoPCDjghoygRtZF5WOW5D8 zm7bWdz7XYegb/GF4OPomxbbWSU0LRxu0C1znmyWPtvrhqAA6SC1O+3XnIqRuLF2798j8gTCpjS VLKEifpbBvkKaAUr1VxW5KTWpE5uZNACgZI28lffp1m59E2NNgpIo0V8OuYlz8IIevmR1db2KfO xEw9YeSUyUM+8EDFxHaq8pGrJiaix4u78Xch3TuL7KPCjj5K1TiDNlRPMdnbFA81bAeeRTXbp4y 6M/1nQ67+MzaWyabx0QfIv8ONLvM9BJfZMjw== X-Received: by 2002:a05:600c:a30a:b0:48a:906b:14ca with SMTP id 5b1f17b1804b1-48a9865f452mr132012925e9.20.1777919718469; Mon, 04 May 2026 11:35:18 -0700 (PDT) Received: from [127.0.0.1] ([2804:1bc4:224:7800:585c:db3a:fcb:e21f]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-44a98b76eddsm26745511f8f.34.2026.05.04.11.35.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 11:35:18 -0700 (PDT) From: Marcos Paulo de Souza Date: Mon, 04 May 2026 15:34:45 -0300 Subject: [PATCH v5 4/6] selftests: livepatch: Check if patched sysfs attribute exists 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: 7bit Message-Id: <20260504-lp-tests-old-fixes-v5-4-0be26d94ab9a@suse.com> References: <20260504-lp-tests-old-fixes-v5-0-0be26d94ab9a@suse.com> In-Reply-To: <20260504-lp-tests-old-fixes-v5-0-0be26d94ab9a@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 , marcos@mpdesouza.com X-Mailer: b4 0.15-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1777919697; l=6526; i=mpdesouza@suse.com; s=20231031; h=from:subject:message-id; bh=6P0e0A8QxWyaPvsGL9j3Ar96CdheOubVPAEIrUABQpk=; b=y69XL2WyXkyzt8uN7FS65jaMSY6e0SmCV4WJV28ti3cJxYhyNJwnzXRRZnOWqx+dT9BFCQckL ldeTaiwTJ7gD72w0P+7oAsZqJYAAtlDXHJtR+/aHBuk8mj0uG7oYDPV X-Developer-Key: i=mpdesouza@suse.com; a=ed25519; pk=/Ni/TsKkr69EOmdZXkp1Q/BlzDonbOBRsfPa18ySIwU= The commit bb26cfd9e77e ("livepatch: add sysfs entry "patched" for each klp_object") was merged in v6.1, introducing a new sysfs attribute. In order to run the selftests on older kernels, check if given kernel has support for the attribute. If the attribute is not supported, skip the checks. Along with this change, use MOD_LIVEPATCH2 variable instead of reassigning a new value to MOD_LIVEPATCH, and also use the variable names in the check_result, to avoid using the module names. Signed-off-by: Marcos Paulo de Souza --- tools/testing/selftests/livepatch/test-sysfs.sh | 87 +++++++++++++------------ 1 file changed, 47 insertions(+), 40 deletions(-) diff --git a/tools/testing/selftests/livepatch/test-sysfs.sh b/tools/testing/selftests/livepatch/test-sysfs.sh index 58fe1d96997c..7fa2223f9533 100755 --- a/tools/testing/selftests/livepatch/test-sysfs.sh +++ b/tools/testing/selftests/livepatch/test-sysfs.sh @@ -8,6 +8,8 @@ MOD_LIVEPATCH=test_klp_livepatch MOD_LIVEPATCH2=test_klp_callbacks_demo MOD_LIVEPATCH3=test_klp_syscall +HAS_PATCH_ATTR=0 + setup_config # - load a livepatch and verifies the sysfs entries work as expected @@ -25,8 +27,12 @@ check_sysfs_rights "$MOD_LIVEPATCH" "stack_order" "-r--r--r--" check_sysfs_value "$MOD_LIVEPATCH" "stack_order" "1" 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" + +if does_sysfs_exist "$MOD_LIVEPATCH/vmlinux" "patched"; then + check_sysfs_rights "$MOD_LIVEPATCH" "vmlinux/patched" "-r--r--r--" + check_sysfs_value "$MOD_LIVEPATCH" "vmlinux/patched" "1" + HAS_PATCH_ATTR=1 +fi disable_lp $MOD_LIVEPATCH @@ -45,48 +51,49 @@ livepatch: '$MOD_LIVEPATCH': completing unpatching transition livepatch: '$MOD_LIVEPATCH': unpatching complete % rmmod $MOD_LIVEPATCH" -start_test "sysfs test object/patched" +if [[ "$HAS_PATCH_ATTR" == "1" ]]; then + start_test "sysfs test object/patched" -MOD_LIVEPATCH=test_klp_callbacks_demo -MOD_TARGET=test_klp_callbacks_mod -load_lp $MOD_LIVEPATCH + MOD_TARGET=test_klp_callbacks_mod + load_lp $MOD_LIVEPATCH2 -# 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" + # check the "patch" file changes as target module loads/unloads + check_sysfs_value "$MOD_LIVEPATCH2" "$MOD_TARGET/patched" "0" + load_mod $MOD_TARGET + check_sysfs_value "$MOD_LIVEPATCH2" "$MOD_TARGET/patched" "1" + unload_mod $MOD_TARGET + check_sysfs_value "$MOD_LIVEPATCH2" "$MOD_TARGET/patched" "0" -disable_lp $MOD_LIVEPATCH -unload_lp $MOD_LIVEPATCH + disable_lp $MOD_LIVEPATCH2 + unload_lp $MOD_LIVEPATCH2 -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 'test_klp_callbacks_mod' -test_klp_callbacks_demo: pre_patch_callback: test_klp_callbacks_mod -> [MODULE_STATE_COMING] Full formed, running module_init -test_klp_callbacks_demo: post_patch_callback: test_klp_callbacks_mod -> [MODULE_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" + check_result "% insmod test_modules/$MOD_LIVEPATCH2.ko +livepatch: enabling patch '$MOD_LIVEPATCH2' +livepatch: '$MOD_LIVEPATCH2': initializing patching transition +$MOD_LIVEPATCH2: pre_patch_callback: vmlinux +livepatch: '$MOD_LIVEPATCH2': starting patching transition +livepatch: '$MOD_LIVEPATCH2': completing patching transition +$MOD_LIVEPATCH2: post_patch_callback: vmlinux +livepatch: '$MOD_LIVEPATCH2': patching complete +% insmod test_modules/$MOD_TARGET.ko +livepatch: applying patch '$MOD_LIVEPATCH2' to loading module '$MOD_TARGET' +$MOD_LIVEPATCH2: pre_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init +$MOD_LIVEPATCH2: post_patch_callback: $MOD_TARGET -> [MODULE_STATE_COMING] Full formed, running module_init +$MOD_TARGET: test_klp_callbacks_mod_init +% rmmod $MOD_TARGET +$MOD_TARGET: test_klp_callbacks_mod_exit +$MOD_LIVEPATCH2: pre_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away +livepatch: reverting patch '$MOD_LIVEPATCH2' on unloading module '$MOD_TARGET' +$MOD_LIVEPATCH2: post_unpatch_callback: $MOD_TARGET -> [MODULE_STATE_GOING] Going away +% echo 0 > $SYSFS_KLP_DIR/$MOD_LIVEPATCH2/enabled +livepatch: '$MOD_LIVEPATCH2': initializing unpatching transition +$MOD_LIVEPATCH2: pre_unpatch_callback: vmlinux +livepatch: '$MOD_LIVEPATCH2': starting unpatching transition +livepatch: '$MOD_LIVEPATCH2': completing unpatching transition +$MOD_LIVEPATCH2: post_unpatch_callback: vmlinux +livepatch: '$MOD_LIVEPATCH2': unpatching complete +% rmmod $MOD_LIVEPATCH2" +fi start_test "sysfs test replace enabled" -- 2.54.0