Module Name: src Committed By: skrll Date: Wed Feb 26 07:57:09 UTC 2014
Modified Files: src/sys/arch/arm/arm32: bus_dma.c Log Message: Fix off by one in _bus_dma_{paddr_inrange,_to_paddr} when checking the dma range. To generate a diff of this commit: cvs rdiff -u -r1.81 -r1.82 src/sys/arch/arm/arm32/bus_dma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/arm/arm32/bus_dma.c diff -u src/sys/arch/arm/arm32/bus_dma.c:1.81 src/sys/arch/arm/arm32/bus_dma.c:1.82 --- src/sys/arch/arm/arm32/bus_dma.c:1.81 Wed Feb 26 01:05:52 2014 +++ src/sys/arch/arm/arm32/bus_dma.c Wed Feb 26 07:57:09 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: bus_dma.c,v 1.81 2014/02/26 01:05:52 matt Exp $ */ +/* $NetBSD: bus_dma.c,v 1.82 2014/02/26 07:57:09 skrll Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -35,7 +35,7 @@ #include "opt_arm_bus_space.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.81 2014/02/26 01:05:52 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: bus_dma.c,v 1.82 2014/02/26 07:57:09 skrll Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -139,7 +139,7 @@ _bus_dma_paddr_inrange(struct arm32_dma_ for (i = 0, dr = ranges; i < nranges; i++, dr++) { if (curaddr >= dr->dr_sysbase && - round_page(curaddr) <= (dr->dr_sysbase + dr->dr_len)) + curaddr < (dr->dr_sysbase + dr->dr_len)) return (dr); } @@ -160,7 +160,7 @@ _bus_dma_busaddr_to_paddr(bus_dma_tag_t for (i = 0, dr = t->_ranges; i < t->_nranges; i++, dr++) { if (dr->dr_busbase <= curaddr - && round_page(curaddr) <= dr->dr_busbase + dr->dr_len) + && curaddr < dr->dr_busbase + dr->dr_len) return curaddr - dr->dr_busbase + dr->dr_sysbase; } panic("%s: curaddr %#lx not in range", __func__, curaddr);