From e6e9a3c219780a1ed27cff3c93fe5f6bb1f3799c Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Thu, 2 Jun 2016 17:14:30 +0300 Subject: [PATCH] extra: deferences in fake assignments don't count Sometimes we do a dereference when we're faking an assignment, but it doesn't mean the pointer is non-NULL. If we merge a pointer p where p is NULL on one side and p->foo is set on the other side then we want to preserve the value of p->foo. So we have a fake dereference but it doesn't mean anything. Signed-off-by: Dan Carpenter --- smatch_extra.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/smatch_extra.c b/smatch_extra.c index 298940c2..d553898b 100644 --- a/smatch_extra.c +++ b/smatch_extra.c @@ -1076,6 +1076,8 @@ static void asm_expr(struct statement *stmt) static void check_dereference(struct expression *expr) { + if (__in_fake_assign) + return; if (outside_of_function()) return; if (implied_not_equal(expr, 0)) -- 2.11.4.GIT