Loading drivers/scsi/aacraid/aachba.c +13 −10 Original line number Diff line number Diff line Loading @@ -1579,18 +1579,10 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd) break; { u64 capacity; char cp[12]; unsigned int offset = 0; char cp[13]; dprintk((KERN_DEBUG "READ CAPACITY_16 command.\n")); capacity = fsa_dev_ptr[cid].size - 1; if (scsicmd->cmnd[13] > 12) { offset = scsicmd->cmnd[13] - 12; if (offset > sizeof(cp)) break; memset(cp, 0, offset); aac_internal_transfer(scsicmd, cp, 0, offset); } cp[0] = (capacity >> 56) & 0xff; cp[1] = (capacity >> 48) & 0xff; cp[2] = (capacity >> 40) & 0xff; Loading @@ -1603,7 +1595,18 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd) cp[9] = 0; cp[10] = 2; cp[11] = 0; aac_internal_transfer(scsicmd, cp, offset, sizeof(cp)); cp[12] = 0; aac_internal_transfer(scsicmd, cp, 0, min((unsigned int)scsicmd->cmnd[13], sizeof(cp))); if (sizeof(cp) < scsicmd->cmnd[13]) { unsigned int len, offset = sizeof(cp); memset(cp, 0, offset); do { len = min(scsicmd->cmnd[13]-offset, sizeof(cp)); aac_internal_transfer(scsicmd, cp, offset, len); } while ((offset += len) < scsicmd->cmnd[13]); } /* Do not cache partition table for arrays */ scsicmd->device->removable = 1; Loading Loading
drivers/scsi/aacraid/aachba.c +13 −10 Original line number Diff line number Diff line Loading @@ -1579,18 +1579,10 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd) break; { u64 capacity; char cp[12]; unsigned int offset = 0; char cp[13]; dprintk((KERN_DEBUG "READ CAPACITY_16 command.\n")); capacity = fsa_dev_ptr[cid].size - 1; if (scsicmd->cmnd[13] > 12) { offset = scsicmd->cmnd[13] - 12; if (offset > sizeof(cp)) break; memset(cp, 0, offset); aac_internal_transfer(scsicmd, cp, 0, offset); } cp[0] = (capacity >> 56) & 0xff; cp[1] = (capacity >> 48) & 0xff; cp[2] = (capacity >> 40) & 0xff; Loading @@ -1603,7 +1595,18 @@ int aac_scsi_cmd(struct scsi_cmnd * scsicmd) cp[9] = 0; cp[10] = 2; cp[11] = 0; aac_internal_transfer(scsicmd, cp, offset, sizeof(cp)); cp[12] = 0; aac_internal_transfer(scsicmd, cp, 0, min((unsigned int)scsicmd->cmnd[13], sizeof(cp))); if (sizeof(cp) < scsicmd->cmnd[13]) { unsigned int len, offset = sizeof(cp); memset(cp, 0, offset); do { len = min(scsicmd->cmnd[13]-offset, sizeof(cp)); aac_internal_transfer(scsicmd, cp, offset, len); } while ((offset += len) < scsicmd->cmnd[13]); } /* Do not cache partition table for arrays */ scsicmd->device->removable = 1; Loading