when run make, show: swapon.c:135:3: warning: 'p' may be used uninitialized in this function [-Wmaybe-uninitialized] memcpy(p, buf, BUF_SIZE); ^~~~~~~~~~~~~~~~~~~~~~~~ This's a fake uninitialized warning. gcc think the 'p' can be used uninitialized at here when verb is TEST_MWRITE_BEFORE_AND_MWRITE_AFTER: case TEST_MWRITE_BEFORE_AND_MWRITE_AFTER: memcpy(p, buf, BUF_SIZE); break; But, if verb is TEST_MWRITE_BEFORE_AND_MWRITE_AFTER, the 'p' will be initialized by: switch (verb) { case TEST_MWRITE_BEFORE_AND_MWRITE_AFTER: case TEST_MWRITE_BEFORE: p = mmap(NULL, BUF_SIZE, PROT_WRITE | PROT_READ, MAP_SHARED, Shall we make the build warning disappear? Signed-off-by: Sun Ke <sunke32@xxxxxxxxxx> --- V2: Improve the commit message. --- src/swapon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/swapon.c b/src/swapon.c index afaed405..fe8949a3 100644 --- a/src/swapon.c +++ b/src/swapon.c @@ -41,7 +41,7 @@ int main(int argc, char **argv) .sa_handler = handle_signal, }; enum verbs verb = TEST_SWAPON; - void *p; + void *p = NULL; ssize_t sz; int fd = -1; int ret, c; -- 2.13.6