rpms/kernel/FC-6 linux-2.6-snapshot-2.6.22.11.patch, NONE, 1.1 kernel-2.6.spec, 1.3032, 1.3033 linux-2.6-acpi-disable-cstates-in-suspend.patch, 1.1, NONE

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Tue Oct 23 19:52:09 UTC 2007


Author: cebbert

Update of /cvs/dist/rpms/kernel/FC-6
In directory cvs.devel.redhat.com:/tmp/cvs-serv380

Modified Files:
	kernel-2.6.spec 
Added Files:
	linux-2.6-snapshot-2.6.22.11.patch 
Removed Files:
	linux-2.6-acpi-disable-cstates-in-suspend.patch 
Log Message:
* Tue Oct 23 2007 Chuck Ebbert <cebbert at redhat.com>
- add patches queued for 2.6.22.11


linux-2.6-snapshot-2.6.22.11.patch:
 arch/sparc64/kernel/sys_sparc.c |   15 ++++-----------
 drivers/acpi/processor_core.c   |    2 ++
 drivers/acpi/processor_idle.c   |   19 ++++++++++++++++++-
 drivers/char/random.c           |   10 ++++++----
 drivers/scsi/esp_scsi.c         |    3 ++-
 include/acpi/processor.h        |    2 ++
 include/net/rose.h              |    2 +-
 include/net/tcp.h               |    6 ++----
 net/ieee80211/ieee80211_rx.c    |    6 ++++++
 net/ipv4/tcp_input.c            |    3 +++
 net/ipv4/tcp_ipv4.c             |   19 +++++++++----------
 net/ipv6/addrconf.c             |   13 ++++++++++---
 net/ipv6/ndisc.c                |    9 +++++----
 net/ipv6/tcp_ipv6.c             |   18 +++++++++---------
 net/rose/rose_loopback.c        |    4 ++--
 net/rose/rose_route.c           |   15 ++++++++++-----
 net/sched/cls_u32.c             |    2 +-
 net/socket.c                    |    3 ---
 18 files changed, 92 insertions(+), 59 deletions(-)

--- NEW FILE linux-2.6-snapshot-2.6.22.11.patch ---
Index: 2.6.22.11-queue/drivers/acpi/processor_core.c
===================================================================
--- 2.6.22.11-queue.orig/drivers/acpi/processor_core.c	2007-07-16 13:23:48.000000000 -0400
+++ 2.6.22.11-queue/drivers/acpi/processor_core.c	2007-10-23 15:44:50.000000000 -0400
@@ -93,6 +93,8 @@ static struct acpi_driver acpi_processor
 		.add = acpi_processor_add,
 		.remove = acpi_processor_remove,
 		.start = acpi_processor_start,
+		.suspend = acpi_processor_suspend,
+		.resume = acpi_processor_resume,
 		},
 };
 
