Skip to contentSkip to conversation

netfilter: remove ELEMCOUNT

PATCH In review lizf 1 participant 2 messages Oct 12, 2007 netfilter

lore
Share & tools
lore

lizf

author
#0 lore raw

PATCH 2/2 netfilter: remove ELEMCOUNT

Hi,

Macro ELEMCOUNT is a duplicate of ARRAY_SIZE. What's worse is ELEMCOUNT doesn't check the argument which ARRAY_SIZE does.

This patch should be applied after [PATCH 1/2], otherwise we'll get compilation error due to the bug described in [PATCH 1/2].

Note this also fixes a bug in SCTP_CHUNKMAP_COPY(destmap, srcmap), in which ELEMCOUNT(chunkmap) is called, and it should be ELEMCOUNT(srcmap).

include/linux/netfilter/xt_sctp.h +5 -8
index b157897..dd5a4fd 100644
@@ -7,9 +7,6 @@
 
 #define XT_SCTP_VALID_FLAGS		0x07
 
-#define ELEMCOUNT(x) (sizeof(x)/sizeof(x[0]))
-
-
 struct xt_sctp_flag_info {
 	u_int8_t chunktype;
 	u_int8_t flag;
@@ -59,21 +56,21 @@ struct xt_sctp_info {
 #define SCTP_CHUNKMAP_RESET(chunkmap) 				\
 	do {							\
 		int i; 						\
-		for (i = 0; i < ELEMCOUNT(chunkmap); i++)	\
+		for (i = 0; i < ARRAY_SIZE(chunkmap); i++)	\
 			chunkmap[i] = 0;			\
 	} while (0)
 
 #define SCTP_CHUNKMAP_SET_ALL(chunkmap) 			\
 	do {							\
 		int i; 						\
-		for (i = 0; i < ELEMCOUNT(chunkmap); i++) 	\
+		for (i = 0; i < ARRAY_SIZE(chunkmap); i++) 	\
 			chunkmap[i] = ~0;			\
 	} while (0)
 
 #define SCTP_CHUNKMAP_COPY(destmap, srcmap) 			\
 	do {							\
 		int i; 						\
-		for (i = 0; i < ELEMCOUNT(chunkmap); i++) 	\
+		for (i = 0; i < ARRAY_SIZE(srcmap); i++) 	\
 			destmap[i] = srcmap[i];			\
 	} while (0)
 
@@ -81,7 +78,7 @@ struct xt_sctp_info {
 ({							\
 	int i; 						\
 	int flag = 1;					\
-	for (i = 0; i < ELEMCOUNT(chunkmap); i++) {	\
+	for (i = 0; i < ARRAY_SIZE(chunkmap); i++) {	\
 		if (chunkmap[i]) {			\
 			flag = 0;			\
 			break;				\
@@ -94,7 +91,7 @@ struct xt_sctp_info {
 ({							\
 	int i; 						\
 	int flag = 1;					\
-	for (i = 0; i < ELEMCOUNT(chunkmap); i++) {	\
+	for (i = 0; i < ARRAY_SIZE(chunkmap); i++) {	\
 		if (chunkmap[i] != ~0) {		\
 			flag = 0;			\
 				break;			\
author
#1 lore raw

Sorry, I forgot to add the 'signed-off-by'. I resended the patch.

---
xt_sctp.h | 13 +++++--------

1 file changed, 5 insertions(+), 8 deletions(-)
include/linux/netfilter/xt_sctp.h +0 -0
index b157897..dd5a4fd 100644
@@ -7,9 +7,6 @@
 

#define XT_SCTP_VALID_FLAGS 0x07

-#define ELEMCOUNT(x) (sizeof(x)/sizeof(x[0]))
-
-

struct xt_sctp_flag_info {
	u_int8_t chunktype;
	u_int8_t flag;
@@ -59,21 +56,21 @@ struct xt_sctp_info {
#define SCTP_CHUNKMAP_RESET(chunkmap) 				\
	do {							\
		int i; 						\
-		for (i = 0; i < ELEMCOUNT(chunkmap); i++)	\
+		for (i = 0; i < ARRAY_SIZE(chunkmap); i++)	\
			chunkmap[i] = 0;			\
	} while (0)
#define SCTP_CHUNKMAP_SET_ALL(chunkmap) 			\
	do {							\
		int i; 						\
-		for (i = 0; i < ELEMCOUNT(chunkmap); i++) 	\
+		for (i = 0; i < ARRAY_SIZE(chunkmap); i++) 	\
			chunkmap[i] = ~0;			\
	} while (0)
#define SCTP_CHUNKMAP_COPY(destmap, srcmap) 			\
	do {							\
		int i; 						\
-		for (i = 0; i < ELEMCOUNT(chunkmap); i++) 	\
+		for (i = 0; i < ARRAY_SIZE(srcmap); i++) 	\
			destmap[i] = srcmap[i];			\
	} while (0)

@@ -81,7 +78,7 @@ struct xt_sctp_info {

({							\
	int i; 						\
	int flag = 1;					\
-	for (i = 0; i < ELEMCOUNT(chunkmap); i++) {	\
+	for (i = 0; i < ARRAY_SIZE(chunkmap); i++) {	\
		if (chunkmap[i]) {			\
			flag = 0;			\
			break;				\
@@ -94,7 +91,7 @@ struct xt_sctp_info {
({							\
	int i; 						\
	int flag = 1;					\
-	for (i = 0; i < ELEMCOUNT(chunkmap); i++) {	\
+	for (i = 0; i < ARRAY_SIZE(chunkmap); i++) {	\
		if (chunkmap[i] != ~0) {		\
			flag = 0;			\
				break;			\