diff options
Diffstat (limited to 'include/linux/memcontrol.h')
| -rw-r--r-- | include/linux/memcontrol.h | 24 | 
1 files changed, 16 insertions, 8 deletions
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 882046863581..c46016bb25eb 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -523,9 +523,11 @@ static inline void __mod_memcg_state(struct mem_cgroup *memcg,  static inline void mod_memcg_state(struct mem_cgroup *memcg,  				   int idx, int val)  { -	preempt_disable(); +	unsigned long flags; + +	local_irq_save(flags);  	__mod_memcg_state(memcg, idx, val); -	preempt_enable(); +	local_irq_restore(flags);  }  /** @@ -606,9 +608,11 @@ static inline void __mod_lruvec_state(struct lruvec *lruvec,  static inline void mod_lruvec_state(struct lruvec *lruvec,  				    enum node_stat_item idx, int val)  { -	preempt_disable(); +	unsigned long flags; + +	local_irq_save(flags);  	__mod_lruvec_state(lruvec, idx, val); -	preempt_enable(); +	local_irq_restore(flags);  }  static inline void __mod_lruvec_page_state(struct page *page, @@ -630,9 +634,11 @@ static inline void __mod_lruvec_page_state(struct page *page,  static inline void mod_lruvec_page_state(struct page *page,  					 enum node_stat_item idx, int val)  { -	preempt_disable(); +	unsigned long flags; + +	local_irq_save(flags);  	__mod_lruvec_page_state(page, idx, val); -	preempt_enable(); +	local_irq_restore(flags);  }  unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order, @@ -659,9 +665,11 @@ static inline void __count_memcg_events(struct mem_cgroup *memcg,  static inline void count_memcg_events(struct mem_cgroup *memcg,  				      int idx, unsigned long count)  { -	preempt_disable(); +	unsigned long flags; + +	local_irq_save(flags);  	__count_memcg_events(memcg, idx, count); -	preempt_enable(); +	local_irq_restore(flags);  }  /* idx can be of type enum memcg_event_item or vm_event_item */  |