tech-kern archive

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

USB error checking



I posted a few weeks ago that I could reboot my Pinebook by doing:

% cat /dev/video0 > foo.jpg

I have now got it to drop into DDB and found that it is triggering an
assertion in sys/arch/arm/arm32/bus_dma.c:_bus_dmamap_sync().

        KASSERTMSG(len > 0 && offset + len <= map->dm_mapsize,
            "len %lu offset %lu mapsize %lu",
            len, offset, map->dm_mapsize);

with len = 0.

I'm guessing that the video camera is returning bad USB packets.

Could we put some more checking into the USB stack to ignore zero length
frames and not try to do cache synchronization operations for them ?

The traceback is:

_bus_dmamap_sync()
usb_transfer_complete()
ehci_softintr()
usb_soft_intr()
softint_dispatch()
cpu_switchto_softint()

Don't have a core dump as the ARM images only have a small swap
partition.

Robert Swindells


Home | Main Index | Thread Index | Old Index