]> git.pld-linux.org Git - packages/kernel.git/commitdiff
- drop vserver feat patches (were causing oopses)
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 14 Dec 2012 11:08:00 +0000 (12:08 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Fri, 14 Dec 2012 11:08:00 +0000 (12:08 +0100)
kernel-vserver-2.3.patch

index 057765dab75feea08f1bfee4e174605686e09293..2788377f7112e600ed0f2ce45e6e17376683f916 100644 (file)
@@ -25885,267 +25885,10 @@ diff -NurpP linux-3.7-vs2.3.5.1/kernel/vserver/network.c linux-3.7-vs2.3.5.1.1/k
  
        nxi->nx_state |= NXS_RELEASED;
        kfree(nxi);
-diff -NurpP linux-3.7-vs2.3.5.1/include/linux/vs_inet.h linux-3.7-vs2.3.5.1.1/include/linux/vs_inet.h
---- linux-3.7-vs2.3.5.1/include/linux/vs_inet.h        2012-12-11 15:56:32.000000000 +0000
-+++ linux-3.7-vs2.3.5.1.1/include/linux/vs_inet.h      2012-12-13 12:52:33.000000000 +0000
-@@ -81,12 +81,15 @@ int v4_addr_in_nx_info(struct nx_info *n
-               (nxi->v4_bcast.s_addr == addr))
-               goto out;
-       ret = 5;
-+
-       /* check for v4 addresses */
-+      spin_lock(&nxi->addr_lock);
-       for (nxa = &nxi->v4; nxa; nxa = nxa->next)
-               if (v4_addr_match(nxa, addr, tmask))
-                       goto out;
-       ret = 0;
- out:
-+      spin_unlock(&nxi->addr_lock);
-       vxdprintk(VXD_CBIT(net, 0),
-               "v4_addr_in_nx_info(%p[#%u]," NIPQUAD_FMT ",%04x) = %d",
-               nxi, nxi ? nxi->nx_id : 0, NIPQUAD(addr), tmask, ret);
-@@ -104,11 +107,16 @@ static inline
- int v4_nx_addr_in_nx_info(struct nx_info *nxi, struct nx_addr_v4 *nxa, uint16_t mask)
- {
-       struct nx_addr_v4 *ptr;
-+      int ret = 1;
-+      spin_lock(&nxi->addr_lock);
-       for (ptr = &nxi->v4; ptr; ptr = ptr->next)
-               if (v4_nx_addr_match(ptr, nxa, mask))
--                      return 1;
--      return 0;
-+                      goto out;
-+      ret = 0;
-+out:
-+      spin_unlock(&nxi->addr_lock);
-+      return ret;
- }
- #include <net/inet_sock.h>
-diff -NurpP linux-3.7-vs2.3.5.1/include/linux/vs_inet6.h linux-3.7-vs2.3.5.1.1/include/linux/vs_inet6.h
---- linux-3.7-vs2.3.5.1/include/linux/vs_inet6.h       2012-12-11 15:56:32.000000000 +0000
-+++ linux-3.7-vs2.3.5.1.1/include/linux/vs_inet6.h     2012-12-13 12:52:39.000000000 +0000
-@@ -45,11 +45,14 @@ int v6_addr_in_nx_info(struct nx_info *n
-       if (!nxi)
-               goto out;
-+
-+      spin_lock(&nxi->addr_lock);
-       for (nxa = &nxi->v6; nxa; nxa = nxa->next)
-               if (v6_addr_match(nxa, addr, mask))
-                       goto out;
-       ret = 0;
- out:
-+      spin_unlock(&nxi->addr_lock);
-       vxdprintk(VXD_CBIT(net, 0),
-               "v6_addr_in_nx_info(%p[#%u],%pI6,%04x) = %d",
-               nxi, nxi ? nxi->nx_id : 0, addr, mask, ret);
-@@ -67,11 +70,16 @@ static inline
- int v6_nx_addr_in_nx_info(struct nx_info *nxi, struct nx_addr_v6 *nxa, uint16_t mask)
- {
-       struct nx_addr_v6 *ptr;
-+      int ret = 1;
-+      spin_lock(&nxi->addr_lock);
-       for (ptr = &nxi->v6; ptr; ptr = ptr->next)
-               if (v6_nx_addr_match(ptr, nxa, mask))
--                      return 1;
--      return 0;
-+                      goto out;
-+      ret = 0;
-+out:
-+      spin_unlock(&nxi->addr_lock);
-+      return ret;
- }
-diff -NurpP linux-3.7-vs2.3.5.1/include/linux/vserver/network.h linux-3.7-vs2.3.5.1.1/include/linux/vserver/network.h
---- linux-3.7-vs2.3.5.1/include/linux/vserver/network.h        2012-12-11 15:56:32.000000000 +0000
-+++ linux-3.7-vs2.3.5.1.1/include/linux/vserver/network.h      2012-12-13 13:40:52.000000000 +0000
-@@ -109,6 +109,7 @@ struct nx_info {
-       uint64_t nx_flags;              /* network flag word */
-       uint64_t nx_ncaps;              /* network capabilities */
-+      spinlock_t addr_lock;           /* protect address changes */
-       struct in_addr v4_lback;        /* Loopback address */
-       struct in_addr v4_bcast;        /* Broadcast address */
-       struct nx_addr_v4 v4;           /* First/Single ipv4 address */
-diff -NurpP linux-3.7-vs2.3.5.1/kernel/vserver/network.c linux-3.7-vs2.3.5.1.1/kernel/vserver/network.c
---- linux-3.7-vs2.3.5.1/kernel/vserver/network.c       2012-12-11 15:56:33.000000000 +0000
-+++ linux-3.7-vs2.3.5.1.1/kernel/vserver/network.c     2012-12-13 13:48:35.000000000 +0000
-@@ -131,6 +131,7 @@ static struct nx_info *__alloc_nx_info(n
-       INIT_HLIST_NODE(&new->nx_hlist);
-       atomic_set(&new->nx_usecnt, 0);
-       atomic_set(&new->nx_tasks, 0);
-+      spin_lock_init(&new->addr_lock);
-       new->nx_state = 0;
-       new->nx_flags = NXF_INIT_SET;
-@@ -593,26 +597,31 @@ int do_add_v4_addr(struct nx_info *nxi,
-       uint16_t type, uint16_t flags)
- {
-       struct nx_addr_v4 *nxa = &nxi->v4;
-+      struct nx_addr_v4 *new = __alloc_nx_addr_v4();
-+
-+      if (IS_ERR(new))
-+              return PTR_ERR(new);
-+      spin_lock(&nxi->addr_lock);
-       if (NX_IPV4(nxi)) {
-               /* locate last entry */
-               for (; nxa->next; nxa = nxa->next);
--              nxa->next = __alloc_nx_addr_v4();
--              nxa = nxa->next;
--
--              if (IS_ERR(nxa))
--                      return PTR_ERR(nxa);
--      }
-+              nxa->next = new;
-+              nxa = new;
-+              new = NULL;
--      if (nxi->v4.next)
-               /* remove single ip for ip list */
-               nxi->nx_flags &= ~NXF_SINGLE_IP;
-+      }
-       nxa->ip[0].s_addr = ip;
-       nxa->ip[1].s_addr = ip2;
-       nxa->mask.s_addr = mask;
-       nxa->type = type;
-       nxa->flags = flags;
-+      spin_unlock(&nxi->addr_lock);
-+      if (new)
-+              __dealloc_nx_addr_v4(new);
-       return 0;
- }
-@@ -620,20 +629,25 @@ int do_remove_v4_addr(struct nx_info *nx
-       uint16_t type, uint16_t flags)
- {
-       struct nx_addr_v4 *nxa = &nxi->v4;
-+      struct nx_addr_v4 *old = NULL;
-+      int ret = 0;
-+      spin_lock(&nxi->addr_lock);
-       switch (type) {
- /*    case NXA_TYPE_ADDR:
-               break;          */
-       case NXA_TYPE_ANY:
--              __dealloc_nx_addr_v4_all(xchg(&nxa->next, NULL));
-+              old = xchg(&nxa->next, NULL);
-               memset(nxa, 0, sizeof(*nxa));
-               break;
-       default:
--              return -EINVAL;
-+              ret = -EINVAL;
-       }
--      return 0;
-+      spin_unlock(&nxi->addr_lock);
-+      __dealloc_nx_addr_v4_all(old);
-+      return ret;
- }
-@@ -687,10 +701,7 @@ int vc_net_remove(struct nx_info *nxi, v
-       switch (vc_data.type) {
-       case NXA_TYPE_ANY:
--              __dealloc_nx_addr_v4_all(xchg(&nxi->v4.next, NULL));
--              memset(&nxi->v4, 0, sizeof(nxi->v4));
--              break;
--
-+              return do_remove_v4_addr(nxi, 0, 0, 0, vc_data.type, 0);
-       default:
-               return -EINVAL;
-       }
-@@ -782,15 +793,18 @@ int do_add_v6_addr(struct nx_info *nxi,
-       uint32_t prefix, uint16_t type, uint16_t flags)
- {
-       struct nx_addr_v6 *nxa = &nxi->v6;
-+      struct nx_addr_v6 *new = __alloc_nx_addr_v6();
-+      if (IS_ERR(new))
-+              return PTR_ERR(new);
-+
-+      spin_lock(&nxi->addr_lock);
-       if (NX_IPV6(nxi)) {
-               /* locate last entry */
-               for (; nxa->next; nxa = nxa->next);
--              nxa->next = __alloc_nx_addr_v6();
--              nxa = nxa->next;
--
--              if (IS_ERR(nxa))
--                      return PTR_ERR(nxa);
-+              nxa->next = new;
-+              nxa = new;
-+              new = NULL;
-       }
-       nxa->ip = *ip;
-@@ -798,6 +812,9 @@ int do_add_v6_addr(struct nx_info *nxi,
-       nxa->prefix = prefix;
-       nxa->type = type;
-       nxa->flags = flags;
-+      spin_unlock(&nxi->addr_lock);
-+      if (new)
-+              __dealloc_nx_addr_v6(new);
-       return 0;
- }
-diff -NurpP linux-3.7-vs2.3.5.1/kernel/vserver/network.c linux-3.7-vs2.3.5.1.1/kernel/vserver/network.c
---- linux-3.7-vs2.3.5.1/kernel/vserver/network.c       2012-12-11 15:56:33.000000000 +0000
-+++ linux-3.7-vs2.3.5.1.1/kernel/vserver/network.c     2012-12-13 13:48:35.000000000 +0000
-@@ -804,6 +818,31 @@ int do_add_v6_addr(struct nx_info *nxi,
-       return 0;
- }
-+int do_remove_v6_addr(struct nx_info *nxi,
-+      struct in6_addr *ip, struct in6_addr *mask, 
-+      uint32_t prefix, uint16_t type, uint16_t flags)
-+{
-+      struct nx_addr_v6 *nxa = &nxi->v6;
-+      struct nx_addr_v6 *old = NULL;
-+      int ret = 0;
-+
-+      spin_lock(&nxi->addr_lock);
-+      switch (type) {
-+/*    case NXA_TYPE_ADDR:
-+              break;          */
-+
-+      case NXA_TYPE_ANY:
-+              old = xchg(&nxa->next, NULL);
-+              memset(nxa, 0, sizeof(*nxa));
-+              break;
-+
-+      default:
-+              ret = -EINVAL;
-+      }
-+      spin_unlock(&nxi->addr_lock);
-+      __dealloc_nx_addr_v6_all(old);
-+      return ret;
-+}
- int vc_net_add_ipv6(struct nx_info *nxi, void __user *data)
- {
-@@ -831,10 +873,8 @@ int vc_net_remove_ipv6(struct nx_info *n
-       switch (vc_data.type) {
-       case NXA_TYPE_ANY:
--              __dealloc_nx_addr_v6_all(xchg(&nxi->v6.next, NULL));
--              memset(&nxi->v6, 0, sizeof(nxi->v6));
-+              do_remove_v6_addr(nxi, NULL, NULL, 0, vc_data.type, 0);
-               break;
--
-       default:
-               return -EINVAL;
-       }
---- linux-3.7/net/ipv6/netfilter/ip6t_MASQUERADE.c~    2012-12-11 04:30:57.000000000 +0100
-+++ linux-3.7/net/ipv6/netfilter/ip6t_MASQUERADE.c     2012-12-13 21:09:30.741602424 +0100
-@@ -34,7 +34,7 @@
+diff -NurpP --minimal linux-3.7-vs2.3.5.1.2/net/ipv6/netfilter/ip6t_MASQUERADE.c linux-3.7-vs2.3.5.1.3/net/ipv6/netfilter/ip6t_MASQUERADE.c
+--- linux-3.7-vs2.3.5.1.2/net/ipv6/netfilter/ip6t_MASQUERADE.c 2012-12-11 15:47:54.000000000 +0000
++++ linux-3.7-vs2.3.5.1.3/net/ipv6/netfilter/ip6t_MASQUERADE.c 2012-12-13 20:26:20.000000000 +0000
+@@ -34,7 +34,7 @@ masquerade_tg6(struct sk_buff *skb, cons
                            ctinfo == IP_CT_RELATED_REPLY));
  
        if (ipv6_dev_get_saddr(dev_net(par->out), par->out,
@@ -28902,231 +28645,3 @@ diff -NurpP --minimal linux-3.7-vs2.3.5.1.3/include/uapi/vserver/tag_cmd.h linux
 +#define VCMD_tag_migrate      VC_CMD(TAGMIG, 1, 0)
 +
 +#endif /* _UAPI_VS_TAG_CMD_H */
-diff -NurpP linux-3.7-vs2.3.5.1.1/kernel/vserver/network.c linux-3.7-vs2.3.5.1.2/kernel/vserver/network.c
---- linux-3.7-vs2.3.5.1.1/kernel/vserver/network.c     2012-12-13 13:48:35.000000000 +0000
-+++ linux-3.7-vs2.3.5.1.2/kernel/vserver/network.c     2012-12-13 18:10:29.000000000 +0000
-@@ -18,6 +18,7 @@
- #include <linux/err.h>
- #include <linux/slab.h>
- #include <linux/rcupdate.h>
-+#include <net/ipv6.h>
- #include <linux/vs_network.h>
- #include <linux/vs_pid.h>
-@@ -592,20 +593,43 @@ int vc_net_migrate(struct nx_info *nxi,
- }
-+static inline
-+struct nx_addr_v4 *__find_v4_addr(struct nx_info *nxi, 
-+      __be32 ip, __be32 ip2, __be32 mask, uint16_t type, uint16_t flags, 
-+      struct nx_addr_v4 **prev)
-+{
-+      struct nx_addr_v4 *nxa = &nxi->v4;
-+
-+      for (; nxa; nxa = nxa->next) {
-+              if ((nxa->ip[0].s_addr == ip) &&
-+                  (nxa->ip[1].s_addr == ip2) &&
-+                  (nxa->mask.s_addr == mask) &&
-+                  (nxa->type == type) &&
-+                  (nxa->flags == flags))
-+                  return nxa;
-+
-+              /* save previous entry */
-+              if (prev)
-+                      *prev = nxa;
-+      }       
-+      return NULL;
-+}
- int do_add_v4_addr(struct nx_info *nxi, __be32 ip, __be32 ip2, __be32 mask,
-       uint16_t type, uint16_t flags)
- {
--      struct nx_addr_v4 *nxa = &nxi->v4;
-+      struct nx_addr_v4 *nxa = NULL;
-       struct nx_addr_v4 *new = __alloc_nx_addr_v4();
-+      int ret = -EEXIST;
-       if (IS_ERR(new))
-               return PTR_ERR(new);
-       spin_lock(&nxi->addr_lock);
-+      if (__find_v4_addr(nxi, ip, ip2, mask, type, flags, &nxa))
-+              goto out_unlock;
-+
-       if (NX_IPV4(nxi)) {
--              /* locate last entry */
--              for (; nxa->next; nxa = nxa->next);
-               nxa->next = new;
-               nxa = new;
-               new = NULL;
-@@ -619,25 +643,46 @@ int do_add_v4_addr(struct nx_info *nxi,
-       nxa->mask.s_addr = mask;
-       nxa->type = type;
-       nxa->flags = flags;
-+      ret = 0;
-+out_unlock:
-       spin_unlock(&nxi->addr_lock);
-       if (new)
-               __dealloc_nx_addr_v4(new);
--      return 0;
-+      return ret;
- }
- int do_remove_v4_addr(struct nx_info *nxi, __be32 ip, __be32 ip2, __be32 mask,
-       uint16_t type, uint16_t flags)
- {
--      struct nx_addr_v4 *nxa = &nxi->v4;
-+      struct nx_addr_v4 *nxa = NULL;
-       struct nx_addr_v4 *old = NULL;
-       int ret = 0;
-       spin_lock(&nxi->addr_lock);
-       switch (type) {
--/*    case NXA_TYPE_ADDR:
--              break;          */
-+      case NXA_TYPE_ADDR:
-+              old = __find_v4_addr(nxi, ip, ip2, mask, type, flags, &nxa);
-+              if (old) {
-+                      if (nxa) {
-+                              nxa->next = old->next;
-+                              old->next = NULL;
-+                      } else {
-+                              if (old->next) {
-+                                      nxa = old;
-+                                      old = old->next;
-+                                      *nxa = *old;
-+                                      old->next = NULL;
-+                              } else {
-+                                      memset(old, 0, sizeof(*old));
-+                                      old = NULL;
-+                              }
-+                      }
-+              } else
-+                      ret = -ESRCH;
-+              break;
-       case NXA_TYPE_ANY:
-+              nxa = &nxi->v4;
-               old = xchg(&nxa->next, NULL);
-               memset(nxa, 0, sizeof(*nxa));
-               break;
-@@ -788,20 +833,46 @@ int vc_net_rem_ipv4(struct nx_info *nxi,
- #ifdef CONFIG_IPV6
-+static inline
-+struct nx_addr_v6 *__find_v6_addr(struct nx_info *nxi, 
-+      struct in6_addr *ip, struct in6_addr *mask,
-+      uint32_t prefix, uint16_t type, uint16_t flags,
-+      struct nx_addr_v6 **prev)
-+{
-+      struct nx_addr_v6 *nxa = &nxi->v6;
-+
-+      for (; nxa; nxa = nxa->next) {
-+              if (ipv6_addr_equal(&nxa->ip, ip) &&
-+                  ipv6_addr_equal(&nxa->mask, mask) &&
-+                  (nxa->prefix == prefix) &&
-+                  (nxa->type == type) &&
-+                  (nxa->flags == flags))
-+                  return nxa;
-+
-+              /* save previous entry */
-+              if (prev)
-+                      *prev = nxa;
-+      }       
-+      return NULL;
-+}
-+
-+
- int do_add_v6_addr(struct nx_info *nxi,
-       struct in6_addr *ip, struct in6_addr *mask,
-       uint32_t prefix, uint16_t type, uint16_t flags)
- {
--      struct nx_addr_v6 *nxa = &nxi->v6;
-+      struct nx_addr_v6 *nxa = NULL;
-       struct nx_addr_v6 *new = __alloc_nx_addr_v6();
-+      int ret = -EEXIST;
-       if (IS_ERR(new))
-               return PTR_ERR(new);
-       spin_lock(&nxi->addr_lock);
-+      if (__find_v6_addr(nxi, ip, mask, prefix, type, flags, &nxa))
-+              goto out_unlock;
-+
-       if (NX_IPV6(nxi)) {
--              /* locate last entry */
--              for (; nxa->next; nxa = nxa->next);
-               nxa->next = new;
-               nxa = new;
-               new = NULL;
-@@ -812,26 +883,47 @@ int do_add_v6_addr(struct nx_info *nxi,
-       nxa->prefix = prefix;
-       nxa->type = type;
-       nxa->flags = flags;
-+      ret = 0;
-+out_unlock:
-       spin_unlock(&nxi->addr_lock);
-       if (new)
-               __dealloc_nx_addr_v6(new);
--      return 0;
-+      return ret;
- }
- int do_remove_v6_addr(struct nx_info *nxi,
-       struct in6_addr *ip, struct in6_addr *mask, 
-       uint32_t prefix, uint16_t type, uint16_t flags)
- {
--      struct nx_addr_v6 *nxa = &nxi->v6;
-+      struct nx_addr_v6 *nxa = NULL;
-       struct nx_addr_v6 *old = NULL;
-       int ret = 0;
-       spin_lock(&nxi->addr_lock);
-       switch (type) {
--/*    case NXA_TYPE_ADDR:
--              break;          */
-+      case NXA_TYPE_ADDR:
-+              old = __find_v6_addr(nxi, ip, mask, prefix, type, flags, &nxa);
-+              if (old) {
-+                      if (nxa) {
-+                              nxa->next = old->next;
-+                              old->next = NULL;
-+                      } else {
-+                              if (old->next) {
-+                                      nxa = old;
-+                                      old = old->next;
-+                                      *nxa = *old;
-+                                      old->next = NULL;
-+                              } else {
-+                                      memset(old, 0, sizeof(*old));
-+                                      old = NULL;
-+                              }
-+                      }
-+              } else
-+                      ret = -ESRCH;
-+              break;
-       case NXA_TYPE_ANY:
-+              nxa = &nxi->v6;
-               old = xchg(&nxa->next, NULL);
-               memset(nxa, 0, sizeof(*nxa));
-               break;
-@@ -872,9 +964,14 @@ int vc_net_remove_ipv6(struct nx_info *n
-               return -EFAULT;
-       switch (vc_data.type) {
-+      case NXA_TYPE_ADDR:
-+              memset(&vc_data.mask, ~0, sizeof(vc_data.mask));
-+              /* fallthrough */
-+      case NXA_TYPE_MASK:
-+              return do_remove_v6_addr(nxi, &vc_data.ip, &vc_data.mask,
-+                      vc_data.prefix, vc_data.type, vc_data.flags);
-       case NXA_TYPE_ANY:
--              do_remove_v6_addr(nxi, NULL, NULL, 0, vc_data.type, 0);
--              break;
-+              return do_remove_v6_addr(nxi, NULL, NULL, 0, vc_data.type, 0);
-       default:
-               return -EINVAL;
-       }
This page took 0.2065 seconds and 4 git commands to generate.