summaryrefslogtreecommitdiffstats
path: root/sound/soc/Kconfig
diff options
context:
space:
mode:
authorYang Shi <shy828301@gmail.com>2021-05-05 03:36:14 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2021-05-05 20:27:23 +0200
commitd27cf2aa0d26a221982d04757cc32db97833ec29 (patch)
tree78db67ebfe16c90a3133a427cca92d289f5b4555 /sound/soc/Kconfig
parentmm: vmscan: consolidate shrinker_maps handling code (diff)
downloadlinux-d27cf2aa0d26a221982d04757cc32db97833ec29.tar.xz
linux-d27cf2aa0d26a221982d04757cc32db97833ec29.zip
mm: vmscan: use shrinker_rwsem to protect shrinker_maps allocation
Since memcg_shrinker_map_size just can be changed under holding shrinker_rwsem exclusively, the read side can be protected by holding read lock, so it sounds superfluous to have a dedicated mutex. Kirill Tkhai suggested use write lock since: * We want the assignment to shrinker_maps is visible for shrink_slab_memcg(). * The rcu_dereference_protected() dereferrencing in shrink_slab_memcg(), but in case of we use READ lock in alloc_shrinker_maps(), the dereferrencing is not actually protected. * READ lock makes alloc_shrinker_info() racy against memory allocation fail. alloc_shrinker_info()->free_shrinker_info() may free memory right after shrink_slab_memcg() dereferenced it. You may say shrink_slab_memcg()->mem_cgroup_online() protects us from it? Yes, sure, but this is not the thing we want to remember in the future, since this spreads modularity. And a test with heavy paging workload didn't show write lock makes things worse. Link: https://lkml.kernel.org/r/20210311190845.9708-4-shy828301@gmail.com Signed-off-by: Yang Shi <shy828301@gmail.com> Acked-by: Vlastimil Babka <vbabka@suse.cz> Acked-by: Kirill Tkhai <ktkhai@virtuozzo.com> Acked-by: Roman Gushchin <guro@fb.com> Reviewed-by: Shakeel Butt <shakeelb@google.com> Cc: Dave Chinner <david@fromorbit.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'sound/soc/Kconfig')
0 files changed, 0 insertions, 0 deletions