Module Name: src Committed By: bouyer Date: Thu Mar 15 18:38:37 UTC 2012
Modified Files: src/sys/dev/usb: ehci.c Log Message: Do not read array before detecting array overflow, found by gcc -O3 To generate a diff of this commit: cvs rdiff -u -r1.187 -r1.188 src/sys/dev/usb/ehci.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/dev/usb/ehci.c diff -u src/sys/dev/usb/ehci.c:1.187 src/sys/dev/usb/ehci.c:1.188 --- src/sys/dev/usb/ehci.c:1.187 Sun Mar 11 00:34:45 2012 +++ src/sys/dev/usb/ehci.c Thu Mar 15 18:38:37 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: ehci.c,v 1.187 2012/03/11 00:34:45 mrg Exp $ */ +/* $NetBSD: ehci.c,v 1.188 2012/03/15 18:38:37 bouyer Exp $ */ /* * Copyright (c) 2004-2008 The NetBSD Foundation, Inc. @@ -52,7 +52,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.187 2012/03/11 00:34:45 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ehci.c,v 1.188 2012/03/15 18:38:37 bouyer Exp $"); #include "ohci.h" #include "uhci.h" @@ -2712,14 +2712,14 @@ ehci_alloc_sqtd_chain(struct ehci_pipe * ehci_physaddr_t a = dataphys + i * EHCI_PAGE_SIZE; if (i != 0) /* use offset only in first buffer */ a = EHCI_PAGE(a); - cur->qtd.qtd_buffer[i] = htole32(a); - cur->qtd.qtd_buffer_hi[i] = 0; #ifdef DIAGNOSTIC if (i >= EHCI_QTD_NBUFFERS) { printf("ehci_alloc_sqtd_chain: i=%d\n", i); goto nomem; } #endif + cur->qtd.qtd_buffer[i] = htole32(a); + cur->qtd.qtd_buffer_hi[i] = 0; } cur->nextqtd = next; cur->qtd.qtd_next = cur->qtd.qtd_altnext = nextphys;