From patchwork Wed Oct 4 15:57:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ian Jackson X-Patchwork-Id: 9985045 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 42F6F6028E for ; Wed, 4 Oct 2017 16:00:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1D21828B45 for ; Wed, 4 Oct 2017 16:00:33 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 122E728B4B; Wed, 4 Oct 2017 16:00:33 +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 00B5128B45 for ; Wed, 4 Oct 2017 16:00:30 +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 1dzm3Q-00089l-KA; Wed, 04 Oct 2017 15:57:48 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dzm3P-00089N-8d for xen-devel@lists.xensource.com; Wed, 04 Oct 2017 15:57:47 +0000 Received: from [85.158.143.35] by server-9.bemta-6.messagelabs.com id 9C/AC-03422-AF405D95; Wed, 04 Oct 2017 15:57:46 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrLIsWRWlGSWpSXmKPExsXitHRDpO5Plqu RBn3vrCzuTXnP7sDosb1vF3sAYxRrZl5SfkUCa8a/xlamguPKFVce/WJvYHwk18XIwSEh4C/R 99yyi5ETyPSQuH72BBOIzSagK9G05S8biC0ioCxxvOkLaxcjFwezwDlGidYpG5hBEsICXhJTr 9wGs1kEVCQaVnayg9i8QPEfa38yQQyVkzh//CdYDSdQ/OnODmaQvUICnhLH1ppCmGoSc9fHQ3 QKSpyc+YQFxGYWkJA4+OIFM8QUS4lv658yT2Dkn4WkbBaSsgWMTKsYNYpTi8pSi3SNjPWSijL TM0pyEzNzdA0NzPRyU4uLE9NTcxKTivWS83M3MQIDjQEIdjD+mR94iFGSg0lJlPfXzyuRQnxJ +SmVGYnFGfFFpTmpxYcYZTg4lCR4xYGBKyRYlJqeWpGWmQMMeZi0BAePkgivAUiat7ggMbc4M x0idYrRmOPYpst/mDg6bt79wyTEkpeflyolzvuLGahUAKQ0ozQPbhAsFi8xykoJ8zICnSbEU5 BalJtZgir/ilGcg1FJmNcaZCFPZl4J3L5XQKcwAZ0yp+kKyCkliQgpqQZG9eicqNa/jF9mCnD NSf/6JDvtXtTeVUcf/ZuZHLdbp0Tyz3Jx8Z9vY+MMtk3j4rtfNE16W50H/z2fvQK7Lu982qw8 66FMq9hMR6VPG9tkg2ctaWBcVvWuaWK1S5nhq5OXd38WsJjhePjfim3S0u8zGyWDWfVcjSpWs dRYnt2SrplTWyvxI/iREktxRqKhFnNRcSIAfMD8ncACAAA= X-Env-Sender: prvs=4438c69fc=Ian.Jackson@citrix.com X-Msg-Ref: server-12.tower-21.messagelabs.com!1507132662!76337468!3 X-Originating-IP: [66.165.176.89] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n, received_headers: No Received headers X-StarScan-Received: X-StarScan-Version: 9.4.45; banners=-,-,- X-VirusChecked: Checked Received: (qmail 5169 invoked from network); 4 Oct 2017 15:57:45 -0000 Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89) by server-12.tower-21.messagelabs.com with RC4-SHA encrypted SMTP; 4 Oct 2017 15:57:45 -0000 X-IronPort-AV: E=Sophos;i="5.42,477,1500940800"; d="scan'208";a="442505935" X-CrossPremisesHeadersFilteredBySendConnector: FTLPEX02AMS01.citrite.net From: Ian Jackson To: Date: Wed, 4 Oct 2017 16:57:20 +0100 Message-ID: <1507132650-25376-15-git-send-email-ian.jackson@eu.citrix.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1507132650-25376-1-git-send-email-ian.jackson@eu.citrix.com> References: <1507132650-25376-1-git-send-email-ian.jackson@eu.citrix.com> MIME-Version: 1.0 X-OrganizationHeadersPreserved: FTLPEX02AMS01.citrite.net Cc: Ross Lagerwall , Stefano Stabellini , Wei Liu , Ian Jackson Subject: [Xen-devel] [PATCH 14/24] xentoolcore_restrict_all: "Implement" for xengnttab 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: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP Signed-off-by: Ian Jackson Acked-by: Wei Liu --- tools/Rules.mk | 2 +- tools/libs/gnttab/Makefile | 4 ++-- tools/libs/gnttab/gnttab_core.c | 10 ++++++++++ tools/libs/gnttab/private.h | 2 ++ tools/libs/gnttab/xengnttab.pc.in | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/Rules.mk b/tools/Rules.mk index 7dd126a..3239e76 100644 --- a/tools/Rules.mk +++ b/tools/Rules.mk @@ -114,7 +114,7 @@ LDLIBS_libxenevtchn = $(SHDEPS_libxenevtchn) $(XEN_LIBXENEVTCHN)/libxenevtchn$(l SHLIB_libxenevtchn = $(SHDEPS_libxenevtchn) -Wl,-rpath-link=$(XEN_LIBXENEVTCHN) CFLAGS_libxengnttab = -I$(XEN_LIBXENGNTTAB)/include $(CFLAGS_xeninclude) -SHDEPS_libxengnttab = $(SHLIB_libxentoollog) +SHDEPS_libxengnttab = $(SHLIB_libxentoollog) $(SHLIB_libxentoolcore) LDLIBS_libxengnttab = $(SHDEPS_libxengnttab) $(XEN_LIBXENGNTTAB)/libxengnttab$(libextension) SHLIB_libxengnttab = $(SHDEPS_libxengnttab) -Wl,-rpath-link=$(XEN_LIBXENGNTTAB) diff --git a/tools/libs/gnttab/Makefile b/tools/libs/gnttab/Makefile index afb924f..dcfe686 100644 --- a/tools/libs/gnttab/Makefile +++ b/tools/libs/gnttab/Makefile @@ -7,7 +7,7 @@ SHLIB_LDFLAGS += -Wl,--version-script=libxengnttab.map CFLAGS += -Werror -Wmissing-prototypes CFLAGS += -I./include $(CFLAGS_xeninclude) -CFLAGS += $(CFLAGS_libxentoollog) +CFLAGS += $(CFLAGS_libxentoollog) $(CFLAGS_libxentoolcore) SRCS-GNTTAB += gnttab_core.c SRCS-GNTSHR += gntshr_core.c @@ -64,7 +64,7 @@ libxengnttab.so.$(MAJOR): libxengnttab.so.$(MAJOR).$(MINOR) $(SYMLINK_SHLIB) $< $@ libxengnttab.so.$(MAJOR).$(MINOR): $(PIC_OBJS) libxengnttab.map - $(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxengnttab.so.$(MAJOR) $(SHLIB_LDFLAGS) -o $@ $(PIC_OBJS) $(LDLIBS_libxentoollog) $(APPEND_LDFLAGS) + $(CC) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxengnttab.so.$(MAJOR) $(SHLIB_LDFLAGS) -o $@ $(PIC_OBJS) $(LDLIBS_libxentoollog) $(LDLIBS_libxentoolcore) $(APPEND_LDFLAGS) .PHONY: install install: build diff --git a/tools/libs/gnttab/gnttab_core.c b/tools/libs/gnttab/gnttab_core.c index 968c833..bc88110 100644 --- a/tools/libs/gnttab/gnttab_core.c +++ b/tools/libs/gnttab/gnttab_core.c @@ -22,6 +22,11 @@ #include "private.h" +static int all_restrict_cb(Xentoolcore__Active_Handle *ah, uint32_t domid) { + xengnttab_handle *xgt = CONTAINER_OF(ah, *xgt, tc_ah); + return xentoolcore__restrict_by_dup2_null(xgt->fd); +} + xengnttab_handle *xengnttab_open(xentoollog_logger *logger, unsigned open_flags) { xengnttab_handle *xgt = malloc(sizeof(*xgt)); @@ -33,6 +38,9 @@ xengnttab_handle *xengnttab_open(xentoollog_logger *logger, unsigned open_flags) xgt->logger = logger; xgt->logger_tofree = NULL; + xgt->tc_ah.restrict_callback = all_restrict_cb; + xentoolcore__register_active_handle(&xgt->tc_ah); + if (!xgt->logger) { xgt->logger = xgt->logger_tofree = (xentoollog_logger*) @@ -47,6 +55,7 @@ xengnttab_handle *xengnttab_open(xentoollog_logger *logger, unsigned open_flags) err: osdep_gnttab_close(xgt); + xentoolcore__deregister_active_handle(&xgt->tc_ah); xtl_logger_destroy(xgt->logger_tofree); free(xgt); return NULL; @@ -60,6 +69,7 @@ int xengnttab_close(xengnttab_handle *xgt) return 0; rc = osdep_gnttab_close(xgt); + xentoolcore__deregister_active_handle(&xgt->tc_ah); xtl_logger_destroy(xgt->logger_tofree); free(xgt); return rc; diff --git a/tools/libs/gnttab/private.h b/tools/libs/gnttab/private.h index 3ce4205..ed8df40 100644 --- a/tools/libs/gnttab/private.h +++ b/tools/libs/gnttab/private.h @@ -2,6 +2,7 @@ #define XENGNTTAB_PRIVATE_H #include +#include #include /* Set of macros/defines used by both Linux and FreeBSD */ @@ -13,6 +14,7 @@ struct xengntdev_handle { xentoollog_logger *logger, *logger_tofree; int fd; + Xentoolcore__Active_Handle tc_ah; }; int osdep_gnttab_open(xengnttab_handle *xgt); diff --git a/tools/libs/gnttab/xengnttab.pc.in b/tools/libs/gnttab/xengnttab.pc.in index 51aad22..4c3beed 100644 --- a/tools/libs/gnttab/xengnttab.pc.in +++ b/tools/libs/gnttab/xengnttab.pc.in @@ -7,4 +7,4 @@ Description: The Xengnttab library for Xen hypervisor Version: @@version@@ Cflags: -I${includedir} @@cflagslocal@@ Libs: @@libsflag@@${libdir} -lxengnttab -Requires.private: xentoollog +Requires.private: xentoollog,xentoolcore