[PATCH 3/3] fix enum typing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Currently, type_difference() doesn't make a distinction between
enums & ints with the result being that sparse is not only way
too permissive regarding the typing of enums but simply wrong.

Fix this in type_difference() by:
*) stop to strip SYM_ENUM as it is (and must be) done with SYM_NODE.
*) be as strict with SYM_ENUMs as with SYM_STRUCTs & SYM_UNIONs.

Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx>
---
 evaluate.c                 | 5 +++--
 validation/typediff-enum.c | 1 -
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/evaluate.c b/evaluate.c
index 0d50220a6..b7be8a409 100644
--- a/evaluate.c
+++ b/evaluate.c
@@ -695,7 +695,7 @@ const char *type_difference(struct ctype *c1, struct ctype *c2,
 		if (!t1 || !t2)
 			return "different types";
 
-		if (t1->type == SYM_NODE || t1->type == SYM_ENUM) {
+		if (t1->type == SYM_NODE) {
 			t1 = base1;
 			move1 = 1;
 			if (!t1)
@@ -703,7 +703,7 @@ const char *type_difference(struct ctype *c1, struct ctype *c2,
 			continue;
 		}
 
-		if (t2->type == SYM_NODE || t2->type == SYM_ENUM) {
+		if (t2->type == SYM_NODE) {
 			t2 = base2;
 			move2 = 1;
 			if (!t2)
@@ -724,6 +724,7 @@ const char *type_difference(struct ctype *c1, struct ctype *c2,
 			return "bad types";
 		case SYM_RESTRICT:
 			return "different base types";
+		case SYM_ENUM:
 		case SYM_UNION:
 		case SYM_STRUCT:
 			/* allow definition of incomplete structs and unions */
diff --git a/validation/typediff-enum.c b/validation/typediff-enum.c
index 4c97bcf6c..6c7b37acf 100644
--- a/validation/typediff-enum.c
+++ b/validation/typediff-enum.c
@@ -56,7 +56,6 @@ static struct ops ops_ko = {
 
 /*
  * check-name: typediff-enum
- * check-known-to-fail
  *
  * check-error-start
 typediff-enum.c:5:5: error: symbol 'v' redeclared with different type (originally declared at typediff-enum.c:4) - different base types
-- 
2.17.0

--
To unsubscribe from this list: send the line "unsubscribe linux-sparse" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Newbies FAQ]     [LKML]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Trinity Fuzzer Tool]

  Powered by Linux