[Devel] [PATCH] fs/fuse kio: fix gcc warning maybe-uninitialized

Pavel Butsykin pbutsykin at virtuozzo.com
Thu May 30 11:35:56 MSK 2019


The compiler doesn't understand that pcs_perf_rate_cnt and fuse_lat_stat
structures may not be initialized only if the number of possible cpu is zero,
and this is impossible.

gcc log:
fs/fuse/kio/pcs/fuse_stat.c: In function 'do_show_cs_stats':
fs/fuse/kio/pcs/fuse_stat.c:354:12: error: 'sync_ops_rate.rate' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  seq_printf(m, "%-10llu %d=%-8s %-10llu %-10llu %-11llu",
            ^
fs/fuse/kio/pcs/fuse_stat.c:354:12: error: 'write_ops_rate.rate' may be used uninitialized in this function [-Werror=maybe-uninitialized]
fs/fuse/kio/pcs/fuse_stat.c:354:12: error: 'read_ops_rate.rate' may be used uninitialized in this function [-Werror=maybe-uninitialized]
cc1: all warnings being treated as errors

Signed-off-by: Pavel Butsykin <pbutsykin at virtuozzo.com>
---
 fs/fuse/kio/pcs/fuse_stat.c | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)

diff --git a/fs/fuse/kio/pcs/fuse_stat.c b/fs/fuse/kio/pcs/fuse_stat.c
index 1b44793d25f8..06be3c75240c 100644
--- a/fs/fuse/kio/pcs/fuse_stat.c
+++ b/fs/fuse/kio/pcs/fuse_stat.c
@@ -313,13 +313,13 @@ static int do_show_cs_stats(struct pcs_cs *cs, void *ctx)
 	struct seq_file *m = ctx;
 	int rpc_state = cs->rpc ? cs->rpc->state : PCS_RPC_UNCONN;
 	unsigned int in_flight_avg = cs->in_flight_avg;
-	struct fuse_lat_stat iolat, netlat;
-	struct pcs_perf_rate_cnt read_ops_rate, write_ops_rate, sync_ops_rate;
+	struct fuse_lat_stat iolat = {}, netlat = {};
+	struct pcs_perf_rate_cnt read_ops_rate = {}, write_ops_rate = {},
+				 sync_ops_rate = {};
 	unsigned seq;
 
 	do {
 		int cpu;
-		bool inited = false;
 
 		seq = read_seqbegin(&cs->stat.seqlock);
 		for_each_possible_cpu(cpu) {
@@ -334,15 +334,6 @@ static int do_show_cs_stats(struct pcs_cs *cs, void *ctx)
 			pcpu_write_rate = per_cpu_ptr(cs->stat.write_ops_rate, cpu);
 			pcpu_sync_rate = per_cpu_ptr(cs->stat.sync_ops_rate, cpu);
 
-			if (!inited) {
-				iolat = *pcpu_iolat;
-				netlat = *pcpu_netlat;
-				read_ops_rate = *pcpu_read_rate;
-				write_ops_rate = *pcpu_write_rate;
-				sync_ops_rate = *pcpu_sync_rate;
-				inited = true;
-				continue;
-			}
 			fuse_iolat_sum(&iolat, pcpu_iolat);
 			fuse_iolat_sum(&netlat, pcpu_netlat);
 			pcs_cs_stat_rate_sum(&read_ops_rate, pcpu_read_rate);
-- 
2.15.1



More information about the Devel mailing list