Showing error 1919

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/scsi/dc395x.c
Line in file: 2637
Project: Linux Kernel
Project version: 2.6.28
Tools: Cppcheck (1.59)
Entered: 2013-10-17 18:38:34 UTC


Source:

2607                        return 0;
2608                if (len < msgbuf[1] + 2)
2609                        return 0;
2610        } else if (*msgbuf >= 0x20 && *msgbuf <= 0x2f)        /* two byte messages */
2611                if (len < 2)
2612                        return 0;
2613        return 1;
2614}
2615
2616/* reject_msg */
2617static inline void msgin_reject(struct AdapterCtlBlk *acb,
2618                struct ScsiReqBlk *srb)
2619{
2620        srb->msgout_buf[0] = MESSAGE_REJECT;
2621        srb->msg_count = 1;
2622        DC395x_ENABLE_MSGOUT;
2623        srb->state &= ~SRB_MSGIN;
2624        srb->state |= SRB_MSGOUT;
2625        dprintkl(KERN_INFO, "msgin_reject: 0x%02x <%02i-%i>\n",
2626                srb->msgin_buf[0],
2627                srb->dcb->target_id, srb->dcb->target_lun);
2628}
2629
2630
2631static struct ScsiReqBlk *msgin_qtag(struct AdapterCtlBlk *acb,
2632                struct DeviceCtlBlk *dcb, u8 tag)
2633{
2634        struct ScsiReqBlk *srb = NULL;
2635        struct ScsiReqBlk *i;
2636        dprintkdbg(DBG_0, "msgin_qtag: (pid#%li) tag=%i srb=%p\n",
2637                   srb->cmd->serial_number, tag, srb);
2638
2639        if (!(dcb->tag_mask & (1 << tag)))
2640                dprintkl(KERN_DEBUG,
2641                        "msgin_qtag: tag_mask=0x%08x does not reserve tag %i!\n",
2642                        dcb->tag_mask, tag);
2643
2644        if (list_empty(&dcb->srb_going_list))
2645                goto mingx0;
2646        list_for_each_entry(i, &dcb->srb_going_list, list) {
2647                if (i->tag_number == tag) {
Show full sources