commit 2dfb973c0dcc6d2211 (add markmask for hash:ip,mark data type) inserted IPSET_ATTR_MARKMASK in-between other enum values, i.e. changing values of all further attributes. This causes 'ipset list' segfault on existing kernels since ipset no longer finds IPSET_ATTR_MEMSIZE (it has a different value on kernel side). Jozsef points out it should be moved below IPSET_ATTR_MARK which works since there is some extra reserved space after that value.
Showing the changes to include/uapi/linux (1 of 1 file). Show all
Unified · Split
| @@ -83,13 +83,13 @@ enum { · 82 unmodified lines | ||
| 83 | 83 | IPSET_ATTR_CADT_FLAGS, /* 8 */ |
| 84 | 84 | IPSET_ATTR_CADT_LINENO = IPSET_ATTR_LINENO, /* 9 */ |
| 85 | 85 | IPSET_ATTR_MARK, /* 10 */ |
| 86 | + IPSET_ATTR_MARKMASK, /* 11 */ | |
| 86 | 87 | /* Reserve empty slots */ |
| 87 | 88 | IPSET_ATTR_CADT_MAX = 16, |
| 88 | 89 | /* Create-only specific attributes */ |
| 89 | 90 | IPSET_ATTR_GC, |
| 90 | 91 | IPSET_ATTR_HASHSIZE, |
| 91 | 92 | IPSET_ATTR_MAXELEM, |
| 92 | − IPSET_ATTR_MARKMASK, | |
| 93 | 93 | IPSET_ATTR_NETMASK, |
| 94 | 94 | IPSET_ATTR_PROBES, |
| 95 | 95 | IPSET_ATTR_RESIZE, |
| @@ -139,7 +139,6 @@ enum ipset_errno { · 43 unmodified lines | ||
| 139 | 139 | IPSET_ERR_EXIST, |
| 140 | 140 | IPSET_ERR_INVALID_CIDR, |
| 141 | 141 | IPSET_ERR_INVALID_NETMASK, |
| 142 | − IPSET_ERR_INVALID_MARKMASK, | |
| 143 | 142 | IPSET_ERR_INVALID_FAMILY, |
| 144 | 143 | IPSET_ERR_TIMEOUT, |
| 145 | 144 | IPSET_ERR_REFERENCED, |
| @@ -147,6 +146,7 @@ enum ipset_errno { · 1 unmodified line | ||
| 147 | 146 | IPSET_ERR_IPADDR_IPV6, |
| 148 | 147 | IPSET_ERR_COUNTER, |
| 149 | 148 | IPSET_ERR_COMMENT, |
| 149 | + IPSET_ERR_INVALID_MARKMASK, | |
| 150 | 150 | |
| 151 | 151 | /* Type specific error codes */ |
| 152 | 152 | IPSET_ERR_TYPE_SPECIFIC = 4352, |