mm: remove rest of ACCESS_ONCE() usages
We converted some of the usages of ACCESS_ONCE to READ_ONCE in the mm/ tree since it doesn't work reliably on non-scalar types. This patch removes the rest of the usages of ACCESS_ONCE, and use the new READ_ONCE API for the read accesses. This makes things cleaner, instead of using separate/multiple sets of APIs. Signed-off-by: Jason Low <jason.low2@hp.com> Acked-by: Michal Hocko <mhocko@suse.cz> Acked-by: Davidlohr Bueso <dave@stgolabs.net> Acked-by: Rik van Riel <riel@redhat.com> Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
9d8c47e4bb
commit
4db0c3c298
@@ -674,7 +674,7 @@ static void mem_cgroup_remove_exceeded(struct mem_cgroup_per_zone *mz,
|
||||
static unsigned long soft_limit_excess(struct mem_cgroup *memcg)
|
||||
{
|
||||
unsigned long nr_pages = page_counter_read(&memcg->memory);
|
||||
unsigned long soft_limit = ACCESS_ONCE(memcg->soft_limit);
|
||||
unsigned long soft_limit = READ_ONCE(memcg->soft_limit);
|
||||
unsigned long excess = 0;
|
||||
|
||||
if (nr_pages > soft_limit)
|
||||
@@ -1042,7 +1042,7 @@ struct mem_cgroup *mem_cgroup_iter(struct mem_cgroup *root,
|
||||
goto out_unlock;
|
||||
|
||||
do {
|
||||
pos = ACCESS_ONCE(iter->position);
|
||||
pos = READ_ONCE(iter->position);
|
||||
/*
|
||||
* A racing update may change the position and
|
||||
* put the last reference, hence css_tryget(),
|
||||
@@ -1359,13 +1359,13 @@ static unsigned long mem_cgroup_margin(struct mem_cgroup *memcg)
|
||||
unsigned long limit;
|
||||
|
||||
count = page_counter_read(&memcg->memory);
|
||||
limit = ACCESS_ONCE(memcg->memory.limit);
|
||||
limit = READ_ONCE(memcg->memory.limit);
|
||||
if (count < limit)
|
||||
margin = limit - count;
|
||||
|
||||
if (do_swap_account) {
|
||||
count = page_counter_read(&memcg->memsw);
|
||||
limit = ACCESS_ONCE(memcg->memsw.limit);
|
||||
limit = READ_ONCE(memcg->memsw.limit);
|
||||
if (count <= limit)
|
||||
margin = min(margin, limit - count);
|
||||
}
|
||||
@@ -2637,7 +2637,7 @@ struct kmem_cache *__memcg_kmem_get_cache(struct kmem_cache *cachep)
|
||||
return cachep;
|
||||
|
||||
memcg = get_mem_cgroup_from_mm(current->mm);
|
||||
kmemcg_id = ACCESS_ONCE(memcg->kmemcg_id);
|
||||
kmemcg_id = READ_ONCE(memcg->kmemcg_id);
|
||||
if (kmemcg_id < 0)
|
||||
goto out;
|
||||
|
||||
@@ -5007,7 +5007,7 @@ static int mem_cgroup_can_attach(struct cgroup_subsys_state *css,
|
||||
* tunable will only affect upcoming migrations, not the current one.
|
||||
* So we need to save it, and keep it going.
|
||||
*/
|
||||
move_flags = ACCESS_ONCE(memcg->move_charge_at_immigrate);
|
||||
move_flags = READ_ONCE(memcg->move_charge_at_immigrate);
|
||||
if (move_flags) {
|
||||
struct mm_struct *mm;
|
||||
struct mem_cgroup *from = mem_cgroup_from_task(p);
|
||||
@@ -5241,7 +5241,7 @@ static u64 memory_current_read(struct cgroup_subsys_state *css,
|
||||
static int memory_low_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
|
||||
unsigned long low = ACCESS_ONCE(memcg->low);
|
||||
unsigned long low = READ_ONCE(memcg->low);
|
||||
|
||||
if (low == PAGE_COUNTER_MAX)
|
||||
seq_puts(m, "max\n");
|
||||
@@ -5271,7 +5271,7 @@ static ssize_t memory_low_write(struct kernfs_open_file *of,
|
||||
static int memory_high_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
|
||||
unsigned long high = ACCESS_ONCE(memcg->high);
|
||||
unsigned long high = READ_ONCE(memcg->high);
|
||||
|
||||
if (high == PAGE_COUNTER_MAX)
|
||||
seq_puts(m, "max\n");
|
||||
@@ -5301,7 +5301,7 @@ static ssize_t memory_high_write(struct kernfs_open_file *of,
|
||||
static int memory_max_show(struct seq_file *m, void *v)
|
||||
{
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_css(seq_css(m));
|
||||
unsigned long max = ACCESS_ONCE(memcg->memory.limit);
|
||||
unsigned long max = READ_ONCE(memcg->memory.limit);
|
||||
|
||||
if (max == PAGE_COUNTER_MAX)
|
||||
seq_puts(m, "max\n");
|
||||
|
Reference in New Issue
Block a user