Skip to content

Fix mismatch on module names for updates - #610

Merged
scaronni merged 2 commits into
dkms-project:mainfrom
lucasdemarchi:fix-replace-version
Oct 5, 2026
Merged

scaronni merged 2 commits into
dkms-project:mainfrom
lucasdemarchi:fix-replace-version

Conversation

@lucasdemarchi

Copy link
Copy Markdown
Contributor

No description provided.

When a new version is installed, the old version transitions to state
"built" rather than "installed". However it relies on the new version
overwriting the exact same modules.

When the compression from the new and old modules diverge, this leads to
very odd outcomes with both versions installed in /updates. When depmod
executes, there's no priority handling since both modules are in the
same dir, so it basically favors the order it walks the tree (i.e. it's
random).

Fix it by removing modules with the same name regardless of compression
suffix. This should fix the worst case, with modules with the same name.
However we may need to reconsider this and just actively uninstall
modules with the same version. Example of problematic situation:

foobar/1.1.1:
    - foobar.ko

foobar/2.0.0:
    - foobar-common.ko
    - foobar-platform1.ko
    - foobar-platform2.ko

This can be done later, on top.

Signed-off-by: Lucas De Marchi <ldemarchi@nvidia.com>
Before: installing a new version of dkms modules already installed in
the system could leave kernel modules behind if the new kernel module
names don't match the old ones.

The below are logs for the NVIDIA kernel modules being installed on
openSUSE 16 (fictitious versions though):

    $ sudo dkms install nvidia/595.71.09
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-modeset.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-drm.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-uvm.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-peermem.ko.zst
    Running depmod... done.
    $ sudo dkms install nvidia/615.0.0
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia.ko
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-modeset.ko
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-drm.ko
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-peermem.ko
    Running depmod... done.

The old nvidia-uvm.ko.zst belonging to the previous version would
remain in the tree since it's not part of the new dkms installation.

To fix this, explicitly uninstall the old version, leading to:

    $ sudo dkms install nvidia/595.71.09
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-modeset.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-drm.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-uvm.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-peermem.ko.zst
    Running depmod... done.
    $ sudo dkms install nvidia/615.0.0
    Module nvidia/595.71.09 for kernel 6.12.0-160000.37-default (x86_64):
    Before uninstall, this module version was ACTIVE on this kernel.
    Deleting /lib/modules/6.12.0-160000.37-default/updates/nvidia.ko.zst
    Deleting /lib/modules/6.12.0-160000.37-default/updates/nvidia-modeset.ko.zst
    Deleting /lib/modules/6.12.0-160000.37-default/updates/nvidia-drm.ko.zst
    Deleting /lib/modules/6.12.0-160000.37-default/updates/nvidia-uvm.ko.zst
    Deleting /lib/modules/6.12.0-160000.37-default/updates/nvidia-peermem.ko.zst
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia.ko
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-vgpu-vfio.ko
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-modeset.ko
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-drm.ko
    Installing /lib/modules/6.12.0-160000.37-default/updates/nvidia-peermem.ko
    Running depmod... done.

The sanity check for not installing an older version is kept as is.

Signed-off-by: Lucas De Marchi <ldemarchi@nvidia.com>
@scaronni
scaronni requested review from anbe42 and scaronni and removed request for anbe42 October 5, 2026 08:01
@scaronni scaronni self-assigned this Oct 5, 2026
@scaronni
scaronni merged commit 3b3a2bf into dkms-project:main Oct 5, 2026
31 checks passed
@scaronni

scaronni commented Oct 5, 2026

Copy link
Copy Markdown
Member

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants