Merged 2.6.12.2.
svn path=/branches/linux-kernel-2.6.12/; revision=3415
This commit is contained in:
parent
8b03e1d580
commit
bd2f34de16
|
@ -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
|
||||
|
||||
|
|
|
@ -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 <f.schueler@gmx.net> Wed, 18 May 2005 12:44:53 +0200
|
||||
-- Frederik Schüler <fschueler@gmx.net> Thu, 30 Jun 2005 14:02:19 +0200
|
||||
|
|
|
@ -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)
|
|
@ -22,3 +22,4 @@
|
|||
+ ia64-generic-nosmp.patch
|
||||
+ patch-2.6.12.1
|
||||
+ powerpc-ppc64-biarch-override.patch
|
||||
+ patch-2.6.12.2
|
||||
|
|
Loading…
Reference in New Issue