[SCSI] a100u2w: fix bitmap lookup routine
This patch is only compile tested. It seems that bitmap lookup routine for allocation_map in a100u2w driver is simply wrong. It cannot lookup more than first 32 bits. If all first 32 bits are set, it just returns 33-th orc_scb even though the 33-th bit is not set. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Tested-by: Alan Cox <alan@redhat.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
4d1566ed21
commit
28aef2f7d9
|
@ -674,12 +674,13 @@ static struct orc_scb *__orc_alloc_scb(struct orc_host * host)
|
|||
for (index = 0; index < 32; index++) {
|
||||
if ((host->allocation_map[channel][i] >> index) & 0x01) {
|
||||
host->allocation_map[channel][i] &= ~(1 << index);
|
||||
break;
|
||||
idx = index + 32 * i;
|
||||
/*
|
||||
* Translate the index to a structure instance
|
||||
*/
|
||||
return host->scb_virt + idx;
|
||||
}
|
||||
}
|
||||
idx = index + 32 * i;
|
||||
/* Translate the index to a structure instance */
|
||||
return (struct orc_scb *) ((unsigned long) host->scb_virt + (idx * sizeof(struct orc_scb)));
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue