Showing error 783

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/scsi/scsi_transport_fc.c
Line in file: 2514
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:23:48 UTC


Source:

2484
2485        dev = &rport->dev;
2486        device_initialize(dev);                        /* takes self reference */
2487        dev->parent = get_device(&shost->shost_gendev); /* parent reference */
2488        dev->release = fc_rport_dev_release;
2489        sprintf(dev->bus_id, "rport-%d:%d-%d",
2490                shost->host_no, channel, rport->number);
2491        transport_setup_device(dev);
2492
2493        error = device_add(dev);
2494        if (error) {
2495                printk(KERN_ERR "FC Remote Port device_add failed\n");
2496                goto delete_rport;
2497        }
2498        transport_add_device(dev);
2499        transport_configure_device(dev);
2500
2501        if (rport->roles & FC_PORT_ROLE_FCP_TARGET) {
2502                /* initiate a scan of the target */
2503                rport->flags |= FC_RPORT_SCAN_PENDING;
2504                scsi_queue_work(shost, &rport->scan_work);
2505        }
2506
2507        return rport;
2508
2509delete_rport:
2510        transport_destroy_device(dev);
2511        spin_lock_irqsave(shost->host_lock, flags);
2512        list_del(&rport->peers);
2513        put_device(&shost->shost_gendev);        /* for fc_host->rport list */
2514        spin_unlock_irqrestore(shost->host_lock, flags);
2515        put_device(dev->parent);
2516        kfree(rport);
2517        return NULL;
2518}
2519
2520/**
2521 * fc_remote_port_add - notify fc transport of the existence of a remote FC port.
2522 * @shost:        scsi host the remote port is connected to.
2523 * @channel:        Channel on shost port connected to.
2524 * @ids:        The world wide names, fc address, and FC4 port
Show full sources