Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'hughd-fixes' (patches from Hugh Dickins)

Merge VM fixes from High Dickins:
"I get the impression that Andrew is away or busy at the moment, so I'm
going to send you three independent uncontroversial little mm fixes
directly - though none is strictly a 4.8 regression fix.

- shmem: fix tmpfs to handle the huge= option properly from Toshi
Kani is a one-liner to fix a major embarrassment in 4.8's hugepages
on tmpfs feature: although Hillf pointed it out in June, somehow
both Kirill and I repeatedly dropped the ball on this one. You
might wonder if the feature got tested at all with that bug in:
yes, it did, but for wider testing coverage, Kirill and I had each
relied too much on an override which bypasses that condition.

- huge tmpfs: fix Committed_AS leak just a run-of-the-mill accounting
fix in the same feature.

- mm: delete unnecessary and unsafe init_tlb_ubc() is an unrelated
fix to 4.3's TLB flush batching in reclaim: the bug would be rare,
and none of us will be shamed if this one misses 4.8; but it got
such a quick ack from Mel today that I'm inclined to offer it along
with the first two"

* emailed patches from Hugh Dickins <hughd@google.com>:
mm: delete unnecessary and unsafe init_tlb_ubc()
huge tmpfs: fix Committed_AS leak
shmem: fix tmpfs to handle the huge= option properly

+3 -21
+3 -2
mm/shmem.c
··· 270 270 info->alloced -= pages; 271 271 shmem_recalc_inode(inode); 272 272 spin_unlock_irqrestore(&info->lock, flags); 273 - 273 + shmem_unacct_blocks(info->flags, pages); 274 274 return false; 275 275 } 276 276 percpu_counter_add(&sbinfo->used_blocks, pages); ··· 291 291 292 292 if (sbinfo->max_blocks) 293 293 percpu_counter_sub(&sbinfo->used_blocks, pages); 294 + shmem_unacct_blocks(info->flags, pages); 294 295 } 295 296 296 297 /* ··· 1981 1980 return addr; 1982 1981 sb = shm_mnt->mnt_sb; 1983 1982 } 1984 - if (SHMEM_SB(sb)->huge != SHMEM_HUGE_NEVER) 1983 + if (SHMEM_SB(sb)->huge == SHMEM_HUGE_NEVER) 1985 1984 return addr; 1986 1985 } 1987 1986
-19
mm/vmscan.c
··· 2303 2303 } 2304 2304 } 2305 2305 2306 - #ifdef CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 2307 - static void init_tlb_ubc(void) 2308 - { 2309 - /* 2310 - * This deliberately does not clear the cpumask as it's expensive 2311 - * and unnecessary. If there happens to be data in there then the 2312 - * first SWAP_CLUSTER_MAX pages will send an unnecessary IPI and 2313 - * then will be cleared. 2314 - */ 2315 - current->tlb_ubc.flush_required = false; 2316 - } 2317 - #else 2318 - static inline void init_tlb_ubc(void) 2319 - { 2320 - } 2321 - #endif /* CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH */ 2322 - 2323 2306 /* 2324 2307 * This is a basic per-node page freer. Used by both kswapd and direct reclaim. 2325 2308 */ ··· 2337 2354 */ 2338 2355 scan_adjusted = (global_reclaim(sc) && !current_is_kswapd() && 2339 2356 sc->priority == DEF_PRIORITY); 2340 - 2341 - init_tlb_ubc(); 2342 2357 2343 2358 blk_start_plug(&plug); 2344 2359 while (nr[LRU_INACTIVE_ANON] || nr[LRU_ACTIVE_FILE] ||