diff options
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch new file mode 100644 index 00000000..fc68ad58 --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.9/0060-ipvs-fix-matching-of-fwmark-templates-during-schedul.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 84e58f4e3a7fd6a1445e5fe4c734c077f4fd414e Mon Sep 17 00:00:00 2001 | ||
2 | From: Simon Horman <horms@verge.net.au> | ||
3 | Date: Fri, 27 Jan 2012 10:45:27 +0900 | ||
4 | Subject: [PATCH 60/72] ipvs: fix matching of fwmark templates during | ||
5 | scheduling | ||
6 | |||
7 | commit e0aac52e17a3db68fe2ceae281780a70fc69957f upstream. | ||
8 | |||
9 | Commit f11017ec2d1859c661f4e2b12c4a8d250e1f47cf (2.6.37) | ||
10 | moved the fwmark variable in subcontext that is invalidated before | ||
11 | reaching the ip_vs_ct_in_get call. As vaddr is provided as pointer | ||
12 | in the param structure make sure the fwmark variable is in | ||
13 | same context. As the fwmark templates can not be matched, | ||
14 | more and more template connections are created and the | ||
15 | controlled connections can not go to single real server. | ||
16 | |||
17 | Signed-off-by: Julian Anastasov <ja@ssi.bg> | ||
18 | Signed-off-by: Simon Horman <horms@verge.net.au> | ||
19 | Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | ||
20 | Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> | ||
21 | --- | ||
22 | net/netfilter/ipvs/ip_vs_core.c | 2 +- | ||
23 | 1 file changed, 1 insertion(+), 1 deletion(-) | ||
24 | |||
25 | diff --git a/net/netfilter/ipvs/ip_vs_core.c b/net/netfilter/ipvs/ip_vs_core.c | ||
26 | index 093cc32..6dc7d7d 100644 | ||
27 | --- a/net/netfilter/ipvs/ip_vs_core.c | ||
28 | +++ b/net/netfilter/ipvs/ip_vs_core.c | ||
29 | @@ -232,6 +232,7 @@ ip_vs_sched_persist(struct ip_vs_service *svc, | ||
30 | __be16 dport = 0; /* destination port to forward */ | ||
31 | unsigned int flags; | ||
32 | struct ip_vs_conn_param param; | ||
33 | + const union nf_inet_addr fwmark = { .ip = htonl(svc->fwmark) }; | ||
34 | union nf_inet_addr snet; /* source network of the client, | ||
35 | after masking */ | ||
36 | |||
37 | @@ -267,7 +268,6 @@ ip_vs_sched_persist(struct ip_vs_service *svc, | ||
38 | { | ||
39 | int protocol = iph.protocol; | ||
40 | const union nf_inet_addr *vaddr = &iph.daddr; | ||
41 | - const union nf_inet_addr fwmark = { .ip = htonl(svc->fwmark) }; | ||
42 | __be16 vport = 0; | ||
43 | |||
44 | if (dst_port == svc->port) { | ||
45 | -- | ||
46 | 1.7.9.4 | ||
47 | |||