On 6/22/22 04:48, Pavel Machek wrote: > Hi! > > >> +static int __init mmio_stale_data_parse_cmdline(char *str) >> +{ >> + if (!boot_cpu_has_bug(X86_BUG_MMIO_STALE_DATA)) >> + return 0; >> + >> + if (!str) >> + return -EINVAL; >> + >> + if (!strcmp(str, "off")) { >> + mmio_mitigation = MMIO_MITIGATION_OFF; >> + } else if (!strcmp(str, "full")) { >> + mmio_mitigation = MMIO_MITIGATION_VERW; >> + } else if (!strcmp(str, "full,nosmt")) { >> + mmio_mitigation = MMIO_MITIGATION_VERW; >> + mmio_nosmt = true; >> + } >> + >> + return 0; >> +} > > This is wrong, AFAICT. Returning 0 will pollute init's environment; > Randy was cleaning those lately and we are even seeing them in > -stable. See for example b793a01000122d2bd133ba451a76cc135b5e162c. > > The early return 0 should disappear, too; we should validate the > option even on non-buggy machines. It's good to be on the lookout for such problems, but __setup() functions (like I was cleaning) are the opposite (sad:( of early_param() functions, which this one is. early_param() does return 0 on success and non-zero on error, so this looks OK to me. -- ~Randy