diff options
author | Felix Fietkau <nbd@nbd.name> | 2017-01-10 18:15:39 +0100 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-01-11 13:09:33 +0100 |
commit | b7bee2858b582164d55c32be44df3fcb42cafc78 (patch) | |
tree | d908808a56549ec42e1b269421fd1be2dbd57f45 /target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch | |
parent | b1dbe6028eed57a89ae94c5e61e0b1e65f3aeb80 (diff) | |
download | upstream-b7bee2858b582164d55c32be44df3fcb42cafc78.tar.gz upstream-b7bee2858b582164d55c32be44df3fcb42cafc78.tar.bz2 upstream-b7bee2858b582164d55c32be44df3fcb42cafc78.zip |
kernel: remove linux 4.1 support
The only target still referencing it is omap24xx, and it is marked as
broken.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch')
-rw-r--r-- | target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch | 84 |
1 files changed, 0 insertions, 84 deletions
diff --git a/target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch deleted file mode 100644 index 1187845879..0000000000 --- a/target/linux/generic/patches-4.1/610-netfilter_match_bypass_default_checks.patch +++ /dev/null @@ -1,84 +0,0 @@ ---- a/include/uapi/linux/netfilter_ipv4/ip_tables.h -+++ b/include/uapi/linux/netfilter_ipv4/ip_tables.h -@@ -87,6 +87,7 @@ struct ipt_ip { - #define IPT_F_FRAG 0x01 /* Set if rule is a fragment rule */ - #define IPT_F_GOTO 0x02 /* Set if jump is a goto */ - #define IPT_F_MASK 0x03 /* All possible flag bits mask. */ -+#define IPT_F_NO_DEF_MATCH 0x80 /* Internal: no default match rules present */ - - /* Values for "inv" field in struct ipt_ip. */ - #define IPT_INV_VIA_IN 0x01 /* Invert the sense of IN IFACE. */ ---- a/net/ipv4/netfilter/ip_tables.c -+++ b/net/ipv4/netfilter/ip_tables.c -@@ -82,6 +82,9 @@ ip_packet_match(const struct iphdr *ip, - - #define FWINV(bool, invflg) ((bool) ^ !!(ipinfo->invflags & (invflg))) - -+ if (ipinfo->flags & IPT_F_NO_DEF_MATCH) -+ return true; -+ - if (FWINV((ip->saddr&ipinfo->smsk.s_addr) != ipinfo->src.s_addr, - IPT_INV_SRCIP) || - FWINV((ip->daddr&ipinfo->dmsk.s_addr) != ipinfo->dst.s_addr, -@@ -135,6 +138,29 @@ ip_packet_match(const struct iphdr *ip, - return true; - } - -+static void -+ip_checkdefault(struct ipt_ip *ip) -+{ -+ static const char iface_mask[IFNAMSIZ] = {}; -+ -+ if (ip->invflags || ip->flags & IPT_F_FRAG) -+ return; -+ -+ if (memcmp(ip->iniface_mask, iface_mask, IFNAMSIZ) != 0) -+ return; -+ -+ if (memcmp(ip->outiface_mask, iface_mask, IFNAMSIZ) != 0) -+ return; -+ -+ if (ip->smsk.s_addr || ip->dmsk.s_addr) -+ return; -+ -+ if (ip->proto) -+ return; -+ -+ ip->flags |= IPT_F_NO_DEF_MATCH; -+} -+ - static bool - ip_checkentry(const struct ipt_ip *ip) - { -@@ -649,6 +675,8 @@ find_check_entry(struct ipt_entry *e, st - struct xt_mtchk_param mtpar; - struct xt_entry_match *ematch; - -+ ip_checkdefault(&e->ip); -+ - j = 0; - mtpar.net = net; - mtpar.table = name; -@@ -941,6 +969,7 @@ copy_entries_to_user(unsigned int total_ - const struct xt_table_info *private = table->private; - int ret = 0; - const void *loc_cpu_entry; -+ u8 flags; - - counters = alloc_counters(table); - if (IS_ERR(counters)) -@@ -971,6 +1000,14 @@ copy_entries_to_user(unsigned int total_ - ret = -EFAULT; - goto free_counters; - } -+ -+ flags = e->ip.flags & IPT_F_MASK; -+ if (copy_to_user(userptr + off -+ + offsetof(struct ipt_entry, ip.flags), -+ &flags, sizeof(flags)) != 0) { -+ ret = -EFAULT; -+ goto free_counters; -+ } - - for (i = sizeof(struct ipt_entry); - i < e->target_offset; |