Add nil pointer check for InSDBBuffer
- Gotgt was crashing for few opcodes (sg_inq (sg3-utils)) because InSDBBuffer was not initialized for such opcodes (Need help) Signed-off-by: Utkarsh Mani Tripathi <utkarsh.tripathi@mayadata.io>
This commit is contained in:
@@ -533,7 +533,9 @@ overflow:
|
||||
cmd.InSDBBuffer.Resid = 8
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, key, asc)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -679,7 +681,9 @@ func SBCGetLbaStatus(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
}
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, key, asc)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ func (s *SCSITargetService) AddCommandQueue(tid int, scmd *api.SCSICommand) erro
|
||||
result := scmd.Device.PerformCommand(tid, scmd)
|
||||
if result != api.SAMStatGood {
|
||||
scmd.Result = result.Stat
|
||||
log.Warnf("%v", result.Err)
|
||||
log.Warnf("opcode: %xh err: %v", scmd.OpCode, result.Err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -454,7 +454,9 @@ func SPCReportLuns(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
copy(cmd.InSDBBuffer.Buffer, buf.Bytes())
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -467,7 +469,9 @@ func SPCStartStop(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
return api.SAMStatReservationConflict
|
||||
}
|
||||
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
scb := cmd.SCB
|
||||
pwrcnd = scb[4] & 0xf0
|
||||
if pwrcnd != 0 {
|
||||
@@ -662,7 +666,9 @@ func SPCSendDiagnostics(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -748,7 +754,9 @@ func SPCReportSupportedOperationCodes(host int, cmd *api.SCSICommand) api.SAMSta
|
||||
return api.SAMStatGood
|
||||
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -764,7 +772,9 @@ func SPCServiceAction(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
fnop := serviceAction.(*SCSIServiceAction)
|
||||
return fnop.CommandPerformFunc(host, cmd)
|
||||
}
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -797,7 +807,9 @@ func SPCPRReadKeys(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
cmd.InSDBBuffer.Resid = uint32(additionLength)
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -853,7 +865,9 @@ func SPCPRReadReservation(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
return api.SAMStatGood
|
||||
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -891,7 +905,9 @@ func SPCPRReportCapabilities(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
cmd.InSDBBuffer.Resid = uint32(actualLength)
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -970,7 +986,9 @@ func SPCPRRegister(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
return api.SAMStatGood
|
||||
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -1032,7 +1050,9 @@ func SPCPRReserve(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
scsiResOp.Save(tgtName, devUUID)
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -1082,7 +1102,9 @@ func SPCPRRelease(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
}
|
||||
|
||||
if curRes.Scope != resScope || curRes.Type != resType {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_RELEASE_OF_PERSISTENT_RESERVATION)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -1113,7 +1135,9 @@ func SPCPRRelease(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
scsiResOp.Save(tgtName, devUUID)
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -1167,7 +1191,9 @@ func SPCPRClear(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
scsiResOp.Save(tgtName, devUUID)
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -1267,7 +1293,9 @@ func SPCPRPreempt(host int, cmd *api.SCSICommand) api.SAMStat {
|
||||
scsiResOp.Save(tgtName, devUUID)
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
@@ -1353,7 +1381,9 @@ found:
|
||||
scsiResOp.Save(tgtName, devUUID)
|
||||
return api.SAMStatGood
|
||||
sense:
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
if cmd.InSDBBuffer != nil {
|
||||
cmd.InSDBBuffer.Resid = 0
|
||||
}
|
||||
BuildSenseData(cmd, ILLEGAL_REQUEST, ASC_INVALID_FIELD_IN_CDB)
|
||||
return api.SAMStatCheckCondition
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user