From patchwork Mon Mar 30 19:21:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 11466255 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9A5AA14B4 for ; Mon, 30 Mar 2020 19:23:39 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 76EC32072E for ; Mon, 30 Mar 2020 19:23:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xen.org header.i=@xen.org header.b="CRq9bVLP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 76EC32072E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzz9-0005wt-Up; Mon, 30 Mar 2020 19:22:11 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzz8-0005wo-5k for xen-devel@lists.xenproject.org; Mon, 30 Mar 2020 19:22:10 +0000 X-Inumbo-ID: bf42d45a-72bb-11ea-b9f4-12813bfff9fa Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id bf42d45a-72bb-11ea-b9f4-12813bfff9fa; Mon, 30 Mar 2020 19:22:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=m6d++yISFYoabczO21ysTR9r+GhnJXbvqXk0ITsPtjo=; b=CRq9bVLPhYr/5ywgpu35lYfrCq XihjmGslycLYzQhv117hy3z2K8TYeOD1/D5zjZe1fDtH3qJ0YyTqtTPL0U92tDmU94hdS3kSzhuWx gYQcvWvk5K/6bI1b4fNymdAoOgfxqAoM5FwuuvdQFRneHwNYTG9hWDpGy0DoS2sN+5Kk=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzz5-0003l1-M9; Mon, 30 Mar 2020 19:22:07 +0000 Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=ufe34d9ed68d054.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1jIzz5-0007AJ-DC; Mon, 30 Mar 2020 19:22:07 +0000 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 30 Mar 2020 20:21:50 +0100 Message-Id: <20200330192157.1335-2-julien@xen.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330192157.1335-1-julien@xen.org> References: <20200330192157.1335-1-julien@xen.org> Subject: [Xen-devel] [PATCH 1/8] xen/guest_access: Harden copy_to_guest_offset to prevent const dest operand X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Andrew Cooper , Julien Grall , dfaggioli@suse.com, Jan Beulich , Volodymyr Babchuk , =?utf-8?q?Roger_Pau_Monn?= =?utf-8?q?=C3=A9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Julien Grall At the moment, copy_to_guest_offset() will allow the hypervisor to copy data to guest handle marked const. Thankfully, no users of the helper will do that. Rather than hoping this can be caught during review, harden copy_to_guest_offset() so the build will fail if such users are introduced. Signed-off-by: Julien Grall --- xen/include/asm-arm/guest_access.h | 2 +- xen/include/asm-x86/guest_access.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/include/asm-arm/guest_access.h b/xen/include/asm-arm/guest_access.h index 8997a1cbfe..ff2eec237d 100644 --- a/xen/include/asm-arm/guest_access.h +++ b/xen/include/asm-arm/guest_access.h @@ -126,7 +126,7 @@ int access_guest_memory_by_ipa(struct domain *d, paddr_t ipa, void *buf, #define __copy_to_guest_offset(hnd, off, ptr, nr) ({ \ const typeof(*(ptr)) *_s = (ptr); \ - char (*_d)[sizeof(*_s)] = (void *)(hnd).p; \ + typeof(*((hnd).p)) *_d = (hnd).p; \ ((void)((hnd).p == (ptr))); \ __raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr));\ }) diff --git a/xen/include/asm-x86/guest_access.h b/xen/include/asm-x86/guest_access.h index ca700c959a..2693c6540b 100644 --- a/xen/include/asm-x86/guest_access.h +++ b/xen/include/asm-x86/guest_access.h @@ -86,7 +86,7 @@ */ #define copy_to_guest_offset(hnd, off, ptr, nr) ({ \ const typeof(*(ptr)) *_s = (ptr); \ - char (*_d)[sizeof(*_s)] = (void *)(hnd).p; \ + typeof(*((hnd).p)) *_d = (hnd).p; \ ((void)((hnd).p == (ptr))); \ raw_copy_to_guest(_d+(off), _s, sizeof(*_s)*(nr)); \ }) From patchwork Mon Mar 30 19:21:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 11466251 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D81E517EA for ; Mon, 30 Mar 2020 19:23:36 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B47CE2072E for ; Mon, 30 Mar 2020 19:23:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xen.org header.i=@xen.org header.b="ry2T9/59" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B47CE2072E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzC-0005x8-7X; Mon, 30 Mar 2020 19:22:14 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzA-0005wz-MD for xen-devel@lists.xenproject.org; Mon, 30 Mar 2020 19:22:12 +0000 X-Inumbo-ID: c0b69ec0-72bb-11ea-b4f4-bc764e2007e4 Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id c0b69ec0-72bb-11ea-b4f4-bc764e2007e4; Mon, 30 Mar 2020 19:22:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=r3hOtP/jXPcCtes7l0jKraBeKHXjJ8jvdB/4BpY9Tk4=; b=ry2T9/59Z0GKkxLpHpaoeEFpZ0 W/D5IRQopyYOy/39rSCrp8OMSUSkzUuStRSJLmY3/wIRPROLW6F8gc8yzkEGzGDlMnUnyZJnhPfmq D8DDGOQdd1ehyckpg0i7KGsNQdc0Q0A8EKcifa2mITwySHMMWAMlVIe17piHIdupy7x4=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzz7-0003l9-Aw; Mon, 30 Mar 2020 19:22:09 +0000 Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=ufe34d9ed68d054.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1jIzz7-0007AJ-1R; Mon, 30 Mar 2020 19:22:09 +0000 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 30 Mar 2020 20:21:51 +0100 Message-Id: <20200330192157.1335-3-julien@xen.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330192157.1335-1-julien@xen.org> References: <20200330192157.1335-1-julien@xen.org> Subject: [Xen-devel] [PATCH 2/8] xen/public: sysctl: set_parameter.params and debug.keys should be const X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Andrew Cooper , Julien Grall , Ian Jackson , George Dunlap , dfaggioli@suse.com, Jan Beulich Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Julien Grall The fields set_parameter.params and debug.keys should never be modified by the hypervisor. So mark them as const. Signed-off-by: Julien Grall Reviewed-by: Jan Beulich --- I am not entirely sure whether we should bump the systcl version for this change. Any thoughts? --- xen/include/public/sysctl.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xen/include/public/sysctl.h b/xen/include/public/sysctl.h index 3d72fab49f..3a08c512e8 100644 --- a/xen/include/public/sysctl.h +++ b/xen/include/public/sysctl.h @@ -170,7 +170,7 @@ struct xen_sysctl_getdomaininfolist { /* XEN_SYSCTL_debug_keys */ struct xen_sysctl_debug_keys { /* IN variables. */ - XEN_GUEST_HANDLE_64(char) keys; + XEN_GUEST_HANDLE_64(const_char) keys; uint32_t nr_keys; }; @@ -1037,7 +1037,7 @@ struct xen_sysctl_livepatch_op { */ struct xen_sysctl_set_parameter { - XEN_GUEST_HANDLE_64(char) params; /* IN: pointer to parameters. */ + XEN_GUEST_HANDLE_64(const_char) params; /* IN: pointer to parameters. */ uint16_t size; /* IN: size of parameters. */ uint16_t pad[3]; /* IN: MUST be zero. */ }; From patchwork Mon Mar 30 19:21:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 11466261 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 11A1D17EA for ; Mon, 30 Mar 2020 19:23:41 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E279B2072E for ; Mon, 30 Mar 2020 19:23:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xen.org header.i=@xen.org header.b="wut8A6a2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E279B2072E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzE-0005xh-Jm; Mon, 30 Mar 2020 19:22:16 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzD-0005xW-5y for xen-devel@lists.xenproject.org; Mon, 30 Mar 2020 19:22:15 +0000 X-Inumbo-ID: c0dbf5b2-72bb-11ea-b9f4-12813bfff9fa Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id c0dbf5b2-72bb-11ea-b9f4-12813bfff9fa; Mon, 30 Mar 2020 19:22:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=cY01mY86IvlEBi9LBC0n631juFx7p42WJ2oDnAMsp50=; b=wut8A6a2aSgZO+eHz0HH0rqTy4 rvgwJNTmIhTbrd5jDC/zDcJvGDdefAooOvvpqh+Lpp+eA4WLYBXCAN0whFWfK8h8RuvdTH/hQ4nXL oezV4/psEFV14HQH6fiTJg44b7opJMuv3YFyAhsI4/P3eV9jj9dpK7YLX+Gpp/+2iu2A=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzz8-0003lE-Bt; Mon, 30 Mar 2020 19:22:10 +0000 Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=ufe34d9ed68d054.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1jIzz8-0007AJ-3D; Mon, 30 Mar 2020 19:22:10 +0000 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 30 Mar 2020 20:21:52 +0100 Message-Id: <20200330192157.1335-4-julien@xen.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330192157.1335-1-julien@xen.org> References: <20200330192157.1335-1-julien@xen.org> Subject: [Xen-devel] [PATCH 3/8] tools/libxc: misc: Mark const the parameter 'keys' of xc_send_debug_keys() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Julien Grall , Ian Jackson , Wei Liu , dfaggioli@suse.com Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Julien Grall OCaml is using a string to describe the parameter 'keys' of xc_send_debug_keys(). Since Ocaml 4.06.01, String_val() will return a const char * when using -safe-string. This will result to a build failure because xc_send_debug_keys() expects a char *. The function should never modify the parameter 'keys' and therefore the parameter should be const. Unfortunately, this is not directly possible because DECLARE_HYPERCALL_BOUNCE() is expecting a non-const variable. A new macro DECLARE_HYPERCALL_BOUNCE_IN() is introduced and will take care of const parameter. The first user will be xc_send_debug_keys() but this can be used in more place in the future. Reported-by: Dario Faggioli Signed-off-by: Julien Grall Reviewed-by: Ian Jackson --- tools/libxc/include/xenctrl.h | 2 +- tools/libxc/xc_misc.c | 4 ++-- tools/libxc/xc_private.h | 8 ++++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index fc6e57a1a0..d8874eb846 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -1225,7 +1225,7 @@ int xc_readconsolering(xc_interface *xch, unsigned int *pnr_chars, int clear, int incremental, uint32_t *pindex); -int xc_send_debug_keys(xc_interface *xch, char *keys); +int xc_send_debug_keys(xc_interface *xch, const char *keys); int xc_set_parameters(xc_interface *xch, char *params); typedef struct xen_sysctl_physinfo xc_physinfo_t; diff --git a/tools/libxc/xc_misc.c b/tools/libxc/xc_misc.c index 093fa44081..957c03415c 100644 --- a/tools/libxc/xc_misc.c +++ b/tools/libxc/xc_misc.c @@ -167,11 +167,11 @@ int xc_readconsolering(xc_interface *xch, return ret; } -int xc_send_debug_keys(xc_interface *xch, char *keys) +int xc_send_debug_keys(xc_interface *xch, const char *keys) { int ret, len = strlen(keys); DECLARE_SYSCTL; - DECLARE_HYPERCALL_BOUNCE(keys, len, XC_HYPERCALL_BUFFER_BOUNCE_IN); + DECLARE_HYPERCALL_BOUNCE_IN(keys, len); if ( xc_hypercall_bounce_pre(xch, keys) ) return -1; diff --git a/tools/libxc/xc_private.h b/tools/libxc/xc_private.h index adc3b6a571..c77edb3c4c 100644 --- a/tools/libxc/xc_private.h +++ b/tools/libxc/xc_private.h @@ -181,6 +181,14 @@ enum { */ #define DECLARE_HYPERCALL_BOUNCE(_ubuf, _sz, _dir) DECLARE_NAMED_HYPERCALL_BOUNCE(_ubuf, _ubuf, _sz, _dir) +/* + * Declare a bounce buffer shadowing the named user data pointer that + * cannot be modified. + */ +#define DECLARE_HYPERCALL_BOUNCE_IN(_ubuf, _sz) \ + DECLARE_NAMED_HYPERCALL_BOUNCE(_ubuf, (void *)(_ubuf), _sz, \ + XC_HYPERCALL_BUFFER_BOUNCE_IN) + /* * Set the size of data to bounce. Useful when the size is not known * when the bounce buffer is declared. From patchwork Mon Mar 30 19:21:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 11466253 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 39A7C912 for ; Mon, 30 Mar 2020 19:23:39 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 154252072E for ; Mon, 30 Mar 2020 19:23:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xen.org header.i=@xen.org header.b="En/uO1Wb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 154252072E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzK-0005zI-6k; Mon, 30 Mar 2020 19:22:22 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzI-0005yY-6q for xen-devel@lists.xenproject.org; Mon, 30 Mar 2020 19:22:20 +0000 X-Inumbo-ID: c14e495c-72bb-11ea-b9f4-12813bfff9fa Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id c14e495c-72bb-11ea-b9f4-12813bfff9fa; Mon, 30 Mar 2020 19:22:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=peJcPgQ/w5GYJTqL3knAugPTmzSwJ80t6fz1TAFDEK0=; b=En/uO1WbEIm4lGhBErwCW2lV6A brHekkrx6Xl/3KGnU6ngnnWrHOwZr8X4rUozTWdNySK9YDaFHYXIqApXOqU22jgsaGTF0898Hssvi M81Ir5RC/ekjJnZL2zIeyicc7jWpEHbtvj1vdy2+4AA8IJbqctbW1GKpoNUIGfSByrbY=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzz9-0003lS-Dv; Mon, 30 Mar 2020 19:22:11 +0000 Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=ufe34d9ed68d054.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1jIzz9-0007AJ-50; Mon, 30 Mar 2020 19:22:11 +0000 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 30 Mar 2020 20:21:53 +0100 Message-Id: <20200330192157.1335-5-julien@xen.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330192157.1335-1-julien@xen.org> References: <20200330192157.1335-1-julien@xen.org> Subject: [Xen-devel] [PATCH 4/8] tools/libxc: misc: Mark const the parameter 'params' of xc_set_parameters() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Julien Grall , Ian Jackson , Wei Liu , dfaggioli@suse.com Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Julien Grall The parameter 'params' of xc_set_parameters() should never be modified. So mark it as const. Signed-off-by: Julien Grall Reviewed-by: Ian Jackson --- tools/libxc/include/xenctrl.h | 2 +- tools/libxc/xc_misc.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/libxc/include/xenctrl.h b/tools/libxc/include/xenctrl.h index d8874eb846..58fa931de1 100644 --- a/tools/libxc/include/xenctrl.h +++ b/tools/libxc/include/xenctrl.h @@ -1226,7 +1226,7 @@ int xc_readconsolering(xc_interface *xch, int clear, int incremental, uint32_t *pindex); int xc_send_debug_keys(xc_interface *xch, const char *keys); -int xc_set_parameters(xc_interface *xch, char *params); +int xc_set_parameters(xc_interface *xch, const char *params); typedef struct xen_sysctl_physinfo xc_physinfo_t; typedef struct xen_sysctl_cputopo xc_cputopo_t; diff --git a/tools/libxc/xc_misc.c b/tools/libxc/xc_misc.c index 957c03415c..fe477bf344 100644 --- a/tools/libxc/xc_misc.c +++ b/tools/libxc/xc_misc.c @@ -187,11 +187,11 @@ int xc_send_debug_keys(xc_interface *xch, const char *keys) return ret; } -int xc_set_parameters(xc_interface *xch, char *params) +int xc_set_parameters(xc_interface *xch, const char *params) { int ret, len = strlen(params); DECLARE_SYSCTL; - DECLARE_HYPERCALL_BOUNCE(params, len, XC_HYPERCALL_BUFFER_BOUNCE_IN); + DECLARE_HYPERCALL_BOUNCE_IN(params, len); if ( xc_hypercall_bounce_pre(xch, params) ) return -1; From patchwork Mon Mar 30 19:21:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 11466259 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 78353912 for ; Mon, 30 Mar 2020 19:23:40 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 54D4C2072E for ; Mon, 30 Mar 2020 19:23:40 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xen.org header.i=@xen.org header.b="TcefiyBl" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 54D4C2072E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzS-00064E-S3; Mon, 30 Mar 2020 19:22:30 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzS-000642-6J for xen-devel@lists.xenproject.org; Mon, 30 Mar 2020 19:22:30 +0000 X-Inumbo-ID: c34cee6e-72bb-11ea-b9f4-12813bfff9fa Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id c34cee6e-72bb-11ea-b9f4-12813bfff9fa; Mon, 30 Mar 2020 19:22:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=SeTP5PjKpdztRFSH2djowiTCzoQ8o/T7Y3wvlnDwhHk=; b=TcefiyBlZ3lnjAHdNvaPZbBRWS Zah8M9C9laLhy/vo/xoCPcadFcuM9Adik5NQImgEHUSYG+YwnjbxGeO5CHaoUIZPbPcU1Fctr5J8E IcL9yFfsYQWLm5rZqWpWrJ9ScAFqXG7HfEnybEJqt/D7szWcUlE6bn88nziw/so2aLJw=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzC-0003li-0H; Mon, 30 Mar 2020 19:22:14 +0000 Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=ufe34d9ed68d054.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1jIzzB-0007AJ-Nd; Mon, 30 Mar 2020 19:22:13 +0000 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 30 Mar 2020 20:21:55 +0100 Message-Id: <20200330192157.1335-7-julien@xen.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330192157.1335-1-julien@xen.org> References: <20200330192157.1335-1-julien@xen.org> Subject: [Xen-devel] [PATCH 6/8] tools/ocaml: libxb: Harden stub_header_of_string() X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Wei Liu , Julien Grall , Ian Jackson , dfaggioli@suse.com, Christian Lindig , David Scott Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Julien Grall stub_header_of_string() should not modify the header. So mark the variable 'hdr' as const. Signed-off-by: Julien Grall --- tools/ocaml/libs/xb/xenbus_stubs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/ocaml/libs/xb/xenbus_stubs.c b/tools/ocaml/libs/xb/xenbus_stubs.c index a68e783f70..001bb03371 100644 --- a/tools/ocaml/libs/xb/xenbus_stubs.c +++ b/tools/ocaml/libs/xb/xenbus_stubs.c @@ -40,12 +40,12 @@ CAMLprim value stub_header_of_string(value s) { CAMLparam1(s); CAMLlocal1(ret); - struct xsd_sockmsg *hdr; + const struct xsd_sockmsg *hdr; if (caml_string_length(s) != sizeof(struct xsd_sockmsg)) caml_failwith("xb header incomplete"); ret = caml_alloc_tuple(4); - hdr = (struct xsd_sockmsg *) String_val(s); + hdr = (const struct xsd_sockmsg *) String_val(s); Store_field(ret, 0, Val_int(hdr->tx_id)); Store_field(ret, 1, Val_int(hdr->req_id)); Store_field(ret, 2, Val_int(hdr->type)); From patchwork Mon Mar 30 19:21:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Grall X-Patchwork-Id: 11466257 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id AC9671805 for ; Mon, 30 Mar 2020 19:23:39 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 89B4B20748 for ; Mon, 30 Mar 2020 19:23:39 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=xen.org header.i=@xen.org header.b="gbelpuF+" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 89B4B20748 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=xen.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzG-0005y6-TR; Mon, 30 Mar 2020 19:22:18 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzF-0005xt-Lf for xen-devel@lists.xenproject.org; Mon, 30 Mar 2020 19:22:17 +0000 X-Inumbo-ID: c3fd449e-72bb-11ea-83d8-bc764e2007e4 Received: from mail.xenproject.org (unknown [104.130.215.37]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id c3fd449e-72bb-11ea-83d8-bc764e2007e4; Mon, 30 Mar 2020 19:22:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=xen.org; s=20200302mail; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=5RK/M/BD78N+wYg8aAJcgWTuFyhsFJhP/rvS9tnG5ds=; b=gbelpuF+8nz0EGiSJb3ROmX5Bv umYGB/CtTDuxmb+xsgzL0NFR5tPOe0tUb42dp6RXODkcn0OzQ6KMi2XYcbQzcmwTRjA/mik4lNUbe Moh7iklMlInYb6VDchoCZCSYSFrCr6wKSm0dKGmAer1iVQvH1bUKtEWU+d4yaAwJzdBY=; Received: from xenbits.xenproject.org ([104.239.192.120]) by mail.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1jIzzD-0003lr-9V; Mon, 30 Mar 2020 19:22:15 +0000 Received: from 54-240-197-235.amazon.com ([54.240.197.235] helo=ufe34d9ed68d054.ant.amazon.com) by xenbits.xenproject.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.89) (envelope-from ) id 1jIzzD-0007AJ-0d; Mon, 30 Mar 2020 19:22:15 +0000 From: Julien Grall To: xen-devel@lists.xenproject.org Date: Mon, 30 Mar 2020 20:21:56 +0100 Message-Id: <20200330192157.1335-8-julien@xen.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200330192157.1335-1-julien@xen.org> References: <20200330192157.1335-1-julien@xen.org> Subject: [Xen-devel] [PATCH 7/8] tools/ocaml: libxb: Avoid to use String_val() when value is bytes X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Wei Liu , Julien Grall , Ian Jackson , dfaggioli@suse.com, Christian Lindig , David Scott Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" From: Julien Grall Commit ec7d54dd1a "ocaml/libs/xb: Use bytes in place of strings for mutable buffers" switch mutable buffers from string to bytes. However the C code were still using String_Val() to access them. While the underlying structure is the same between string and bytes, a string is meant to be immutable. OCaml 4.06.1 and later will enforce it. Therefore, it will not be possible to build the OCaml libs when using -safe-string. This is because String_val() will return a const value. To avoid plain cast in the code, the code is now switched to use Bytes_val(). As the macro is not defined in older OCaml version, we need to provide a stub. Take the opportunity to switch to const the buffer in ml_interface_write() as it should not be modified. Reported-by: Dario Faggioli Signed-off-by: Julien Grall --- tools/ocaml/libs/xb/xs_ring_stubs.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/ocaml/libs/xb/xs_ring_stubs.c b/tools/ocaml/libs/xb/xs_ring_stubs.c index 473787064a..7537a23949 100644 --- a/tools/ocaml/libs/xb/xs_ring_stubs.c +++ b/tools/ocaml/libs/xb/xs_ring_stubs.c @@ -36,6 +36,14 @@ #define GET_C_STRUCT(a) ((struct mmap_interface *) a) +/* + * Bytes_val has been introduced by Ocaml 4.06.1. So define our own version + * if needed. + */ +#ifndef Bytes_val +#define Bytes_val(x) ((unsigned char *) Bp_val(x)) +#endif + CAMLprim value ml_interface_read(value ml_interface, value ml_buffer, value ml_len) @@ -44,7 +52,7 @@ CAMLprim value ml_interface_read(value ml_interface, CAMLlocal1(ml_result); struct mmap_interface *interface = GET_C_STRUCT(ml_interface); - char *buffer = String_val(ml_buffer); + unsigned char *buffer = Bytes_val(ml_buffer); int len = Int_val(ml_len); int result; @@ -103,7 +111,7 @@ CAMLprim value ml_interface_write(value ml_interface, CAMLlocal1(ml_result); struct mmap_interface *interface = GET_C_STRUCT(ml_interface); - char *buffer = String_val(ml_buffer); + const unsigned char *buffer = Bytes_val(ml_buffer); int len = Int_val(ml_len); int result;