My kernel has been "corrupted"/tainted

What causes the following error and how could I fix it?:

A kernel problem occurred, 
but this kernel has been corrupted (indication: GW). 

Explanation:

W - Taint on warning.
Kernel maintainers cannot diagnose reports of broken kernels.

Are you using the rpmfusion nvidia drivers?
If so you can ignore the warning.
If not what extra driver have you installed?

It just means that you have installed extra kernel modules, for example the nvidia modules or Oracle Virtualbox, or similar. That is normal and does not mean that the kernel is corrupted.

In addition, you can decode the output of

cat /proc/sys/kernel/tainted

and find out why your kernel is tainted.

There is two ways to decode the numbers, A and B:

A

  1. run for i in $(seq 18); do echo $(($i-1)) $(($(cat /proc/sys/kernel/tainted)>>($i-1)&1));done
Sample output of above command
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 1
12 1
13 1
14 0
15 0
16 0
17 0
  1. look up the reasons for each bit that set to 1 in the table given in Tainted kernels — The Linux Kernel documentation

B

  1. use sh to run the script provided in https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/debugging/kernel-chktaint

Output of sh ~/bin/kernel-chktaint on my system looks like this:

Kernel is "tainted" for the following reasons:
 * workaround for bug in platform firmware applied (#11)
 * externally-built ('out-of-tree') module was loaded  (#12)
 * unsigned module was loaded (#13)
For a more detailed explanation of the various taint flags see
 Documentation/admin-guide/tainted-kernels.rst in the Linux kernel sources
 or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html
Raw taint value as int/string: 14336/'G          IOE     '

In your case:

G means: G if all modules loaded have a GPL or compatible license
W means: W if a warning has previously been issued by the kernel. (Though some warnings may set more specific taint flags.)

You can use dmesg or journalctl -k to find out more about the warnings, but it’s also common to ignore warnings (they are not errors).