Skip to content
  • Igor V. Kovalenko's avatar
    workaround for cmd646 bmdma register access while no dma is active · 90228ee3
    Igor V. Kovalenko authored
    
    
    This is a workaround only, and is a partial revert
    of a few changes to BMDMAState which removed pci_dev
    field on the way.
    
    - cmd646 pci_from_bm() expects bm->unit value to
    correspond with bm data being passed to callback
    as opaque pointer. This breaks when write to dma
    control register of second channel happens when no
    dma operation is in progress, so bm->unit is zero
    for second channel, and pci_from_bm() returns garbage
    pointer. Crash happens shortly after that while
    dereferencing that pointer.
    
    v0->v1: cleaned up dead code from pci_from_bm.
    
    Signed-off-by: default avatarIgor V. Kovalenko <igor.v.kovalenko@gmail.com>
    Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
    90228ee3