diff options
| -rw-r--r-- | arch/sparc/kernel/central.c | 2 | ||||
| -rw-r--r-- | arch/sparc/mm/ultra.S | 6 | ||||
| -rw-r--r-- | fs/cifs/cifsfs.c | 2 | ||||
| -rw-r--r-- | mm/percpu.c | 12 |
4 files changed, 17 insertions, 5 deletions
diff --git a/arch/sparc/kernel/central.c b/arch/sparc/kernel/central.c index 38d48a59879c..9708851a8b9f 100644 --- a/arch/sparc/kernel/central.c +++ b/arch/sparc/kernel/central.c | |||
| @@ -269,4 +269,4 @@ static int __init sunfire_init(void) | |||
| 269 | return 0; | 269 | return 0; |
| 270 | } | 270 | } |
| 271 | 271 | ||
| 272 | subsys_initcall(sunfire_init); | 272 | fs_initcall(sunfire_init); |
diff --git a/arch/sparc/mm/ultra.S b/arch/sparc/mm/ultra.S index b57a5942ba64..874162a11ceb 100644 --- a/arch/sparc/mm/ultra.S +++ b/arch/sparc/mm/ultra.S | |||
| @@ -495,11 +495,11 @@ xcall_fetch_glob_regs: | |||
| 495 | stx %o7, [%g1 + GR_SNAP_O7] | 495 | stx %o7, [%g1 + GR_SNAP_O7] |
| 496 | stx %i7, [%g1 + GR_SNAP_I7] | 496 | stx %i7, [%g1 + GR_SNAP_I7] |
| 497 | /* Don't try this at home kids... */ | 497 | /* Don't try this at home kids... */ |
| 498 | rdpr %cwp, %g2 | 498 | rdpr %cwp, %g3 |
| 499 | sub %g2, 1, %g7 | 499 | sub %g3, 1, %g7 |
| 500 | wrpr %g7, %cwp | 500 | wrpr %g7, %cwp |
| 501 | mov %i7, %g7 | 501 | mov %i7, %g7 |
| 502 | wrpr %g2, %cwp | 502 | wrpr %g3, %cwp |
| 503 | stx %g7, [%g1 + GR_SNAP_RPC] | 503 | stx %g7, [%g1 + GR_SNAP_RPC] |
| 504 | sethi %hi(trap_block), %g7 | 504 | sethi %hi(trap_block), %g7 |
| 505 | or %g7, %lo(trap_block), %g7 | 505 | or %g7, %lo(trap_block), %g7 |
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index ca6a3796a33b..541ef81f6ae8 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
| @@ -699,7 +699,7 @@ static loff_t cifs_llseek(struct file *file, loff_t offset, int origin) | |||
| 699 | * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate | 699 | * origin == SEEK_END || SEEK_DATA || SEEK_HOLE => we must revalidate |
| 700 | * the cached file length | 700 | * the cached file length |
| 701 | */ | 701 | */ |
| 702 | if (origin != SEEK_SET || origin != SEEK_CUR) { | 702 | if (origin != SEEK_SET && origin != SEEK_CUR) { |
| 703 | int rc; | 703 | int rc; |
| 704 | struct inode *inode = file->f_path.dentry->d_inode; | 704 | struct inode *inode = file->f_path.dentry->d_inode; |
| 705 | 705 | ||
diff --git a/mm/percpu.c b/mm/percpu.c index f921fdfb5430..bb4be7435ce3 100644 --- a/mm/percpu.c +++ b/mm/percpu.c | |||
| @@ -1650,6 +1650,16 @@ int __init pcpu_embed_first_chunk(size_t reserved_size, size_t dyn_size, | |||
| 1650 | areas[group] = ptr; | 1650 | areas[group] = ptr; |
| 1651 | 1651 | ||
| 1652 | base = min(ptr, base); | 1652 | base = min(ptr, base); |
| 1653 | } | ||
| 1654 | |||
| 1655 | /* | ||
| 1656 | * Copy data and free unused parts. This should happen after all | ||
| 1657 | * allocations are complete; otherwise, we may end up with | ||
| 1658 | * overlapping groups. | ||
| 1659 | */ | ||
| 1660 | for (group = 0; group < ai->nr_groups; group++) { | ||
| 1661 | struct pcpu_group_info *gi = &ai->groups[group]; | ||
| 1662 | void *ptr = areas[group]; | ||
| 1653 | 1663 | ||
| 1654 | for (i = 0; i < gi->nr_units; i++, ptr += ai->unit_size) { | 1664 | for (i = 0; i < gi->nr_units; i++, ptr += ai->unit_size) { |
| 1655 | if (gi->cpu_map[i] == NR_CPUS) { | 1665 | if (gi->cpu_map[i] == NR_CPUS) { |
| @@ -1885,6 +1895,8 @@ void __init setup_per_cpu_areas(void) | |||
| 1885 | fc = __alloc_bootmem(unit_size, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)); | 1895 | fc = __alloc_bootmem(unit_size, PAGE_SIZE, __pa(MAX_DMA_ADDRESS)); |
| 1886 | if (!ai || !fc) | 1896 | if (!ai || !fc) |
| 1887 | panic("Failed to allocate memory for percpu areas."); | 1897 | panic("Failed to allocate memory for percpu areas."); |
| 1898 | /* kmemleak tracks the percpu allocations separately */ | ||
| 1899 | kmemleak_free(fc); | ||
| 1888 | 1900 | ||
| 1889 | ai->dyn_size = unit_size; | 1901 | ai->dyn_size = unit_size; |
| 1890 | ai->unit_size = unit_size; | 1902 | ai->unit_size = unit_size; |
