[dm-devel] [PATCH 21/39] libmpathpersist: Pass sensebuffer as pointer
Hannes Reinecke
hare at suse.de
Thu Jun 16 09:47:27 UTC 2016
It makes no sense to pass the entire sense buffer as a value,
we should rather pass the pointer to avoid exploding the stack.
Found by coverity.
Signed-off-by: Hannes Reinecke <hare at suse.com>
---
libmpathpersist/mpath_pr_ioctl.c | 35 +++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/libmpathpersist/mpath_pr_ioctl.c b/libmpathpersist/mpath_pr_ioctl.c
index c85fd10..c37c1e4 100644
--- a/libmpathpersist/mpath_pr_ioctl.c
+++ b/libmpathpersist/mpath_pr_ioctl.c
@@ -24,7 +24,8 @@
int prin_do_scsi_ioctl(char * dev, int rq_servact, struct prin_resp *resp, int noisy);
void mpath_format_readkeys(struct prin_resp *pr_buff, int len , int noisy);
void mpath_format_readfullstatus(struct prin_resp *pr_buff, int len, int noisy);
-int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr, SenseData_t Sensedata, int noisy);
+int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr,
+ SenseData_t *Sensedata, int noisy);
void dumpHex(const char* str, int len, int no_ascii);
int prout_do_scsi_ioctl( char * dev, int rq_servact, int rq_scope,
unsigned int rq_type, struct prout_param_descriptor *paramp, int noisy);
@@ -113,7 +114,7 @@ retry :
condlog(2, "%s: Duration=%u (ms)", dev, io_hdr.duration);
- status = mpath_translate_response(dev, io_hdr, Sensedata, noisy);
+ status = mpath_translate_response(dev, io_hdr, &Sensedata, noisy);
condlog(3, "%s: status = %d", dev, status);
if (status == MPATH_PR_SENSE_UNIT_ATTENTION && (retry > 0))
@@ -353,7 +354,7 @@ retry :
condlog(2, "%s: duration = %u (ms)", dev, io_hdr.duration);
condlog(2, "%s: persistent reservation in: requested %d bytes but got %d bytes)", dev, mx_resp_len, got);
- status = mpath_translate_response(dev, io_hdr, Sensedata, noisy);
+ status = mpath_translate_response(dev, io_hdr, &Sensedata, noisy);
if (status == MPATH_PR_SENSE_UNIT_ATTENTION && (retry > 0))
{
@@ -398,26 +399,25 @@ out:
return status;
}
-int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr, SenseData_t Sensedata, int noisy)
+int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr,
+ SenseData_t *Sensedata, int noisy)
{
- condlog(3, "%s: status driver:%02x host:%02x scsi:%02x", dev,
- io_hdr.driver_status, io_hdr.host_status ,io_hdr.status);
+ condlog(3, "%s: status driver:%02x host:%02x scsi:%02x", dev,
+ io_hdr.driver_status, io_hdr.host_status, io_hdr.status);
io_hdr.status &= 0x7e;
- if ((0 == io_hdr.status) && (0 == io_hdr.host_status) &&
- (0 == io_hdr.driver_status))
- {
+ if ((0 == io_hdr.status) &&
+ (0 == io_hdr.host_status) &&
+ (0 == io_hdr.driver_status))
return MPATH_PR_SUCCESS;
- }
- switch(io_hdr.status)
- {
+ switch(io_hdr.status) {
case SAM_STAT_GOOD:
break;
case SAM_STAT_CHECK_CONDITION:
- condlog(2, "%s: Sense_Key=%02x, ASC=%02x ASCQ=%02x", dev,
- Sensedata.Sense_Key, Sensedata.ASC, Sensedata.ASCQ);
- switch(Sensedata.Sense_Key)
- {
+ condlog(2, "%s: Sense_Key=%02x, ASC=%02x ASCQ=%02x",
+ dev, Sensedata->Sense_Key,
+ Sensedata->ASC, Sensedata->ASCQ);
+ switch(Sensedata->Sense_Key) {
case NO_SENSE:
return MPATH_PR_NO_SENSE;
case RECOVERED_ERROR:
@@ -450,8 +450,7 @@ int mpath_translate_response (char * dev, struct sg_io_hdr io_hdr, SenseData_t S
return MPATH_PR_OTHER;
}
- switch(io_hdr.host_status)
- {
+ switch(io_hdr.host_status) {
case DID_OK :
break;
default :
--
2.6.6
More information about the dm-devel
mailing list