Browse Source

littlefury: Cleanup to make avoiding memory leak easier

Luke Dashjr 11 years ago
parent
commit
618db7d58c
1 changed files with 5 additions and 8 deletions
  1. 5 8
      driver-littlefury.c

+ 5 - 8
driver-littlefury.c

@@ -270,7 +270,7 @@ bool littlefury_detect_one(const char *devpath)
 	uint8_t buf[255];
 	uint8_t buf[255];
 	uint16_t bufsz;
 	uint16_t bufsz;
 	struct cgpu_info dummy;
 	struct cgpu_info dummy;
-	char *devname;
+	char *devname = NULL;
 	
 	
 	fd = serial_open(devpath, 0, 10, true);
 	fd = serial_open(devpath, 0, 10, true);
 	applog(LOG_DEBUG, "%s: %s %s",
 	applog(LOG_DEBUG, "%s: %s %s",
@@ -309,7 +309,6 @@ bool littlefury_detect_one(const char *devpath)
 	if (!chips) {
 	if (!chips) {
 		applog(LOG_WARNING, "%s: No Bitfury chips detected on %s",
 		applog(LOG_WARNING, "%s: No Bitfury chips detected on %s",
 		       littlefury_drv.dname, devpath);
 		       littlefury_drv.dname, devpath);
-		free(devname);
 		goto err;
 		goto err;
 	} else {
 	} else {
 		applog(LOG_DEBUG, "%s: %d chips detected",
 		applog(LOG_DEBUG, "%s: %d chips detected",
@@ -318,13 +317,10 @@ bool littlefury_detect_one(const char *devpath)
 	
 	
 	littlefury_set_power(LOG_DEBUG, littlefury_drv.dname, fd, false);
 	littlefury_set_power(LOG_DEBUG, littlefury_drv.dname, fd, false);
 	
 	
-	serial_close(fd);
-	
 	if (serial_claim_v(devpath, &littlefury_drv))
 	if (serial_claim_v(devpath, &littlefury_drv))
-	{
-		free(devname);
-		return false;
-	}
+		goto err;
+	
+	serial_close(fd);
 	
 	
 	struct cgpu_info *cgpu;
 	struct cgpu_info *cgpu;
 	cgpu = malloc(sizeof(*cgpu));
 	cgpu = malloc(sizeof(*cgpu));
@@ -346,6 +342,7 @@ bool littlefury_detect_one(const char *devpath)
 err:
 err:
 	if (fd != -1)
 	if (fd != -1)
 		serial_close(fd);
 		serial_close(fd);
+	free(devname);
 	return false;
 	return false;
 }
 }