Author: asomers
Date: Tue May 30 22:46:00 2017
New Revision: 319266
URL: https://svnweb.freebsd.org/changeset/base/319266

Log:
  MFC r317759:
  
  Fix memory leaks in camcontrol
  
  Reported by:  Coverity
  CID:          1331674, 1331675
  Reviewed by:  ken
  Sponsored by: Spectra Logic Corp
  Differential Revision:        https://reviews.freebsd.org/D10588

Modified:
  stable/10/sbin/camcontrol/fwdownload.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sbin/camcontrol/fwdownload.c
==============================================================================
--- stable/10/sbin/camcontrol/fwdownload.c      Tue May 30 22:45:01 2017        
(r319265)
+++ stable/10/sbin/camcontrol/fwdownload.c      Tue May 30 22:46:00 2017        
(r319266)
@@ -550,8 +550,7 @@ fw_validate_ibm(struct cam_device *dev, int retry_coun
                fprintf(stdout, "Firmware file is valid for this drive.\n");
        retval = 0;
 bailout:
-       if (ccb != NULL)
-               cam_freeccb(ccb);
+       cam_freeccb(ccb);
 
        return (retval);
 }
@@ -744,8 +743,8 @@ fw_check_device_ready(struct cam_device *dev, camcontr
                goto bailout;
        }
 bailout:
-       if (ccb != NULL)
-               cam_freeccb(ccb);
+       free(ptr);
+       cam_freeccb(ccb);
 
        return (retval);
 }
@@ -895,8 +894,7 @@ fw_download_img(struct cam_device *cam_dev, struct fw_
 bailout:
        if (quiet == 0)
                progress_complete(&progress, size - img_size);
-       if (ccb != NULL)
-               cam_freeccb(ccb);
+       cam_freeccb(ccb);
        return (retval);
 }
 
@@ -905,6 +903,7 @@ fwdownload(struct cam_device *device, int argc, char *
     char *combinedopt, int printerrors, int task_attr, int retry_count,
     int timeout)
 {
+       union ccb *ccb = NULL;
        struct fw_vendor *vp;
        char *fw_img_path = NULL;
        struct ata_params *ident_buf = NULL;
@@ -947,8 +946,6 @@ fwdownload(struct cam_device *device, int argc, char *
 
        if ((devtype == CC_DT_ATA)
         || (devtype == CC_DT_ATA_BEHIND_SCSI)) {
-               union ccb *ccb;
-
                ccb = cam_getccb(device);
                if (ccb == NULL) {
                        warnx("couldn't allocate CCB");
@@ -958,7 +955,6 @@ fwdownload(struct cam_device *device, int argc, char *
 
                if (ata_do_identify(device, retry_count, timeout, ccb,
                                    &ident_buf) != 0) {
-                       cam_freeccb(ccb);
                        retval = 1;
                        goto bailout;
                }
@@ -1030,6 +1026,7 @@ fwdownload(struct cam_device *device, int argc, char *
                fprintf(stdout, "Firmware download successful\n");
 
 bailout:
+       cam_freeccb(ccb);
        free(buf);
        return (retval);
 }
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to