From patchwork Wed Aug 16 12:51:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Juergen Gross X-Patchwork-Id: 9903715 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 1CC5F603B5 for ; Wed, 16 Aug 2017 12:55:16 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0E83A289CD for ; Wed, 16 Aug 2017 12:55:16 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 0359A289E0; Wed, 16 Aug 2017 12:55:16 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 996FE289CD for ; Wed, 16 Aug 2017 12:55:15 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhxp9-0002iU-Rr; Wed, 16 Aug 2017 12:53:27 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dhxp8-0002d1-GS for xen-devel@lists.xenproject.org; Wed, 16 Aug 2017 12:53:26 +0000 Received: from [193.109.254.147] by server-10.bemta-6.messagelabs.com id 0C/13-18185-54044995; Wed, 16 Aug 2017 12:53:25 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrMLMWRWlGSWpSXmKPExsVyuP0Ov66rw5R Ig5MbxS2+b5nM5MDocfjDFZYAxijWzLyk/IoE1owbZ5cyF6wXqtizczZzA+NL3i5GTg4JASOJ txP/MXUxcnEICSxklFi49iMrSIJNQFViw/VTYLaIgJLEvVWTwYqYBWYxSizbPJsRJCEskClxd 8l1JhCbBahhWv9XsAZeAROJja9+MUJskJfoODCZBcTmBIpP3nAMzBYSMJbY3tPIPoGRewEjwy pGjeLUorLUIl1jI72kosz0jJLcxMwcXUMDM73c1OLixPTUnMSkYr3k/NxNjEAPMwDBDsbT6wI PMUpyMCmJ8gZpTYkU4kvKT6nMSCzOiC8qzUktPsQow8GhJMEraQ+UEyxKTU+tSMvMAYYaTFqC g0dJhNcVJM1bXJCYW5yZDpE6xajL8WrC/29MQix5+XmpUuK8mXZARQIgRRmleXAjYGF/iVFWS piXEegoIZ6C1KLczBJU+VeM4hyMSsK8s0Gm8GTmlcBtegV0BBPQEVfaJ4EcUZKIkJJqYFTu+K hlf8pE0inyfMvs/welbGf76LoLXk99sMWX81Iva/Cm5UxHQ69/rlPRUl2ZPkHfketZ6SE2rrN LC86+vxxhPKFIoK72e4f1ttzlv4vy7xW8vuWXIbutMj7fOP6+8/E4m/gwBTVr7YJgoVnuKhvk eSpFA40ehqzbvOrWro1s6hUzbx5NUWIpzkg01GIuKk4EAGaDhut2AgAA X-Env-Sender: jgross@suse.com X-Msg-Ref: server-6.tower-27.messagelabs.com!1502888005!112245062!1 X-Originating-IP: [195.135.220.15] X-SpamReason: No, hits=0.5 required=7.0 tests=BODY_RANDOM_LONG X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 3746 invoked from network); 16 Aug 2017 12:53:25 -0000 Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by server-6.tower-27.messagelabs.com with DHE-RSA-CAMELLIA256-SHA encrypted SMTP; 16 Aug 2017 12:53:25 -0000 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id E7055AE95; Wed, 16 Aug 2017 12:52:24 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Wed, 16 Aug 2017 14:51:36 +0200 Message-Id: <20170816125219.5255-10-jgross@suse.com> X-Mailer: git-send-email 2.12.3 In-Reply-To: <20170816125219.5255-1-jgross@suse.com> References: <20170816125219.5255-1-jgross@suse.com> Cc: Juergen Gross , Andrew Cooper , Paul Durrant , Jan Beulich Subject: [Xen-devel] [PATCH v3 09/52] xen/arch/x86/hvm/viridian.c: let custom parameter parsing routines return errno X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Modify the custom parameter parsing routines in: xen/arch/x86/hvm/viridian.c to indicate whether the parameter value was parsed successfully. Fix an error in the parsing function: up to now it would overwrite the stack in case more than 3 values are specified. Cc: Paul Durrant Cc: Jan Beulich Cc: Andrew Cooper Signed-off-by: Juergen Gross Acked-by: Paul Durrant --- V3: - dont modify option value in parsing function - fix error in parsing routine --- xen/arch/x86/hvm/viridian.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/xen/arch/x86/hvm/viridian.c b/xen/arch/x86/hvm/viridian.c index aa9b87c0ab..2edf9d0b23 100644 --- a/xen/arch/x86/hvm/viridian.c +++ b/xen/arch/x86/hvm/viridian.c @@ -1083,7 +1083,7 @@ static int viridian_load_vcpu_ctxt(struct domain *d, hvm_domain_context_t *h) HVM_REGISTER_SAVE_RESTORE(VIRIDIAN_VCPU, viridian_save_vcpu_ctxt, viridian_load_vcpu_ctxt, 1, HVMSR_PER_VCPU); -static void __init parse_viridian_version(char *arg) +static int __init parse_viridian_version(const char *arg) { const char *t; unsigned int n[3]; @@ -1093,17 +1093,24 @@ static void __init parse_viridian_version(char *arg) n[1] = viridian_minor; n[2] = viridian_build; - while ( (t = strsep(&arg, ",")) != NULL ) - { + do { const char *e; - if ( *t == '\0' ) - continue; + t = strchr(arg, ','); + if ( !t ) + t = strchr(arg, '\0'); + + if ( *arg && *arg != ',' && i < 3 ) + { + n[i] = simple_strtoul(arg, &e, 0); + if ( e != t ) + goto fail; + } + + i++; + arg = t + 1; + } while ( *t ); - n[i++] = simple_strtoul(t, &e, 0); - if ( *e != '\0' ) - goto fail; - } if ( i != 3 ) goto fail; @@ -1118,10 +1125,11 @@ static void __init parse_viridian_version(char *arg) printk("viridian-version = %#x,%#x,%#x\n", viridian_major, viridian_minor, viridian_build); - return; + return 0; fail: printk(XENLOG_WARNING "Invalid viridian-version, using default\n"); + return -EINVAL; } custom_param("viridian-version", parse_viridian_version);