Good, when used as an adverb (the shampoo smells good) is sometimes called a flat adverb because it lacks the -ly ending. In this sentence, good must be considered acceptable for print (not incorrect) because there is no alternative. On the other hand, He did good (where good is construed as an adverb, not a noun) is clearly colloquial and would not be used in edited writing. (Some grammarians claim that good used in this way is actually an adjective. But the fact is that it modifies the verb, smells, and nothing else in the sentence.)
It is an interesting oddity of English that goodly is an adjective and cannot be used as an adverb: A goodly amount.
English has a number of flat (or bare) adverbs that in certain situations cannot take an -ly ending and are always flat: set them straight, be tough, go far, lay low, finish last.