Showing error 1849

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


Source:

 383                } else
 384                        req_pack_id = old_hdr->pack_id;
 385        }
 386        srp = sg_get_rq_mark(sfp, req_pack_id);
 387        if (!srp) {                /* now wait on packet to arrive */
 388                if (sdp->detached) {
 389                        retval = -ENODEV;
 390                        goto free_old_hdr;
 391                }
 392                if (filp->f_flags & O_NONBLOCK) {
 393                        retval = -EAGAIN;
 394                        goto free_old_hdr;
 395                }
 396                while (1) {
 397                        retval = 0; /* following macro beats race condition */
 398                        __wait_event_interruptible(sfp->read_wait,
 399                                (sdp->detached ||
 400                                (srp = sg_get_rq_mark(sfp, req_pack_id))), 
 401                                retval);
 402                        if (sdp->detached) {
 403                                retval = -ENODEV;
 404                                goto free_old_hdr;
 405                        }
 406                        if (0 == retval)
 407                                break;
 408
 409                        /* -ERESTARTSYS as signal hit process */
 410                        goto free_old_hdr;
 411                }
 412        }
 413        if (srp->header.interface_id != '\0') {
 414                retval = sg_new_read(sfp, buf, count, srp);
 415                goto free_old_hdr;
 416        }
 417
 418        hp = &srp->header;
 419        if (old_hdr == NULL) {
 420                old_hdr = kmalloc(SZ_SG_HEADER, GFP_KERNEL);
 421                if (! old_hdr) {
 422                        retval = -ENOMEM;
 423                        goto free_old_hdr;
Show full sources