Addresses a failure in linker_load_module (sys/kern/kern_linker.c) to verify that an already-loaded module matches the version requirement, which causes the method to return the error (EEXIST). This is then propagated back up to kldload, which incorrectly prints that the module has already been loaded.
This patch adds a lookup to modlist_lookup2 to distinguish between the two cases at that point in the code:
- A module is already loaded that is of the correct version, so the error (EEXIST) should be returned
- An already-loaded module is of the incorrect version, so the error (ENOEXEC) is returned (changed from ENOENT)