Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
firewire: fw-sbp2: fix refcounting

+7 -4
+7 -4
drivers/firewire/fw-sbp2.c
··· 650 650 if (sbp2_send_management_orb(lu, node_id, generation, 651 651 SBP2_LOGIN_REQUEST, lu->lun, &response) < 0) { 652 652 if (lu->retries++ < 5) { 653 - queue_delayed_work(sbp2_wq, &lu->work, 654 - DIV_ROUND_UP(HZ, 5)); 653 + if (queue_delayed_work(sbp2_wq, &lu->work, 654 + DIV_ROUND_UP(HZ, 5))) 655 + kref_get(&lu->tgt->kref); 655 656 } else { 656 657 fw_error("failed to login to %s LUN %04x\n", 657 658 unit->device.bus_id, lu->lun); 658 - kref_put(&lu->tgt->kref, sbp2_release_target); 659 659 } 660 + kref_put(&lu->tgt->kref, sbp2_release_target); 660 661 return; 661 662 } 662 663 ··· 915 914 lu->retries = 0; 916 915 PREPARE_DELAYED_WORK(&lu->work, sbp2_login); 917 916 } 918 - queue_delayed_work(sbp2_wq, &lu->work, DIV_ROUND_UP(HZ, 5)); 917 + if (queue_delayed_work(sbp2_wq, &lu->work, DIV_ROUND_UP(HZ, 5))) 918 + kref_get(&lu->tgt->kref); 919 + kref_put(&lu->tgt->kref, sbp2_release_target); 919 920 return; 920 921 } 921 922