Browse Source

klondike - ensure all memcpy use the size of the target

Kano 12 years ago
parent
commit
c52973a96e
1 changed files with 8 additions and 4 deletions
  1. 8 4
      driver-klondike.c

+ 8 - 4
driver-klondike.c

@@ -464,7 +464,9 @@ static bool klondike_get_stats(struct cgpu_info *klncgpu)
 		kitem = SendCmdGetReply(klncgpu, &kline, 0);
 		kitem = SendCmdGetReply(klncgpu, &kline, 0);
 		if (kitem != NULL) {
 		if (kitem != NULL) {
 			wr_lock(&(klninfo->stat_lock));
 			wr_lock(&(klninfo->stat_lock));
-			memcpy((void *)(&(klninfo->status[dev])), (void *)kitem, sizeof(*kitem));
+			memcpy((void *)(&(klninfo->status[dev])),
+				(void *)kitem,
+				sizeof(klninfo->status[dev]));
 			wr_unlock(&(klninfo->stat_lock));
 			wr_unlock(&(klninfo->stat_lock));
 			release_kitem(klncgpu, kitem);
 			release_kitem(klncgpu, kitem);
 			kitem = NULL;
 			kitem = NULL;
@@ -533,7 +535,7 @@ static bool klondike_init(struct cgpu_info *klncgpu)
 		kline.cfg.dev = dev;
 		kline.cfg.dev = dev;
 		kitem = SendCmdGetReply(klncgpu, &kline, size);
 		kitem = SendCmdGetReply(klncgpu, &kline, size);
 		if (kitem != NULL) {
 		if (kitem != NULL) {
-			memcpy((void *)&(klninfo->cfg[dev]), kitem, sizeof(*kitem));
+			memcpy((void *)&(klninfo->cfg[dev]), kitem, sizeof(klninfo->cfg[dev]));
 			applog(LOG_WARNING, "Klondike config (%d: Clk: %d, T:%.0lf, C:%.0lf, F:%d)",
 			applog(LOG_WARNING, "Klondike config (%d: Clk: %d, T:%.0lf, C:%.0lf, F:%d)",
 				dev, K_HASHCLOCK(klninfo->cfg[dev].kline.cfg.hashclock),
 				dev, K_HASHCLOCK(klninfo->cfg[dev].kline.cfg.hashclock),
 				cvtKlnToC(klninfo->cfg[dev].kline.cfg.temptarget),
 				cvtKlnToC(klninfo->cfg[dev].kline.cfg.temptarget),
@@ -810,7 +812,9 @@ static void klondike_flush_work(struct cgpu_info *klncgpu)
 		kitem = SendCmdGetReply(klncgpu, &kline, KSENDHD(0));
 		kitem = SendCmdGetReply(klncgpu, &kline, KSENDHD(0));
 		if (kitem != NULL) {
 		if (kitem != NULL) {
 			wr_lock(&(klninfo->stat_lock));
 			wr_lock(&(klninfo->stat_lock));
-			memcpy((void *)&(klninfo->status[dev]), kitem, sizeof(*kitem));
+			memcpy((void *)&(klninfo->status[dev]),
+				kitem,
+				sizeof(klninfo->status[dev]));
 			wr_unlock(&(klninfo->stat_lock));
 			wr_unlock(&(klninfo->stat_lock));
 			release_kitem(klncgpu, kitem);
 			release_kitem(klncgpu, kitem);
 			kitem = NULL;
 			kitem = NULL;
@@ -911,7 +915,7 @@ static bool klondike_send_work(struct cgpu_info *klncgpu, int dev, struct work *
 	KLIST *kitem = SendCmdGetReply(klncgpu, &kline, sizeof(kline.wt));
 	KLIST *kitem = SendCmdGetReply(klncgpu, &kline, sizeof(kline.wt));
 	if (kitem != NULL) {
 	if (kitem != NULL) {
 		wr_lock(&(klninfo->stat_lock));
 		wr_lock(&(klninfo->stat_lock));
-		memcpy((void *)&(klninfo->status[dev]), kitem, sizeof(*kitem));
+		memcpy((void *)&(klninfo->status[dev]), kitem, sizeof(klninfo->status[dev]));
 		wr_unlock(&(klninfo->stat_lock));
 		wr_unlock(&(klninfo->stat_lock));
 		release_kitem(klncgpu, kitem);
 		release_kitem(klncgpu, kitem);
 		kitem = NULL;
 		kitem = NULL;