Coverity Scan:dead code on ubi
Subsystems (2)
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
@@ -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