Commit 80e23b7c authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-fixes-for-linus' of...

Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-tip:
  x86, irq: Check move_in_progress before freeing the vector mapping
  x86: copy_from_user() should not return -EFAULT
  Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu for pre-Pentium"
  x86/pci: Intel ioh bus num reg accessing fix
  x86: Fix size for ex trampoline with 32bit
parents 00cd25b2 7f41c2e1
...@@ -205,14 +205,13 @@ static inline unsigned long __must_check copy_from_user(void *to, ...@@ -205,14 +205,13 @@ static inline unsigned long __must_check copy_from_user(void *to,
unsigned long n) unsigned long n)
{ {
int sz = __compiletime_object_size(to); int sz = __compiletime_object_size(to);
int ret = -EFAULT;
if (likely(sz == -1 || sz >= n)) if (likely(sz == -1 || sz >= n))
ret = _copy_from_user(to, from, n); n = _copy_from_user(to, from, n);
else else
copy_from_user_overflow(); copy_from_user_overflow();
return ret; return n;
} }
long __must_check strncpy_from_user(char *dst, const char __user *src, long __must_check strncpy_from_user(char *dst, const char __user *src,
......
...@@ -30,16 +30,15 @@ static inline unsigned long __must_check copy_from_user(void *to, ...@@ -30,16 +30,15 @@ static inline unsigned long __must_check copy_from_user(void *to,
unsigned long n) unsigned long n)
{ {
int sz = __compiletime_object_size(to); int sz = __compiletime_object_size(to);
int ret = -EFAULT;
might_fault(); might_fault();
if (likely(sz == -1 || sz >= n)) if (likely(sz == -1 || sz >= n))
ret = _copy_from_user(to, from, n); n = _copy_from_user(to, from, n);
#ifdef CONFIG_DEBUG_VM #ifdef CONFIG_DEBUG_VM
else else
WARN(1, "Buffer overflow detected!\n"); WARN(1, "Buffer overflow detected!\n");
#endif #endif
return ret; return n;
} }
static __always_inline __must_check static __always_inline __must_check
......
...@@ -2434,6 +2434,13 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void) ...@@ -2434,6 +2434,13 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void)
cfg = irq_cfg(irq); cfg = irq_cfg(irq);
raw_spin_lock(&desc->lock); raw_spin_lock(&desc->lock);
/*
* Check if the irq migration is in progress. If so, we
* haven't received the cleanup request yet for this irq.
*/
if (cfg->move_in_progress)
goto unlock;
if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain)) if (vector == cfg->vector && cpumask_test_cpu(me, cfg->domain))
goto unlock; goto unlock;
......
...@@ -733,13 +733,13 @@ struct early_res { ...@@ -733,13 +733,13 @@ struct early_res {
}; };
static struct early_res early_res[MAX_EARLY_RES] __initdata = { static struct early_res early_res[MAX_EARLY_RES] __initdata = {
{ 0, PAGE_SIZE, "BIOS data page", 1 }, /* BIOS data page */ { 0, PAGE_SIZE, "BIOS data page", 1 }, /* BIOS data page */
#ifdef CONFIG_X86_32 #if defined(CONFIG_X86_32) && defined(CONFIG_X86_TRAMPOLINE)
/* /*
* But first pinch a few for the stack/trampoline stuff * But first pinch a few for the stack/trampoline stuff
* FIXME: Don't need the extra page at 4K, but need to fix * FIXME: Don't need the extra page at 4K, but need to fix
* trampoline before removing it. (see the GDT stuff) * trampoline before removing it. (see the GDT stuff)
*/ */
{ PAGE_SIZE, PAGE_SIZE, "EX TRAMPOLINE", 1 }, { PAGE_SIZE, PAGE_SIZE + PAGE_SIZE, "EX TRAMPOLINE", 1 },
#endif #endif
{} {}
......
...@@ -49,6 +49,10 @@ static void __devinit pci_root_bus_res(struct pci_dev *dev) ...@@ -49,6 +49,10 @@ static void __devinit pci_root_bus_res(struct pci_dev *dev)
u64 mmioh_base, mmioh_end; u64 mmioh_base, mmioh_end;
int bus_base, bus_end; int bus_base, bus_end;
/* some sys doesn't get mmconf enabled */
if (dev->cfg_size < 0x120)
return;
if (pci_root_num >= PCI_ROOT_NR) { if (pci_root_num >= PCI_ROOT_NR) {
printk(KERN_DEBUG "intel_bus.c: PCI_ROOT_NR is too small\n"); printk(KERN_DEBUG "intel_bus.c: PCI_ROOT_NR is too small\n");
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment