From nobody Tue Jun 9 00:49:11 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.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 57E0C38D6B8 for ; Sun, 24 May 2026 23:50:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666648; cv=none; b=UUc/fP9BbadO5Ecc8/v7toAl2VSuGkauFIS6/oRkjGI6YzoNci2WzF3W42/FVXEwY+bBlWCgTdHKq9+IFkUO/U5pDpS6aW2htYQjpZgRWK/M6zX+tSOUpAPIGD5K8wYB7nalhUGc8L04kgU/XFQiexxGfAUtzQHuoqYDrnYlqI4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666648; c=relaxed/simple; bh=lrUQ+ASPU3xAum/aWZ6YpYQB/mezdh2Eah+p4RDAlFk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WnFkbJgqei6rJd08RAGniWU4wVckiqovoGsGloTePL6kuY65gdYBy48bK5nsAmQ81i78SZkb9ALHL0XW6Qnr1mxhMJvYTCsZlO7IOO8aFbe/kNMWZ6B+DAexBXWRHwFKLVSXf2gce9NN5Qu527AUHmhGaVokzFBtJ0SPdiSZHiU= 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=Cp+7TWTU; arc=none smtp.client-ip=209.85.221.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="Cp+7TWTU" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-44e5624c053so5397744f8f.2 for ; Sun, 24 May 2026 16:50:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1779666645; x=1780271445; 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=WIsAnhC13Ci6OZvSY3IyfdrGYvDfHjgHhajtnryGtOQ=; b=Cp+7TWTUPHOVA9zL2NzFZxmvJGDbs6LdKd9ZUNWNJaDjlkJ2/CjmhMgZa0v+jNBIBc PQ8XJL4ZYcmqy2Oy18Vqi5mzVml+ZrIcD2Zg2zR+SftFu5FWSKti4n0OvzPAqXXjOjf3 hScbm/WMigMJStPaZV2exCrqTq7c1liOkKAoJVWzko8lboPXVSCvChpmNXqZvvwPNJNO u+kkEI88i07L79j/XK3kJ42F0HJH64MwU6nu8HxEnrF1N14hQuNnbUlEOvYF45WQCdjH OrFsMRt5wNHcb0MpRRd2EgKZzLTWpEzdA0hS/AzLyjT6Avco0XSVzJh+PyDtFAkd+JCT wN3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779666645; x=1780271445; 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=WIsAnhC13Ci6OZvSY3IyfdrGYvDfHjgHhajtnryGtOQ=; b=m8QSc6/rTnPOqKQgKgxYnm5d9CoTXZyb2Q/SdtIhJyKY7yuJA7tSQP5KMlosHlqh7Z Jx4xbVHfMktX9pHZH5kyYPAlWiEJorSKsp0X9MNIOmJufDJBQWYE1wEjLsyVvRafiPyV IQ0AELQdBj8DKTUIWOyeXinRuuDUvsacEgeeHy3DxMIGFl/tLy6sc5dUvgW3CdJVfzCf aa43QUYb1+fVkmLhVqQXuklwh8fXMXxbTcEdb3Qxltbpsl18UFBPQnkHjE9KigPeWkXV fRMtweOrPnDIU8p3XkMjRaMp2ukRUncO5AzSb4Ay1zmzCOzuTvWXmPisFrTh/d0CWztu p9PQ== X-Forwarded-Encrypted: i=1; AFNElJ8pvtA779QN2c/pucBeEZ1fs6Wg7WP3Xl6XTWwAcFI9ON7WUAwhiOBjrOYbn4VgDgIwgAjxgWgsUcODDl0=@vger.kernel.org X-Gm-Message-State: AOJu0Yx9+6Y5iy1lPa19zEfiDg+UqC44DD1ipcP+NTWRIqXxwjrkTFsP iQCvDtRnOWq4Dq9XjMpukWfvlucYZtI+U9RlxbRK82QqZbip4fNggRqltnYiVkSL9sg= X-Gm-Gg: Acq92OGi9rBQlgExDtgIOLmsbYrpfP+yZkIV3tDWo9PA8pnMo+H3yWBVgYZz91Nra0D 5LF6+DLPc7OfO64kOjchJ2YIpj0FSu2sefa9Ds6p77ctvz+OG5mP96WDK7F/iIYwj5xNLUBSu/S Oi1y1ptfpAMP2n/5I4Ur941wIoW1NghdLz22iYI2HUjuzs3TWj2oONcGC1Ya99ErrP5QEDUqzSJ DfEpDF4/ACxbCh9DFBNn0ZJceZ/aGEAXMjnIceWZYf6KyctnRbDSiXuvoGBogiKLyyo4xHq2thd n90HAULLxrnMYWYiIxTVqTZMaSjiuPLdqVBgQAAJAXhrMHyhgrv5fz0gPXptLiy9eyCvDeR3iGQ IevTinfCZtSiGIJUIniiJjCklUvcVKfGpfA+3AjveKEJZaQDTjQXV2W6LhgssNHU+91SluI0fP7 o83Fd+Uq6OS8jzhtwQF78XFyk= X-Received: by 2002:a05:6000:1a87:b0:43f:e2b7:7160 with SMTP id ffacd0b85a97d-45eb3673319mr21805862f8f.4.1779666644786; Sun, 24 May 2026 16:50:44 -0700 (PDT) Received: from [127.0.0.1] ([2804:1bc4:224:7800:585c:db3a:fcb:e21f]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45eb6c9de2dsm21698074f8f.4.2026.05.24.16.50.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 May 2026 16:50:44 -0700 (PDT) From: Marcos Paulo de Souza Date: Sun, 24 May 2026 20:50:30 -0300 Subject: [PATCH 1/4] selftests: livepatch: Introduce _remove_mod function 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: <20260524-livepatch-unload-on-fail-v1-1-7465de7f741d@suse.com> References: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@suse.com> In-Reply-To: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@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=1779666636; l=1399; i=mpdesouza@suse.com; s=20231031; h=from:subject:message-id; bh=lrUQ+ASPU3xAum/aWZ6YpYQB/mezdh2Eah+p4RDAlFk=; b=EYzbJCAGfZmnkCH3w3VcEoq2r+ahV3xg5Tgv81iN5gabPMRVlxE6dwmHqn2nM86vBNPXlKCsg yhqpacu1krLC/hwUllBDrlnA5U17sV8RlabxL9iEDKvL+T74Q/qfkzI X-Developer-Key: i=mpdesouza@suse.com; a=ed25519; pk=/Ni/TsKkr69EOmdZXkp1Q/BlzDonbOBRsfPa18ySIwU= This new function will be used in the next patch to remove loaded modules when a testcase fails. Signed-off-by: Marcos Paulo de Souza --- tools/testing/selftests/livepatch/functions.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing= /selftests/livepatch/functions.sh index 2bc50271729c..3ec0b7962fc5 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -241,9 +241,10 @@ function load_failing_mod() { log "$ret" } =20 -# unload_mod(modname) - unload a kernel module +# _remove_mod(modname) - Internal function to remove a loaded module. +# Use unload_mod() instead, which also updates TEST= _MODS tracking. # modname - module name to unload -function unload_mod() { +function _remove_mod() { local mod=3D"$1" =20 # Wait for module reference count to clear ... @@ -261,6 +262,14 @@ function unload_mod() { die "failed to unload module $mod (/sys/module)" } =20 +# unload_mod(modname) - unload a kernel module +# modname - module name to unload +function unload_mod() { + local mod=3D"$1" + + _remove_mod "$mod" +} + # unload_lp(modname) - unload a kernel module with a livepatch # modname - module name to unload function unload_lp() { --=20 2.54.0 From nobody Tue Jun 9 00:49:11 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 287283B6C13 for ; Sun, 24 May 2026 23:50:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666652; cv=none; b=hGeL9SQNdzYsAoBM/PIfVoMfkn8lfT+QtMT6ZRWRcURyEG/mfoYv4ROiIXyYGR/2g4axIELWmeVHaqT5KiT5FO1t+M7FXUnJkxHCVerk32FGkEOLeEGkcgo7aqIvOMbolJGx2ErOhqanKpbfahzrmr0DdTECDNlq7VhhnmK9Bh0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666652; c=relaxed/simple; bh=8ylJrm4gNzXVcl53g914hH7zMuE5tvlB0gFHZn4rj4M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=d96uAI/VcupuquoT8npXqvDnLfJ7jXf5l2cGanw82vZZL1IeBXmvfwOXBReyzPOHKFWGAY8YgLSQE236qR45a4adXeC4tjG6yCV2f6yLqZc9xND+GumRTdkShsNPmfrEM1NwaRNVUmW2RBiA+BB4GOnB/AQNGK8orKrLHob9i3w= 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=SJfE+m26; arc=none smtp.client-ip=209.85.128.42 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="SJfE+m26" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-4896c22fcbaso75843995e9.0 for ; Sun, 24 May 2026 16:50:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1779666649; x=1780271449; 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=f6YNn0fcdFecPZmRv6CDovwT/SpsvUpXOiglKkzdZnk=; b=SJfE+m26pAmZNXQt7rl9M+Fo1dHOc1GplEotfj6CG90PK/wrtiCgyUZLNC09WHXmAM 9/wJ7dtOB2xJkK0W5jyjDnnkWg3MbgkSVedJ9ILh/F8DF8wxP1P5JH5ojnzOVzoyMeVl tRy2Oy2U616AGWM7n6w4kYLkhBPq8pE37X/MsDQOduXuhGwRZRhfYEnnAGEhsyF+QgCw tDfYgGhjd89uyauACMgZMuUe52aTxZk8FjeCzRTLxe276Q4HKWEFfxko0soUzOdtZjPY oKLI57xZU+4gaxtt5wv1IwVAA7+iAZvFp5m7Mna19RG4NzdYc6i07y4w52SYgsOTbSHa 6sXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779666649; x=1780271449; 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=f6YNn0fcdFecPZmRv6CDovwT/SpsvUpXOiglKkzdZnk=; b=RV6diVc+COjRHwCArJXVXf1rBiXaZ+5+sBGqpViPF6kh77NlPArwJFCcaxpNHQDr9d eNqt8RDjaRWTvkLVGg7dv99nKYaoYwFrOKqYU9ENGA8rUGHoKJF8eRklguLdTU5+T5dj LyAfjtpDd0dY+lA4Axy4c3RYEC0Sr9L/g/SsD2ixEoVYyRAQ5O8wehUTg4zRdtAanxwf 5y0/j9EWEgKUx9eN3CTFm/ij9W0XGhhGno6kzr/cE6POjuZm3gfQ9A3ECj72XffzS1Ml +5cjmImQHbIBceixmDThLIsaq1ezs6CTXdv5nZMinIrnZ3jQ8crah6gbk3dOuySqq32x 7/lg== X-Forwarded-Encrypted: i=1; AFNElJ+V7ONwsc1OBrbYdh3ZveaPuB6jkvA8b01bfQUuHXXNvZXAo87mtWa22MMmdMFW/segtUhN+dAL6fdljzY=@vger.kernel.org X-Gm-Message-State: AOJu0Yx5vUTUrxQMtVGlEbveLj0TSMhJsupLw8vRIj30YYjz/nVlrnw3 20iwxcz4zRn10BHJhCQRZyakkneEJXKwgbXsxyPFoU1JDqi8bhRZKSASdSeQufuLnUE= X-Gm-Gg: Acq92OFH/W3esO4r3cmGvwF0zogiobrT651ZIRMotxpp0zFXDPt/5e0cJeFzCWA09DO 2Tl+PJvMaZqZMDXo6IXI4X3eWij0Ddci/aruYmgBis1ftg/T6ra+HUBdYnIJFMGlrdOLTcO/IkK wv8SDUW4RFZf/qdhN4MrZPqA2hE/Gj+E7ASHTuFjWb+vXI/Fg8Yz37UmYZsX7G0Y+KD/H9mkpOA f/56XwJ9DLfQja7whzXlJeHOZzA/2wNiCoAp7YUL/2/LEWiqZFMck3JX/gTEc9PHzVerjjPZjF6 wVniLpRH6iKYyVoSjuuvaOpuIiRezegVG06GcrfI1rAIsPMRLpK6WAHQI/Krry6RBjPiTFPpMmO t4Es2yQuy77jIewyqPDmzYzbcjvAFRWGI2CR9VQVhr/9kOPoiPILf/JG8nOBFjF1S6JV2lj6AgT to+KjgQ7wCXpldXf+sOjn0zzo= X-Received: by 2002:a7b:cde1:0:b0:489:1f04:96c3 with SMTP id 5b1f17b1804b1-4904248b137mr123733665e9.2.1779666649419; Sun, 24 May 2026 16:50:49 -0700 (PDT) Received: from [127.0.0.1] ([2804:1bc4:224:7800:585c:db3a:fcb:e21f]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45eb6c9de2dsm21698074f8f.4.2026.05.24.16.50.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 May 2026 16:50:49 -0700 (PDT) From: Marcos Paulo de Souza Date: Sun, 24 May 2026 20:50:31 -0300 Subject: [PATCH 2/4] selftests: livepatch: Remove leftover modules when a testcase fails 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: <20260524-livepatch-unload-on-fail-v1-2-7465de7f741d@suse.com> References: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@suse.com> In-Reply-To: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@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=1779666636; l=2469; i=mpdesouza@suse.com; s=20231031; h=from:subject:message-id; bh=8ylJrm4gNzXVcl53g914hH7zMuE5tvlB0gFHZn4rj4M=; b=TWGoyFXs5NKuk8AGPH545Wuz7+klYGHy3CcSOG+Fnnm5SxVeZI3XIYgtSHk9VGybJCOd2Wnt6 90asTv0ug6yBKrHd/IuGuzUXT2eS87+RMTRXaS2GKneHXKSrcpxk2eu X-Developer-Key: i=mpdesouza@suse.com; a=ed25519; pk=/Ni/TsKkr69EOmdZXkp1Q/BlzDonbOBRsfPa18ySIwU= The current livepatch selftest scripts load modules, run tests and unloads them. If the test fails, it can leave loaded modules behind, and in some cases making it impossible to run the next tests. This approach tracks down the loaded modules, and in case of a test failure, or premature exit of the script, the cleanup function will be called by the trap installed on setup_config function. The cleanup function iterates over the list of leftover loaded modules, unloading them. The function also checks if the given module is a livepatch, properly disabling it before unloading. Signed-off-by: Marcos Paulo de Souza --- tools/testing/selftests/livepatch/functions.sh | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing= /selftests/livepatch/functions.sh index 3ec0b7962fc5..25f137003865 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -15,6 +15,8 @@ if [[ -e /sys/kernel/tracing/trace ]]; then else SYSFS_TRACING_DIR=3D"$SYSFS_DEBUG_DIR/tracing" fi +# List of loaded modules used in tests +TEST_MODS=3D() =20 # Kselftest framework requirement - SKIP code is 4 ksft_skip=3D4 @@ -125,6 +127,14 @@ function set_ftrace_enabled() { } =20 function cleanup() { + # Remove leftover modules in reverse order to handle dependencies + for mod_item in "${TEST_MODS[@]}"; do + if is_livepatch_mod "$mod_item"; then + disable_lp "$mod_item" + fi + _remove_mod "$mod_item" + done + pop_config } =20 @@ -181,6 +191,9 @@ function __load_mod() { # Wait for module in sysfs ... loop_until '[[ -e "/sys/module/$mod" ]]' || die "failed to load module $mod" + + # Store the module in the modules list + TEST_MODS+=3D("$mod") } =20 =20 @@ -262,12 +275,20 @@ function _remove_mod() { die "failed to unload module $mod (/sys/module)" } =20 -# unload_mod(modname) - unload a kernel module +# unload_mod(modname) - unload a kernel module and remove it from TEST_MODS # modname - module name to unload function unload_mod() { local mod=3D"$1" =20 _remove_mod "$mod" + + # Remove from TEST_MODS array + for i in "${!TEST_MODS[@]}"; do + if [[ "${TEST_MODS[$i]}" =3D=3D "$mod" ]]; then + unset 'TEST_MODS[$i]' + break + fi + done } =20 # unload_lp(modname) - unload a kernel module with a livepatch --=20 2.54.0 From nobody Tue Jun 9 00:49:11 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 7D87F3B83EC for ; Sun, 24 May 2026 23:50:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666657; cv=none; b=fOpcZz/USjEkWANE6wwt4K+ktIgHtvTnvE39uJJMZXO2lGTR/F/ymu9pj3hCTDrwjKfnSdAzt43e45yr9F6AgKoAEhfCfoXpEBVSqDp2oKe1KGnsBWoWk5EY58RrFnX1XH9ue67DPnLYiYUIIVgUX9zsEQBp5GYEQ7LZq9XYSG8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666657; c=relaxed/simple; bh=I7SegwAIOnn8Zt1SWPZf8rhhwlN2a4741JSURcMiDOw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=WWnr+WNxeRVJAIyQNDLhFsUjKQQQ8ayy3+aEn7IwsHzzIP4mAaExmrUAoN6zltCBfFwTY/0zQMeZa6e8tnKivQqEvQHYz70/u8dtbv9oavoJ5f6YOdSTwiNubRPTNjHBdhn5d9QuEQBHJdiEOtRLgWK90GehhbhALb7HQkJ4WuA= 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=bzDU8MgZ; arc=none smtp.client-ip=209.85.221.51 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="bzDU8MgZ" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-44e5624c053so5397775f8f.2 for ; Sun, 24 May 2026 16:50:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1779666654; x=1780271454; 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=sEd9trovmFOEJuYQnYpCKWBckKvvMl+JmjSp64a8XTE=; b=bzDU8MgZd5a9/D+mmIT47q+jzXwQgIqHosG/qplwe7BthAo0TfKSgmKLSzb/aq5opX bHpMLEMBhHg0axBMkQt6q4uVONkbgOGMjUXtSuQLgDoCtCMiCPXVzbzGa/I7aVpNbj4J yy6PvF3SS+LQ0xKK10i9Hx2t9NPWFvU+1VMRGsck1zrcDQgsucEDSTFlj93IUbhass2d SBaGHfxXItxTQn8b4LuiOPNANfP+s7NxpgyUsz6n3C4sq9Ec6F+9A2IwRXfukTsFDr2u 3FNEuJAEp01v7NHS5tbGvopaN/8ucQsckNIXfzhiIrM7RBAy62DeiUNn4Yvx7Ym3nQyD Dg9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779666654; x=1780271454; 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=sEd9trovmFOEJuYQnYpCKWBckKvvMl+JmjSp64a8XTE=; b=orGJZgfshC3tMag1bTBPqGxwfzhTp1PJi6xBQoMfU6AGGv2hF4IVT1EWzVrfTGEYfp K4k0XqBlfW9xf/5GvR+gILRHDP7rsHcaKWOuW67UgB0vIx9BDjGTP05QIUxu2Z6qgt+p NjmGJiutTL/CFTw6amLnmlVycrwlyeWsdhEzMmJsEzPDdIohCzptwQHXEIvKOe9Xu5+e 86d1ind55B85YdudYie29oBUbNFp0wdKgBiLOkGRrkufvvnE3c4p8u5WtRWhS7r5vHgz aOnwxHNxPPq5nLWldZTz60BPDiSmZ7N/Mm7U/6Knfdp6R4BjXh4I1iQzT1n61o6WtvNC 1lNQ== X-Forwarded-Encrypted: i=1; AFNElJ+qk+hc0sMr0wyXHHjx27VUIErfFQ+e4gREtPnUwgjgz8zilHv5foqNC4zimJfu07ttds8I8FwHlbCChqM=@vger.kernel.org X-Gm-Message-State: AOJu0YyEq8sf2mhoNsT93aBe/21b/OZB3H8d8ntpDh7103CxmrpTqoBK rehv62u/z7RlTR3spcZH7ZHNy6AF/XTZq57IV7X4lpj+CP8h7qSba4yCJLqBhmqH/70= X-Gm-Gg: Acq92OFAv9zjZms0f/6y/zRLw5TYManOZ4qdJn0qvhH4AaSBxzqikL/WF0PSz774EIJ C/jPgeR3OZ0N9ccvF7o55gtwQpXmiooqpSVEA1MK0j/6EKcUztInaU+memVv4jPwbqouXdansVw SrJOc06ot+zmUGisabw+RMGOU7RI1POQxe33+9L8qr53GcSNfqyhKd3eT3mD62Y8nOywF/25hMx T8lm6ax/TSrulJfpt8unRyx+6KJ6xUwiktd77YQ1S+Lbxm4vCJIGjt0MWrlvnQQ5AF+9Lgr5UCG 81yMSUQoRU3dSWP58Qcld4rVvUTBa3eKk+c8wjBy8mk268xWqQk2sIKuJIC+5bbw+HFLG5ccHyv Wm2F237fiOJxfACPd5QOUkIzrekYsIfnuIboxVo5Iv/eJJrRmL+5Hbo/1/H/oqr2XAxXRtSgAq7 eIjtMuAdHejkFGcyRR83JnUXQ= X-Received: by 2002:a05:6000:1848:b0:43c:f583:126a with SMTP id ffacd0b85a97d-45eb3681dd5mr21176568f8f.14.1779666653913; Sun, 24 May 2026 16:50:53 -0700 (PDT) Received: from [127.0.0.1] ([2804:1bc4:224:7800:585c:db3a:fcb:e21f]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45eb6c9de2dsm21698074f8f.4.2026.05.24.16.50.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 May 2026 16:50:53 -0700 (PDT) From: Marcos Paulo de Souza Date: Sun, 24 May 2026 20:50:32 -0300 Subject: [PATCH 3/4] selftests: livepatch: Adapt mod_target module to pass on 4.12 kernels 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: <20260524-livepatch-unload-on-fail-v1-3-7465de7f741d@suse.com> References: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@suse.com> In-Reply-To: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@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=1779666636; l=7263; i=mpdesouza@suse.com; s=20231031; h=from:subject:message-id; bh=I7SegwAIOnn8Zt1SWPZf8rhhwlN2a4741JSURcMiDOw=; b=1uJcE2ihxX9xMhy8tFuu81DedgR/I+bCRVHF3aRExvGqRtd/379RSWq8vg8SYgCqJCQYEGxLY ycGoA8VvjToC/kRcqnAweBnCbRu6ekcKcQTE24TaC5HIl81w+75k/cd X-Developer-Key: i=mpdesouza@suse.com; a=ed25519; pk=/Ni/TsKkr69EOmdZXkp1Q/BlzDonbOBRsfPa18ySIwU= Use the stable module_param_cb API instead of proc_fs for exposing module state. This approach is compatible with kernel 4.12 and later. The end result is the same: the module has a function that shows a string, which is later livepatched to show a different string. The only difference is that the file being checked is now a module parameter instead of a procfs entry. Signed-off-by: Marcos Paulo de Souza --- tools/testing/selftests/livepatch/functions.sh | 1 + .../testing/selftests/livepatch/test-livepatch.sh | 23 +++++++++++-------= ---- .../livepatch/test_modules/test_klp_mod_patch.c | 11 +++++------ .../livepatch/test_modules/test_klp_mod_target.c | 22 ++++++++++--------= --- 4 files changed, 27 insertions(+), 30 deletions(-) diff --git a/tools/testing/selftests/livepatch/functions.sh b/tools/testing= /selftests/livepatch/functions.sh index 25f137003865..c8c99851c3a2 100644 --- a/tools/testing/selftests/livepatch/functions.sh +++ b/tools/testing/selftests/livepatch/functions.sh @@ -7,6 +7,7 @@ MAX_RETRIES=3D600 RETRY_INTERVAL=3D".1" # seconds SYSFS_KERNEL_DIR=3D"/sys/kernel" +SYSFS_MODULE_DIR=3D"/sys/module" SYSFS_KLP_DIR=3D"$SYSFS_KERNEL_DIR/livepatch" SYSFS_DEBUG_DIR=3D"$SYSFS_KERNEL_DIR/debug" SYSFS_KPROBES_DIR=3D"$SYSFS_DEBUG_DIR/kprobes" diff --git a/tools/testing/selftests/livepatch/test-livepatch.sh b/tools/te= sting/selftests/livepatch/test-livepatch.sh index c44c5341a2f1..06aacf0f4dc7 100755 --- a/tools/testing/selftests/livepatch/test-livepatch.sh +++ b/tools/testing/selftests/livepatch/test-livepatch.sh @@ -198,26 +198,25 @@ livepatch: '$MOD_REPLACE': unpatching complete % rmmod $MOD_REPLACE" =20 =20 -# - load a target module that provides /proc/test_klp_mod_target with -# original output -# - load a livepatch that patches the target module's show function -# - verify the proc entry returns livepatched output +# - load a target module with module_param_cb get data with original output +# - load a livepatch that patches the target module's get function +# - verify the parameter get function returns the livepatched output # - disable and unload the livepatch -# - verify the proc entry returns original output again +# - verify the parameter get function returns the original output again # - unload the target module =20 start_test "module function patching" =20 load_mod $MOD_TARGET =20 -if [[ "$(cat /proc/$MOD_TARGET)" !=3D "$MOD_TARGET: original output" ]] ; = then +if [[ "$(cat $SYSFS_MODULE_DIR/$MOD_TARGET/parameters/klp_mod_arg)" !=3D "= $MOD_TARGET: original output" ]] ; then echo -e "FAIL\n\n" die "livepatch kselftest(s) failed" fi =20 load_lp $MOD_TARGET_PATCH =20 -if [[ "$(cat /proc/$MOD_TARGET)" !=3D "$MOD_TARGET_PATCH: this has been li= ve patched" ]] ; then +if [[ "$(cat $SYSFS_MODULE_DIR/$MOD_TARGET/parameters/klp_mod_arg)" !=3D "= $MOD_TARGET_PATCH: this has been live patched" ]] ; then echo -e "FAIL\n\n" die "livepatch kselftest(s) failed" fi @@ -225,7 +224,7 @@ fi disable_lp $MOD_TARGET_PATCH unload_lp $MOD_TARGET_PATCH =20 -if [[ "$(cat /proc/$MOD_TARGET)" !=3D "$MOD_TARGET: original output" ]] ; = then +if [[ "$(cat $SYSFS_MODULE_DIR/$MOD_TARGET/parameters/klp_mod_arg)" !=3D "= $MOD_TARGET: original output" ]] ; then echo -e "FAIL\n\n" die "livepatch kselftest(s) failed" fi @@ -252,9 +251,9 @@ $MOD_TARGET: test_klp_mod_target_exit" =20 # - load a livepatch that targets a not-yet-loaded module # - load the target module: klp_module_coming patches it immediately -# - verify the proc entry returns livepatched output +# - verify the parameter get function returns the livepatched output # - disable and unload the livepatch -# - verify the proc entry returns original output again +# - verify the parameter get function returns the original output again # - unload the target module =20 start_test "module function patching (livepatch first)" @@ -262,7 +261,7 @@ start_test "module function patching (livepatch first)" load_lp $MOD_TARGET_PATCH load_mod $MOD_TARGET =20 -if [[ "$(cat /proc/$MOD_TARGET)" !=3D "$MOD_TARGET_PATCH: this has been li= ve patched" ]] ; then +if [[ "$(cat $SYSFS_MODULE_DIR/$MOD_TARGET/parameters/klp_mod_arg)" !=3D "= $MOD_TARGET_PATCH: this has been live patched" ]] ; then echo -e "FAIL\n\n" die "livepatch kselftest(s) failed" fi @@ -270,7 +269,7 @@ fi disable_lp $MOD_TARGET_PATCH unload_lp $MOD_TARGET_PATCH =20 -if [[ "$(cat /proc/$MOD_TARGET)" !=3D "$MOD_TARGET: original output" ]] ; = then +if [[ "$(cat $SYSFS_MODULE_DIR/$MOD_TARGET/parameters/klp_mod_arg)" !=3D "= $MOD_TARGET: original output" ]] ; then echo -e "FAIL\n\n" die "livepatch kselftest(s) failed" fi diff --git a/tools/testing/selftests/livepatch/test_modules/test_klp_mod_pa= tch.c b/tools/testing/selftests/livepatch/test_modules/test_klp_mod_patch.c index 6725b4720365..ab56e57c02a8 100644 --- a/tools/testing/selftests/livepatch/test_modules/test_klp_mod_patch.c +++ b/tools/testing/selftests/livepatch/test_modules/test_klp_mod_patch.c @@ -8,17 +8,16 @@ #include #include =20 -static int livepatch_mod_target_show(struct seq_file *m, void *v) +static int livepatch_mod_target_get(char *buffer, const struct kernel_para= m *kp) { - seq_printf(m, "%s: %s\n", THIS_MODULE->name, - "this has been live patched"); - return 0; + return sprintf(buffer, "%s: %s\n", THIS_MODULE->name, + "this has been live patched"); } =20 static struct klp_func funcs[] =3D { { - .old_name =3D "test_klp_mod_target_show", - .new_func =3D livepatch_mod_target_show, + .old_name =3D "test_klp_mod_target_get", + .new_func =3D livepatch_mod_target_get, }, {}, }; diff --git a/tools/testing/selftests/livepatch/test_modules/test_klp_mod_ta= rget.c b/tools/testing/selftests/livepatch/test_modules/test_klp_mod_target= .c index 9643984d2402..1382a266825f 100644 --- a/tools/testing/selftests/livepatch/test_modules/test_klp_mod_target.c +++ b/tools/testing/selftests/livepatch/test_modules/test_klp_mod_target.c @@ -5,31 +5,29 @@ =20 #include #include -#include -#include +#include =20 -static struct proc_dir_entry *pde; - -static noinline int test_klp_mod_target_show(struct seq_file *m, void *v) +static noinline int test_klp_mod_target_get(char *buffer, const struct ker= nel_param *kp) { - seq_printf(m, "%s: %s\n", THIS_MODULE->name, "original output"); - return 0; + return sprintf(buffer, "%s: %s\n", THIS_MODULE->name, "original output"); } =20 +static const struct kernel_param_ops test_klp_mod_target_ops =3D { + .get =3D test_klp_mod_target_get, +}; + +module_param_cb(klp_mod_arg, &test_klp_mod_target_ops, NULL, 0444); +MODULE_PARM_DESC(klp_mod_arg, "The value of this argument will be livepatc= hed"); + static int test_klp_mod_target_init(void) { pr_info("%s\n", __func__); - pde =3D proc_create_single("test_klp_mod_target", 0, NULL, - test_klp_mod_target_show); - if (!pde) - return -ENOMEM; return 0; } =20 static void test_klp_mod_target_exit(void) { pr_info("%s\n", __func__); - proc_remove(pde); } =20 module_init(test_klp_mod_target_init); --=20 2.54.0 From nobody Tue Jun 9 00:49:11 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (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 E140C3B83EF for ; Sun, 24 May 2026 23:50:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666661; cv=none; b=H0KEEpy3SZUI1lL/uPCc71VVHbrm3wsdyPXsJJzngjUgb6uKUUEzbUJEtb/XA2Qoget6Tm9jyo6Xa/nrw3XKULcGQH/ioqjMMRtJE8MwPqutheZGmr+FmFwY71iu0nZPeAnaQbGF/WOh9MtNIek6FvA31x3LXYVjLdkm63+OFsw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779666661; c=relaxed/simple; bh=ZxjS4k5Wfeeih8LlvyZ7lzC258PmQVKVFUTNNulCANs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ydm6+uv5fP7+x1u/oIuIFcg4Nw9aBwC5PAZCaIpqmKtTDgTmWFXTn6ZRASuDep0ILbyMDf1ijUGTNBv1Z4zb/bGpCfVJNdhnfANojHCLEBit395vOPY6piZwO0JU6kMES+6W9+Wf/K5mgaDBoNnqHmg04sRe43+L8rJ0FvYicck= 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=gBO16XGd; arc=none smtp.client-ip=209.85.221.41 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="gBO16XGd" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-43fe62837baso5273397f8f.3 for ; Sun, 24 May 2026 16:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1779666658; x=1780271458; 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=lt6lxfl9RFsw6Y0qS/TM2FzLfwTBlZir2fyLBV9fJ4I=; b=gBO16XGdEwwQbkNKLfUKiBVtfuQZgqWxfoQ+qm1aWQ4E65c4Rx5KALuzxGlazPR06w DbvJPLzicZchgoifZSoplGjqZyxzlHn3gkGzKqmFToZc2uNET2ZdpW8t0uw7Ddugw1xf H3KfrgR4RecGP35eXdpoeAtUbr2ihCEVBEyU/se9ORoJHMmRpLztkWW4TDhnEPpSks/4 n/D40BnCEqxqqUl8LMoariTN/VJ9AzUq9JYamkur6uHas+ah/wmeL7kyoRXlV3IAzadA FIxYxWOqBl+p1ugseUi2BwOKuAQ7JA0Q3MLBUAjrJYJwK0D2VUlyJkNwEy9GU8lhpxeV BZEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779666658; x=1780271458; 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=lt6lxfl9RFsw6Y0qS/TM2FzLfwTBlZir2fyLBV9fJ4I=; b=sV8QWTrtn23LBrDYCDVzwEjRd2zxrVuoaeI+pdx+YpDbYlXBNmSRG4KipcvpJ79Lm4 LjC/gaDL9vkdrIMyM1lJNi1Mp5XygxQfXWkVpBtAMldDDFchnxI9D6lx4PxE6Hpy6Ntt sz4ugr74alMw2zTFuAOEo0GDQ8sTaVgxtI6KjQxIJ5Q47GqBaisTMeREG91+JaIxqbi5 ZB8AXhcm7i+VDaND0zc3UzS4JmQlC1bTpJxy+0VPPXgVm5qIs2cqLS1sH4UUVwj9jsK1 5eyoCwn6hcnuhA9VA0gMY3tXpuAFm3hWBnsxidTPPIdVtKfciMWlFnO1TRiXuJiqZQbU Db7Q== X-Forwarded-Encrypted: i=1; AFNElJ9Zt61jEUnkOIVJrmtwmVtY882IL5sYHQY8Xt/X5dQS4gmBXvHGNfn+byggR73YNANyakU6M7gXG0ZMpVU=@vger.kernel.org X-Gm-Message-State: AOJu0YxIQF6iF+syzmDWRb3PLo/9oUMVlr/GG8u6dyFfShVBKgZmtNPS 2n6f3RYHJl6E6DMLPc5ozr5KdficK0gjpEVli9fTu1TyQGGn+LWNmXkji7PURLEjrMk= X-Gm-Gg: Acq92OEd83ShSPkXqIMA5HRRlcmIhXPd4My/CFHtSTW0tebjDJ24ryzGWEiZWrqeKo1 0N2FZFCvoI4CvSV/0Ls/7hfgrv9atP3bYHT7axYhID4h5kFRuWO2vGob/z7npr7zh11+Dsytywh wr0BQxbifwWs/GAqS33DJ0l4L/ykVCs3oWc/kDqpe2dOBe2KztuWB/SAodxpfe38ue6PXlrxG1u AQuRZGbkgPpx99Vk8C/70rQg2eoPZsDq6Vm/S+gm93iNoo1v7uT3+SYfAuIMHa6d7P6uD8F1vSu ZtBAP8seB845ZN5K9qtILovXi07OVPRniJ7Kn7u0TFy6yHIUd5bwc51Nvh9A1gseYseWoMUrNsr Fy8e4JxJp2+15bDCaBeEtCQQyxLx4dl5L6XJ7TGV7eE8YdbjKsvdDE9/CV30WW2WW6WJHWkislg YGuwcAsP7b9KlKR0IOPOQjmXC9lmkCuw1Edw== X-Received: by 2002:a05:6000:400c:b0:45d:d092:aca4 with SMTP id ffacd0b85a97d-45eb38a81b5mr19039850f8f.4.1779666658359; Sun, 24 May 2026 16:50:58 -0700 (PDT) Received: from [127.0.0.1] ([2804:1bc4:224:7800:585c:db3a:fcb:e21f]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-45eb6c9de2dsm21698074f8f.4.2026.05.24.16.50.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 24 May 2026 16:50:58 -0700 (PDT) From: Marcos Paulo de Souza Date: Sun, 24 May 2026 20:50:33 -0300 Subject: [PATCH 4/4] selftests: livepatch: Add information about minimum kernel support 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: <20260524-livepatch-unload-on-fail-v1-4-7465de7f741d@suse.com> References: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@suse.com> In-Reply-To: <20260524-livepatch-unload-on-fail-v1-0-7465de7f741d@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=1779666636; l=956; i=mpdesouza@suse.com; s=20231031; h=from:subject:message-id; bh=ZxjS4k5Wfeeih8LlvyZ7lzC258PmQVKVFUTNNulCANs=; b=5XrQ0kqgcWWWv8O5MO8yhqPyXestGtE9OHduTomZaCX9su6x9fAEDFWl5BD7+YVaDF/moMqmN TMlikFW8tFwAwwa8YLuuiKPyCA3wxEGAWufZ6rklMI8qduGSoNBuT+7 X-Developer-Key: i=mpdesouza@suse.com; a=ed25519; pk=/Ni/TsKkr69EOmdZXkp1Q/BlzDonbOBRsfPa18ySIwU= The current livepatch selftests are compatible with kernel 4.12, so add a note about it for future developers willing to contribute with new tests. Signed-off-by: Marcos Paulo de Souza --- tools/testing/selftests/livepatch/README | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/testing/selftests/livepatch/README b/tools/testing/selft= ests/livepatch/README index d2035dd64a2b..293f4730b927 100644 --- a/tools/testing/selftests/livepatch/README +++ b/tools/testing/selftests/livepatch/README @@ -54,3 +54,6 @@ check_result(). The latter function greps the kernel's r= ing buffer for those strings for result comparison. Other utility functions include general module loading and livepatch loading helpers (waiting for patch transitions, sysfs entries, etc.) + +All new tests and test modules MUST be compatible with kernel version 4.12= and +later, including current upstream kernels. --=20 2.54.0