From: Jozsef Kadlecsik Date: Sat, 19 Mar 2011 10:13:20 +0000 (+0100) Subject: Fix revision reporting X-Git-Tag: v6.1~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d001ebc259d84a91321b0c339e55e5b0557ef1b;p=thirdparty%2Fipset.git Fix revision reporting Revision reporting got broken by the revision checking patch, fixed. --- diff --git a/kernel/net/netfilter/ipset/ip_set_core.c b/kernel/net/netfilter/ipset/ip_set_core.c index 295c8038..237fc2a6 100644 --- a/kernel/net/netfilter/ipset/ip_set_core.c +++ b/kernel/net/netfilter/ipset/ip_set_core.c @@ -136,7 +136,7 @@ find_set_type_minmax(const char *name, u8 family, u8 *min, u8 *max) found = true; if (type->revision < *min) *min = type->revision; - else if (type->revision > *max) + if (type->revision > *max) *max = type->revision; } rcu_read_unlock(); diff --git a/lib/types.c b/lib/types.c index f0dbbc91..402e726d 100644 --- a/lib/types.c +++ b/lib/types.c @@ -216,7 +216,7 @@ create_type_get(struct ipset_session *session) && MATCH_FAMILY(t, family)) { if (match == NULL) { match = t; - tmax = t->revision; + tmin = tmax = t->revision; } else if (t->family == match->family) tmin = t->revision; } @@ -240,11 +240,10 @@ create_type_get(struct ipset_session *session) if (ret != 0) return NULL; - kmax = *(const uint8_t *)ipset_data_get(data, IPSET_OPT_REVISION); + kmin = kmax = *(const uint8_t *)ipset_data_get(data, IPSET_OPT_REVISION); if (ipset_data_test(data, IPSET_OPT_REVISION_MIN)) kmin = *(const uint8_t *)ipset_data_get(data, IPSET_OPT_REVISION_MIN); - else - kmin = kmax; + if (MAX(tmin, kmin) > MIN(tmax, kmax)) { if (kmin > tmax) return ipset_errptr(session,