Index: 2.6.22.11-queue/drivers/acpi/processor_idle.c
===================================================================
--- 2.6.22.11-queue.orig/drivers/acpi/processor_idle.c	2007-07-16 13:23:48.000000000 -0400
+++ 2.6.22.11-queue/drivers/acpi/processor_idle.c	2007-10-23 15:44:50.000000000 -0400
@@ -324,6 +324,23 @@ static void acpi_state_timer_broadcast(s
 
 #endif
 
+/*
+ * Suspend / resume control
+ */
+static int acpi_idle_suspend;
+
+int acpi_processor_suspend(struct acpi_device * device, pm_message_t state)
+{
+	acpi_idle_suspend = 1;
+	return 0;
+}
+
+int acpi_processor_resume(struct acpi_device * device)
+{
+	acpi_idle_suspend = 0;
+	return 0;
+}
+
 static void acpi_processor_idle(void)
 {
 	struct acpi_processor *pr = NULL;
@@ -354,7 +371,7 @@ static void acpi_processor_idle(void)
 	}
 
 	cx = pr->power.state;
-	if (!cx) {
+	if (!cx || acpi_idle_suspend) {
 		if (pm_idle_save)
 			pm_idle_save();
 		else
Index: 2.6.22.11-queue/include/acpi/processor.h
===================================================================
--- 2.6.22.11-queue.orig/include/acpi/processor.h	2007-07-16 13:23:50.000000000 -0400
+++ 2.6.22.11-queue/include/acpi/processor.h	2007-10-23 15:44:50.000000000 -0400
@@ -279,6 +279,8 @@ int acpi_processor_power_init(struct acp
 int acpi_processor_cst_has_changed(struct acpi_processor *pr);
 int acpi_processor_power_exit(struct acpi_processor *pr,
 			      struct acpi_device *device);
+int acpi_processor_suspend(struct acpi_device * device, pm_message_t state);
+int acpi_processor_resume(struct acpi_device * device);
 
 /* in processor_thermal.c */
 int acpi_processor_get_limit_info(struct acpi_processor *pr);
Index: 2.6.22.11-queue/drivers/scsi/esp_scsi.c
===================================================================
--- 2.6.22.11-queue.orig/drivers/scsi/esp_scsi.c	2007-07-16 13:23:49.000000000 -0400
+++ 2.6.22.11-queue/drivers/scsi/esp_scsi.c	2007-10-23 15:44:50.000000000 -0400
@@ -2318,6 +2318,7 @@ int __devinit scsi_esp_register(struct e
 	esp->host->transportt = esp_transport_template;
 	esp->host->max_lun = ESP_MAX_LUN;
 	esp->host->cmd_per_lun = 2;
+	esp->host->unique_id = instance;
 
 	esp_set_clock_params(esp);
 
@@ -2341,7 +2342,7 @@ int __devinit scsi_esp_register(struct e
 	if (err)
 		return err;
 
-	esp->host->unique_id = instance++;
+	instance++;
 
 	scsi_scan_host(esp->host);
 
Index: 2.6.22.11-queue/net/sched/cls_u32.c
===================================================================
--- 2.6.22.11-queue.orig/net/sched/cls_u32.c	2007-07-16 13:23:51.000000000 -0400
+++ 2.6.22.11-queue/net/sched/cls_u32.c	2007-10-23 15:44:50.000000000 -0400
@@ -518,7 +518,7 @@ static int u32_set_parms(struct tcf_prot
 
 #ifdef CONFIG_NET_CLS_IND
 	if (tb[TCA_U32_INDEV-1]) {
-		int err = tcf_change_indev(tp, n->indev, tb[TCA_U32_INDEV-1]);
+		err = tcf_change_indev(tp, n->indev, tb[TCA_U32_INDEV-1]);
 		if (err < 0)
 			goto errout;
 	}
Index: 2.6.22.11-queue/net/ieee80211/ieee80211_rx.c
===================================================================
--- 2.6.22.11-queue.orig/net/ieee80211/ieee80211_rx.c	2007-07-16 13:23:50.000000000 -0400
+++ 2.6.22.11-queue/net/ieee80211/ieee80211_rx.c	2007-10-23 15:44:50.000000000 -0400
@@ -366,6 +366,12 @@ int ieee80211_rx(struct ieee80211_device
 	frag = WLAN_GET_SEQ_FRAG(sc);
 	hdrlen = ieee80211_get_hdrlen(fc);
 
+	if (skb->len < hdrlen) {
+		printk(KERN_INFO "%s: invalid SKB length %d\n",
+			dev->name, skb->len);
+		goto rx_dropped;
+	}
+
 	/* Put this code here so that we avoid duplicating it in all
 	 * Rx paths. - Jean II */
 #ifdef CONFIG_WIRELESS_EXT
Index: 2.6.22.11-queue/net/ipv6/addrconf.c
===================================================================
--- 2.6.22.11-queue.orig/net/ipv6/addrconf.c	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/net/ipv6/addrconf.c	2007-10-23 15:44:50.000000000 -0400
@@ -73,6 +73,7 @@
 #include <net/tcp.h>
 #include <net/ip.h>
 #include <net/netlink.h>
+#include <net/pkt_sched.h>
 #include <linux/if_tunnel.h>
 #include <linux/rtnetlink.h>
 
@@ -212,6 +213,12 @@ static struct ipv6_devconf ipv6_devconf_
 const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
 const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
 
+/* Check if a valid qdisc is available */
+static inline int addrconf_qdisc_ok(struct net_device *dev)
+{
+	return (dev->qdisc != &noop_qdisc);
+}
+
 static void addrconf_del_timer(struct inet6_ifaddr *ifp)
 {
 	if (del_timer(&ifp->timer))
@@ -376,7 +383,7 @@ static struct inet6_dev * ipv6_add_dev(s
 	}
 #endif
 
-	if (netif_running(dev) && netif_carrier_ok(dev))
+	if (netif_running(dev) && addrconf_qdisc_ok(dev))
 		ndev->if_flags |= IF_READY;
 
 	ipv6_mc_init_dev(ndev);
@@ -2269,7 +2276,7 @@ static int addrconf_notify(struct notifi
 	case NETDEV_UP:
 	case NETDEV_CHANGE:
 		if (event == NETDEV_UP) {
-			if (!netif_carrier_ok(dev)) {
+			if (!addrconf_qdisc_ok(dev)) {
 				/* device is not ready yet. */
 				printk(KERN_INFO
 					"ADDRCONF(NETDEV_UP): %s: "
@@ -2281,7 +2288,7 @@ static int addrconf_notify(struct notifi
 			if (idev)
 				idev->if_flags |= IF_READY;
 		} else {
-			if (!netif_carrier_ok(dev)) {
+			if (!addrconf_qdisc_ok(dev)) {
 				/* device is still not ready. */
 				break;
 			}
Index: 2.6.22.11-queue/net/ipv6/ndisc.c
===================================================================
--- 2.6.22.11-queue.orig/net/ipv6/ndisc.c	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/net/ipv6/ndisc.c	2007-10-23 15:44:50.000000000 -0400
@@ -1268,9 +1268,10 @@ static void ndisc_redirect_rcv(struct sk
 
 	if (ipv6_addr_equal(dest, target)) {
 		on_link = 1;
-	} else if (!(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) {
+	} else if (ipv6_addr_type(target) !=
+		   (IPV6_ADDR_UNICAST|IPV6_ADDR_LINKLOCAL)) {
 		ND_PRINTK2(KERN_WARNING
-			   "ICMPv6 Redirect: target address is not link-local.\n");
+			   "ICMPv6 Redirect: target address is not link-local unicast.\n");
 		return;
 	}
 
@@ -1344,9 +1345,9 @@ void ndisc_send_redirect(struct sk_buff 
 	}
 
 	if (!ipv6_addr_equal(&ipv6_hdr(skb)->daddr, target) &&
-	    !(ipv6_addr_type(target) & IPV6_ADDR_LINKLOCAL)) {
+	    ipv6_addr_type(target) != (IPV6_ADDR_UNICAST|IPV6_ADDR_LINKLOCAL)) {
 		ND_PRINTK2(KERN_WARNING
-			"ICMPv6 Redirect: target address is not link-local.\n");
+			"ICMPv6 Redirect: target address is not link-local unicast.\n");
 		return;
 	}
 
Index: 2.6.22.11-queue/include/net/rose.h
===================================================================
--- 2.6.22.11-queue.orig/include/net/rose.h	2007-03-01 13:09:14.000000000 -0500
+++ 2.6.22.11-queue/include/net/rose.h	2007-10-23 15:44:50.000000000 -0400
@@ -188,7 +188,7 @@ extern void rose_kick(struct sock *);
 extern void rose_enquiry_response(struct sock *);
 
 /* rose_route.c */
-extern struct rose_neigh rose_loopback_neigh;
+extern struct rose_neigh *rose_loopback_neigh;
 extern const struct file_operations rose_neigh_fops;
 extern const struct file_operations rose_nodes_fops;
 extern const struct file_operations rose_routes_fops;
Index: 2.6.22.11-queue/net/rose/rose_loopback.c
===================================================================
--- 2.6.22.11-queue.orig/net/rose/rose_loopback.c	2007-07-16 13:23:51.000000000 -0400
+++ 2.6.22.11-queue/net/rose/rose_loopback.c	2007-10-23 15:44:50.000000000 -0400
@@ -79,7 +79,7 @@ static void rose_loopback_timer(unsigned
 
 		skb_reset_transport_header(skb);
 
-		sk = rose_find_socket(lci_o, &rose_loopback_neigh);
+		sk = rose_find_socket(lci_o, rose_loopback_neigh);
 		if (sk) {
 			if (rose_process_rx_frame(sk, skb) == 0)
 				kfree_skb(skb);
@@ -88,7 +88,7 @@ static void rose_loopback_timer(unsigned
 
 		if (frametype == ROSE_CALL_REQUEST) {
 			if ((dev = rose_dev_get(dest)) != NULL) {
-				if (rose_rx_call_request(skb, dev, &rose_loopback_neigh, lci_o) == 0)
+				if (rose_rx_call_request(skb, dev, rose_loopback_neigh, lci_o) == 0)
 					kfree_skb(skb);
 			} else {
 				kfree_skb(skb);
Index: 2.6.22.11-queue/net/rose/rose_route.c
===================================================================
--- 2.6.22.11-queue.orig/net/rose/rose_route.c	2007-07-16 13:23:51.000000000 -0400
+++ 2.6.22.11-queue/net/rose/rose_route.c	2007-10-23 15:44:50.000000000 -0400
@@ -45,7 +45,7 @@ static DEFINE_SPINLOCK(rose_neigh_list_l
 static struct rose_route *rose_route_list;
 static DEFINE_SPINLOCK(rose_route_list_lock);
 
-struct rose_neigh rose_loopback_neigh;
+struct rose_neigh *rose_loopback_neigh;
 
 /*
  *	Add a new route to a node, and in the process add the node and the
@@ -362,7 +362,12 @@ out:
  */
 void rose_add_loopback_neigh(void)
 {
-	struct rose_neigh *sn = &rose_loopback_neigh;
+	struct rose_neigh *sn;
+
+	rose_loopback_neigh = kmalloc(sizeof(struct rose_neigh), GFP_KERNEL);
+	if (!rose_loopback_neigh)
+		return;
+	sn = rose_loopback_neigh;
 
 	sn->callsign  = null_ax25_address;
 	sn->digipeat  = NULL;
@@ -417,13 +422,13 @@ int rose_add_loopback_node(rose_address 
 	rose_node->mask         = 10;
 	rose_node->count        = 1;
 	rose_node->loopback     = 1;
-	rose_node->neighbour[0] = &rose_loopback_neigh;
+	rose_node->neighbour[0] = rose_loopback_neigh;
 
 	/* Insert at the head of list. Address is always mask=10 */
 	rose_node->next = rose_node_list;
 	rose_node_list  = rose_node;
 
-	rose_loopback_neigh.count++;
+	rose_loopback_neigh->count++;
 
 out:
 	spin_unlock_bh(&rose_node_list_lock);
@@ -454,7 +459,7 @@ void rose_del_loopback_node(rose_address
 
 	rose_remove_node(rose_node);
 
-	rose_loopback_neigh.count--;
+	rose_loopback_neigh->count--;
 
 out:
 	spin_unlock_bh(&rose_node_list_lock);
Index: 2.6.22.11-queue/net/socket.c
===================================================================
--- 2.6.22.11-queue.orig/net/socket.c	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/net/socket.c	2007-10-23 15:44:50.000000000 -0400
@@ -778,9 +778,6 @@ static ssize_t sock_aio_write(struct kio
 	if (pos != 0)
 		return -ESPIPE;
 
-	if (iocb->ki_left == 0)	/* Match SYS5 behaviour */
-		return 0;
-
 	x = alloc_sock_iocb(iocb, &siocb);
 	if (!x)
 		return -ENOMEM;
Index: 2.6.22.11-queue/arch/sparc64/kernel/sys_sparc.c
===================================================================
--- 2.6.22.11-queue.orig/arch/sparc64/kernel/sys_sparc.c	2007-07-16 13:23:48.000000000 -0400
+++ 2.6.22.11-queue/arch/sparc64/kernel/sys_sparc.c	2007-10-23 15:44:50.000000000 -0400
@@ -436,7 +436,7 @@ out:
 asmlinkage long sys_ipc(unsigned int call, int first, unsigned long second,
 			unsigned long third, void __user *ptr, long fifth)
 {
-	int err;
+	long err;
 
 	/* No need for backward compatibility. We can start fresh... */
 	if (call <= SEMCTL) {
@@ -453,16 +453,9 @@ asmlinkage long sys_ipc(unsigned int cal
 			err = sys_semget(first, (int)second, (int)third);
 			goto out;
 		case SEMCTL: {
-			union semun fourth;
-			err = -EINVAL;
-			if (!ptr)
-				goto out;
-			err = -EFAULT;
-			if (get_user(fourth.__pad,
-				     (void __user * __user *) ptr))
-				goto out;
-			err = sys_semctl(first, (int)second | IPC_64,
-					 (int)third, fourth);
+			err = sys_semctl(first, third,
+					 (int)second | IPC_64,
+					 (union semun) ptr);
 			goto out;
 		}
 		default:
Index: 2.6.22.11-queue/net/ipv4/tcp_input.c
===================================================================
--- 2.6.22.11-queue.orig/net/ipv4/tcp_input.c	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/net/ipv4/tcp_input.c	2007-10-23 15:44:50.000000000 -0400
@@ -2403,6 +2403,9 @@ static int tcp_tso_acked(struct sock *sk
 			__u32 dval = min(tp->fackets_out, packets_acked);
 			tp->fackets_out -= dval;
 		}
+		/* hint's skb might be NULL but we don't need to care */
+		tp->fastpath_cnt_hint -= min_t(u32, packets_acked,
+					       tp->fastpath_cnt_hint);
 		tp->packets_out -= packets_acked;
 
 		BUG_ON(tcp_skb_pcount(skb) == 0);
Index: 2.6.22.11-queue/include/net/tcp.h
===================================================================
--- 2.6.22.11-queue.orig/include/net/tcp.h	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/include/net/tcp.h	2007-10-23 15:44:50.000000000 -0400
@@ -1061,14 +1061,12 @@ struct tcp_md5sig_key {
 };
 
 struct tcp4_md5sig_key {
-	u8			*key;
-	u16			keylen;
+	struct tcp_md5sig_key	base;
 	__be32			addr;
 };
 
 struct tcp6_md5sig_key {
-	u8			*key;
-	u16			keylen;
+	struct tcp_md5sig_key	base;
 #if 0
 	u32			scope_id;	/* XXX */
 #endif
Index: 2.6.22.11-queue/net/ipv4/tcp_ipv4.c
===================================================================
--- 2.6.22.11-queue.orig/net/ipv4/tcp_ipv4.c	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/net/ipv4/tcp_ipv4.c	2007-10-23 15:44:50.000000000 -0400
@@ -833,8 +833,7 @@ static struct tcp_md5sig_key *
 		return NULL;
 	for (i = 0; i < tp->md5sig_info->entries4; i++) {
 		if (tp->md5sig_info->keys4[i].addr == addr)
-			return (struct tcp_md5sig_key *)
-						&tp->md5sig_info->keys4[i];
+			return &tp->md5sig_info->keys4[i].base;
 	}
 	return NULL;
 }
@@ -865,9 +864,9 @@ int tcp_v4_md5_do_add(struct sock *sk, _
 	key = (struct tcp4_md5sig_key *)tcp_v4_md5_do_lookup(sk, addr);
 	if (key) {
 		/* Pre-existing entry - just update that one. */
-		kfree(key->key);
-		key->key = newkey;
-		key->keylen = newkeylen;
+		kfree(key->base.key);
+		key->base.key = newkey;
+		key->base.keylen = newkeylen;
 	} else {
 		struct tcp_md5sig_info *md5sig;
 
@@ -906,9 +905,9 @@ int tcp_v4_md5_do_add(struct sock *sk, _
 			md5sig->alloced4++;
 		}
 		md5sig->entries4++;
-		md5sig->keys4[md5sig->entries4 - 1].addr   = addr;
-		md5sig->keys4[md5sig->entries4 - 1].key    = newkey;
-		md5sig->keys4[md5sig->entries4 - 1].keylen = newkeylen;
+		md5sig->keys4[md5sig->entries4 - 1].addr        = addr;
+		md5sig->keys4[md5sig->entries4 - 1].base.key    = newkey;
+		md5sig->keys4[md5sig->entries4 - 1].base.keylen = newkeylen;
 	}
 	return 0;
 }
@@ -930,7 +929,7 @@ int tcp_v4_md5_do_del(struct sock *sk, _
 	for (i = 0; i < tp->md5sig_info->entries4; i++) {
 		if (tp->md5sig_info->keys4[i].addr == addr) {
 			/* Free the key */
-			kfree(tp->md5sig_info->keys4[i].key);
+			kfree(tp->md5sig_info->keys4[i].base.key);
 			tp->md5sig_info->entries4--;
 
 			if (tp->md5sig_info->entries4 == 0) {
@@ -964,7 +963,7 @@ static void tcp_v4_clear_md5_list(struct
 	if (tp->md5sig_info->entries4) {
 		int i;
 		for (i = 0; i < tp->md5sig_info->entries4; i++)
-			kfree(tp->md5sig_info->keys4[i].key);
+			kfree(tp->md5sig_info->keys4[i].base.key);
 		tp->md5sig_info->entries4 = 0;
 		tcp_free_md5sig_pool();
 	}
Index: 2.6.22.11-queue/net/ipv6/tcp_ipv6.c
===================================================================
--- 2.6.22.11-queue.orig/net/ipv6/tcp_ipv6.c	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/net/ipv6/tcp_ipv6.c	2007-10-23 15:44:50.000000000 -0400
@@ -551,7 +551,7 @@ static struct tcp_md5sig_key *tcp_v6_md5
 
 	for (i = 0; i < tp->md5sig_info->entries6; i++) {
 		if (ipv6_addr_cmp(&tp->md5sig_info->keys6[i].addr, addr) == 0)
-			return (struct tcp_md5sig_key *)&tp->md5sig_info->keys6[i];
+			return &tp->md5sig_info->keys6[i].base;
 	}
 	return NULL;
 }
@@ -579,9 +579,9 @@ static int tcp_v6_md5_do_add(struct sock
 	key = (struct tcp6_md5sig_key*) tcp_v6_md5_do_lookup(sk, peer);
 	if (key) {
 		/* modify existing entry - just update that one */
-		kfree(key->key);
-		key->key = newkey;
-		key->keylen = newkeylen;
+		kfree(key->base.key);
+		key->base.key = newkey;
+		key->base.keylen = newkeylen;
 	} else {
 		/* reallocate new list if current one is full. */
 		if (!tp->md5sig_info) {
@@ -615,8 +615,8 @@ static int tcp_v6_md5_do_add(struct sock
 
 		ipv6_addr_copy(&tp->md5sig_info->keys6[tp->md5sig_info->entries6].addr,
 			       peer);
-		tp->md5sig_info->keys6[tp->md5sig_info->entries6].key = newkey;
-		tp->md5sig_info->keys6[tp->md5sig_info->entries6].keylen = newkeylen;
+		tp->md5sig_info->keys6[tp->md5sig_info->entries6].base.key = newkey;
+		tp->md5sig_info->keys6[tp->md5sig_info->entries6].base.keylen = newkeylen;
 
 		tp->md5sig_info->entries6++;
 	}
@@ -638,7 +638,7 @@ static int tcp_v6_md5_do_del(struct sock
 	for (i = 0; i < tp->md5sig_info->entries6; i++) {
 		if (ipv6_addr_cmp(&tp->md5sig_info->keys6[i].addr, peer) == 0) {
 			/* Free the key */
-			kfree(tp->md5sig_info->keys6[i].key);
+			kfree(tp->md5sig_info->keys6[i].base.key);
 			tp->md5sig_info->entries6--;
 
 			if (tp->md5sig_info->entries6 == 0) {
@@ -669,7 +669,7 @@ static void tcp_v6_clear_md5_list (struc
 
 	if (tp->md5sig_info->entries6) {
 		for (i = 0; i < tp->md5sig_info->entries6; i++)
-			kfree(tp->md5sig_info->keys6[i].key);
+			kfree(tp->md5sig_info->keys6[i].base.key);
 		tp->md5sig_info->entries6 = 0;
 		tcp_free_md5sig_pool();
 	}
@@ -680,7 +680,7 @@ static void tcp_v6_clear_md5_list (struc
 
 	if (tp->md5sig_info->entries4) {
 		for (i = 0; i < tp->md5sig_info->entries4; i++)
-			kfree(tp->md5sig_info->keys4[i].key);
+			kfree(tp->md5sig_info->keys4[i].base.key);
 		tp->md5sig_info->entries4 = 0;
 		tcp_free_md5sig_pool();
 	}
Index: 2.6.22.11-queue/drivers/char/random.c
===================================================================
--- 2.6.22.11-queue.orig/drivers/char/random.c	2007-10-03 15:52:45.000000000 -0400
+++ 2.6.22.11-queue/drivers/char/random.c	2007-10-23 15:44:50.000000000 -0400
@@ -1550,11 +1550,13 @@ __u32 secure_tcp_sequence_number(__be32 
 	 *	As close as possible to RFC 793, which
 	 *	suggests using a 250 kHz clock.
 	 *	Further reading shows this assumes 2 Mb/s networks.
-	 *	For 10 Gb/s Ethernet, a 1 GHz clock is appropriate.
-	 *	That's funny, Linux has one built in!  Use it!
-	 *	(Networks are faster now - should this be increased?)
+	 *	For 10 Mb/s Ethernet, a 1 MHz clock is appropriate.
+	 *	For 10 Gb/s Ethernet, a 1 GHz clock should be ok, but
+	 *	we also need to limit the resolution so that the u32 seq
+	 *	overlaps less than one time per MSL (2 minutes).
+	 *	Choosing a clock of 64 ns period is OK. (period of 274 s)
 	 */
-	seq += ktime_get_real().tv64;
+	seq += ktime_get_real().tv64 >> 6;
 #if 0
 	printk("init_seq(%lx, %lx, %d, %d) = %d\n",
 	       saddr, daddr, sport, dport, seq);


Index: kernel-2.6.spec
===================================================================
RCS file: /cvs/dist/rpms/kernel/FC-6/kernel-2.6.spec,v
retrieving revision 1.3032
retrieving revision 1.3033
diff -u -r1.3032 -r1.3033
--- kernel-2.6.spec	22 Oct 2007 16:53:19 -0000	1.3032
+++ kernel-2.6.spec	23 Oct 2007 19:52:06 -0000	1.3033
@@ -496,8 +496,8 @@
 
 %endif
 
-# stable -rc
-# Patch02: patch-2.6.22.6-rc1.patch
+# unreleased stable patch
+Patch02: linux-2.6-snapshot-2.6.22.11.patch
 
 %if !%{nopatches}
 
@@ -625,7 +625,6 @@
 Patch781: linux-2.6-usb-allow-1-byte-replies.patch
 Patch782: linux-2.6-usb-fixup-interval-lengths.patch
 
-Patch790: linux-2.6-acpi-disable-cstates-in-suspend.patch
 Patch791: linux-2.6-acpi-kill-dmesg-spam.patch
 
 Patch800: linux-2.6-wakeups-hdaps.patch
@@ -1070,8 +1069,8 @@
 
 %endif
 
-# stable -rc
-# ApplyPatch patch-2.6.22.9-rc1.patch
+# unreleased stable patch
+ApplyPatch linux-2.6-snapshot-2.6.22.11.patch
 
 # This patch adds a "make nonint_oldconfig" which is non-interactive and
 # also gives a list of missing options at the end. Useful for automated
@@ -1347,8 +1346,6 @@
 # timers
 
 # ACPI patches
-# fix some suspend bugs
-ApplyPatch linux-2.6-acpi-disable-cstates-in-suspend.patch
 # silence noisy message
 ApplyPatch linux-2.6-acpi-kill-dmesg-spam.patch
 
@@ -2287,6 +2284,9 @@
 %endif
 
 %changelog
+* Tue Oct 23 2007 Chuck Ebbert <cebbert at redhat.com>
+- add patches queued for 2.6.22.11
+
 * Mon Oct 22 2007 Chuck Ebbert <cebbert at redhat.com>
 - Don't create /sys/module/nousb/
 


--- linux-2.6-acpi-disable-cstates-in-suspend.patch DELETED ---




More information about the fedora-cvs-commits mailing list