Commit 12aee278 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'akpm' (fixes from Andrew Morton)

Merge three fixes from Andrew Morton.

* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  memcg: use __this_cpu_sub() to dec stats to avoid incorrect subtrahend casting
  percpu: fix this_cpu_sub() subtrahend casting for unsigneds
  mm/pagewalk.c: fix walk_page_range() access of wrong PTEs
parents c56b097a 5e8cfc3c
...@@ -128,7 +128,8 @@ do { \ ...@@ -128,7 +128,8 @@ do { \
do { \ do { \
typedef typeof(var) pao_T__; \ typedef typeof(var) pao_T__; \
const int pao_ID__ = (__builtin_constant_p(val) && \ const int pao_ID__ = (__builtin_constant_p(val) && \
((val) == 1 || (val) == -1)) ? (val) : 0; \ ((val) == 1 || (val) == -1)) ? \
(int)(val) : 0; \
if (0) { \ if (0) { \
pao_T__ pao_tmp__; \ pao_T__ pao_tmp__; \
pao_tmp__ = (val); \ pao_tmp__ = (val); \
......
...@@ -332,7 +332,7 @@ do { \ ...@@ -332,7 +332,7 @@ do { \
#endif #endif
#ifndef this_cpu_sub #ifndef this_cpu_sub
# define this_cpu_sub(pcp, val) this_cpu_add((pcp), -(val)) # define this_cpu_sub(pcp, val) this_cpu_add((pcp), -(typeof(pcp))(val))
#endif #endif
#ifndef this_cpu_inc #ifndef this_cpu_inc
...@@ -418,7 +418,7 @@ do { \ ...@@ -418,7 +418,7 @@ do { \
# define this_cpu_add_return(pcp, val) __pcpu_size_call_return2(this_cpu_add_return_, pcp, val) # define this_cpu_add_return(pcp, val) __pcpu_size_call_return2(this_cpu_add_return_, pcp, val)
#endif #endif
#define this_cpu_sub_return(pcp, val) this_cpu_add_return(pcp, -(val)) #define this_cpu_sub_return(pcp, val) this_cpu_add_return(pcp, -(typeof(pcp))(val))
#define this_cpu_inc_return(pcp) this_cpu_add_return(pcp, 1) #define this_cpu_inc_return(pcp) this_cpu_add_return(pcp, 1)
#define this_cpu_dec_return(pcp) this_cpu_add_return(pcp, -1) #define this_cpu_dec_return(pcp) this_cpu_add_return(pcp, -1)
...@@ -586,7 +586,7 @@ do { \ ...@@ -586,7 +586,7 @@ do { \
#endif #endif
#ifndef __this_cpu_sub #ifndef __this_cpu_sub
# define __this_cpu_sub(pcp, val) __this_cpu_add((pcp), -(val)) # define __this_cpu_sub(pcp, val) __this_cpu_add((pcp), -(typeof(pcp))(val))
#endif #endif
#ifndef __this_cpu_inc #ifndef __this_cpu_inc
...@@ -668,7 +668,7 @@ do { \ ...@@ -668,7 +668,7 @@ do { \
__pcpu_size_call_return2(__this_cpu_add_return_, pcp, val) __pcpu_size_call_return2(__this_cpu_add_return_, pcp, val)
#endif #endif
#define __this_cpu_sub_return(pcp, val) __this_cpu_add_return(pcp, -(val)) #define __this_cpu_sub_return(pcp, val) __this_cpu_add_return(pcp, -(typeof(pcp))(val))
#define __this_cpu_inc_return(pcp) __this_cpu_add_return(pcp, 1) #define __this_cpu_inc_return(pcp) __this_cpu_add_return(pcp, 1)
#define __this_cpu_dec_return(pcp) __this_cpu_add_return(pcp, -1) #define __this_cpu_dec_return(pcp) __this_cpu_add_return(pcp, -1)
......
...@@ -3774,7 +3774,7 @@ void mem_cgroup_move_account_page_stat(struct mem_cgroup *from, ...@@ -3774,7 +3774,7 @@ void mem_cgroup_move_account_page_stat(struct mem_cgroup *from,
/* Update stat data for mem_cgroup */ /* Update stat data for mem_cgroup */
preempt_disable(); preempt_disable();
WARN_ON_ONCE(from->stat->count[idx] < nr_pages); WARN_ON_ONCE(from->stat->count[idx] < nr_pages);
__this_cpu_add(from->stat->count[idx], -nr_pages); __this_cpu_sub(from->stat->count[idx], nr_pages);
__this_cpu_add(to->stat->count[idx], nr_pages); __this_cpu_add(to->stat->count[idx], nr_pages);
preempt_enable(); preempt_enable();
} }
......
...@@ -242,7 +242,7 @@ int walk_page_range(unsigned long addr, unsigned long end, ...@@ -242,7 +242,7 @@ int walk_page_range(unsigned long addr, unsigned long end,
if (err) if (err)
break; break;
pgd++; pgd++;
} while (addr = next, addr != end); } while (addr = next, addr < end);
return err; return err;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment