Valgrind fixes
authorHannes Reinecke <hare@suse.de>
Wed, 23 Jul 2008 09:20:53 +0000 (11:20 +0200)
committerChristophe Varoqui <christophe.varoqui@free.fr>
Tue, 21 Apr 2009 21:12:34 +0000 (23:12 +0200)
Valgrind found some issues. And clear up whitespaces while we're at it.

Signed-off-by: Hannes Reinecke <hare@suse.de>
libmultipath/log_pthread.c
libmultipath/prioritizers/alua.c
libmultipath/prioritizers/alua_rtpg.c
multipathd/uxlsnr.c

index 96823a8..838c06e 100644 (file)
@@ -93,5 +93,11 @@ void log_thread_stop (void)
        pthread_mutex_destroy(logev_lock);
        pthread_cond_destroy(logev_cond);
 
+       free(logq_lock);
+       logq_lock = NULL;
+       free(logev_lock);
+       logev_lock = NULL;
+       free(logev_cond);
+       logev_cond = NULL;
        free_logarea();
 }
index 1b52b8e..0048a44 100644 (file)
@@ -23,6 +23,7 @@
 #define ALUA_PRIO_RTPG_FAILED                  2
 #define ALUA_PRIO_GETAAS_FAILED                        3
 #define ALUA_PRIO_TPGS_FAILED                  4
+#define ALUA_PRIO_NO_INFORMATION               5
 
 int
 get_alua_info(int fd)
@@ -54,13 +55,18 @@ get_alua_info(int fd)
                return -ALUA_PRIO_GETAAS_FAILED;
 
        condlog(3, "aas = [%s]",
-               (aas_string[rc]) ? aas_string[rc] : "invalid/reserved");
+               (rc < 4) ? aas_string[rc] : "invalid/reserved");
        return rc;
 }
 
 int getprio (struct path * pp)
 {
-       int rc = get_alua_info(pp->fd);
+       int rc;
+
+       if (pp->fd < 0)
+               return -ALUA_PRIO_NO_INFORMATION;
+
+       rc = get_alua_info(pp->fd);
        if (rc >= 0) {
                switch(rc) {
                        case AAS_OPTIMIZED:
index 7151cdd..59df788 100644 (file)
@@ -74,7 +74,7 @@ static int
 scsi_error(struct sg_io_hdr *hdr)
 {
        /* Treat SG_ERR here to get rid of sg_err.[ch] */
-        hdr->status &= 0x7e;
+       hdr->status &= 0x7e;
 
        if (
                (hdr->status == 0)        &&
@@ -125,18 +125,18 @@ do_inquiry(int fd, int evpd, unsigned int codepage, void *resp, int resplen)
        set_uint16(cmd.length, resplen);
        PRINT_HEX((unsigned char *) &cmd, sizeof(cmd));
 
-        memset(&hdr, 0, sizeof(hdr));
-        hdr.interface_id       = 'S';
-        hdr.cmdp               = (unsigned char *) &cmd;
-        hdr.cmd_len            = sizeof(cmd);
-        hdr.dxfer_direction    = SG_DXFER_FROM_DEV;
-        hdr.dxferp             = resp;
-        hdr.dxfer_len          = resplen;
-        hdr.sbp                        = sense;
-        hdr.mx_sb_len          = sizeof(sense);
-        hdr.timeout            = DEF_TIMEOUT;
-        if (ioctl(fd, SG_IO, &hdr) < 0) {
+       memset(&hdr, 0, sizeof(hdr));
+       hdr.interface_id        = 'S';
+       hdr.cmdp                = (unsigned char *) &cmd;
+       hdr.cmd_len             = sizeof(cmd);
+       hdr.dxfer_direction     = SG_DXFER_FROM_DEV;
+       hdr.dxferp              = resp;
+       hdr.dxfer_len           = resplen;
+       hdr.sbp                 = sense;
+       hdr.mx_sb_len           = sizeof(sense);
+       hdr.timeout             = DEF_TIMEOUT;
+
+       if (ioctl(fd, SG_IO, &hdr) < 0) {
                PRINT_DEBUG("do_inquiry: IOCTL failed!\n");
                return -RTPG_INQUIRY_FAILED;
        }
@@ -146,8 +146,8 @@ do_inquiry(int fd, int evpd, unsigned int codepage, void *resp, int resplen)
                return -RTPG_INQUIRY_FAILED;
        }
        PRINT_HEX((unsigned char *) resp, resplen);
-        return 0;
+
+       return 0;
 }
 
 /*
@@ -160,6 +160,7 @@ get_target_port_group_support(int fd)
        struct inquiry_data     inq;
        int                     rc;
 
+       memset((unsigned char *)&inq, 0, sizeof(inq));
        rc = do_inquiry(fd, 0, 0x00, &inq, sizeof(inq));
        if (!rc) {
                rc = inquiry_data_get_tpgs(&inq);
@@ -176,6 +177,7 @@ get_target_port_group(int fd)
        struct vpd83_dscr *     dscr;
        int                     rc;
 
+       memset(buf, 0, sizeof(buf));
        rc = do_inquiry(fd, 1, 0x83, buf, sizeof(buf));
        if (!rc) {
                vpd83 = (struct vpd83_data *) buf;
@@ -221,19 +223,19 @@ do_rtpg(int fd, void* resp, long resplen)
        set_uint32(cmd.length, resplen);
        PRINT_HEX((unsigned char *) &cmd, sizeof(cmd));
 
-        memset(&hdr, 0, sizeof(hdr));
+       memset(&hdr, 0, sizeof(hdr));
        hdr.interface_id        = 'S';
-        hdr.cmdp               = (unsigned char *) &cmd;
-        hdr.cmd_len            = sizeof(cmd);
-        hdr.dxfer_direction    = SG_DXFER_FROM_DEV;
-        hdr.dxferp             = resp;
-        hdr.dxfer_len          = resplen;
-        hdr.mx_sb_len          = sizeof(sense);
-        hdr.sbp                        = sense;
-        hdr.timeout            = DEF_TIMEOUT;
+       hdr.cmdp                = (unsigned char *) &cmd;
+       hdr.cmd_len             = sizeof(cmd);
+       hdr.dxfer_direction     = SG_DXFER_FROM_DEV;
+       hdr.dxferp              = resp;
+       hdr.dxfer_len           = resplen;
+       hdr.mx_sb_len           = sizeof(sense);
+       hdr.sbp                 = sense;
+       hdr.timeout             = DEF_TIMEOUT;
+
        if (ioctl(fd, SG_IO, &hdr) < 0)
-                return -RTPG_RTPG_FAILED;
+               return -RTPG_RTPG_FAILED;
 
        if (scsi_error(&hdr)) {
                PRINT_DEBUG("do_rtpg: SCSI error!\n");
@@ -241,8 +243,8 @@ do_rtpg(int fd, void* resp, long resplen)
        }
        PRINT_HEX(resp, resplen);
 
-        return 0;
-} 
+       return 0;
+}
 
 int
 get_asymmetric_access_state(int fd, unsigned int tpg)
@@ -261,6 +263,7 @@ get_asymmetric_access_state(int fd, unsigned int tpg)
                        "%u bytes\n", buflen);
                return -RTPG_RTPG_FAILED;
        }
+       memset(buf, 0, buflen);
        rc = do_rtpg(fd, buf, buflen);
        if (rc < 0)
                return rc;
@@ -274,11 +277,11 @@ get_asymmetric_access_state(int fd, unsigned int tpg)
                        return -RTPG_RTPG_FAILED;
                }
                buflen = scsi_buflen;
+               memset(buf, 0, buflen);
                rc = do_rtpg(fd, buf, buflen);
                if (rc < 0)
                        goto out;
        }
-               
 
        tpgd = (struct rtpg_data *) buf;
        rc   = -RTPG_TPG_NOT_FOUND;
index 496daa8..a05719f 100644 (file)
@@ -168,5 +168,6 @@ void * uxsock_listen(int (*uxsock_trigger)(char *, char **, int *, void *),
                }
        }
 
+       close(ux_sock);
        return NULL;
 }