Showing error 1804

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/isdn/hardware/eicon/s_4bri.c
Line in file: 394
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-11 08:47:26 UTC


Source:

364}
365
366/* --------------------------------------------------------------------------
367                Card ISR
368         -------------------------------------------------------------------------- */
369static int qBri_ISR (struct _ISDN_ADAPTER* IoAdapter) {
370        dword volatile     __iomem *qBriIrq ;
371
372        PADAPTER_LIST_ENTRY QuadroList = IoAdapter->QuadroList ;
373
374        word                      i ;
375        int                     serviced = 0 ;
376        byte __iomem *p;
377
378        p = DIVA_OS_MEM_ATTACH_RESET(IoAdapter);
379
380        if ( !(READ_BYTE(&p[PLX9054_INTCSR]) & 0x80) ) {
381                DIVA_OS_MEM_DETACH_RESET(IoAdapter, p);
382                return (0) ;
383        }
384        DIVA_OS_MEM_DETACH_RESET(IoAdapter, p);
385
386/*
387 *        clear interrupt line (reset Local Interrupt Test Register)
388 */
389        p = DIVA_OS_MEM_ATTACH_CTLREG(IoAdapter);
390        qBriIrq = (dword volatile __iomem *)(&p[DIVA_4BRI_REVISION(IoAdapter) ? (MQ2_BREG_IRQ_TEST)  : (MQ_BREG_IRQ_TEST)]);
391        WRITE_DWORD(qBriIrq, MQ_IRQ_REQ_OFF) ;
392        DIVA_OS_MEM_DETACH_CTLREG(IoAdapter, p);
393
394        for ( i = 0 ; i < IoAdapter->tasks; ++i )
395        {
396                IoAdapter = QuadroList->QuadroAdapter[i] ;
397
398                if ( IoAdapter && IoAdapter->Initialized
399                  && IoAdapter->tst_irq (&IoAdapter->a) )
400                {
401                        IoAdapter->IrqCount++ ;
402                        serviced = 1 ;
403                        diva_os_schedule_soft_isr (&IoAdapter->isr_soft_isr);
404                }
Show full sources