From 85c9445fe464d67c4737f085a43f4052334a69f0 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Thu, 21 Jun 2018 11:09:44 +0300 Subject: [PATCH] comparison: don't save comparisons to oneself The problem is code like: n = copy_from_user(dest, src, n); where there is an "n" on both sides. It doesn't make sense to say that n <= n. Signed-off-by: Dan Carpenter --- smatch_comparison.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/smatch_comparison.c b/smatch_comparison.c index 45fcf153..c710cacb 100644 --- a/smatch_comparison.c +++ b/smatch_comparison.c @@ -1493,6 +1493,9 @@ static void copy_comparisons(struct expression *left, struct expression *right) vsl = data->left_vsl; comparison = flip_comparison(comparison); } + /* n = copy_from_user(dest, src, n); leads to n <= n which is nonsense */ + if (strcmp(left_var, var) == 0) + continue; add_comparison_var_sym(left, left_var, left_vsl, comparison, expr, var, vsl); } END_FOR_EACH_PTR(tmp); -- 2.11.4.GIT