diff --git a/debian/arch/amd64/Makefile.inc b/debian/arch/amd64/Makefile.inc index a6cb96035..1e35ce404 100644 --- a/debian/arch/amd64/Makefile.inc +++ b/debian/arch/amd64/Makefile.inc @@ -6,4 +6,5 @@ headers_extra := arch/x86_64/kernel/ams-offsets.s initrd_modules := kernel/drivers/video/vesafb.ko kernel/security/capability.ko headers_dirs = x86_64 build_makeflags := 'V=1 CC=gcc-3.4' +default_config := default diff --git a/debian/changelog b/debian/changelog index 7c3da5697..4b47efd6b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -18,5 +18,13 @@ linux-kernel-2.6.12 (2.6.12-1) UNRELEASED; urgency=low * Add 2.6.12.1 (Maximilian Attems) - Clean up subthread exec (CAN-2005-1913) - ia64 ptrace + sigrestore_context (CAN-2005-1761) + * Add 2.6.12.2 (Frederik Schüler) + - Fix two socket hashing bugs. + - ACPI: Make sure we call acpi_register_gsi() even for default PCI + interrupt assignment + - Add "memory" clobbers to the x86 inline asm of strncmp and friends + - e1000: fix spinlock bug + - fix remap_pte_range BUG + - Fix typo in drivers/pci/pci-driver.c - -- Frederik Schüler Wed, 18 May 2005 12:44:53 +0200 + -- Frederik Schüler Thu, 30 Jun 2005 14:02:19 +0200 diff --git a/debian/patches-debian/patch-2.6.12.2 b/debian/patches-debian/patch-2.6.12.2 new file mode 100644 index 000000000..a06993b09 --- /dev/null +++ b/debian/patches-debian/patch-2.6.12.2 @@ -0,0 +1,172 @@ +diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c +--- a/drivers/acpi/pci_irq.c ++++ b/drivers/acpi/pci_irq.c +@@ -435,6 +435,7 @@ acpi_pci_irq_enable ( + /* Interrupt Line values above 0xF are forbidden */ + if (dev->irq >= 0 && (dev->irq <= 0xF)) { + printk(" - using IRQ %d\n", dev->irq); ++ acpi_register_gsi(dev->irq, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW); + return_VALUE(0); + } + else { +diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c +--- a/drivers/net/e1000/e1000_main.c ++++ b/drivers/net/e1000/e1000_main.c +@@ -2307,6 +2307,7 @@ e1000_xmit_frame(struct sk_buff *skb, st + tso = e1000_tso(adapter, skb); + if (tso < 0) { + dev_kfree_skb_any(skb); ++ spin_unlock_irqrestore(&adapter->tx_lock, flags); + return NETDEV_TX_OK; + } + +diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c +--- a/drivers/pci/pci-driver.c ++++ b/drivers/pci/pci-driver.c +@@ -396,7 +396,7 @@ int pci_register_driver(struct pci_drive + /* FIXME, once all of the existing PCI drivers have been fixed to set + * the pci shutdown function, this test can go away. */ + if (!drv->driver.shutdown) +- drv->driver.shutdown = pci_device_shutdown, ++ drv->driver.shutdown = pci_device_shutdown; + drv->driver.owner = drv->owner; + drv->driver.kobj.ktype = &pci_driver_kobj_type; + pci_init_dynids(&drv->dynids); +diff --git a/include/asm-i386/string.h b/include/asm-i386/string.h +--- a/include/asm-i386/string.h ++++ b/include/asm-i386/string.h +@@ -116,7 +116,8 @@ __asm__ __volatile__( + "orb $1,%%al\n" + "3:" + :"=a" (__res), "=&S" (d0), "=&D" (d1) +- :"1" (cs),"2" (ct)); ++ :"1" (cs),"2" (ct) ++ :"memory"); + return __res; + } + +@@ -138,8 +139,9 @@ __asm__ __volatile__( + "3:\tsbbl %%eax,%%eax\n\t" + "orb $1,%%al\n" + "4:" +- :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2) +- :"1" (cs),"2" (ct),"3" (count)); ++ :"=a" (__res), "=&S" (d0), "=&D" (d1), "=&c" (d2) ++ :"1" (cs),"2" (ct),"3" (count) ++ :"memory"); + return __res; + } + +@@ -158,7 +160,9 @@ __asm__ __volatile__( + "movl $1,%1\n" + "2:\tmovl %1,%0\n\t" + "decl %0" +- :"=a" (__res), "=&S" (d0) : "1" (s),"0" (c)); ++ :"=a" (__res), "=&S" (d0) ++ :"1" (s),"0" (c) ++ :"memory"); + return __res; + } + +@@ -175,7 +179,9 @@ __asm__ __volatile__( + "leal -1(%%esi),%0\n" + "2:\ttestb %%al,%%al\n\t" + "jne 1b" +- :"=g" (__res), "=&S" (d0), "=&a" (d1) :"0" (0),"1" (s),"2" (c)); ++ :"=g" (__res), "=&S" (d0), "=&a" (d1) ++ :"0" (0),"1" (s),"2" (c) ++ :"memory"); + return __res; + } + +@@ -189,7 +195,9 @@ __asm__ __volatile__( + "scasb\n\t" + "notl %0\n\t" + "decl %0" +- :"=c" (__res), "=&D" (d0) :"1" (s),"a" (0), "0" (0xffffffffu)); ++ :"=c" (__res), "=&D" (d0) ++ :"1" (s),"a" (0), "0" (0xffffffffu) ++ :"memory"); + return __res; + } + +@@ -333,7 +341,9 @@ __asm__ __volatile__( + "je 1f\n\t" + "movl $1,%0\n" + "1:\tdecl %0" +- :"=D" (__res), "=&c" (d0) : "a" (c),"0" (cs),"1" (count)); ++ :"=D" (__res), "=&c" (d0) ++ :"a" (c),"0" (cs),"1" (count) ++ :"memory"); + return __res; + } + +@@ -369,7 +379,7 @@ __asm__ __volatile__( + "je 2f\n\t" + "stosb\n" + "2:" +- : "=&c" (d0), "=&D" (d1) ++ :"=&c" (d0), "=&D" (d1) + :"a" (c), "q" (count), "0" (count/4), "1" ((long) s) + :"memory"); + return (s); +@@ -392,7 +402,8 @@ __asm__ __volatile__( + "jne 1b\n" + "3:\tsubl %2,%0" + :"=a" (__res), "=&d" (d0) +- :"c" (s),"1" (count)); ++ :"c" (s),"1" (count) ++ :"memory"); + return __res; + } + /* end of additional stuff */ +@@ -473,7 +484,8 @@ static inline void * memscan(void * addr + "dec %%edi\n" + "1:" + : "=D" (addr), "=c" (size) +- : "0" (addr), "1" (size), "a" (c)); ++ : "0" (addr), "1" (size), "a" (c) ++ : "memory"); + return addr; + } + +diff --git a/mm/memory.c b/mm/memory.c +--- a/mm/memory.c ++++ b/mm/memory.c +@@ -1164,7 +1164,7 @@ int remap_pfn_range(struct vm_area_struc + { + pgd_t *pgd; + unsigned long next; +- unsigned long end = addr + size; ++ unsigned long end = addr + PAGE_ALIGN(size); + struct mm_struct *mm = vma->vm_mm; + int err; + +diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c +--- a/net/netlink/af_netlink.c ++++ b/net/netlink/af_netlink.c +@@ -315,8 +315,8 @@ err: + static void netlink_remove(struct sock *sk) + { + netlink_table_grab(); +- nl_table[sk->sk_protocol].hash.entries--; +- sk_del_node_init(sk); ++ if (sk_del_node_init(sk)) ++ nl_table[sk->sk_protocol].hash.entries--; + if (nlk_sk(sk)->groups) + __sk_del_bind_node(sk); + netlink_table_ungrab(); +@@ -429,7 +429,12 @@ retry: + err = netlink_insert(sk, pid); + if (err == -EADDRINUSE) + goto retry; +- return 0; ++ ++ /* If 2 threads race to autobind, that is fine. */ ++ if (err == -EBUSY) ++ err = 0; ++ ++ return err; + } + + static inline int netlink_capable(struct socket *sock, unsigned int flag) diff --git a/debian/patches-debian/series/2.6.12-1 b/debian/patches-debian/series/2.6.12-1 index e5fa25f16..97e3edef9 100644 --- a/debian/patches-debian/series/2.6.12-1 +++ b/debian/patches-debian/series/2.6.12-1 @@ -22,3 +22,4 @@ + ia64-generic-nosmp.patch + patch-2.6.12.1 + powerpc-ppc64-biarch-override.patch ++ patch-2.6.12.2