[SCSI] be2iscsi: Fix for a possible udelay while holding lock
This patch fixes a situation where we could call udelay while holding spin_lock Signed-off-by: Jayamohan Kallickal <jayamohank@serverengines.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
Родитель
4183122dbc
Коммит
944b2fbce2
|
@ -32,18 +32,11 @@ void be_mcc_notify(struct beiscsi_hba *phba)
|
||||||
unsigned int alloc_mcc_tag(struct beiscsi_hba *phba)
|
unsigned int alloc_mcc_tag(struct beiscsi_hba *phba)
|
||||||
{
|
{
|
||||||
unsigned int tag = 0;
|
unsigned int tag = 0;
|
||||||
unsigned int num = 0;
|
|
||||||
|
|
||||||
mcc_tag_rdy:
|
|
||||||
if (phba->ctrl.mcc_tag_available) {
|
if (phba->ctrl.mcc_tag_available) {
|
||||||
tag = phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index];
|
tag = phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index];
|
||||||
phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index] = 0;
|
phba->ctrl.mcc_tag[phba->ctrl.mcc_alloc_index] = 0;
|
||||||
phba->ctrl.mcc_numtag[tag] = 0;
|
phba->ctrl.mcc_numtag[tag] = 0;
|
||||||
} else {
|
|
||||||
udelay(100);
|
|
||||||
num++;
|
|
||||||
if (num < mcc_timeout)
|
|
||||||
goto mcc_tag_rdy;
|
|
||||||
}
|
}
|
||||||
if (tag) {
|
if (tag) {
|
||||||
phba->ctrl.mcc_tag_available--;
|
phba->ctrl.mcc_tag_available--;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче