I package nvidia Linux drivers at elrepo.org for Red Hat Enterprise Linux (and clones).
I would like to report an issue reported by our users here:
The kernel module fails to load on RHEL6 kernels. Affected drivers include 96.43.19 and 96.43.20 legacy drivers.
Verify ELF error [sec 33 note 12] (assertion 286)
Module failed ELF checks
ERROR: Installation has failed. Please see the file
'/var/log/nvidia-installer.log' for details. You may find suggestions
on fixing installation problems in the README available on the Linux
A user has identified what appears to be the problem and provided a patch that fixes/works around the issue (please see above bug reports).
After a bit of prodding around with Google I discovered that this error is being reported by the module_verify_elf () function in the kernel (see http://rhkernel.org/#RHEL6+2.6.32-71...e-verify-elf.c). The assertion failure is on line 286 in module-verify-elf.c:
notecheck(*q != '\0');
On examination of the .note section in the module (nvidia.ko) it seems that the all the "n_namesz" strings in the notes are '\0' padded and are therefore causing this assertion check to fail; the n_namesz fields in the elf32_note structures have the value 8 but the actual string being referenced is "01.01", which is only 6 characters in length (including trailing \0). This can be observed by dumping the .note section with objdump -j .note -s.
The actual offending file is usr/src/nv/nv-kernel.o (from the original NVIDIA package NVIDIA-Linux-x86-96.43.20-pkg1.run). I wonder, could the problem be fixed by either removing the .note section (using strip -R .note) or by binary editing it ? Alternatively the check being performed by module_verify_elf () could be relaxed (but I do not know what its purpose is so this could be undesirable).
However, the fix involves patching the binary kernel driver object file and as the License terms and conditions explicitly deny permission to modify binary files I refer the matter upstream to yourselves for a fix.