From 4015ece7fb42f4524b5af0a3ebad758093c21c68 Mon Sep 17 00:00:00 2001 From: marcel Date: Thu, 24 May 2012 21:07:10 +0000 Subject: Just return if the size of the window is 0. This can happen when the FDT does not define all ranges possible for a particular node (e.g. PCI). While here, only update the trgt_mem and trgt_io pointers if there's no error. This avoids that we knowingly write an invalid target (= -1). --- sys/powerpc/mpc85xx/mpc85xx.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'sys/powerpc/mpc85xx/mpc85xx.c') diff --git a/sys/powerpc/mpc85xx/mpc85xx.c b/sys/powerpc/mpc85xx/mpc85xx.c index e62f952..0db5d5e 100644 --- a/sys/powerpc/mpc85xx/mpc85xx.c +++ b/sys/powerpc/mpc85xx/mpc85xx.c @@ -88,6 +88,9 @@ law_enable(int trgt, u_long addr, u_long size) uint32_t bar, sr; int i, law_max; + if (size == 0) + return (0); + law_max = law_getmax(); bar = _LAW_BAR(addr); sr = _LAW_SR(trgt, size); @@ -168,7 +171,10 @@ law_pci_target(struct resource *res, int *trgt_mem, int *trgt_io) default: rv = ENXIO; } - *trgt_mem = *trgt_io = trgt; + if (rv == 0) { + *trgt_mem = trgt; + *trgt_io = trgt; + } return (rv); } -- cgit v1.1