[kernel] r9463 - in dists/sid/linux-2.6/debian: . patches/bugfix
Maximilian Attems
maks at alioth.debian.org
Wed Sep 5 20:47:01 UTC 2007
Author: maks
Date: Wed Sep 5 20:47:01 2007
New Revision: 9463
Log:
2.6.22.6 - minus the two abi breaking patches:
NET: Share correct feature code between bridging and bonding
TCP: Do not autobind ports for TCP sockets
Modified:
dists/sid/linux-2.6/debian/changelog
dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6
Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog (original)
+++ dists/sid/linux-2.6/debian/changelog Wed Sep 5 20:47:01 2007
@@ -1,15 +1,13 @@
linux-2.6 (2.6.22-5) UNRELEASED; urgency=low
[ maximilian attems ]
- * Add stable release 2.6.22.6:
+ * Add stable release 2.6.22.6 (minus 2 abi breaker):
- 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
@@ -33,7 +31,7 @@
* [mips] Add a fix so qemu NE2000 will work again.
* [mipsel/r5k-cobalt] Enable MTD.
- -- maximilian attems <maks at debian.org> Sat, 01 Sep 2007 17:45:38 +0200
+ -- maximilian attems <maks at debian.org> Wed, 05 Sep 2007 22:44:42 +0200
linux-2.6 (2.6.22-4) unstable; urgency=low
Modified: dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6
==============================================================================
--- dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6 (original)
+++ dists/sid/linux-2.6/debian/patches/bugfix/2.6.22.6 Wed Sep 5 20:47:01 2007
@@ -398,63 +398,6 @@
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
@@ -687,19 +630,6 @@
+#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
@@ -772,19 +702,6 @@
#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
@@ -845,111 +762,6 @@
}
/*
-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
@@ -963,35 +775,6 @@
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
@@ -1056,31 +839,6 @@
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
@@ -1107,18 +865,6 @@
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
More information about the Kernel-svn-changes
mailing list