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, | |||
| 523 | static inline void mod_memcg_state(struct mem_cgroup *memcg, | 523 | static inline void mod_memcg_state(struct mem_cgroup *memcg, |
| 524 | int idx, int val) | 524 | int idx, int val) |
| 525 | { | 525 | { |
| 526 | preempt_disable(); | 526 | unsigned long flags; |
| 527 | |||
| 528 | local_irq_save(flags); | ||
| 527 | __mod_memcg_state(memcg, idx, val); | 529 | __mod_memcg_state(memcg, idx, val); |
| 528 | preempt_enable(); | 530 | local_irq_restore(flags); |
| 529 | } | 531 | } |
| 530 | 532 | ||
| 531 | /** | 533 | /** |
| @@ -606,9 +608,11 @@ static inline void __mod_lruvec_state(struct lruvec *lruvec, | |||
| 606 | static inline void mod_lruvec_state(struct lruvec *lruvec, | 608 | static inline void mod_lruvec_state(struct lruvec *lruvec, |
| 607 | enum node_stat_item idx, int val) | 609 | enum node_stat_item idx, int val) |
| 608 | { | 610 | { |
| 609 | preempt_disable(); | 611 | unsigned long flags; |
| 612 | |||
| 613 | local_irq_save(flags); | ||
| 610 | __mod_lruvec_state(lruvec, idx, val); | 614 | __mod_lruvec_state(lruvec, idx, val); |
| 611 | preempt_enable(); | 615 | local_irq_restore(flags); |
| 612 | } | 616 | } |
| 613 | 617 | ||
| 614 | static inline void __mod_lruvec_page_state(struct page *page, | 618 | static inline void __mod_lruvec_page_state(struct page *page, |
| @@ -630,9 +634,11 @@ static inline void __mod_lruvec_page_state(struct page *page, | |||
| 630 | static inline void mod_lruvec_page_state(struct page *page, | 634 | static inline void mod_lruvec_page_state(struct page *page, |
| 631 | enum node_stat_item idx, int val) | 635 | enum node_stat_item idx, int val) |
| 632 | { | 636 | { |
| 633 | preempt_disable(); | 637 | unsigned long flags; |
| 638 | |||
| 639 | local_irq_save(flags); | ||
| 634 | __mod_lruvec_page_state(page, idx, val); | 640 | __mod_lruvec_page_state(page, idx, val); |
| 635 | preempt_enable(); | 641 | local_irq_restore(flags); |
| 636 | } | 642 | } |
| 637 | 643 | ||
| 638 | unsigned long mem_cgroup_soft_limit_reclaim(pg_data_t *pgdat, int order, | 644 | 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, | |||
| 659 | static inline void count_memcg_events(struct mem_cgroup *memcg, | 665 | static inline void count_memcg_events(struct mem_cgroup *memcg, |
| 660 | int idx, unsigned long count) | 666 | int idx, unsigned long count) |
| 661 | { | 667 | { |
| 662 | preempt_disable(); | 668 | unsigned long flags; |
| 669 | |||
| 670 | local_irq_save(flags); | ||
| 663 | __count_memcg_events(memcg, idx, count); | 671 | __count_memcg_events(memcg, idx, count); |
| 664 | preempt_enable(); | 672 | local_irq_restore(flags); |
| 665 | } | 673 | } |
| 666 | 674 | ||
| 667 | /* idx can be of type enum memcg_event_item or vm_event_item */ | 675 | /* idx can be of type enum memcg_event_item or vm_event_item */ |
