Showing error 1312

User: Jiri Slaby
Error type: Leaving function in locked state
Error type description: Some lock is not unlocked on all paths of a function, so it is leaked
File location: drivers/scsi/qla2xxx/qla_dbg.c
Line in file: 683
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2012-05-21 20:30:05 UTC


Source:

 653                        }
 654                        udelay(5);
 655                }
 656
 657                if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) {
 658                        rval = mb0 & MBS_MASK;
 659                        fw->risc_ram[cnt] = htons(mb2);
 660                } else {
 661                        rval = QLA_FUNCTION_FAILED;
 662                }
 663        }
 664
 665        if (rval == QLA_SUCCESS)
 666                qla2xxx_copy_queues(ha, &fw->risc_ram[cnt]);
 667
 668        if (rval != QLA_SUCCESS) {
 669                qla_printk(KERN_WARNING, ha,
 670                    "Failed to dump firmware (%x)!!!\n", rval);
 671                ha->fw_dumped = 0;
 672
 673        } else {
 674                qla_printk(KERN_INFO, ha,
 675                    "Firmware dump saved to temp buffer (%ld/%p).\n",
 676                    ha->host_no, ha->fw_dump);
 677                ha->fw_dumped = 1;
 678        }
 679
 680qla2100_fw_dump_failed:
 681        if (!hardware_locked)
 682                spin_unlock_irqrestore(&ha->hardware_lock, flags);
 683}
 684
 685void
 686qla24xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
 687{
 688        int                rval;
 689        uint32_t        cnt;
 690        uint32_t        risc_address;
 691
 692        struct device_reg_24xx __iomem *reg = &ha->iobase->isp24;
 693        uint32_t __iomem *dmp_reg;
Show full sources