Commit 12a2cb0d3ceb79f6568a0107d962b056f4084d79

Con Kolivas 2013-06-09T22:37:49

Demote failed hex2bin result to LOG_INFO and check return result in driver-bflsc to avoid doing find_work_by_midstate.

diff --git a/driver-bflsc.c b/driver-bflsc.c
index 97654f5..687c56f 100644
--- a/driver-bflsc.c
+++ b/driver-bflsc.c
@@ -1322,8 +1322,12 @@ static void process_nonces(struct cgpu_info *bflsc, int dev, char *xlink, char *
 
 	memset(midstate, 0, MIDSTATE_BYTES);
 	memset(blockdata, 0, MERKLE_BYTES);
-	hex2bin((unsigned char *)midstate, fields[QUE_MIDSTATE], MIDSTATE_BYTES);
-	hex2bin((unsigned char *)blockdata, fields[QUE_BLOCKDATA], MERKLE_BYTES);
+	if (!hex2bin((unsigned char *)midstate, fields[QUE_MIDSTATE], MIDSTATE_BYTES) ||
+	    !hex2bin((unsigned char *)blockdata, fields[QUE_BLOCKDATA], MERKLE_BYTES)) {
+		applog(LOG_ERR, "%s%i:%s Failed to convert binary data to hex result - ignored",
+		       bflsc->drv->name, bflsc->device_id, xlink);
+		inc_hw_errors(bflsc->thr[0]);
+	}
 
 	work = find_queued_work_bymidstate(bflsc, midstate, MIDSTATE_BYTES,
 						blockdata, MERKLE_OFFSET, MERKLE_BYTES);
diff --git a/util.c b/util.c
index 8f8718e..d04e67b 100644
--- a/util.c
+++ b/util.c
@@ -615,7 +615,7 @@ bool hex2bin(unsigned char *p, const char *hexstr, size_t len)
 		hex_byte[1] = hexstr[1];
 
 		if (unlikely(sscanf(hex_byte, "%x", &v) != 1)) {
-			applog(LOG_ERR, "hex2bin sscanf '%s' failed", hex_byte);
+			applog(LOG_INFO, "hex2bin sscanf '%s' failed", hex_byte);
 			return ret;
 		}