diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/drivers/block/cfq-iosched.c linux-2.6.14-ck5/drivers/block/cfq-iosched.c --- linux-2.6.14-ck4/drivers/block/cfq-iosched.c 2005-08-29 13:31:21.000000000 +1000 +++ linux-2.6.14-ck5/drivers/block/cfq-iosched.c 2005-11-12 12:23:24.000000000 +1100 @@ -2260,10 +2260,8 @@ static void cfq_put_cfqd(struct cfq_data if (!atomic_dec_and_test(&cfqd->ref)) return; - blk_put_queue(q); - cfq_shutdown_timer_wq(cfqd); - q->elevator->elevator_data = NULL; + blk_put_queue(q); mempool_destroy(cfqd->crq_pool); kfree(cfqd->crq_hash); diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/drivers/net/wireless/airo.c linux-2.6.14-ck5/drivers/net/wireless/airo.c --- linux-2.6.14-ck4/drivers/net/wireless/airo.c 2005-10-28 20:21:47.000000000 +1000 +++ linux-2.6.14-ck5/drivers/net/wireless/airo.c 2005-11-12 12:23:24.000000000 +1100 @@ -46,6 +46,8 @@ #include #include +#include "airo.h" + #ifdef CONFIG_PCI static struct pci_device_id card_ids[] = { { 0x14b9, 1, PCI_ANY_ID, PCI_ANY_ID, }, diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/drivers/net/wireless/airo_cs.c linux-2.6.14-ck5/drivers/net/wireless/airo_cs.c --- linux-2.6.14-ck4/drivers/net/wireless/airo_cs.c 2005-08-29 13:31:24.000000000 +1000 +++ linux-2.6.14-ck5/drivers/net/wireless/airo_cs.c 2005-11-12 12:23:24.000000000 +1100 @@ -42,6 +42,8 @@ #include #include +#include "airo.h" + /* All the PCMCIA modules use PCMCIA_DEBUG to control debugging. If you do not define PCMCIA_DEBUG at all, all the debug code will be @@ -78,10 +80,6 @@ MODULE_SUPPORTED_DEVICE("Aironet 4500, 4 event handler. */ -struct net_device *init_airo_card( int, int, int, struct device * ); -void stop_airo_card( struct net_device *, int ); -int reset_airo_card( struct net_device * ); - static void airo_config(dev_link_t *link); static void airo_release(dev_link_t *link); static int airo_event(event_t event, int priority, diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/drivers/net/wireless/airo.h linux-2.6.14-ck5/drivers/net/wireless/airo.h --- linux-2.6.14-ck4/drivers/net/wireless/airo.h 1970-01-01 10:00:00.000000000 +1000 +++ linux-2.6.14-ck5/drivers/net/wireless/airo.h 2005-11-12 12:23:24.000000000 +1100 @@ -0,0 +1,9 @@ +#ifndef _AIRO_H_ +#define _AIRO_H_ + +struct net_device *init_airo_card(unsigned short irq, int port, int is_pcmcia, + struct device *dmdev); +int reset_airo_card(struct net_device *dev); +void stop_airo_card(struct net_device *dev, int freeres); + +#endif /* _AIRO_H_ */ diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/drivers/net/wireless/prism54/islpci_eth.c linux-2.6.14-ck5/drivers/net/wireless/prism54/islpci_eth.c --- linux-2.6.14-ck4/drivers/net/wireless/prism54/islpci_eth.c 2004-12-25 10:14:49.000000000 +1100 +++ linux-2.6.14-ck5/drivers/net/wireless/prism54/islpci_eth.c 2005-11-12 12:23:24.000000000 +1100 @@ -97,12 +97,6 @@ islpci_eth_transmit(struct sk_buff *skb, /* lock the driver code */ spin_lock_irqsave(&priv->slock, flags); - /* determine the amount of fragments needed to store the frame */ - - frame_size = skb->len < ETH_ZLEN ? ETH_ZLEN : skb->len; - if (init_wds) - frame_size += 6; - /* check whether the destination queue has enough fragments for the frame */ curr_frag = le32_to_cpu(cb->driver_curr_frag[ISL38XX_CB_TX_DATA_LQ]); if (unlikely(curr_frag - priv->free_data_tx >= ISL38XX_CB_TX_QSIZE)) { @@ -213,6 +207,7 @@ islpci_eth_transmit(struct sk_buff *skb, /* store the skb address for future freeing */ priv->data_low_tx[index] = skb; /* set the proper fragment start address and size information */ + frame_size = skb->len; fragment->size = cpu_to_le16(frame_size); fragment->flags = cpu_to_le16(0); /* set to 1 if more fragments */ fragment->address = cpu_to_le32(pci_map_address); diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/drivers/usb/core/sysfs.c linux-2.6.14-ck5/drivers/usb/core/sysfs.c --- linux-2.6.14-ck4/drivers/usb/core/sysfs.c 2005-08-29 13:31:25.000000000 +1000 +++ linux-2.6.14-ck5/drivers/usb/core/sysfs.c 2005-11-12 12:23:24.000000000 +1100 @@ -292,30 +292,23 @@ static ssize_t show_modalias(struct devi { struct usb_interface *intf; struct usb_device *udev; - int len; + struct usb_host_interface *alt; intf = to_usb_interface(dev); udev = interface_to_usbdev(intf); + alt = intf->cur_altsetting; - len = sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic", - le16_to_cpu(udev->descriptor.idVendor), - le16_to_cpu(udev->descriptor.idProduct), - le16_to_cpu(udev->descriptor.bcdDevice), - udev->descriptor.bDeviceClass, - udev->descriptor.bDeviceSubClass, - udev->descriptor.bDeviceProtocol); - buf += len; - - if (udev->descriptor.bDeviceClass == 0) { - struct usb_host_interface *alt = intf->cur_altsetting; - - return len + sprintf(buf, "%02Xisc%02Xip%02X\n", - alt->desc.bInterfaceClass, - alt->desc.bInterfaceSubClass, - alt->desc.bInterfaceProtocol); - } else { - return len + sprintf(buf, "*isc*ip*\n"); - } + return sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02X" + "ic%02Xisc%02Xip%02X\n", + le16_to_cpu(udev->descriptor.idVendor), + le16_to_cpu(udev->descriptor.idProduct), + le16_to_cpu(udev->descriptor.bcdDevice), + udev->descriptor.bDeviceClass, + udev->descriptor.bDeviceSubClass, + udev->descriptor.bDeviceProtocol, + alt->desc.bInterfaceClass, + alt->desc.bInterfaceSubClass, + alt->desc.bInterfaceProtocol); } static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL); diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/drivers/usb/core/usb.c linux-2.6.14-ck5/drivers/usb/core/usb.c --- linux-2.6.14-ck4/drivers/usb/core/usb.c 2005-10-28 20:21:55.000000000 +1000 +++ linux-2.6.14-ck5/drivers/usb/core/usb.c 2005-11-12 12:23:24.000000000 +1100 @@ -557,6 +557,7 @@ static int usb_hotplug (struct device *d { struct usb_interface *intf; struct usb_device *usb_dev; + struct usb_host_interface *alt; int i = 0; int length = 0; @@ -573,7 +574,8 @@ static int usb_hotplug (struct device *d intf = to_usb_interface(dev); usb_dev = interface_to_usbdev (intf); - + alt = intf->cur_altsetting; + if (usb_dev->devnum < 0) { pr_debug ("usb %s: already deleted?\n", dev->bus_id); return -ENODEV; @@ -615,46 +617,27 @@ static int usb_hotplug (struct device *d usb_dev->descriptor.bDeviceProtocol)) return -ENOMEM; - if (usb_dev->descriptor.bDeviceClass == 0) { - struct usb_host_interface *alt = intf->cur_altsetting; + if (add_hotplug_env_var(envp, num_envp, &i, + buffer, buffer_size, &length, + "INTERFACE=%d/%d/%d", + alt->desc.bInterfaceClass, + alt->desc.bInterfaceSubClass, + alt->desc.bInterfaceProtocol)) + return -ENOMEM; - /* 2.4 only exposed interface zero. in 2.5, hotplug - * agents are called for all interfaces, and can use - * $DEVPATH/bInterfaceNumber if necessary. - */ - if (add_hotplug_env_var(envp, num_envp, &i, - buffer, buffer_size, &length, - "INTERFACE=%d/%d/%d", - alt->desc.bInterfaceClass, - alt->desc.bInterfaceSubClass, - alt->desc.bInterfaceProtocol)) - return -ENOMEM; - - if (add_hotplug_env_var(envp, num_envp, &i, - buffer, buffer_size, &length, - "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X", - le16_to_cpu(usb_dev->descriptor.idVendor), - le16_to_cpu(usb_dev->descriptor.idProduct), - le16_to_cpu(usb_dev->descriptor.bcdDevice), - usb_dev->descriptor.bDeviceClass, - usb_dev->descriptor.bDeviceSubClass, - usb_dev->descriptor.bDeviceProtocol, - alt->desc.bInterfaceClass, - alt->desc.bInterfaceSubClass, - alt->desc.bInterfaceProtocol)) - return -ENOMEM; - } else { - if (add_hotplug_env_var(envp, num_envp, &i, - buffer, buffer_size, &length, - "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic*isc*ip*", - le16_to_cpu(usb_dev->descriptor.idVendor), - le16_to_cpu(usb_dev->descriptor.idProduct), - le16_to_cpu(usb_dev->descriptor.bcdDevice), - usb_dev->descriptor.bDeviceClass, - usb_dev->descriptor.bDeviceSubClass, - usb_dev->descriptor.bDeviceProtocol)) - return -ENOMEM; - } + if (add_hotplug_env_var(envp, num_envp, &i, + buffer, buffer_size, &length, + "MODALIAS=usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X", + le16_to_cpu(usb_dev->descriptor.idVendor), + le16_to_cpu(usb_dev->descriptor.idProduct), + le16_to_cpu(usb_dev->descriptor.bcdDevice), + usb_dev->descriptor.bDeviceClass, + usb_dev->descriptor.bDeviceSubClass, + usb_dev->descriptor.bDeviceProtocol, + alt->desc.bInterfaceClass, + alt->desc.bInterfaceSubClass, + alt->desc.bInterfaceProtocol)) + return -ENOMEM; envp[i] = NULL; diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/fs/exec.c linux-2.6.14-ck5/fs/exec.c --- linux-2.6.14-ck4/fs/exec.c 2005-10-28 20:22:00.000000000 +1000 +++ linux-2.6.14-ck5/fs/exec.c 2005-11-12 12:23:24.000000000 +1100 @@ -593,6 +593,7 @@ static inline int de_thread(struct task_ struct signal_struct *sig = tsk->signal; struct sighand_struct *newsighand, *oldsighand = tsk->sighand; spinlock_t *lock = &oldsighand->siglock; + struct task_struct *leader = NULL; int count; /* @@ -668,7 +669,7 @@ static inline int de_thread(struct task_ * and to assume its PID: */ if (!thread_group_leader(current)) { - struct task_struct *leader = current->group_leader, *parent; + struct task_struct *parent; struct dentry *proc_dentry1, *proc_dentry2; unsigned long exit_state, ptrace; @@ -677,6 +678,7 @@ static inline int de_thread(struct task_ * It should already be zombie at this point, most * of the time. */ + leader = current->group_leader; while (leader->exit_state != EXIT_ZOMBIE) yield(); @@ -736,7 +738,6 @@ static inline int de_thread(struct task_ proc_pid_flush(proc_dentry2); BUG_ON(exit_state != EXIT_ZOMBIE); - release_task(leader); } /* @@ -746,8 +747,11 @@ static inline int de_thread(struct task_ sig->flags = 0; no_thread_group: - BUG_ON(atomic_read(&sig->count) != 1); exit_itimers(sig); + if (leader) + release_task(leader); + + BUG_ON(atomic_read(&sig->count) != 1); if (atomic_read(&oldsighand->count) == 1) { /* diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/fs/xfs/Kconfig linux-2.6.14-ck5/fs/xfs/Kconfig --- linux-2.6.14-ck4/fs/xfs/Kconfig 2005-10-28 20:22:00.000000000 +1000 +++ linux-2.6.14-ck5/fs/xfs/Kconfig 2005-11-12 12:23:24.000000000 +1100 @@ -24,7 +24,7 @@ config XFS_EXPORT default y config XFS_QUOTA - tristate "XFS Quota support" + bool "XFS Quota support" depends on XFS_FS help If you say Y here, you will be able to set limits for disk usage on diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/include/asm-alpha/barrier.h linux-2.6.14-ck5/include/asm-alpha/barrier.h --- linux-2.6.14-ck4/include/asm-alpha/barrier.h 2005-10-28 20:22:01.000000000 +1000 +++ linux-2.6.14-ck5/include/asm-alpha/barrier.h 2005-11-12 12:23:24.000000000 +1100 @@ -1,6 +1,8 @@ #ifndef __BARRIER_H #define __BARRIER_H +#include + #define mb() \ __asm__ __volatile__("mb": : :"memory") diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/kernel/ptrace.c linux-2.6.14-ck5/kernel/ptrace.c --- linux-2.6.14-ck4/kernel/ptrace.c 2005-10-28 20:22:02.000000000 +1000 +++ linux-2.6.14-ck5/kernel/ptrace.c 2005-11-12 12:23:24.000000000 +1100 @@ -152,7 +152,7 @@ int ptrace_attach(struct task_struct *ta retval = -EPERM; if (task->pid <= 1) goto bad; - if (task == current) + if (task->tgid == current->tgid) goto bad; /* the same process cannot be attached many times */ if (task->ptrace & PT_PTRACED) diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/kernel/signal.c linux-2.6.14-ck5/kernel/signal.c --- linux-2.6.14-ck4/kernel/signal.c 2005-10-28 20:22:02.000000000 +1000 +++ linux-2.6.14-ck5/kernel/signal.c 2005-11-12 12:23:24.000000000 +1100 @@ -406,6 +406,8 @@ void __exit_signal(struct task_struct *t void exit_signal(struct task_struct *tsk) { + atomic_dec(&tsk->signal->live); + write_lock_irq(&tasklist_lock); __exit_signal(tsk); write_unlock_irq(&tasklist_lock); diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/Makefile linux-2.6.14-ck5/Makefile --- linux-2.6.14-ck4/Makefile 2005-11-25 10:33:49.000000000 +1100 +++ linux-2.6.14-ck5/Makefile 2005-11-12 12:23:24.000000000 +1100 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 14 -EXTRAVERSION = -ck4 +EXTRAVERSION = -ck5 NAME=Cognac Affected Albatross # *DOCUMENTATION* diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/net/ipv4/ipvs/ip_vs_core.c linux-2.6.14-ck5/net/ipv4/ipvs/ip_vs_core.c --- linux-2.6.14-ck4/net/ipv4/ipvs/ip_vs_core.c 2005-10-28 20:22:03.000000000 +1000 +++ linux-2.6.14-ck5/net/ipv4/ipvs/ip_vs_core.c 2005-11-12 12:23:24.000000000 +1100 @@ -1009,11 +1009,10 @@ ip_vs_in(unsigned int hooknum, struct sk if (sysctl_ip_vs_expire_nodest_conn) { /* try to expire the connection immediately */ ip_vs_conn_expire_now(cp); - } else { - /* don't restart its timer, and silently - drop the packet. */ - __ip_vs_conn_put(cp); } + /* don't restart its timer, and silently + drop the packet. */ + __ip_vs_conn_put(cp); return NF_DROP; } diff -Naurp --exclude-from=/home/con/kernel/dontdiff linux-2.6.14-ck4/net/ipv4/tcp_bic.c linux-2.6.14-ck5/net/ipv4/tcp_bic.c --- linux-2.6.14-ck4/net/ipv4/tcp_bic.c 2005-10-28 20:22:03.000000000 +1000 +++ linux-2.6.14-ck5/net/ipv4/tcp_bic.c 2005-11-12 12:23:25.000000000 +1100 @@ -27,7 +27,7 @@ */ static int fast_convergence = 1; -static int max_increment = 32; +static int max_increment = 16; static int low_window = 14; static int beta = 819; /* = 819/1024 (BICTCP_BETA_SCALE) */ static int low_utilization_threshold = 153;