From patchwork Wed Mar 29 13:51:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Schier X-Patchwork-Id: 13192430 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 05AA3C74A5B for ; Wed, 29 Mar 2023 13:52:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229510AbjC2NwB (ORCPT ); Wed, 29 Mar 2023 09:52:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229708AbjC2NwA (ORCPT ); Wed, 29 Mar 2023 09:52:00 -0400 Received: from mail.avm.de (mail.avm.de [212.42.244.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9150BC2 for ; Wed, 29 Mar 2023 06:51:55 -0700 (PDT) Received: from mail-auth.avm.de (dovecot-mx-01.avm.de [212.42.244.71]) by mail.avm.de (Postfix) with ESMTPS; Wed, 29 Mar 2023 15:51:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=avm.de; s=mail; t=1680097911; bh=m1MzdyuxEEf5u0uRqJS2MGr2R18vAxupmz7GpC9+JfQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=phJE+alrEtGRVQxRq/WRUsaIJjvi9MhfAT4HbCtqTXAt3gmiSqexitmcmPUcBx2S0 jK8F3Pl9RcgrD6BcGUD91N9XAU1Dsx08VsBfGp6xcOPNrowj8YbU71Rg1qP/XtYKTR JUYEHD3MwiUQ6vHEGi/LEjMivfXPnqrY17Wt15ng= Received: from island.ads.avm.de (unknown [172.17.88.185]) by mail-auth.avm.de (Postfix) with ESMTPA id 6E2F281ECE; Wed, 29 Mar 2023 15:51:51 +0200 (CEST) Received: from island.fjasle.eu (localhost [IPv6:::1]) by island.ads.avm.de (Postfix) with ESMTP id 6652D520580; Wed, 29 Mar 2023 15:51:51 +0200 (CEST) From: Nicolas Schier Date: Wed, 29 Mar 2023 15:51:35 +0200 Subject: [PATCH v2 1/3] kmod: modprobe: Remove holders recursively MIME-Version: 1.0 Message-Id: <20230309-remove-holders-recursively-v2-1-8a8120269cc1@avm.de> References: <20230309-remove-holders-recursively-v2-0-8a8120269cc1@avm.de> In-Reply-To: <20230309-remove-holders-recursively-v2-0-8a8120269cc1@avm.de> To: linux-modules@vger.kernel.org Cc: Lucas De Marchi , Nicolas Schier X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4780; i=n.schier@avm.de; h=from:subject:message-id; bh=m1MzdyuxEEf5u0uRqJS2MGr2R18vAxupmz7GpC9+JfQ=; b=owEBbQKS/ZANAwAIAYjGvJyImm24AcsmYgBkJEJ25ZwpCZ+E5fZ0jAcJUsvuOG9fWJCNnFwrX 1NO6mpPGfmJAjMEAAEIAB0WIQQO/4WJ63TpgecLpGmIxryciJptuAUCZCRCdgAKCRCIxryciJpt uNKrD/97F9FrYFXufoXsP1MbJgYYYRl/ysaC03oYemOZIZlYSIiCJBcoZLL72uA/M6EHqsOmYiY 6inWy5jya/FOz770X0GwEKMR8qkgpywXfdZpU3jV40UTJMUTHte6CpWTAiq183oGkyYpH3nZT1D RKro6iwk5nxXfAug2fWODDAWj9igKfGTlQ+1jXi/VZAaxma7Cf9NFPp3k1NsvdbDSSQnhbcnDHA ELGzxEB0Fm1h+KiQix4Er80KYj6EMFgWyeaY+S0jPPmyl5NrJ9rINdKTxdAUziYGI4g3Je6T/8p oZTpLV5GcelAC+hbsFGmcAIJOZZKQQlzFgV6oNom8YZ7yOzFhwpMEa0zC0S/cMhUGN2t2a4vOyy 6rhDfaOXD+dFlf7lvEMGEuNqN8IXj0OtS5K+2gnq8i4q+mLScIw6Y4v3rJSKoMldlG70ZZU5hbS r6LpWJCiorri473oh744xjzs157wmdCVhnFLw30DWh0v83woH1RWgcF7fCGLZt5SATjM4yIHRS3 2XYU49YEdBAlvswvNP95Arp1nNZ9vxtXszliU6PJ9ikgwVO8+ZUZvoFuZC57qdQKWShlJYhxhV1 ujaCOu8dzIE+6P2/QtyiIJCOLQE3Z8Zih7ARgUb3Io736e1UaoPVmPfTxp6xniSv4hoFxR69BB+ kpYlOuOY8Tl4mDQ== X-Developer-Key: i=n.schier@avm.de; a=openpgp; fpr=7CF67EF8868721AFE53D73FDBDE3A6CC4E333CC8 X-purgate-ID: 149429::1680097910-56FF3D8F-8E3F6613/0/0 X-purgate-type: clean X-purgate-size: 4782 X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean Precedence: bulk List-ID: Remove holders recursively when removal of module holders is requested. Extend commit 42b32d30c38e ("modprobe: Fix holders removal") by removing also indirect holders if --remove-holders is set. For a simple module dependency chain like module3 depends on module2 module2 depends on module1 'modprobe -r --remove-holders module1' will remove module3, module2 and module1 in correct order: $ modprobe -r --remove-holders module1 --verbose rmmod module3 rmmod module2 rmmod module1 (Actually, it will do the same when specifying module2 or module3 for removal instead of module1.) As a side-effect, 'modprobe -r module3' (w/o --remove-holders) will also remove all three modules from the example above, as after removal of module3, module2 does not have any holders and the same holds for module1 after removal of module2: $ modprobe -r module3 --verbose rmmod module3 rmmod module2 rmmod module1 Without recursive evaluation of holders, modprobe leaves module1 loaded. Unfortunately, '--dry-run --remove-holders' breaks with indirect dependencies. Signed-off-by: Nicolas Schier --- I am a bit unhappy about the introduction of the 'recursive' parameter to rmmod_do_modlist() as it always holds the same value as stop_on_errors; is re-using (and renaming) possibly a better option? modprobe --remove --remove-holders --dry-run now ignores current refcounts of loaded modules when simulating removal of holders. Changes in v2: * Handle modules that have just been removed, gently * Fix --dry-run by ignoring module refcounts (_only_ for --dry-run) * Add missing kmod_module_unref_list() calls --- tools/modprobe.c | 44 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/tools/modprobe.c b/tools/modprobe.c index 3b7897c..a705f88 100644 --- a/tools/modprobe.c +++ b/tools/modprobe.c @@ -390,13 +390,27 @@ static int rmmod_do_remove_module(struct kmod_module *mod) static int rmmod_do_module(struct kmod_module *mod, int flags); /* Remove modules in reverse order */ -static int rmmod_do_modlist(struct kmod_list *list, bool stop_on_errors) +static int rmmod_do_modlist(struct kmod_list *list, bool stop_on_errors, + bool recursive) { struct kmod_list *l; kmod_list_foreach_reverse(l, list) { struct kmod_module *m = kmod_module_get_module(l); - int r = rmmod_do_module(m, RMMOD_FLAG_IGNORE_BUILTIN); + int r = 0; + + if (recursive && kmod_module_get_initstate(m) >= 0) { + struct kmod_list *holders = kmod_module_get_holders(m); + + r = rmmod_do_modlist(holders, stop_on_errors, + recursive); + + kmod_module_unref_list(holders); + } + + if (!r) + r = rmmod_do_module(m, RMMOD_FLAG_IGNORE_BUILTIN); + kmod_module_unref(m); if (r < 0 && stop_on_errors) @@ -448,15 +462,17 @@ static int rmmod_do_module(struct kmod_module *mod, int flags) } /* 1. @mod's post-softdeps in reverse order */ - rmmod_do_modlist(post, false); + rmmod_do_modlist(post, false, false); /* 2. Other modules holding @mod */ if (flags & RMMOD_FLAG_REMOVE_HOLDERS) { struct kmod_list *holders = kmod_module_get_holders(mod); - err = rmmod_do_modlist(holders, true); + err = rmmod_do_modlist(holders, true, true); if (err < 0) goto error; + + kmod_module_unref_list(holders); } /* 3. @mod itself, but check for refcnt first */ @@ -472,9 +488,16 @@ static int rmmod_do_module(struct kmod_module *mod, int flags) } } - if (!cmd) - err = rmmod_do_remove_module(mod); - else + if (!cmd) { + int state = kmod_module_get_initstate(mod); + + if (state < 0) { + /* Module was removed during recursive holder removal */ + err = 0; + } else { + err = rmmod_do_remove_module(mod); + } + } else err = command_do(mod, "remove", cmd, NULL); if (err < 0) @@ -488,14 +511,14 @@ static int rmmod_do_module(struct kmod_module *mod, int flags) kmod_list_foreach(itr, deps) { struct kmod_module *dep = kmod_module_get_module(itr); if (kmod_module_get_refcnt(dep) == 0) - rmmod_do_remove_module(dep); + rmmod_do_module(dep, flags); kmod_module_unref(dep); } kmod_module_unref_list(deps); } /* 5. @mod's pre-softdeps in reverse order: errors are non-fatal */ - rmmod_do_modlist(pre, false); + rmmod_do_modlist(pre, false, false); error: kmod_module_unref_list(pre); @@ -975,6 +998,9 @@ static int do_modprobe(int argc, char **orig_argv) fstat(fileno(stderr), &stat_buf))) use_syslog = 1; + if (remove_holders && dry_run) + ignore_loaded = 1; + log_open(use_syslog); if (!do_show_config) { From patchwork Wed Mar 29 13:51:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Schier X-Patchwork-Id: 13192431 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38E51C74A5B for ; Wed, 29 Mar 2023 13:52:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229909AbjC2NwE (ORCPT ); Wed, 29 Mar 2023 09:52:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55726 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229708AbjC2NwE (ORCPT ); Wed, 29 Mar 2023 09:52:04 -0400 Received: from mail.avm.de (mail.avm.de [212.42.244.94]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 40FC41BF6 for ; Wed, 29 Mar 2023 06:51:57 -0700 (PDT) Received: from mail-auth.avm.de (dovecot-mx-01.avm.de [212.42.244.71]) by mail.avm.de (Postfix) with ESMTPS; Wed, 29 Mar 2023 15:51:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=avm.de; s=mail; t=1680097912; bh=KPXGwTg8jX9qX0oH0D+aA47k6PjscoqHEsZ6SeQLuIc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=YPGttJJTJ3j8e0ObLAL4wiBpZAdUPbAhhCm3oKK+kx41VVnqtZ+85M/KCn+KmCSn+ I+09rBJDvoY07W1hjbf2NnzQi/YAoh4DmOq7d+f7LAoEQo9rWBqwscl3dJWBXRS21s 10Kd/QwCOVpGDAv536fbPoOShdIvhwKxar8ZwsyA= Received: from island.ads.avm.de (unknown [172.17.88.185]) by mail-auth.avm.de (Postfix) with ESMTPA id 758FD81ED2; Wed, 29 Mar 2023 15:51:51 +0200 (CEST) Received: from island.fjasle.eu (localhost [IPv6:::1]) by island.ads.avm.de (Postfix) with ESMTP id 67A56521A08; Wed, 29 Mar 2023 15:51:51 +0200 (CEST) From: Nicolas Schier Date: Wed, 29 Mar 2023 15:51:36 +0200 Subject: [PATCH v2 2/3] testsuite: delete_module: Roughly implement fake-removal in sysfs tree MIME-Version: 1.0 Message-Id: <20230309-remove-holders-recursively-v2-2-8a8120269cc1@avm.de> References: <20230309-remove-holders-recursively-v2-0-8a8120269cc1@avm.de> In-Reply-To: <20230309-remove-holders-recursively-v2-0-8a8120269cc1@avm.de> To: linux-modules@vger.kernel.org Cc: Lucas De Marchi , Nicolas Schier X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=7999; i=n.schier@avm.de; h=from:subject:message-id; bh=KPXGwTg8jX9qX0oH0D+aA47k6PjscoqHEsZ6SeQLuIc=; b=owEBbQKS/ZANAwAIAYjGvJyImm24AcsmYgBkJEJ2q8rKDMeOlTX0cg0CAIu+QvKUz+KuO4vIc 42FvHa2ATOJAjMEAAEIAB0WIQQO/4WJ63TpgecLpGmIxryciJptuAUCZCRCdgAKCRCIxryciJpt uGjWD/9qgcHPzuxV2605BKSSoHvq+k8rd35vrKMyY0j297ElnvEybjUGctf5QXheTfITe2HNREL aBpziUD1DBclBlneNoayjzJVF5+DgMS4ytM+iE1iMz3yZ/L4Cv7XvMEBnfFJZAW39MEGgrGMQjJ nHsFAryr3X9bxGlZGBrgpTUB6GsctPhTWeL+HvAaDxn/6ovNV9OmDKK45ZRMhVH8mW+eDyzXt6i rE05us/782oiHPyJUlfwp++qSQOa6PbfHlV9UWCs6jpfkQENuMcVXq3ppgw5FHwYH/Hnv08SaBN rKnFDF8umvgjzSEq52650airfZJOk04Xz5BdIJgtNp01QQPRCZknMTAfIV1wXRqpW4dfPyOp6cP 4ANLbXrVi1qK21t7MnWOZzukg/aLT37SOPoRBzHRbaX0LBNgWBxpl9tbS1V/Q1FEq+6R/24MHAf uUwBXK6TzWQOsd1Amukx2mLGhc+I8aCzhKFYlF54OSVQocN/1awlSul1aAeTCXbl+BhtW8zaCsc Ni2AOB9OCDMo7XMpbptczQVnHQn/5QuBPJrSbcuKydXfMshTv5itSYU+HXGI+Ir0F81+WGumE/e TUjIVqTYFOrma4s0uOmk3LOJPqUPUkhzZWVWI8pYPo0kOJkqVGOaOToiJyoGtoT42E5y3QR4Vy/ BLQlVOqixaAJulg== X-Developer-Key: i=n.schier@avm.de; a=openpgp; fpr=7CF67EF8868721AFE53D73FDBDE3A6CC4E333CC8 X-purgate-ID: 149429::1680097911-D334E29D-14B79B8D/0/0 X-purgate-type: clean X-purgate-size: 8001 X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean Precedence: bulk List-ID: Extend delete_module() to simulate module removal in the testsuite's sysfs representation. During fake-removal, decrement refcnts on all modules that have the to-be-removed module as holder, and unlink the sysfs sub tree of the module itself. Signed-off-by: Nicolas Schier Reviewed-by: Lucas De Marchi --- Changes in v2: * new patch --- Makefile.am | 1 + testsuite/delete_module.c | 262 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 261 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 8ba85c9..9a87824 100644 --- a/Makefile.am +++ b/Makefile.am @@ -293,6 +293,7 @@ testsuite_path_la_CPPFLAGS = $(AM_CPPFLAGS) \ testsuite_path_la_LDFLAGS = $(TESTSUITE_OVERRIDE_LIBS_LDFLAGS) testsuite_delete_module_la_LDFLAGS = $(TESTSUITE_OVERRIDE_LIBS_LDFLAGS) +testsuite_delete_module_la_LIBADD = libkmod/libkmod-internal.la testsuite_init_module_la_LDFLAGS = $(TESTSUITE_OVERRIDE_LIBS_LDFLAGS) testsuite_init_module_la_SOURCES = testsuite/init_module.c \ testsuite/stripped-module.h diff --git a/testsuite/delete_module.c b/testsuite/delete_module.c index f3ae20b..73fc71a 100644 --- a/testsuite/delete_module.c +++ b/testsuite/delete_module.c @@ -31,6 +31,7 @@ #include #include +#include #include "testsuite.h" @@ -135,11 +136,252 @@ static void init_retcodes(void) } } +static bool lstat_is_dir(const char *dir) +{ + struct stat st; + + if (!lstat(dir, &st)) + return S_ISDIR(st.st_mode); + + ERR("TRAP delete_module(): %s: lstat: %s\n", dir, strerror(errno)); + return false; +} + +static int unlink_tree(const char *dir) +{ + struct dirent *dent; + char *new_path; + bool is_dir; + DIR *dirp; + int ret; + + dirp = opendir(dir); + if (!dirp) { + ERR("TRAP delete_module(): %s: opendir: %s\n", dir, + strerror(errno)); + return errno; + } + + errno = ret = 0; + while (!ret && (dent = readdir(dirp))) { + if (!strcmp(dent->d_name, ".") || !strcmp(dent->d_name, "..")) + continue; + + if (asprintf(&new_path, "%s/%s", dir, dent->d_name) < 0) { + ERR("TRAP delete_module(): unlink_tree: out-of-memory\n"); + return ENOMEM; + } + + if (dent->d_type == DT_UNKNOWN) + is_dir = lstat_is_dir(new_path); + else + is_dir = dent->d_type == DT_DIR; + + if (is_dir) + ret = unlink_tree(new_path); + else { + if (unlink(new_path)) { + ret = errno; + ERR("TRAP delete_module(): %s: unlink: %s\n", new_path, strerror(errno)); + } + } + + free(new_path); + } + + if (errno) { + if (!ret) + ret = errno; + ERR("TRAP delete_module(): %s: readdir: %s\n", dir, strerror(errno)); + } + + if (closedir(dirp)) { + if (!ret) + ret = errno; + ERR("TRAP delete_module(): %s: closedir: %s\n", dir, strerror(errno)); + } + + if (rmdir(dir)) { + if (ret) + ret = errno; + ERR("TRAP delete_module(): %s: rmdir: %s\n", dir, strerror(errno)); + } + + return ret; +} + +static const char *rootfs_path(void) +{ + char *rootfs; + + rootfs = getenv(S_TC_ROOTFS); + if (rootfs) + return rootfs; + + ERR("TRAP delete_module(): missing export %s?\n", + S_TC_ROOTFS); + return NULL; +} + +static char *sysfs_module_path_get(const char *module, const char *subpath) +{ + const char *rootfs = rootfs_path(); + char *sysfs_path; + int ret; + + if (!rootfs) + return NULL; + + ret = asprintf(&sysfs_path, "%s/sys/module/%s%s", + rootfs, module, subpath ? subpath : ""); + if (ret >= 0) + return sysfs_path; + + ERR("TRAP delete_module(): %s: out-of-memory\n", subpath); + return NULL; +} + +static int unlink_sysfs_module_tree(struct mod *mod) +{ + char *sysfs_path; + int ret; + + if (!(sysfs_path = sysfs_module_path_get(mod->name, NULL))) + return EFAULT; + + ret = unlink_tree(sysfs_path); + free(sysfs_path); + + return ret; +} + +static int sysfs_kmod_remove_holder(const struct kmod_module *kmod, + const char *holder) +{ + const char *name = kmod_module_get_name(kmod); + char *sysfs_mod_holders; + char *sysfs_mod_refcnt; + char refcnt_str[34]; + char *sysfs_mod; + int holders_fd; + int refcnt; + int ret; + int fd; + + if (!(sysfs_mod = sysfs_module_path_get(name, NULL)) || + !(sysfs_mod_refcnt = sysfs_module_path_get(name, "/refcnt")) || + !(sysfs_mod_holders = sysfs_module_path_get(name, "/holders"))) { + ERR("TRAP delete_module(): %s: out-of-memory\n", name); + return ENOMEM; + } + + holders_fd = open(sysfs_mod_holders, O_RDONLY|O_CLOEXEC); + if (holders_fd < 0) { + ret = errno; + ERR("TRAP delete_module(): %s: open: %s\n", sysfs_mod_holders, + strerror(errno)); + goto fail_free_pathnames; + } + + if (unlinkat(holders_fd, holder, 0)) { + ret = errno; + ERR("TRAP delete_module(): %s/%s: unlink: %s\n", + sysfs_mod_holders, holder, strerror(ret)); + goto fail_close_holders_fd; + } + + refcnt = kmod_module_get_refcnt(kmod); + if (refcnt < 0) { + ret = errno; + ERR("TRAP delete_module(): %s: Invalid refcnt or error: %d\n", + name, refcnt); + return ret; + } + + if (refcnt == 0) { + ERR("TRAP delete_module(): %s: refcnt already dropped to 0, refusing decrement\n", + name); + return EINVAL; + } + + refcnt--; + snprintf(refcnt_str, sizeof(refcnt_str), "%d\n", refcnt); + + fd = open(sysfs_mod_refcnt, O_WRONLY|O_TRUNC|O_CLOEXEC); + if (fd < 0) { + ret = errno; + ERR("TRAP delete_module(): %s: open: %s\n", sysfs_mod_refcnt, + strerror(ret)); + goto fail_free_pathnames; + } + + ret = write(fd, refcnt_str, strlen(refcnt_str)); + if (ret <= 0) { + ret = errno; + ERR("TRAP delete_module(): %s: write: %s\n", sysfs_mod_refcnt, + strerror(ret)); + } + + close(fd); + +fail_close_holders_fd: + close(holders_fd); + +fail_free_pathnames: + free(sysfs_mod_holders); + free(sysfs_mod_refcnt); + free(sysfs_mod); + + return ret; +} + +static int decrement_holders_refcnt(struct mod *removed_mod) +{ + struct kmod_list *list, *itr; + struct kmod_ctx *ctx; + int err; + + ctx = kmod_new(NULL, NULL); + if (ctx == NULL) { + ERR("TRAP delete_module(): Unable to get kmod ctx\n"); + return EFAULT; + } + + err = kmod_module_new_from_loaded(ctx, &list); + if (err < 0) { + ERR("TRAP delete_module(): Unable to get list of loaded modules: %s\n", + strerror(-err)); + goto fail_free_ctx; + } + + kmod_list_foreach(itr, list) { + struct kmod_module *kmod = kmod_module_get_module(itr); + struct kmod_list *holders, *hitr; + + holders = kmod_module_get_holders(kmod); + kmod_list_foreach(hitr, holders) { + struct kmod_module *hm = kmod_module_get_module(hitr); + const char *holder_name = kmod_module_get_name(hm); + + if (!strcmp(holder_name, removed_mod->name)) + sysfs_kmod_remove_holder(kmod, holder_name); + + kmod_module_unref(hm); + } + kmod_module_unref_list(holders); + kmod_module_unref(kmod); + } + kmod_module_unref_list(list); + +fail_free_ctx: + kmod_unref(ctx); + + return -err; +} + TS_EXPORT long delete_module(const char *name, unsigned int flags); /* - * FIXME: change /sys/module/ to fake-remove a module - * * Default behavior is to exit successfully. If this is not the intended * behavior, set TESTSUITE_DELETE_MODULE_RETCODES env var. */ @@ -152,6 +394,22 @@ long delete_module(const char *modname, unsigned int flags) if (mod == NULL) return 0; + if (!mod->ret) { + /* Adjust sysfs tree after successful removal */ + + errno = decrement_holders_refcnt(mod); + if (errno) { + ERR("TRAP delete_module(): unable to decrement sysfs holders\n"); + return EFAULT; + } + + errno = unlink_sysfs_module_tree(mod); + if (errno) { + ERR("TRAP delete_module(): unable to adjust sysfs tree\n"); + return EFAULT; + } + } + errno = mod->errcode; return mod->ret; } From patchwork Wed Mar 29 13:51:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Schier X-Patchwork-Id: 13192432 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3359CC761A6 for ; Wed, 29 Mar 2023 13:52:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229708AbjC2NwF (ORCPT ); Wed, 29 Mar 2023 09:52:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55734 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230043AbjC2NwE (ORCPT ); Wed, 29 Mar 2023 09:52:04 -0400 Received: from mail.avm.de (mail.avm.de [212.42.244.120]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AA33BC4 for ; Wed, 29 Mar 2023 06:51:55 -0700 (PDT) Received: from mail-auth.avm.de (dovecot-mx-01.avm.de [212.42.244.71]) by mail.avm.de (Postfix) with ESMTPS; Wed, 29 Mar 2023 15:51:50 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=avm.de; s=mail; t=1680097911; bh=nTc23p4K9zCI44KAwWGHGu2um4zhL21JFzoiQa4F/sg=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Ffv8+xHgHtrmTPVXrIkXO/Dul8a/nV74jq+F1mFpg2YGc/CcVbYtN9CP9YouPPmBu 4yvqh6lagQSc+n+i6HEHm1ghHjKfkDsqq/tedP8JvszcqVvGWFj/FxHWifhsdo5IPU 4xLUJWlBgWTndDCiBXAEGgobuNmbXSzUPxCOkqmA= Received: from island.ads.avm.de (unknown [172.17.88.185]) by mail-auth.avm.de (Postfix) with ESMTPA id 78A8681FC4; Wed, 29 Mar 2023 15:51:51 +0200 (CEST) Received: from island.fjasle.eu (localhost [IPv6:::1]) by island.ads.avm.de (Postfix) with ESMTP id 68C22521A0C; Wed, 29 Mar 2023 15:51:51 +0200 (CEST) From: Nicolas Schier Date: Wed, 29 Mar 2023 15:51:37 +0200 Subject: [PATCH v2 3/3] testsuite: modprobe: Add test for --remove-holders MIME-Version: 1.0 Message-Id: <20230309-remove-holders-recursively-v2-3-8a8120269cc1@avm.de> References: <20230309-remove-holders-recursively-v2-0-8a8120269cc1@avm.de> In-Reply-To: <20230309-remove-holders-recursively-v2-0-8a8120269cc1@avm.de> To: linux-modules@vger.kernel.org Cc: Lucas De Marchi , Nicolas Schier X-Mailer: b4 0.12.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=67800; i=n.schier@avm.de; h=from:subject:message-id; bh=nTc23p4K9zCI44KAwWGHGu2um4zhL21JFzoiQa4F/sg=; b=owEBbQKS/ZANAwAIAYjGvJyImm24AcsmYgBkJEJ3QPremLJmRuPogni6byBonJ8Qivwb9Dyuz Fi2Ws5/feuJAjMEAAEIAB0WIQQO/4WJ63TpgecLpGmIxryciJptuAUCZCRCdwAKCRCIxryciJpt uCHwD/wMOyCEO6phva28kgXqPqH+w7w815eskPSv3HkVAsSMIPpoQ53wQqtNUbssw8Uz27w/3XT fAWIh4WzXE+rstPOFAA8qRKy3QjbsxEyFKZKmnOb9bHkcUYj34kcPGzy27MSE0Pw6b097yunYF7 UKSMlVs1BptC30mokp4o5NvjX9PmNDqdYMeNTULQuc8D1O7MmY2ooVbfVeAHErCDG+EIGoLE3KJ 1A6WtX4kOEQmVO1Im62trDi5sVq7YrzeEXi6faaIMvth56jUV4rubadN2Pjo5rpLfu7dyFGhBna /H3V+xb7vEhAP1S739hYqq9TSxe5962327tE1AgFDC55o+Zjo+ONIuomRXd0tuNLxg7c4zsT6kY /Aa1b5PFMGnko165Z+Xx9vt9NT5KFFMu2yls+t7fQK0jc1sq9U4ProwV0u1+pj2szkh1k7GHGrf x0wb6kImbz5PhZEDiVuN5fMZib8NhRluaC1b3ahDDEzeC6slrxL1PczMzCbPIL/nlqB4zeIzasJ z+jbxskxPX5j4MLFcS99Y9YdNpsBEfEgjyaiJlk+LyFNjzvymkGKeIIV2qcfLcrv1+8OTUuLPCa ua233HK7RuHng+NOfGflYMaudXwrIRwIMiLKp41C31zaZPiVx7uJfHrkJE25DH/FISlmKeBce1Y sn91QDN/Y16AcOg== X-Developer-Key: i=n.schier@avm.de; a=openpgp; fpr=7CF67EF8868721AFE53D73FDBDE3A6CC4E333CC8 X-purgate-ID: 149429::1680097910-53FEDE5F-7904BE2E/0/0 X-purgate-type: clean X-purgate-size: 67802 X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean Precedence: bulk List-ID: Add a test for 'modprobe --remove --remove-holders' and a simple dependency module chain of three modules. Signed-off-by: Nicolas Schier Reviewed-by: Lucas De Marchi --- Changes in v2: * new patch --- testsuite/module-playground/Makefile | 6 +++ testsuite/module-playground/mod-dep-chain-a.c | 21 ++++++++ testsuite/module-playground/mod-dep-chain-b.c | 22 +++++++++ testsuite/module-playground/mod-dep-chain-c.c | 22 +++++++++ testsuite/module-playground/mod-dep-chain.h | 8 +++ .../remove-holders/lib/modules/6.2/modules.alias | 1 + .../lib/modules/6.2/modules.alias.bin | Bin 0 -> 12 bytes .../lib/modules/6.2/modules.builtin.alias.bin | 0 .../lib/modules/6.2/modules.builtin.bin | 0 .../remove-holders/lib/modules/6.2/modules.dep | 3 ++ .../remove-holders/lib/modules/6.2/modules.dep.bin | Bin 0 -> 229 bytes .../remove-holders/lib/modules/6.2/modules.devname | 0 .../remove-holders/lib/modules/6.2/modules.softdep | 1 + .../remove-holders/lib/modules/6.2/modules.symbols | 4 ++ .../lib/modules/6.2/modules.symbols.bin | Bin 0 -> 143 bytes .../test-modprobe/remove-holders/proc/modules | 3 ++ .../sys/module/mod_dep_chain_a/coresize | 1 + .../module/mod_dep_chain_a/holders/mod_dep_chain_b | 1 + .../sys/module/mod_dep_chain_a/initsize | 1 + .../sys/module/mod_dep_chain_a/initstate | 1 + .../sys/module/mod_dep_chain_a/notes/.note.Linux | Bin 0 -> 60 bytes .../mod_dep_chain_a/notes/.note.gnu.build-id | Bin 0 -> 36 bytes .../sys/module/mod_dep_chain_a/refcnt | 1 + .../sections/.gnu.linkonce.this_module | 1 + .../sys/module/mod_dep_chain_a/sections/.init.data | 1 + .../module/mod_dep_chain_a/sections/.note.Linux | 1 + .../mod_dep_chain_a/sections/.note.gnu.build-id | 1 + .../module/mod_dep_chain_a/sections/.orc_unwind | 1 + .../module/mod_dep_chain_a/sections/.orc_unwind_ip | 1 + .../module/mod_dep_chain_a/sections/.return_sites | 1 + .../module/mod_dep_chain_a/sections/.rodata.str1.1 | 1 + .../sys/module/mod_dep_chain_a/sections/.strtab | 1 + .../sys/module/mod_dep_chain_a/sections/.symtab | 1 + .../module/mod_dep_chain_a/sections/.text.unlikely | 1 + .../sys/module/mod_dep_chain_a/sections/__kcrctab | 1 + .../sys/module/mod_dep_chain_a/sections/__ksymtab | 1 + .../mod_dep_chain_a/sections/__ksymtab_strings | 1 + .../module/mod_dep_chain_a/sections/__mcount_loc | 1 + .../sys/module/mod_dep_chain_a/taint | 1 + .../sys/module/mod_dep_chain_b/coresize | 1 + .../module/mod_dep_chain_b/holders/mod_dep_chain_c | 1 + .../sys/module/mod_dep_chain_b/initsize | 1 + .../sys/module/mod_dep_chain_b/initstate | 1 + .../sys/module/mod_dep_chain_b/notes/.note.Linux | Bin 0 -> 60 bytes .../mod_dep_chain_b/notes/.note.gnu.build-id | Bin 0 -> 36 bytes .../sys/module/mod_dep_chain_b/refcnt | 1 + .../sections/.gnu.linkonce.this_module | 1 + .../sys/module/mod_dep_chain_b/sections/.init.data | 1 + .../module/mod_dep_chain_b/sections/.note.Linux | 1 + .../mod_dep_chain_b/sections/.note.gnu.build-id | 1 + .../module/mod_dep_chain_b/sections/.orc_unwind | 1 + .../module/mod_dep_chain_b/sections/.orc_unwind_ip | 1 + .../module/mod_dep_chain_b/sections/.return_sites | 1 + .../module/mod_dep_chain_b/sections/.rodata.str1.8 | 1 + .../sys/module/mod_dep_chain_b/sections/.strtab | 1 + .../sys/module/mod_dep_chain_b/sections/.symtab | 1 + .../module/mod_dep_chain_b/sections/.text.unlikely | 1 + .../sys/module/mod_dep_chain_b/sections/__kcrctab | 1 + .../sys/module/mod_dep_chain_b/sections/__ksymtab | 1 + .../mod_dep_chain_b/sections/__ksymtab_strings | 1 + .../module/mod_dep_chain_b/sections/__mcount_loc | 1 + .../sys/module/mod_dep_chain_b/taint | 1 + .../sys/module/mod_dep_chain_c/coresize | 1 + .../sys/module/mod_dep_chain_c/holders/.gitignore | 0 .../sys/module/mod_dep_chain_c/initsize | 1 + .../sys/module/mod_dep_chain_c/initstate | 1 + .../sys/module/mod_dep_chain_c/notes/.note.Linux | Bin 0 -> 60 bytes .../mod_dep_chain_c/notes/.note.gnu.build-id | Bin 0 -> 36 bytes .../sys/module/mod_dep_chain_c/refcnt | 1 + .../sys/module/mod_dep_chain_c/taint | 1 + .../remove-single/lib/modules/6.2/modules.alias | 1 + .../lib/modules/6.2/modules.alias.bin | Bin 0 -> 12 bytes .../lib/modules/6.2/modules.builtin.alias.bin | 0 .../lib/modules/6.2/modules.builtin.bin | 0 .../remove-single/lib/modules/6.2/modules.dep | 3 ++ .../remove-single/lib/modules/6.2/modules.dep.bin | Bin 0 -> 229 bytes .../remove-single/lib/modules/6.2/modules.devname | 0 .../remove-single/lib/modules/6.2/modules.softdep | 1 + .../remove-single/lib/modules/6.2/modules.symbols | 4 ++ .../lib/modules/6.2/modules.symbols.bin | Bin 0 -> 143 bytes .../test-modprobe/remove-single/proc/modules | 3 ++ .../sys/module/mod_dep_chain_a/coresize | 1 + .../module/mod_dep_chain_a/holders/mod_dep_chain_b | 1 + .../sys/module/mod_dep_chain_a/initsize | 1 + .../sys/module/mod_dep_chain_a/initstate | 1 + .../sys/module/mod_dep_chain_a/notes/.note.Linux | Bin 0 -> 60 bytes .../mod_dep_chain_a/notes/.note.gnu.build-id | Bin 0 -> 36 bytes .../sys/module/mod_dep_chain_a/refcnt | 1 + .../sections/.gnu.linkonce.this_module | 1 + .../sys/module/mod_dep_chain_a/sections/.init.data | 1 + .../module/mod_dep_chain_a/sections/.note.Linux | 1 + .../mod_dep_chain_a/sections/.note.gnu.build-id | 1 + .../module/mod_dep_chain_a/sections/.orc_unwind | 1 + .../module/mod_dep_chain_a/sections/.orc_unwind_ip | 1 + .../module/mod_dep_chain_a/sections/.return_sites | 1 + .../module/mod_dep_chain_a/sections/.rodata.str1.1 | 1 + .../sys/module/mod_dep_chain_a/sections/.strtab | 1 + .../sys/module/mod_dep_chain_a/sections/.symtab | 1 + .../module/mod_dep_chain_a/sections/.text.unlikely | 1 + .../sys/module/mod_dep_chain_a/sections/__kcrctab | 1 + .../sys/module/mod_dep_chain_a/sections/__ksymtab | 1 + .../mod_dep_chain_a/sections/__ksymtab_strings | 1 + .../module/mod_dep_chain_a/sections/__mcount_loc | 1 + .../remove-single/sys/module/mod_dep_chain_a/taint | 1 + .../sys/module/mod_dep_chain_b/coresize | 1 + .../module/mod_dep_chain_b/holders/mod_dep_chain_c | 1 + .../sys/module/mod_dep_chain_b/initsize | 1 + .../sys/module/mod_dep_chain_b/initstate | 1 + .../sys/module/mod_dep_chain_b/notes/.note.Linux | Bin 0 -> 60 bytes .../mod_dep_chain_b/notes/.note.gnu.build-id | Bin 0 -> 36 bytes .../sys/module/mod_dep_chain_b/refcnt | 1 + .../sections/.gnu.linkonce.this_module | 1 + .../sys/module/mod_dep_chain_b/sections/.init.data | 1 + .../module/mod_dep_chain_b/sections/.note.Linux | 1 + .../mod_dep_chain_b/sections/.note.gnu.build-id | 1 + .../module/mod_dep_chain_b/sections/.orc_unwind | 1 + .../module/mod_dep_chain_b/sections/.orc_unwind_ip | 1 + .../module/mod_dep_chain_b/sections/.return_sites | 1 + .../module/mod_dep_chain_b/sections/.rodata.str1.8 | 1 + .../sys/module/mod_dep_chain_b/sections/.strtab | 1 + .../sys/module/mod_dep_chain_b/sections/.symtab | 1 + .../module/mod_dep_chain_b/sections/.text.unlikely | 1 + .../sys/module/mod_dep_chain_b/sections/__kcrctab | 1 + .../sys/module/mod_dep_chain_b/sections/__ksymtab | 1 + .../mod_dep_chain_b/sections/__ksymtab_strings | 1 + .../module/mod_dep_chain_b/sections/__mcount_loc | 1 + .../remove-single/sys/module/mod_dep_chain_b/taint | 1 + .../sys/module/mod_dep_chain_c/coresize | 1 + .../sys/module/mod_dep_chain_c/holders/.gitignore | 0 .../sys/module/mod_dep_chain_c/initsize | 1 + .../sys/module/mod_dep_chain_c/initstate | 1 + .../sys/module/mod_dep_chain_c/notes/.note.Linux | Bin 0 -> 60 bytes .../mod_dep_chain_c/notes/.note.gnu.build-id | Bin 0 -> 36 bytes .../sys/module/mod_dep_chain_c/refcnt | 1 + .../remove-single/sys/module/mod_dep_chain_c/taint | 1 + testsuite/setup-rootfs.sh | 3 ++ testsuite/test-modprobe.c | 55 +++++++++++++++++++++ 137 files changed, 255 insertions(+) diff --git a/testsuite/module-playground/Makefile b/testsuite/module-playground/Makefile index e6045b0..970822b 100644 --- a/testsuite/module-playground/Makefile +++ b/testsuite/module-playground/Makefile @@ -37,6 +37,12 @@ obj-m += mod-fake-hpsa.o obj-m += mod-fake-scsi-mod.o obj-m += mod-fake-cciss.o +# mod-dep-chain-*: simple dependency chain: +# mod-dep-chain-c depends on mod-dep-chain-b, which depends on mod-dep-chain-a +obj-m += mod-dep-chain-a.o +obj-m += mod-dep-chain-b.o +obj-m += mod-dep-chain-c.o + else # only build ARCH-specific module ifeq ($(ARCH),) diff --git a/testsuite/module-playground/mod-dep-chain-a.c b/testsuite/module-playground/mod-dep-chain-a.c new file mode 100644 index 0000000..a3dd896 --- /dev/null +++ b/testsuite/module-playground/mod-dep-chain-a.c @@ -0,0 +1,21 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include "mod-dep-chain.h" + +void mod_dep_chain_a_info(void) +{ + pr_info("loaded\n"); +} +EXPORT_SYMBOL(mod_dep_chain_a_info); + +static int mod_dep_chain_a_init(void) +{ + mod_dep_chain_a_info(); + return 0; +} + +module_init(mod_dep_chain_a_init); + +MODULE_AUTHOR("Nicolas Schier "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-dep-chain-b.c b/testsuite/module-playground/mod-dep-chain-b.c new file mode 100644 index 0000000..3d71d0f --- /dev/null +++ b/testsuite/module-playground/mod-dep-chain-b.c @@ -0,0 +1,22 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include "mod-dep-chain.h" + +void mod_dep_chain_b_info(void) +{ + pr_info("loaded and depends on mod-dep-chain-a\n"); + mod_dep_chain_a_info(); +} +EXPORT_SYMBOL(mod_dep_chain_b_info); + +static int mod_dep_chain_b_init(void) +{ + mod_dep_chain_b_info(); + return 0; +} + +module_init(mod_dep_chain_b_init); + +MODULE_AUTHOR("Nicolas Schier "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-dep-chain-c.c b/testsuite/module-playground/mod-dep-chain-c.c new file mode 100644 index 0000000..862ce84 --- /dev/null +++ b/testsuite/module-playground/mod-dep-chain-c.c @@ -0,0 +1,22 @@ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt + +#include +#include "mod-dep-chain.h" + +void mod_dep_chain_c_info(void) +{ + pr_info("loaded and depends on mod-dep-chain-b\n"); + mod_dep_chain_b_info(); +} +EXPORT_SYMBOL(mod_dep_chain_c_info); + +static int mod_dep_chain_c_init(void) +{ + mod_dep_chain_c_info(); + return 0; +} + +module_init(mod_dep_chain_c_init); + +MODULE_AUTHOR("Nicolas Schier "); +MODULE_LICENSE("LGPL"); diff --git a/testsuite/module-playground/mod-dep-chain.h b/testsuite/module-playground/mod-dep-chain.h new file mode 100644 index 0000000..0bfc26f --- /dev/null +++ b/testsuite/module-playground/mod-dep-chain.h @@ -0,0 +1,8 @@ +#ifndef __mod_dep_chain_h__ +#define __mod_dep_chain_h__ + +extern void mod_dep_chain_a_info(void); +extern void mod_dep_chain_b_info(void); +extern void mod_dep_chain_c_info(void); + +#endif diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.alias b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.alias new file mode 100644 index 0000000..ba76e18 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.alias @@ -0,0 +1 @@ +# Aliases extracted from modules themselves. diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.alias.bin b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.alias.bin new file mode 100644 index 0000000..7075435 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.alias.bin differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.builtin.alias.bin b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.builtin.alias.bin new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.builtin.bin b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.builtin.bin new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.dep b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.dep new file mode 100644 index 0000000..8248cf7 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.dep @@ -0,0 +1,3 @@ +kernel/mod-dep-chain-a.ko: +kernel/mod-dep-chain-b.ko: kernel/mod-dep-chain-a.ko +kernel/mod-dep-chain-c.ko: kernel/mod-dep-chain-b.ko kernel/mod-dep-chain-a.ko diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.dep.bin b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.dep.bin new file mode 100644 index 0000000..f8b999d Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.dep.bin differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.devname b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.devname new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.softdep b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.softdep new file mode 100644 index 0000000..5554ccc --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.softdep @@ -0,0 +1 @@ +# Soft dependencies extracted from modules themselves. diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.symbols b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.symbols new file mode 100644 index 0000000..84263a6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.symbols @@ -0,0 +1,4 @@ +# Aliases for symbols, used by symbol_request(). +alias symbol:mod_dep_chain_a_info mod_dep_chain_a +alias symbol:mod_dep_chain_c_info mod_dep_chain_c +alias symbol:mod_dep_chain_b_info mod_dep_chain_b diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.symbols.bin b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.symbols.bin new file mode 100644 index 0000000..b246e9d Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/lib/modules/6.2/modules.symbols.bin differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/proc/modules b/testsuite/rootfs-pristine/test-modprobe/remove-holders/proc/modules new file mode 100644 index 0000000..5929acb --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/proc/modules @@ -0,0 +1,3 @@ +mod_dep_chain_c 16384 0 [permanent], Live 0x0000000000000000 (POE) +mod_dep_chain_b 16384 1 mod_dep_chain_c,[permanent], Live 0x0000000000000000 (POE) +mod_dep_chain_a 16384 1 mod_dep_chain_b,[permanent], Live 0x0000000000000000 (POE) diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/coresize b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/coresize new file mode 100644 index 0000000..08558e4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/coresize @@ -0,0 +1 @@ +16384 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/holders/mod_dep_chain_b b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/holders/mod_dep_chain_b new file mode 120000 index 0000000..e26fe25 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/holders/mod_dep_chain_b @@ -0,0 +1 @@ +../../mod_dep_chain_b \ No newline at end of file diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/initsize b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/initsize new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/initsize @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/initstate b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/initstate new file mode 100644 index 0000000..e23fe64 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/initstate @@ -0,0 +1 @@ +live diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/notes/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/notes/.note.Linux new file mode 100644 index 0000000..183aed9 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/notes/.note.Linux differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/notes/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/notes/.note.gnu.build-id new file mode 100644 index 0000000..fcfdc7f Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/notes/.note.gnu.build-id differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/refcnt b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/refcnt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/refcnt @@ -0,0 +1 @@ +1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.gnu.linkonce.this_module b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.gnu.linkonce.this_module new file mode 100644 index 0000000..bcc5ba6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.gnu.linkonce.this_module @@ -0,0 +1 @@ +0xffffffffc10fa000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.init.data b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.init.data new file mode 100644 index 0000000..de75dee --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.init.data @@ -0,0 +1 @@ +0xffffffffc034d000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.note.Linux new file mode 100644 index 0000000..c8513b9 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.note.Linux @@ -0,0 +1 @@ +0xffffffffc10f9024 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.note.gnu.build-id new file mode 100644 index 0000000..8cbe085 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.note.gnu.build-id @@ -0,0 +1 @@ +0xffffffffc10f9000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.orc_unwind b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.orc_unwind new file mode 100644 index 0000000..7987d4e --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.orc_unwind @@ -0,0 +1 @@ +0xffffffffc10f90b5 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.orc_unwind_ip b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.orc_unwind_ip new file mode 100644 index 0000000..12cda4f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.orc_unwind_ip @@ -0,0 +1 @@ +0xffffffffc10f90c1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.return_sites b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.return_sites new file mode 100644 index 0000000..cff4d30 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.return_sites @@ -0,0 +1 @@ +0xffffffffc10f90b1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.rodata.str1.1 b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.rodata.str1.1 new file mode 100644 index 0000000..a670b59 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.rodata.str1.1 @@ -0,0 +1 @@ +0xffffffffc10f9086 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.strtab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.strtab new file mode 100644 index 0000000..2905428 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.strtab @@ -0,0 +1 @@ +0xffffffffc034e4e0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.symtab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.symtab new file mode 100644 index 0000000..38b02ed --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.symtab @@ -0,0 +1 @@ +0xffffffffc034e000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.text.unlikely b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.text.unlikely new file mode 100644 index 0000000..0f8c361 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/.text.unlikely @@ -0,0 +1 @@ +0xffffffffc10f8000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__kcrctab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__kcrctab new file mode 100644 index 0000000..83cf0eb --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__kcrctab @@ -0,0 +1 @@ +0xffffffffc10f906c diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__ksymtab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__ksymtab new file mode 100644 index 0000000..8a160a3 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__ksymtab @@ -0,0 +1 @@ +0xffffffffc10f9060 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__ksymtab_strings b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__ksymtab_strings new file mode 100644 index 0000000..ed9d78d --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__ksymtab_strings @@ -0,0 +1 @@ +0xffffffffc10f9070 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__mcount_loc b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__mcount_loc new file mode 100644 index 0000000..b6ddb2f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/sections/__mcount_loc @@ -0,0 +1 @@ +0xffffffffc10f90a1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/taint b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/taint new file mode 100644 index 0000000..fed7ca6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_a/taint @@ -0,0 +1 @@ +POE diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/coresize b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/coresize new file mode 100644 index 0000000..08558e4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/coresize @@ -0,0 +1 @@ +16384 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/holders/mod_dep_chain_c b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/holders/mod_dep_chain_c new file mode 120000 index 0000000..9100cb1 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/holders/mod_dep_chain_c @@ -0,0 +1 @@ +../../mod_dep_chain_c \ No newline at end of file diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/initsize b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/initsize new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/initsize @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/initstate b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/initstate new file mode 100644 index 0000000..e23fe64 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/initstate @@ -0,0 +1 @@ +live diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/notes/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/notes/.note.Linux new file mode 100644 index 0000000..183aed9 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/notes/.note.Linux differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/notes/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/notes/.note.gnu.build-id new file mode 100644 index 0000000..673a782 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/notes/.note.gnu.build-id differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/refcnt b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/refcnt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/refcnt @@ -0,0 +1 @@ +1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.gnu.linkonce.this_module b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.gnu.linkonce.this_module new file mode 100644 index 0000000..8048b8f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.gnu.linkonce.this_module @@ -0,0 +1 @@ +0xffffffffc10ff000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.init.data b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.init.data new file mode 100644 index 0000000..de75dee --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.init.data @@ -0,0 +1 @@ +0xffffffffc034d000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.note.Linux new file mode 100644 index 0000000..b451fc5 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.note.Linux @@ -0,0 +1 @@ +0xffffffffc10fe024 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.note.gnu.build-id new file mode 100644 index 0000000..b10979d --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.note.gnu.build-id @@ -0,0 +1 @@ +0xffffffffc10fe000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.orc_unwind b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.orc_unwind new file mode 100644 index 0000000..5dc94f4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.orc_unwind @@ -0,0 +1 @@ +0xffffffffc10fe0d6 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.orc_unwind_ip b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.orc_unwind_ip new file mode 100644 index 0000000..4dd4220 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.orc_unwind_ip @@ -0,0 +1 @@ +0xffffffffc10fe0e2 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.return_sites b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.return_sites new file mode 100644 index 0000000..74defae --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.return_sites @@ -0,0 +1 @@ +0xffffffffc10fe0d2 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.rodata.str1.8 b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.rodata.str1.8 new file mode 100644 index 0000000..18b3917 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.rodata.str1.8 @@ -0,0 +1 @@ +0xffffffffc10fe088 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.strtab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.strtab new file mode 100644 index 0000000..a51ce15 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.strtab @@ -0,0 +1 @@ +0xffffffffc034e4f8 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.symtab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.symtab new file mode 100644 index 0000000..38b02ed --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.symtab @@ -0,0 +1 @@ +0xffffffffc034e000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.text.unlikely b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.text.unlikely new file mode 100644 index 0000000..88cfba0 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/.text.unlikely @@ -0,0 +1 @@ +0xffffffffc10fd000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__kcrctab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__kcrctab new file mode 100644 index 0000000..bbe2928 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__kcrctab @@ -0,0 +1 @@ +0xffffffffc10fe06c diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__ksymtab b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__ksymtab new file mode 100644 index 0000000..b48b59d --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__ksymtab @@ -0,0 +1 @@ +0xffffffffc10fe060 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__ksymtab_strings b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__ksymtab_strings new file mode 100644 index 0000000..585eebd --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__ksymtab_strings @@ -0,0 +1 @@ +0xffffffffc10fe070 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__mcount_loc b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__mcount_loc new file mode 100644 index 0000000..fe363ee --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/sections/__mcount_loc @@ -0,0 +1 @@ +0xffffffffc10fe0c2 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/taint b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/taint new file mode 100644 index 0000000..fed7ca6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_b/taint @@ -0,0 +1 @@ +POE diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/coresize b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/coresize new file mode 100644 index 0000000..08558e4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/coresize @@ -0,0 +1 @@ +16384 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/holders/.gitignore b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/holders/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/initsize b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/initsize new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/initsize @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/initstate b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/initstate new file mode 100644 index 0000000..e23fe64 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/initstate @@ -0,0 +1 @@ +live diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/notes/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/notes/.note.Linux new file mode 100644 index 0000000..183aed9 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/notes/.note.Linux differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/notes/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/notes/.note.gnu.build-id new file mode 100644 index 0000000..50a9201 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/notes/.note.gnu.build-id differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/refcnt b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/refcnt new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/refcnt @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/taint b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/taint new file mode 100644 index 0000000..fed7ca6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-holders/sys/module/mod_dep_chain_c/taint @@ -0,0 +1 @@ +POE diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.alias b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.alias new file mode 100644 index 0000000..ba76e18 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.alias @@ -0,0 +1 @@ +# Aliases extracted from modules themselves. diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.alias.bin b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.alias.bin new file mode 100644 index 0000000..7075435 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.alias.bin differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.builtin.alias.bin b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.builtin.alias.bin new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.builtin.bin b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.builtin.bin new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.dep b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.dep new file mode 100644 index 0000000..8248cf7 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.dep @@ -0,0 +1,3 @@ +kernel/mod-dep-chain-a.ko: +kernel/mod-dep-chain-b.ko: kernel/mod-dep-chain-a.ko +kernel/mod-dep-chain-c.ko: kernel/mod-dep-chain-b.ko kernel/mod-dep-chain-a.ko diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.dep.bin b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.dep.bin new file mode 100644 index 0000000..f8b999d Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.dep.bin differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.devname b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.devname new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.softdep b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.softdep new file mode 100644 index 0000000..5554ccc --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.softdep @@ -0,0 +1 @@ +# Soft dependencies extracted from modules themselves. diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.symbols b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.symbols new file mode 100644 index 0000000..84263a6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.symbols @@ -0,0 +1,4 @@ +# Aliases for symbols, used by symbol_request(). +alias symbol:mod_dep_chain_a_info mod_dep_chain_a +alias symbol:mod_dep_chain_c_info mod_dep_chain_c +alias symbol:mod_dep_chain_b_info mod_dep_chain_b diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.symbols.bin b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.symbols.bin new file mode 100644 index 0000000..b246e9d Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/lib/modules/6.2/modules.symbols.bin differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/proc/modules b/testsuite/rootfs-pristine/test-modprobe/remove-single/proc/modules new file mode 100644 index 0000000..5929acb --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/proc/modules @@ -0,0 +1,3 @@ +mod_dep_chain_c 16384 0 [permanent], Live 0x0000000000000000 (POE) +mod_dep_chain_b 16384 1 mod_dep_chain_c,[permanent], Live 0x0000000000000000 (POE) +mod_dep_chain_a 16384 1 mod_dep_chain_b,[permanent], Live 0x0000000000000000 (POE) diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/coresize b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/coresize new file mode 100644 index 0000000..08558e4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/coresize @@ -0,0 +1 @@ +16384 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/holders/mod_dep_chain_b b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/holders/mod_dep_chain_b new file mode 120000 index 0000000..e26fe25 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/holders/mod_dep_chain_b @@ -0,0 +1 @@ +../../mod_dep_chain_b \ No newline at end of file diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/initsize b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/initsize new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/initsize @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/initstate b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/initstate new file mode 100644 index 0000000..e23fe64 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/initstate @@ -0,0 +1 @@ +live diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/notes/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/notes/.note.Linux new file mode 100644 index 0000000..183aed9 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/notes/.note.Linux differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/notes/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/notes/.note.gnu.build-id new file mode 100644 index 0000000..fcfdc7f Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/notes/.note.gnu.build-id differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/refcnt b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/refcnt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/refcnt @@ -0,0 +1 @@ +1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.gnu.linkonce.this_module b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.gnu.linkonce.this_module new file mode 100644 index 0000000..bcc5ba6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.gnu.linkonce.this_module @@ -0,0 +1 @@ +0xffffffffc10fa000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.init.data b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.init.data new file mode 100644 index 0000000..de75dee --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.init.data @@ -0,0 +1 @@ +0xffffffffc034d000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.note.Linux new file mode 100644 index 0000000..c8513b9 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.note.Linux @@ -0,0 +1 @@ +0xffffffffc10f9024 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.note.gnu.build-id new file mode 100644 index 0000000..8cbe085 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.note.gnu.build-id @@ -0,0 +1 @@ +0xffffffffc10f9000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.orc_unwind b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.orc_unwind new file mode 100644 index 0000000..7987d4e --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.orc_unwind @@ -0,0 +1 @@ +0xffffffffc10f90b5 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.orc_unwind_ip b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.orc_unwind_ip new file mode 100644 index 0000000..12cda4f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.orc_unwind_ip @@ -0,0 +1 @@ +0xffffffffc10f90c1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.return_sites b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.return_sites new file mode 100644 index 0000000..cff4d30 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.return_sites @@ -0,0 +1 @@ +0xffffffffc10f90b1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.rodata.str1.1 b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.rodata.str1.1 new file mode 100644 index 0000000..a670b59 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.rodata.str1.1 @@ -0,0 +1 @@ +0xffffffffc10f9086 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.strtab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.strtab new file mode 100644 index 0000000..2905428 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.strtab @@ -0,0 +1 @@ +0xffffffffc034e4e0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.symtab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.symtab new file mode 100644 index 0000000..38b02ed --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.symtab @@ -0,0 +1 @@ +0xffffffffc034e000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.text.unlikely b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.text.unlikely new file mode 100644 index 0000000..0f8c361 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/.text.unlikely @@ -0,0 +1 @@ +0xffffffffc10f8000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__kcrctab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__kcrctab new file mode 100644 index 0000000..83cf0eb --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__kcrctab @@ -0,0 +1 @@ +0xffffffffc10f906c diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__ksymtab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__ksymtab new file mode 100644 index 0000000..8a160a3 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__ksymtab @@ -0,0 +1 @@ +0xffffffffc10f9060 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__ksymtab_strings b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__ksymtab_strings new file mode 100644 index 0000000..ed9d78d --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__ksymtab_strings @@ -0,0 +1 @@ +0xffffffffc10f9070 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__mcount_loc b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__mcount_loc new file mode 100644 index 0000000..b6ddb2f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/sections/__mcount_loc @@ -0,0 +1 @@ +0xffffffffc10f90a1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/taint b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/taint new file mode 100644 index 0000000..fed7ca6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_a/taint @@ -0,0 +1 @@ +POE diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/coresize b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/coresize new file mode 100644 index 0000000..08558e4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/coresize @@ -0,0 +1 @@ +16384 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/holders/mod_dep_chain_c b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/holders/mod_dep_chain_c new file mode 120000 index 0000000..9100cb1 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/holders/mod_dep_chain_c @@ -0,0 +1 @@ +../../mod_dep_chain_c \ No newline at end of file diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/initsize b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/initsize new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/initsize @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/initstate b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/initstate new file mode 100644 index 0000000..e23fe64 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/initstate @@ -0,0 +1 @@ +live diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/notes/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/notes/.note.Linux new file mode 100644 index 0000000..183aed9 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/notes/.note.Linux differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/notes/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/notes/.note.gnu.build-id new file mode 100644 index 0000000..673a782 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/notes/.note.gnu.build-id differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/refcnt b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/refcnt new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/refcnt @@ -0,0 +1 @@ +1 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.gnu.linkonce.this_module b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.gnu.linkonce.this_module new file mode 100644 index 0000000..8048b8f --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.gnu.linkonce.this_module @@ -0,0 +1 @@ +0xffffffffc10ff000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.init.data b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.init.data new file mode 100644 index 0000000..de75dee --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.init.data @@ -0,0 +1 @@ +0xffffffffc034d000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.note.Linux new file mode 100644 index 0000000..b451fc5 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.note.Linux @@ -0,0 +1 @@ +0xffffffffc10fe024 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.note.gnu.build-id new file mode 100644 index 0000000..b10979d --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.note.gnu.build-id @@ -0,0 +1 @@ +0xffffffffc10fe000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.orc_unwind b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.orc_unwind new file mode 100644 index 0000000..5dc94f4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.orc_unwind @@ -0,0 +1 @@ +0xffffffffc10fe0d6 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.orc_unwind_ip b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.orc_unwind_ip new file mode 100644 index 0000000..4dd4220 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.orc_unwind_ip @@ -0,0 +1 @@ +0xffffffffc10fe0e2 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.return_sites b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.return_sites new file mode 100644 index 0000000..74defae --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.return_sites @@ -0,0 +1 @@ +0xffffffffc10fe0d2 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.rodata.str1.8 b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.rodata.str1.8 new file mode 100644 index 0000000..18b3917 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.rodata.str1.8 @@ -0,0 +1 @@ +0xffffffffc10fe088 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.strtab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.strtab new file mode 100644 index 0000000..a51ce15 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.strtab @@ -0,0 +1 @@ +0xffffffffc034e4f8 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.symtab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.symtab new file mode 100644 index 0000000..38b02ed --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.symtab @@ -0,0 +1 @@ +0xffffffffc034e000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.text.unlikely b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.text.unlikely new file mode 100644 index 0000000..88cfba0 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/.text.unlikely @@ -0,0 +1 @@ +0xffffffffc10fd000 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__kcrctab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__kcrctab new file mode 100644 index 0000000..bbe2928 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__kcrctab @@ -0,0 +1 @@ +0xffffffffc10fe06c diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__ksymtab b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__ksymtab new file mode 100644 index 0000000..b48b59d --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__ksymtab @@ -0,0 +1 @@ +0xffffffffc10fe060 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__ksymtab_strings b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__ksymtab_strings new file mode 100644 index 0000000..585eebd --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__ksymtab_strings @@ -0,0 +1 @@ +0xffffffffc10fe070 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__mcount_loc b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__mcount_loc new file mode 100644 index 0000000..fe363ee --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/sections/__mcount_loc @@ -0,0 +1 @@ +0xffffffffc10fe0c2 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/taint b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/taint new file mode 100644 index 0000000..fed7ca6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_b/taint @@ -0,0 +1 @@ +POE diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/coresize b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/coresize new file mode 100644 index 0000000..08558e4 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/coresize @@ -0,0 +1 @@ +16384 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/holders/.gitignore b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/holders/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/initsize b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/initsize new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/initsize @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/initstate b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/initstate new file mode 100644 index 0000000..e23fe64 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/initstate @@ -0,0 +1 @@ +live diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/notes/.note.Linux b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/notes/.note.Linux new file mode 100644 index 0000000..183aed9 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/notes/.note.Linux differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/notes/.note.gnu.build-id b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/notes/.note.gnu.build-id new file mode 100644 index 0000000..50a9201 Binary files /dev/null and b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/notes/.note.gnu.build-id differ diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/refcnt b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/refcnt new file mode 100644 index 0000000..573541a --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/refcnt @@ -0,0 +1 @@ +0 diff --git a/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/taint b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/taint new file mode 100644 index 0000000..fed7ca6 --- /dev/null +++ b/testsuite/rootfs-pristine/test-modprobe/remove-single/sys/module/mod_dep_chain_c/taint @@ -0,0 +1 @@ +POE diff --git a/testsuite/setup-rootfs.sh b/testsuite/setup-rootfs.sh index 4440ddc..94bfdcf 100755 --- a/testsuite/setup-rootfs.sh +++ b/testsuite/setup-rootfs.sh @@ -77,6 +77,9 @@ map=( ["test-modprobe/external/lib/modules/external/"]="mod-simple.ko" ["test-modprobe/module-from-abspath/home/foo/"]="mod-simple.ko" ["test-modprobe/module-from-relpath/home/foo/"]="mod-simple.ko" + ["test-modprobe/remove-holders/lib/modules/6.2/kernel/mod-dep-chain-a.ko"]="mod-dep-chain-a.ko" + ["test-modprobe/remove-holders/lib/modules/6.2/kernel/mod-dep-chain-b.ko"]="mod-dep-chain-b.ko" + ["test-modprobe/remove-holders/lib/modules/6.2/kernel/mod-dep-chain-c.ko"]="mod-dep-chain-c.ko" ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/block/cciss.ko"]="mod-fake-cciss.ko" ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/hpsa.ko"]="mod-fake-hpsa.ko" ["test-depmod/modules-order-compressed/lib/modules/4.4.4/kernel/drivers/scsi/scsi_mod.ko"]="mod-fake-scsi-mod.ko" diff --git a/testsuite/test-modprobe.c b/testsuite/test-modprobe.c index 309f3e3..20413db 100644 --- a/testsuite/test-modprobe.c +++ b/testsuite/test-modprobe.c @@ -466,4 +466,59 @@ DEFINE_TEST(modprobe_module_from_relpath, .modules_loaded = "mod-simple", ); +static noreturn int modprobe_remove_single(const struct test *t) +{ + const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe"; + const char *const args[] = { + progname, + "--remove", + "--verbose", + "mod-dep-chain-c", + NULL, + }; + + test_spawn_prog(progname, args); + + exit(EXIT_FAILURE); +} + +DEFINE_TEST(modprobe_remove_single, + .description = "check if modprobe removes a single module but no holders", + .config = { + [TC_UNAME_R] = "6.2", + [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/remove-single", + [TC_DELETE_MODULE_RETCODES] = "mod_dep_chain_c:0:0", + }, + .modules_loaded = "mod-dep-chain-a,mod-dep-chain-b", + .need_spawn = true, + ); + +static noreturn int modprobe_remove_with_holders(const struct test *t) +{ + const char *progname = ABS_TOP_BUILDDIR "/tools/modprobe"; + const char *const args[] = { + progname, + "--remove", + "--remove-holders", + "--verbose", + "mod-dep-chain-a", + NULL, + }; + + test_spawn_prog(progname, args); + + exit(EXIT_FAILURE); +} + +DEFINE_TEST(modprobe_remove_with_holders, + .description = "check if modprobe removes also indirect holders", + .config = { + [TC_UNAME_R] = "6.2", + [TC_ROOTFS] = TESTSUITE_ROOTFS "test-modprobe/remove-holders", + [TC_DELETE_MODULE_RETCODES] = "mod_dep_chain_a:0:0:mod_dep_chain_b:0:0:mod_dep_chain_c:0:0", + }, + .modules_loaded = "", + .need_spawn = true, + ); + TESTSUITE_MAIN();