Skip to contentSkip to conversation

Coverity Scan:dead code on ubi

PATCH Wang Fangpeng 1 participant 1 message Aug 17, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi, folks,

Coverity Scan reports dead code on Linux/drivers/mtd/ubi/io.c:956-957 (kernel-4.7)

945 if (data_size == 0) {
946 ubi_err(ubi, "zero data_size");
947 goto bad;
948 }
949 if (lnum < used_ebs - 1) {
950 if (data_size != usable_leb_size) {
951 ubi_err(ubi, "bad data_size");
952 goto bad;
953 }
954 } else if (lnum == used_ebs - 1) {
955 if (data_size == 0) {
956 ubi_err(ubi, "bad data_size at last LEB");
957 goto bad;
958 }
959 } else {
960 ubi_err(ubi, "too high lnum");
961 goto bad;
962 }

The data_size argument has been checked(data_size == 0) at line 945 and goto bad if true. At line 955, check it again. but the value of "data_size" must be at least 1, cannot be equal to 0. So, execution cannot reach line 956-957. it is dead code.

Can we fix this situation by the attach patch?

From 0ad250e4be4a1bd446ec527e201aadc613254141 Mon Sep 17 00:00:00 2001
From: wangfagnpeng <[email protected]>
Date: Wed, 17 Aug 2016 11:36:55 +0800
Subject: [PATCH] fix dead code at drivers/mtd/ubi/io.c

---
 drivers/mtd/ubi/io.c |    7 +------
 1 files changed, 1 insertions(+), 6 deletions(-)
drivers/mtd/ubi/io.c +1 -6
index bf79def..5d6c416 100644
@@ -951,12 +951,7 @@ static int validate_vid_hdr(const struct ubi_device *ubi,
 				ubi_err("bad data_size");
 				goto bad;
 			}
-		} else if (lnum == used_ebs - 1) {
-			if (data_size == 0) {
-				ubi_err("bad data_size at last LEB");
-				goto bad;
-			}
-		} else {
+		} else if (lnum > used_ebs - 1) {
 			ubi_err("too high lnum");
 			goto bad;
 		}
Signature · 1 line
1.7.7