Greetings,

We're using the SDIO stack for MMC/SD support from the latest LSP 1.30
release on DM644x.
We've noticed occasional kernel Oops with null pointer de-references while
running applications which use SCHED_RR and SCHED_FIFO.

It probably happens in other scenarios too, but it's easier to trigger when
a process is eating up scheduling slices.
I usually run a dummy dd copy to and from the MMC/SD card to accelerate the
frequency of the occurrences.

I've tracked it down to:

// around line 277 in drivers/sdio/hcd/davinci/sdio_hcd_os_2_6.c

--- SNIP
static void SD_DMACompleteCallback(int Channel, u16 DMAStatus. PVOID
pContext)
{
        PSDHCD_DEVICE pDevice = (PSDHCD_DEVICE) pContext;
        PSDREQUEST       pReq;
        SDIO_STATUS       Status = SDIO_STATUS_SUCCESS;

        pReq = GET_CURRENT_REQUEST(&pDevice->Hcd);

// ... and so on

---

It appears that GET_CURRENT_REQUEST(&pDevice->Hcd) is returning a NULL
pointer.

I've added code to detect this and just bail out of the callback, but that
seems like a cop-out to me...
Any harm in just returning if the pointer happens to be NULL?

It would be nice if I knew how this was happening in the first place, but
I'm not familiar with the sdio driver arch.

Anyone else seen behaviors like this from the driver?

Thanks,
David

--
DAVID A. KONDRAD
Software Design Engineer
On-Q/Legrand
Telephone (717) 546-5442 *NEW NUMBER*
www.onqlegrand.com


_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to