Author: maks
Date: Mon Oct  8 21:18:54 2007
New Revision: 9609

Log:
add full 2.6.22.6, abi -3
bugfixes are important and abi pump is anyway needed..


Added:
   dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6
      - copied, changed from r9592, 
/dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6-abi
Removed:
   dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6-abi
Modified:
   dists/sid/linux-2.6/debian/arch/defines
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/5

Modified: dists/sid/linux-2.6/debian/arch/defines
==============================================================================
--- dists/sid/linux-2.6/debian/arch/defines     (original)
+++ dists/sid/linux-2.6/debian/arch/defines     Mon Oct  8 21:18:54 2007
@@ -1,5 +1,5 @@
 [abi]
-abiname: 2
+abiname: 3
 
 [base]
 arches:

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog        (original)
+++ dists/sid/linux-2.6/debian/changelog        Mon Oct  8 21:18:54 2007
@@ -1,13 +1,15 @@
 linux-2.6 (2.6.22-5) UNRELEASED; urgency=low
 
   [ maximilian attems ]
-  * Add stable release 2.6.22.6 (minus 2 abi breaker):
+  * Add stable release 2.6.22.6:
     - USB: allow retry on descriptor fetch errors
     - PCI: lets kill the 'PCI hidden behind bridge' message
     - Netfilter: Missing Kbuild entry for netfilter
     - Fix soft-fp underflow handling.
     - SPARC64: Fix sparc64 task stack traces.
+    - TCP: Do not autobind ports for TCP sockets
     - DCCP: Fix DCCP GFP_KERNEL allocation in atomic context
+    - NET: Share correct feature code between bridging and bonding
     - SNAP: Fix SNAP protocol header accesses.
     - NET: Fix missing rcu unlock in __sock_create()
     - IPv6: Invalid semicolon after if statement
@@ -26,6 +28,7 @@
     - PCI: disable MSI on RX790
     - IPV6: Fix kernel panic while send SCTP data with IP fragments
     - i386: fix lazy mode vmalloc synchronization for paravirt
+  * Set abi to 3.
 
   [ Martin Michlmayr ]
   * [mips] Add a fix so qemu NE2000 will work again.
@@ -46,7 +49,7 @@
   [ dann frazier ]
   * [ia64] Enable cciss module
 
- -- dann frazier <[EMAIL PROTECTED]>  Mon, 01 Oct 2007 15:06:16 -0600
+ -- maximilian attems <[EMAIL PROTECTED]>  Mon, 08 Oct 2007 23:14:30 +0200
 
 linux-2.6 (2.6.22-4) unstable; urgency=low
 

Copied: dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6 (from r9592, 
/dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6-abi)
==============================================================================
--- /dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6-abi     (original)
+++ dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6  Mon Oct  8 21:18:54 2007
@@ -398,6 +398,63 @@
  
     int cmd_len;
     unsigned char cmd_buf[13];
+diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
+index 6287ffb..0af7bc8 100644
+--- a/drivers/net/bonding/bond_main.c
++++ b/drivers/net/bonding/bond_main.c
+@@ -1233,43 +1233,31 @@ int bond_sethwaddr(struct net_device *bond_dev, struct 
net_device *slave_dev)
+       return 0;
+ }
+ 
+-#define BOND_INTERSECT_FEATURES \
+-      (NETIF_F_SG | NETIF_F_ALL_CSUM | NETIF_F_TSO | NETIF_F_UFO)
++#define BOND_VLAN_FEATURES \
++      (NETIF_F_VLAN_CHALLENGED | NETIF_F_HW_VLAN_RX | NETIF_F_HW_VLAN_TX | \
++       NETIF_F_HW_VLAN_FILTER)
+ 
+ /* 
+  * Compute the common dev->feature set available to all slaves.  Some
+- * feature bits are managed elsewhere, so preserve feature bits set on
+- * master device that are not part of the examined set.
++ * feature bits are managed elsewhere, so preserve those feature bits
++ * on the master device.
+  */
+ static int bond_compute_features(struct bonding *bond)
+ {
+-      unsigned long features = BOND_INTERSECT_FEATURES;
+       struct slave *slave;
+       struct net_device *bond_dev = bond->dev;
++      unsigned long features = bond_dev->features & ~BOND_VLAN_FEATURES;
+       unsigned short max_hard_header_len = ETH_HLEN;
+       int i;
+ 
+       bond_for_each_slave(bond, slave, i) {
+-              features &= (slave->dev->features & BOND_INTERSECT_FEATURES);
++              features = netdev_compute_features(features,
++                                                 slave->dev->features);
+               if (slave->dev->hard_header_len > max_hard_header_len)
+                       max_hard_header_len = slave->dev->hard_header_len;
+       }
+ 
+-      if ((features & NETIF_F_SG) && 
+-          !(features & NETIF_F_ALL_CSUM))
+-              features &= ~NETIF_F_SG;
+-
+-      /* 
+-       * features will include NETIF_F_TSO (NETIF_F_UFO) iff all 
+-       * slave devices support NETIF_F_TSO (NETIF_F_UFO), which 
+-       * implies that all slaves also support scatter-gather 
+-       * (NETIF_F_SG), which implies that features also includes 
+-       * NETIF_F_SG. So no need to check whether we have an  
+-       * illegal combination of NETIF_F_{TSO,UFO} and 
+-       * !NETIF_F_SG 
+-       */
+-
+-      features |= (bond_dev->features & ~BOND_INTERSECT_FEATURES);
++      features |= (bond_dev->features & BOND_VLAN_FEATURES);
+       bond_dev->features = features;
+       bond_dev->hard_header_len = max_hard_header_len;
+ 
 diff --git a/drivers/net/ppp_generic.c b/drivers/net/ppp_generic.c
 index 3ef0092..9a81fed 100644
 --- a/drivers/net/ppp_generic.c
@@ -630,6 +687,19 @@
 +#define FP_TRAPPING_EXCEPTIONS ((current_thread_info()->xfsr[0] >> 23) & 0x1f)
 +
  #endif
+diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
+index 3a70f55..ab210be 100644
+--- a/include/linux/netdevice.h
++++ b/include/linux/netdevice.h
+@@ -1032,6 +1032,8 @@ extern void dev_seq_stop(struct seq_file *seq, void *v);
+ 
+ extern void linkwatch_run_queue(void);
+ 
++extern int netdev_compute_features(unsigned long all, unsigned long one);
++
+ static inline int net_gso_ok(int features, int gso_type)
+ {
+       int feature = gso_type << NETIF_F_GSO_SHIFT;
 diff --git a/include/linux/netfilter/Kbuild b/include/linux/netfilter/Kbuild
 index 43397a4..ab57cb7 100644
 --- a/include/linux/netfilter/Kbuild
@@ -702,6 +772,19 @@
  #define FP_CLEAR_EXCEPTIONS                           \
    _fex = 0
  
+diff --git a/include/net/tcp.h b/include/net/tcp.h
+index a8af9ae..06827e3 100644
+--- a/include/net/tcp.h
++++ b/include/net/tcp.h
+@@ -281,7 +281,7 @@ extern int                 tcp_v4_remember_stamp(struct 
sock *sk);
+ 
+ extern int                    tcp_v4_tw_remember_stamp(struct 
inet_timewait_sock *tw);
+ 
+-extern int                    tcp_sendmsg(struct kiocb *iocb, struct sock *sk,
++extern int                    tcp_sendmsg(struct kiocb *iocb, struct socket 
*sock,
+                                           struct msghdr *msg, size_t size);
+ extern ssize_t                        tcp_sendpage(struct socket *sock, 
struct page *page, int offset, size_t size, int flags);
+ 
 diff --git a/kernel/signal.c b/kernel/signal.c
 index f940560..d625195 100644
 --- a/kernel/signal.c
@@ -762,6 +845,111 @@
  }
  
  /*
+diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
+index 5e1892d..c326602 100644
+--- a/net/bridge/br_device.c
++++ b/net/bridge/br_device.c
+@@ -179,5 +179,6 @@ void br_dev_setup(struct net_device *dev)
+       dev->priv_flags = IFF_EBRIDGE;
+ 
+       dev->features = NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HIGHDMA |
+-                      NETIF_F_TSO | NETIF_F_NO_CSUM | NETIF_F_GSO_ROBUST;
++                      NETIF_F_GSO_SOFTWARE | NETIF_F_NO_CSUM |
++                      NETIF_F_GSO_ROBUST | NETIF_F_LLTX;
+ }
+diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
+index 849deaf..fefd7c1 100644
+--- a/net/bridge/br_if.c
++++ b/net/bridge/br_if.c
+@@ -360,35 +360,15 @@ int br_min_mtu(const struct net_bridge *br)
+ void br_features_recompute(struct net_bridge *br)
+ {
+       struct net_bridge_port *p;
+-      unsigned long features, checksum;
++      unsigned long features;
+ 
+-      checksum = br->feature_mask & NETIF_F_ALL_CSUM ? NETIF_F_NO_CSUM : 0;
+-      features = br->feature_mask & ~NETIF_F_ALL_CSUM;
++      features = br->feature_mask;
+ 
+       list_for_each_entry(p, &br->port_list, list) {
+-              unsigned long feature = p->dev->features;
+-
+-              if (checksum & NETIF_F_NO_CSUM && !(feature & NETIF_F_NO_CSUM))
+-                      checksum ^= NETIF_F_NO_CSUM | NETIF_F_HW_CSUM;
+-              if (checksum & NETIF_F_HW_CSUM && !(feature & NETIF_F_HW_CSUM))
+-                      checksum ^= NETIF_F_HW_CSUM | NETIF_F_IP_CSUM;
+-              if (!(feature & NETIF_F_IP_CSUM))
+-                      checksum = 0;
+-
+-              if (feature & NETIF_F_GSO)
+-                      feature |= NETIF_F_GSO_SOFTWARE;
+-              feature |= NETIF_F_GSO;
+-
+-              features &= feature;
++              features = netdev_compute_features(features, p->dev->features);
+       }
+ 
+-      if (!(checksum & NETIF_F_ALL_CSUM))
+-              features &= ~NETIF_F_SG;
+-      if (!(features & NETIF_F_SG))
+-              features &= ~NETIF_F_GSO_MASK;
+-
+-      br->dev->features = features | checksum | NETIF_F_LLTX |
+-                          NETIF_F_GSO_ROBUST;
++      br->dev->features = features;
+ }
+ 
+ /* called with RTNL */
+diff --git a/net/core/dev.c b/net/core/dev.c
+index ee051bb..1561f61 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -3635,6 +3635,44 @@ static int __init netdev_dma_register(void)
+ static int __init netdev_dma_register(void) { return -ENODEV; }
+ #endif /* CONFIG_NET_DMA */
+ 
++/**
++ *    netdev_compute_feature - compute conjunction of two feature sets
++ *    @all: first feature set
++ *    @one: second feature set
++ *
++ *    Computes a new feature set after adding a device with feature set
++ *    @one to the master device with current feature set @all.  Returns
++ *    the new feature set.
++ */
++int netdev_compute_features(unsigned long all, unsigned long one)
++{
++      /* if device needs checksumming, downgrade to hw checksumming */
++      if (all & NETIF_F_NO_CSUM && !(one & NETIF_F_NO_CSUM))
++              all ^= NETIF_F_NO_CSUM | NETIF_F_HW_CSUM;
++
++      /* if device can't do all checksum, downgrade to ipv4 */
++      if (all & NETIF_F_HW_CSUM && !(one & NETIF_F_HW_CSUM))
++              all ^= NETIF_F_HW_CSUM | NETIF_F_IP_CSUM;
++
++      if (one & NETIF_F_GSO)
++              one |= NETIF_F_GSO_SOFTWARE;
++      one |= NETIF_F_GSO;
++
++      /* If even one device supports robust GSO, enable it for all. */
++      if (one & NETIF_F_GSO_ROBUST)
++              all |= NETIF_F_GSO_ROBUST;
++
++      all &= one | NETIF_F_LLTX;
++
++      if (!(all & NETIF_F_ALL_CSUM))
++              all &= ~NETIF_F_SG;
++      if (!(all & NETIF_F_SG))
++              all &= ~NETIF_F_GSO_MASK;
++
++      return all;
++}
++EXPORT_SYMBOL(netdev_compute_features);
++
+ /*
+  *    Initialize the DEV module. At boot time this walks the device list and
+  *    unhooks any devices that fail to initialise (normally hardware not
 diff --git a/net/dccp/ccids/ccid2.c b/net/dccp/ccids/ccid2.c
 index 248d20f..d29b88f 100644
 --- a/net/dccp/ccids/ccid2.c
@@ -775,6 +963,35 @@
                BUG_ON(rc); /* XXX what do we do? */
  
                next = hctx->ccid2hctx_seqh->ccid2s_next;
+diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
+index 041fba3..90b241c 100644
+--- a/net/ipv4/af_inet.c
++++ b/net/ipv4/af_inet.c
+@@ -831,7 +831,7 @@ const struct proto_ops inet_stream_ops = {
+       .shutdown          = inet_shutdown,
+       .setsockopt        = sock_common_setsockopt,
+       .getsockopt        = sock_common_getsockopt,
+-      .sendmsg           = inet_sendmsg,
++      .sendmsg           = tcp_sendmsg,
+       .recvmsg           = sock_common_recvmsg,
+       .mmap              = sock_no_mmap,
+       .sendpage          = tcp_sendpage,
+diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
+index 450f44b..11ff182 100644
+--- a/net/ipv4/tcp.c
++++ b/net/ipv4/tcp.c
+@@ -658,9 +658,10 @@ static inline int select_size(struct sock *sk)
+       return tmp;
+ }
+ 
+-int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
++int tcp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg,
+               size_t size)
+ {
++      struct sock *sk = sock->sk;
+       struct iovec *iov;
+       struct tcp_sock *tp = tcp_sk(sk);
+       struct sk_buff *skb;
 diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
 index 4e5884a..13abf4e 100644
 --- a/net/ipv4/tcp_input.c
@@ -839,6 +1056,31 @@
        tcp_xmit_retransmit_queue(sk);
  }
  
+diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
+index 354721d..fa36e1a 100644
+--- a/net/ipv4/tcp_ipv4.c
++++ b/net/ipv4/tcp_ipv4.c
+@@ -2434,7 +2434,6 @@ struct proto tcp_prot = {
+       .shutdown               = tcp_shutdown,
+       .setsockopt             = tcp_setsockopt,
+       .getsockopt             = tcp_getsockopt,
+-      .sendmsg                = tcp_sendmsg,
+       .recvmsg                = tcp_recvmsg,
+       .backlog_rcv            = tcp_v4_do_rcv,
+       .hash                   = tcp_v4_hash,
+diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
+index 6dd3772..b1a7755 100644
+--- a/net/ipv6/af_inet6.c
++++ b/net/ipv6/af_inet6.c
+@@ -487,7 +487,7 @@ const struct proto_ops inet6_stream_ops = {
+       .shutdown          = inet_shutdown,             /* ok           */
+       .setsockopt        = sock_common_setsockopt,    /* ok           */
+       .getsockopt        = sock_common_getsockopt,    /* ok           */
+-      .sendmsg           = inet_sendmsg,              /* ok           */
++      .sendmsg           = tcp_sendmsg,               /* ok           */
+       .recvmsg           = sock_common_recvmsg,       /* ok           */
+       .mmap              = sock_no_mmap,
+       .sendpage          = tcp_sendpage,
 diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
 index 4704b5f..b9f9e93 100644
 --- a/net/ipv6/ip6_output.c
@@ -865,6 +1107,18 @@
                return -EFAULT;
        return ipv6_optlen(hdr);
  }
+diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
+index 17bbdc3..9b81cbc 100644
+--- a/net/ipv6/tcp_ipv6.c
++++ b/net/ipv6/tcp_ipv6.c
+@@ -2135,7 +2135,6 @@ struct proto tcpv6_prot = {
+       .shutdown               = tcp_shutdown,
+       .setsockopt             = tcp_setsockopt,
+       .getsockopt             = tcp_getsockopt,
+-      .sendmsg                = tcp_sendmsg,
+       .recvmsg                = tcp_recvmsg,
+       .backlog_rcv            = tcp_v6_do_rcv,
+       .hash                   = tcp_v6_hash,
 diff --git a/net/socket.c b/net/socket.c
 index f453019..0010da0 100644
 --- a/net/socket.c

Modified: dists/sid/linux-2.6/debian/patches/series/5
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/5 (original)
+++ dists/sid/linux-2.6/debian/patches/series/5 Mon Oct  8 21:18:54 2007
@@ -1,4 +1,4 @@
 - bugfix/sparc/sun4u-pci-config-space.patch
-+ bugfix/2.6.22.6-abi
 + bugfix/mips/i8259-disable-method.patch
 + bugfix/mips/fix-build-elf64.patch
++ bugfix/2.6.22.6

_______________________________________________
Kernel-svn-changes mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/kernel-svn-changes

Reply via email to