What is the meaning of <MODULE>: disagrees about version of symbol <SYMBOL>

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux (RHEL)

Issue

  • During the boot, the below message is shown:


...
tq_base: disagrees about version of symbol module_layout
...       
  • We are seeing many messages recorded in the logs as shown below:


Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol dput
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol done_path_create
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol vfs_link
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol mntget
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol kmalloc_caches

Resolution

  • The <MODULE> may not be compatible with the currently running kernel.
  • Please check with the module vendor in order to request they confirm compatibility with the current running kernel, and verify if any module updates are needed.

  • If the module is provided and supported by Red Hat, please engage with your Red Hat support representative for further analysis.

Root Cause

  • This message is generated by the below function in the kernel code:

"kernel/module.c"
-----------------
static int check_version(Elf_Shdr *sechdrs,
                         unsigned int versindex,
                         const char *symname,
                         struct module *mod,
                         const unsigned long *crc,
                         const struct module *crc_owner)
{
        unsigned int i, num_versions;
        struct modversion_info *versions;

        /* Exporting module didn't supply crcs?  OK, we're already tainted. */
        if (!crc)
                return 1;

        /* No versions at all?  modprobe --force does this. */
        if (versindex == 0)
                return try_to_force_load(mod, symname) == 0;

        versions = (void *) sechdrs[versindex].sh_addr;
        num_versions = sechdrs[versindex].sh_size
                / sizeof(struct modversion_info);

        for (i = 0; i name, symname);
        return 0;

bad_version:
        printk("%s: disagrees about version of symbol %s\n",
               mod->name, symname);
        return 0;
}

Diagnostic Steps

Using journalctl

If systemd is present, you may search the disagrees about version of symbol messages in the journald log files by using the journalctl and grep commands:


# journalctl | grep 'disagrees about version of symbol'

Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol dput
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol done_path_create
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol vfs_link
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol mntget
Aug 10 20:05:12 RHEL-HOSTNAME kernel: cvbf: disagrees about version of symbol kmalloc_caches

Using /var/log/messages

You may search the disagrees about version of symbol messages in /var/log/messages files by using the grep command:


# grep 'disagrees about version of symbol' /var/log/messages

May 22 15:30:55 RHEL-HOSTNAME kernel: bnxt_re: disagrees about version of symbol ib_device_set_netdev
May 22 15:30:55 RHEL-HOSTNAME kernel: bnxt_re: disagrees about version of symbol ib_umem_get
May 22 15:30:55 RHEL-HOSTNAME kernel: bnxt_re: disagrees about version of symbol ib_dealloc_device
May 22 15:30:55 RHEL-HOSTNAME kernel: bnxt_re: disagrees about version of symbol rdma_user_mmap_io
May 22 15:30:55 RHEL-HOSTNAME kernel: bnxt_re: disagrees about version of symbol ib_set_device_ops

Using dmesg

You may search the disagrees about version of symbol messages in the kernel ring buffer messages by using the dmesg and grep commands:


# dmesg | grep 'disagrees about version of symbol'

[ 3794.194391] tq_base: disagrees about version of symbol module_layout
[ 3794.198452] tq_base: disagrees about version of symbol module_layout

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments