Nvidia are already moving to a world where the Linux kernel driver is GPLed and in Linux mainline and only the firmware and userspace parts would be proprietary. So that potential GPL violation is in the process of being resolved. Eventually the signed proprietary firmware and the upstream Linux kernel driver would be shared between the proprietary nvidia driver and the open source nouveau driver. Of course they shoved parts of the Linux kernel driver into the proprietary firmware as part of the process, so....
The bulk of a modern video driver on linux (and most operating systems) is not in the kernel. The kernel module just facilitates communication between the user space drivers in mesa and the hardware.