summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorMartin Whitaker <mageia@martin-whitaker.me.uk>2026-02-01 14:02:31 +0000
committerMartin Whitaker <mageia@martin-whitaker.me.uk>2026-02-01 21:52:13 +0000
commit76449920e50a105a81bf8957622b191d6397dae8 (patch)
tree1d627e382be344f9d83e1c49c0ae6d43b1d3da27 /kernel
parentdea08d3e8602c3db71afb6f7da850099d9c28880 (diff)
downloaddrakx-76449920e50a105a81bf8957622b191d6397dae8.tar
drakx-76449920e50a105a81bf8957622b191d6397dae8.tar.gz
drakx-76449920e50a105a81bf8957622b191d6397dae8.tar.bz2
drakx-76449920e50a105a81bf8957622b191d6397dae8.tar.xz
drakx-76449920e50a105a81bf8957622b191d6397dae8.zip
kernel: fix the check function in modules.pl
Get the kernel module list from /lib/modules/<kernel_ver>/modules.dep instead of looking for a file that is no longer generated. Support an optional command line parameter to 'modules.pl check' to specify the kernel version (use the running kernel version if not specified). Fix the pcitable and usbtable checks. These tables contain module names, whereas list_modules.pm contains module file names.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/modules.pl74
1 files changed, 45 insertions, 29 deletions
diff --git a/kernel/modules.pl b/kernel/modules.pl
index 9ec6f5356..aa989be5a 100644
--- a/kernel/modules.pl
+++ b/kernel/modules.pl
@@ -70,19 +70,31 @@ sub list_fake_modules {
}
}
-sub get_main_modules() {
- my $base = dirname($0);
- my $main = chomp_(cat_("$base/RPMS/.main"));
- chomp_(`tar tf $base/all.kernels/$main/all_modules.tar`);
-}
-
sub pci_modules4stage1 {
my ($category) = @_;
my @modules = difference2([ category2modules($category) ]);
print "$_\n" foreach uniq(map { dependencies_closure($_) } @modules);
}
+sub get_kernel_modules {
+ my ($kern_ver) = @_;
+
+ my @module_list;
+ foreach (sort(cat_("/lib/modules/$kern_ver/modules.dep"))) {
+ my ($module, $discard) = split(':', $_);
+ push @module_list, $module;
+ }
+ @module_list;
+}
+
sub check() {
+ my ($kern_ver) = @_;
+
+ if (!$kern_ver) {
+ $kern_ver = `uname -r`;
+ chomp($kern_ver);
+ }
+
my $error;
my %listed;
while (my ($t1, $l) = each %list_modules::l) {
@@ -97,25 +109,21 @@ sub check() {
my %module2category;
my %deprecated_modules = %listed;
my $not_listed = sub {
- my ($msg, $verbose, @l) = @_;
- my %not_listed;
- foreach (@l) {
- my ($mod) = m|([^/]*)\.k?o(\.gz)?$| or next;
- delete $deprecated_modules{$mod};
- next if $listed{$mod};
- s|.*?mdk/||;
- s|kernel/||; s|drivers/||; s|3rdparty/||;
- $_ = dirname $_;
- $_ = dirname $_ if $mod eq basename($_);
- $module2category{$mod} = $_;
- push @{$not_listed{$_}}, $mod;
- }
- if ($verbose) {
- print "$msg $_: ", join(" ", @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
- }
+ my %not_listed;
+ foreach (@_) {
+ my $path = dirname($_);
+ my $name = basename($_);
+ $name =~ s/\.ko\.xz//;
+ delete $deprecated_modules{$name};
+ next if $listed{$name};
+ $module2category{list_modules::filename2modname($name)} = $path;
+ push @{$not_listed{$path}}, $name;
+ }
+ if ($verbose) {
+ print "NOT LISTED $_: ", join(" ", @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
+ }
};
- $not_listed->('NOT LISTED', 1, get_main_modules());
- $not_listed->('not listed', $verbose, chomp_(`rpm -qpl RPMS/kernel-*2.6*`));
+ $not_listed->(get_kernel_modules($kern_ver));
if (%deprecated_modules) {
my %per_cat;
push @{$per_cat{$listed{$_}}}, $_ foreach keys %deprecated_modules;
@@ -129,22 +137,30 @@ sub check() {
my $pcitable = read_pcitable("/usr/share/ldetect-lst/pcitable");
my $usbtable = read_pcitable("/usr/share/ldetect-lst/usbtable");
+ my @l0 = map { list_modules::filename2modname($_) } keys %listed;
+
my @l1 = uniq grep { !/:/ && $_ ne 'unknown' } map { $_->[0] } values %$pcitable;
- if (my @l = difference2(\@l1, [ keys %listed ])) {
+ if (my @l = difference2(\@l1, \@l0)) {
my %not_listed;
push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
if (my $l = delete $not_listed{''}) {
print "bad/old pcitable modules : ", join(" ", @$l), "\n";
}
- print STDERR "PCITABLE MODULES NOT LISTED $_: ", join(" ", sort @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
- #$error = 1;
+ print STDERR "pcitable modules not listed in $_: ", join(" ", sort @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
+ print STDERR "note: pcitable module names need to be mapped to file names when updating list_modules.pm\n" if %not_listed;
+ $error = 1;
}
my @l2 = uniq grep { !/:/ && $_ ne 'unknown' } map { $_->[0] } values %$usbtable;
- if (my @l = difference2(\@l2, [ keys %listed ])) {
+ if (my @l = difference2(\@l2, \@l0)) {
my %not_listed;
push @{$not_listed{$module2category{$_}}}, $_ foreach @l;
- print STDERR "usbtable modules not listed $_: ", join(" ", sort @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
+ if (my $l = delete $not_listed{''}) {
+ print "bad/old usbtable modules : ", join(" ", @$l), "\n";
+ }
+ print STDERR "usbtable modules not listed in $_: ", join(" ", sort @{$not_listed{$_}}), "\n" foreach sort keys %not_listed;
+ print STDERR "note: usbtable module names need to be mapped to file names when updating list_modules.pm\n" if %not_listed;
+ $error = 1;
}
}