diff --git a/[refs] b/[refs] index f1e78e4eb16e..5a68ee521961 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 83f7a2c118833d3738b4d162ea3c17d0bd8ffa94 +refs/heads/master: e48af19f56eb47a1f908ee8f16df9d246f955b21 diff --git a/trunk/arch/alpha/kernel/pci_iommu.c b/trunk/arch/alpha/kernel/pci_iommu.c index e07a23fc5b74..be6fa105cd34 100644 --- a/trunk/arch/alpha/kernel/pci_iommu.c +++ b/trunk/arch/alpha/kernel/pci_iommu.c @@ -144,14 +144,15 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena, unsigned long base; unsigned long boundary_size; + BUG_ON(arena->dma_base & ~PAGE_MASK); base = arena->dma_base >> PAGE_SHIFT; - if (dev) { - boundary_size = dma_get_seg_boundary(dev) + 1; - BUG_ON(!is_power_of_2(boundary_size)); - boundary_size >>= PAGE_SHIFT; - } else { - boundary_size = 1UL << (32 - PAGE_SHIFT); - } + if (dev) + boundary_size = ALIGN(dma_get_max_seg_size(dev) + 1, PAGE_SIZE) + >> PAGE_SHIFT; + else + boundary_size = ALIGN(1UL << 32, PAGE_SIZE) >> PAGE_SHIFT; + + BUG_ON(!is_power_of_2(boundary_size)); /* Search forward for the first mask-aligned sequence of N free ptes */ ptes = arena->ptes; diff --git a/trunk/crypto/chainiv.c b/trunk/crypto/chainiv.c index 6da3f577e4db..0a7cac6e9089 100644 --- a/trunk/crypto/chainiv.c +++ b/trunk/crypto/chainiv.c @@ -318,8 +318,10 @@ int __init chainiv_module_init(void) { return crypto_register_template(&chainiv_tmpl); } +EXPORT_SYMBOL_GPL(chainiv_module_init); -void chainiv_module_exit(void) +void __exit chainiv_module_exit(void) { crypto_unregister_template(&chainiv_tmpl); } +EXPORT_SYMBOL_GPL(chainiv_module_exit); diff --git a/trunk/crypto/eseqiv.c b/trunk/crypto/eseqiv.c index b14f14e314b6..6f2cd063b6fe 100644 --- a/trunk/crypto/eseqiv.c +++ b/trunk/crypto/eseqiv.c @@ -251,8 +251,10 @@ int __init eseqiv_module_init(void) { return crypto_register_template(&eseqiv_tmpl); } +EXPORT_SYMBOL_GPL(eseqiv_module_init); void __exit eseqiv_module_exit(void) { crypto_unregister_template(&eseqiv_tmpl); } +EXPORT_SYMBOL_GPL(eseqiv_module_exit); diff --git a/trunk/include/crypto/internal/skcipher.h b/trunk/include/crypto/internal/skcipher.h index ccc32bad9a89..a8f12644a13c 100644 --- a/trunk/include/crypto/internal/skcipher.h +++ b/trunk/include/crypto/internal/skcipher.h @@ -68,7 +68,7 @@ void skcipher_geniv_exit(struct crypto_tfm *tfm); int __init eseqiv_module_init(void); void __exit eseqiv_module_exit(void); int __init chainiv_module_init(void); -void chainiv_module_exit(void); +void __exit chainiv_module_exit(void); static inline struct crypto_ablkcipher *skcipher_geniv_cipher( struct crypto_ablkcipher *geniv) diff --git a/trunk/kernel/exit.c b/trunk/kernel/exit.c index 53872bf993fa..cd20bf07e9e3 100644 --- a/trunk/kernel/exit.c +++ b/trunk/kernel/exit.c @@ -1378,7 +1378,7 @@ static int wait_task_stopped(struct task_struct *p, if (!retval && infop) retval = put_user(0, &infop->si_errno); if (!retval && infop) - retval = put_user((short)why, &infop->si_code); + retval = put_user(why, &infop->si_code); if (!retval && infop) retval = put_user(exit_code, &infop->si_status); if (!retval && infop) diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index b02e4fc25645..52b98675acb2 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -5813,13 +5813,6 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) /* Must be high prio: stop_machine expects to yield to it. */ rq = task_rq_lock(p, &flags); __setscheduler(rq, p, SCHED_FIFO, MAX_RT_PRIO-1); - - /* Update our root-domain */ - if (rq->rd) { - BUG_ON(!cpu_isset(cpu, rq->rd->span)); - cpu_set(cpu, rq->rd->online); - } - task_rq_unlock(rq, &flags); cpu_rq(cpu)->migration_thread = p; break; @@ -5828,6 +5821,15 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu) case CPU_ONLINE_FROZEN: /* Strictly unnecessary, as first user will wake it. */ wake_up_process(cpu_rq(cpu)->migration_thread); + + /* Update our root-domain */ + rq = cpu_rq(cpu); + spin_lock_irqsave(&rq->lock, flags); + if (rq->rd) { + BUG_ON(!cpu_isset(cpu, rq->rd->span)); + cpu_set(cpu, rq->rd->online); + } + spin_unlock_irqrestore(&rq->lock, flags); break; #ifdef CONFIG_HOTPLUG_CPU @@ -6103,6 +6105,8 @@ static void rq_attach_root(struct rq *rq, struct root_domain *rd) rq->rd = rd; cpu_set(rq->cpu, rd->span); + if (cpu_isset(rq->cpu, cpu_online_map)) + cpu_set(rq->cpu, rd->online); for (class = sched_class_highest; class; class = class->next) { if (class->join_domain) diff --git a/trunk/kernel/time/ntp.c b/trunk/kernel/time/ntp.c index c88b5910e7ab..d4bca927f715 100644 --- a/trunk/kernel/time/ntp.c +++ b/trunk/kernel/time/ntp.c @@ -342,14 +342,16 @@ int do_adjtimex(struct timex *txc) freq_adj = shift_right(freq_adj, time_constant * 2 + (SHIFT_PLL + 2) * 2 - SHIFT_NSEC); if (mtemp >= MINSEC && (time_status & STA_FLL || mtemp > MAXSEC)) { + u64 utemp64; temp64 = time_offset << (SHIFT_NSEC - SHIFT_FLL); if (time_offset < 0) { - temp64 = -temp64; - do_div(temp64, mtemp); - freq_adj -= temp64; + utemp64 = -temp64; + do_div(utemp64, mtemp); + freq_adj -= utemp64; } else { - do_div(temp64, mtemp); - freq_adj += temp64; + utemp64 = temp64; + do_div(utemp64, mtemp); + freq_adj += utemp64; } } freq_adj += time_freq;