From: Juergen Gross Date: Wed, 23 Aug 2017 17:34:00 +0000 (+0200) Subject: xen/arch/x86/x86_64/mmconfig-shared.c: let custom parameter parsing routines return... X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~1584 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ebc66733aa6f630d2282ced0ecbd81a4b6f9b75c;p=xen.git xen/arch/x86/x86_64/mmconfig-shared.c: let custom parameter parsing routines return errno Modify the custom parameter parsing routines in: xen/arch/x86/x86_64/mmconfig-shared.c to indicate whether the parameter value was parsed successfully. Signed-off-by: Juergen Gross Reviewed-by: Jan Beulich --- diff --git a/xen/arch/x86/x86_64/mmconfig-shared.c b/xen/arch/x86/x86_64/mmconfig-shared.c index dbf9ff07fa..7c3b7fd30b 100644 --- a/xen/arch/x86/x86_64/mmconfig-shared.c +++ b/xen/arch/x86/x86_64/mmconfig-shared.c @@ -28,22 +28,36 @@ unsigned int pci_probe = PCI_PROBE_CONF1 | PCI_PROBE_MMCONF; -static void __init parse_mmcfg(char *s) +static int __init parse_mmcfg(const char *s) { - char *ss; + const char *ss; + int rc = 0; do { ss = strchr(s, ','); - if ( ss ) - *ss = '\0'; + if ( !ss ) + ss = strchr(s, '\0'); - if ( !parse_bool(s, NULL) ) + switch ( parse_bool(s, ss) ) + { + case 0: pci_probe &= ~PCI_PROBE_MMCONF; - else if ( !strcmp(s, "amd_fam10") || !strcmp(s, "amd-fam10") ) - pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF; + break; + case 1: + break; + default: + if ( !strncmp(s, "amd_fam10", ss - s) || + !strncmp(s, "amd-fam10", ss - s) ) + pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF; + else + rc = -EINVAL; + break; + } s = ss + 1; - } while ( ss ); + } while ( *ss ); + + return rc; } custom_param("mmcfg", parse_mmcfg);