Adsorption of the molecule CO on metallic surfaces is an important unsolved problem in Kohn-Sham density functional theory (KS-DFT). We present a detailed study of carbon monoxide adsorption on fcc (111) surfaces of 3d, 4d and 5d metals using nonempirical semilocal density functionals for the exchange-correlation energy: the local-density approximation (LDA), two generalized gradient approximations or GGAs (PBE and PBEsol), and a meta-GGA (SCAN). The typical error pattern (as found earlier for free molecules and for free transition metal surfaces), in which results improve from LDA to PBE or PBEsol to SCAN, due to the satisfaction of more exact constraints, is not found here. Instead, for CO adsorption on transition metal surfaces, we find that, while SCAN overbinds much less than LDA, it overbinds slightly more than PBE. Moreover, the tested functionals often predict the wrong adsorption site, as first pointed out for LDA and GGA in the ``CO/Pt (111) puzzle". This abnormal pattern leads us to suspect that the errors of PBE and SCAN for this problem are density-driven self-interaction errors associated with incorrect charge transfer between molecule and metal surface. We point out that, by the variational principle, overbinding by an approximate functional would be reduced if that functional were applied not to its selfconsistent density for the adsorbed system but to an exact or more correct density for that system. Finally, we show for CO on Pt(111) that the site preference is corrected and the adsorption energy is improved for the PBE functional by using not the selfconsistent PBE density but a PBE+U density. The resulting correction to the PBE total energy is much larger for the adsorbed system than for its desorbed components, showing that the error is in the density of the adsorbed system. This seems to solve the ``CO/Pt (111) puzzle", in principle if not fully in practice.