]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
scsi_dh_alua: sanitze sense code handling
authorHannes Reinecke <hare@suse.de>
Tue, 1 Dec 2015 09:16:46 +0000 (10:16 +0100)
committerKamal Mostafa <kamal@canonical.com>
Thu, 30 Jun 2016 19:43:45 +0000 (12:43 -0700)
The only check for a valid sense code is calling scsi_normalize_sense()
and check the return value. So drop the pointless checks and rely on
scsi_normalize_sense() to figure out if the sense code is valid.
With that we can also remove the 'senselen' field.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.com>
Reviewed-by: Bart van Assche <bvanassche@sandisk.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
BugLink: http://bugs.launchpad.net/bugs/1567602
(cherry-picked from commit d3692a3d13e8ee2e371907d67d585d42297b4d66)
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Acked-by: Brad Figg <brad.figg@canonical.com>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
drivers/scsi/device_handler/scsi_dh_alua.c

index 31a971f35d831826295d9d525ffe4c0f4455a78e..0bbde139d94d558dc97ae201b8036f73550fe170 100644 (file)
@@ -73,7 +73,6 @@ struct alua_dh_data {
        int                     bufflen;
        unsigned char           transition_tmo;
        unsigned char           sense[SCSI_SENSE_BUFFERSIZE];
-       int                     senselen;
        struct scsi_device      *sdev;
        activate_complete       callback_fn;
        void                    *callback_data;
@@ -158,14 +157,13 @@ static unsigned submit_rtpg(struct scsi_device *sdev, struct alua_dh_data *h,
 
        rq->sense = h->sense;
        memset(rq->sense, 0, SCSI_SENSE_BUFFERSIZE);
-       rq->sense_len = h->senselen = 0;
+       rq->sense_len = 0;
 
        err = blk_execute_rq(rq->q, NULL, rq, 1);
        if (err == -EIO) {
                sdev_printk(KERN_INFO, sdev,
                            "%s: rtpg failed with %x\n",
                            ALUA_DH_NAME, rq->errors);
-               h->senselen = rq->sense_len;
                err = SCSI_DH_IO;
        }
        blk_put_request(rq);
@@ -194,9 +192,8 @@ static void stpg_endio(struct request *req, int error)
                goto done;
        }
 
-       if (req->sense_len > 0) {
-               err = scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE,
-                                          &sense_hdr);
+       if (scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE,
+                                &sense_hdr)) {
                if (!err) {
                        err = SCSI_DH_IO;
                        goto done;
@@ -265,7 +262,7 @@ static unsigned submit_stpg(struct alua_dh_data *h)
 
        rq->sense = h->sense;
        memset(rq->sense, 0, SCSI_SENSE_BUFFERSIZE);
-       rq->sense_len = h->senselen = 0;
+       rq->sense_len = 0;
        rq->end_io_data = h;
 
        blk_execute_rq_nowait(rq->q, NULL, rq, 1, stpg_endio);
@@ -514,10 +511,9 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h, int wait_
  retry:
        err = submit_rtpg(sdev, h, rtpg_ext_hdr_req);
 
-       if (err == SCSI_DH_IO && h->senselen > 0) {
-               err = scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE,
-                                          &sense_hdr);
-               if (!err)
+       if (err == SCSI_DH_IO) {
+               if (!scsi_normalize_sense(h->sense, SCSI_SENSE_BUFFERSIZE,
+                                         &sense_hdr))
                        return SCSI_DH_IO;
 
                /*