From owner-svn-src-all@FreeBSD.ORG Fri Jun 24 13:41:46 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (unknown [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DCF90106564A; Fri, 24 Jun 2011 13:41:46 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [69.147.83.44]) by mx1.freebsd.org (Postfix) with ESMTP id CBC468FC17; Fri, 24 Jun 2011 13:41:46 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p5ODfkok056281; Fri, 24 Jun 2011 13:41:46 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p5ODfk3S056272; Fri, 24 Jun 2011 13:41:46 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201106241341.p5ODfk3S056272@svn.freebsd.org> From: John Baldwin Date: Fri, 24 Jun 2011 13:41:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r223500 - in stable/8/sys: arm/arm ia64/ia64 kern mips/mips mips/rmi x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jun 2011 13:41:47 -0000 Author: jhb Date: Fri Jun 24 13:41:46 2011 New Revision: 223500 URL: http://svn.freebsd.org/changeset/base/223500 Log: MFC 221218: Change rman_manage_region() to actually honor the rm_start and rm_end constraints on the rman and reject attempts to manage a region that is out of range. - Fix various places that set rm_end incorrectly (to ~0 or ~0u instead of ~0ul). - To preserve existing behavior, change rman_init() to set rm_start and rm_end to allow managing the full range (0 to ~0ul) if they are not set by the caller when rman_init() is called. Modified: stable/8/sys/arm/arm/nexus.c stable/8/sys/ia64/ia64/nexus.c stable/8/sys/kern/subr_rman.c stable/8/sys/mips/mips/mainbus.c stable/8/sys/mips/mips/nexus.c stable/8/sys/mips/rmi/pcibus.c (contents, props changed) stable/8/sys/mips/rmi/xlr_pci.c stable/8/sys/x86/x86/nexus.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) Modified: stable/8/sys/arm/arm/nexus.c ============================================================================== --- stable/8/sys/arm/arm/nexus.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/arm/arm/nexus.c Fri Jun 24 13:41:46 2011 (r223500) @@ -110,10 +110,10 @@ nexus_probe(device_t dev) device_quiet(dev); /* suppress attach message for neatness */ mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory addresses"; - if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0u)) + if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0)) panic("nexus_probe mem_rman"); return (0); Modified: stable/8/sys/ia64/ia64/nexus.c ============================================================================== --- stable/8/sys/ia64/ia64/nexus.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/ia64/ia64/nexus.c Fri Jun 24 13:41:46 2011 (r223500) @@ -174,7 +174,7 @@ nexus_probe(device_t dev) panic("nexus_probe port_rman"); mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory addresses"; if (rman_init(&mem_rman) Modified: stable/8/sys/kern/subr_rman.c ============================================================================== --- stable/8/sys/kern/subr_rman.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/kern/subr_rman.c Fri Jun 24 13:41:46 2011 (r223500) @@ -138,6 +138,8 @@ rman_init(struct rman *rm) mtx_init(&rman_mtx, "rman head", NULL, MTX_DEF); } + if (rm->rm_start == 0 && rm->rm_end == 0) + rm->rm_end = ~0ul; if (rm->rm_type == RMAN_UNINIT) panic("rman_init"); if (rm->rm_type == RMAN_GAUGE) @@ -162,6 +164,8 @@ rman_manage_region(struct rman *rm, u_lo DPRINTF(("rman_manage_region: <%s> request: start %#lx, end %#lx\n", rm->rm_descr, start, end)); + if (start < rm->rm_start || end > rm->rm_end) + return EINVAL; r = int_alloc_resource(M_NOWAIT); if (r == NULL) return ENOMEM; Modified: stable/8/sys/mips/mips/mainbus.c ============================================================================== --- stable/8/sys/mips/mips/mainbus.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/mips/mips/mainbus.c Fri Jun 24 13:41:46 2011 (r223500) @@ -146,7 +146,7 @@ mainbus_probe(device_t dev) panic("mainbus_probe port_rman"); mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory addresses"; if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0)) Modified: stable/8/sys/mips/mips/nexus.c ============================================================================== --- stable/8/sys/mips/mips/nexus.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/mips/mips/nexus.c Fri Jun 24 13:41:46 2011 (r223500) @@ -151,7 +151,7 @@ nexus_probe(device_t dev) } mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "Memory addresses"; if (rman_init(&mem_rman) != 0 || Modified: stable/8/sys/mips/rmi/pcibus.c ============================================================================== --- stable/8/sys/mips/rmi/pcibus.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/mips/rmi/pcibus.c Fri Jun 24 13:41:46 2011 (r223500) @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/pci/pcibus.c,v 1.36 2005/01/05 20:05:52 imp Exp $"); +__FBSDID("$FreeBSD$"); #include "opt_isa.h" @@ -229,7 +229,7 @@ pci_init_resources(void) panic("pci_init_resources irq_rman"); port_rman.rm_start = 0; - port_rman.rm_end = ~0u; + port_rman.rm_end = ~0ul; port_rman.rm_type = RMAN_ARRAY; port_rman.rm_descr = "I/O ports"; if (rman_init(&port_rman) @@ -237,7 +237,7 @@ pci_init_resources(void) panic("pci_init_resources port_rman"); mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory"; if (rman_init(&mem_rman) Modified: stable/8/sys/mips/rmi/xlr_pci.c ============================================================================== --- stable/8/sys/mips/rmi/xlr_pci.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/mips/rmi/xlr_pci.c Fri Jun 24 13:41:46 2011 (r223500) @@ -133,7 +133,7 @@ xlr_pci_init_resources(void) panic("pci_init_resources irq_rman"); port_rman.rm_start = 0; - port_rman.rm_end = ~0u; + port_rman.rm_end = ~0ul; port_rman.rm_type = RMAN_ARRAY; port_rman.rm_descr = "I/O ports"; if (rman_init(&port_rman) @@ -141,7 +141,7 @@ xlr_pci_init_resources(void) panic("pci_init_resources port_rman"); mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory"; if (rman_init(&mem_rman) Modified: stable/8/sys/x86/x86/nexus.c ============================================================================== --- stable/8/sys/x86/x86/nexus.c Fri Jun 24 12:55:16 2011 (r223499) +++ stable/8/sys/x86/x86/nexus.c Fri Jun 24 13:41:46 2011 (r223500) @@ -266,7 +266,7 @@ nexus_init_resources(void) panic("nexus_init_resources port_rman"); mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory addresses"; if (rman_init(&mem_rman)