Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

re: CVS commit: src/sys/dev/usb



> On Fri, Mar 16, 2012 at 02:15:29PM +1100, matthew green wrote:
> > 
> > > 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
> > 
> > hmmmm.
> > 
> > seems like this should move the DIAG code to just the printf().  this
> > totally changes the behaviour of the failure mode as-is.
> > 
> > we can detect an overflow here but let non-DIAG code fail.
> 
> You mean, something like that:
> 
> Index: ehci.c
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/usb/ehci.c,v
> retrieving revision 1.188
> diff -u -p -u -r1.188 ehci.c
> --- ehci.c    15 Mar 2012 18:38:37 -0000      1.188
> +++ ehci.c    16 Mar 2012 07:50:28 -0000
> @@ -2712,12 +2712,12 @@ 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);
> -#ifdef DIAGNOSTIC
>                       if (i >= EHCI_QTD_NBUFFERS) {
> +#ifdef DIAGNOSTIC
>                               printf("ehci_alloc_sqtd_chain: i=%d\n", i);
> +#endif
>                               goto nomem;
>                       }
> -#endif
>                       cur->qtd.qtd_buffer[i] = htole32(a);
>                       cur->qtd.qtd_buffer_hi[i] = 0;
>               }
> 
> I agree it would be better.
> If you mean something else I don't understand :)

that is exactly what i mean.  please commit :)


Home | Main Index | Thread Index | Old Index