From: Juergen Gross Date: Wed, 23 Aug 2017 17:34:00 +0000 (+0200) Subject: xen/arch/x86/irq.c: let custom parameter parsing routines return errno X-Git-Tag: archive/raspbian/4.11.1-1+rpi1~1^2~66^2~1593 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2e64c9e75adc9953337d1656845088dd3eb4b333;p=xen.git xen/arch/x86/irq.c: let custom parameter parsing routines return errno Modify the custom parameter parsing routines in: xen/arch/x86/irq.c to indicate whether the parameter value was parsed successfully. Signed-off-by: Juergen Gross Acked-by: Wei Liu Acked-by: Jan Beulich --- diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c index 57e6c18970..77ca181985 100644 --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -26,7 +26,7 @@ #include #include -static void parse_irq_vector_map_param(char *s); +static int parse_irq_vector_map_param(const char *s); /* opt_noirqbalance: If true, software IRQ balancing/affinity is disabled. */ bool __read_mostly opt_noirqbalance; @@ -60,24 +60,29 @@ static struct timer irq_ratelimit_timer; static unsigned int __read_mostly irq_ratelimit_threshold = 10000; integer_param("irq_ratelimit", irq_ratelimit_threshold); -static void __init parse_irq_vector_map_param(char *s) +static int __init parse_irq_vector_map_param(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 ( !strcmp(s, "none")) + if ( !strncmp(s, "none", ss - s)) opt_irq_vector_map=OPT_IRQ_VECTOR_MAP_NONE; - else if ( !strcmp(s, "global")) + else if ( !strncmp(s, "global", ss - s)) opt_irq_vector_map=OPT_IRQ_VECTOR_MAP_GLOBAL; - else if ( !strcmp(s, "per-device")) + else if ( !strncmp(s, "per-device", ss - s)) opt_irq_vector_map=OPT_IRQ_VECTOR_MAP_PERDEV; + else + rc = -EINVAL; s = ss + 1; - } while ( ss ); + } while ( *ss ); + + return rc; } /* Must be called when irq disabled */