linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] mm/page_ref: use page_ref helper instead of direct modification of _count
@ 2016-03-28  5:59 js1304
  2016-03-28  5:59 ` [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount js1304
  0 siblings, 1 reply; 7+ messages in thread
From: js1304 @ 2016-03-28  5:59 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Hugh Dickins, Johannes Berg, David S. Miller, Sunil Goutham,
	linux-mm, linux-kernel, Joonsoo Kim

From: Joonsoo Kim <iamjoonsoo.kim@lge.com>

page_reference manipulation functions are introduced to track down
reference count change of the page. Use it instead of direct modification
of _count.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
---
 drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 2 +-
 drivers/net/ethernet/qlogic/qede/qede_main.c       | 2 +-
 mm/filemap.c                                       | 2 +-
 net/wireless/util.c                                | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
index fa05e34..8acd7c0 100644
--- a/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
+++ b/drivers/net/ethernet/cavium/thunder/nicvf_queues.c
@@ -23,7 +23,7 @@ static void nicvf_get_page(struct nicvf *nic)
 	if (!nic->rb_pageref || !nic->rb_page)
 		return;
 
-	atomic_add(nic->rb_pageref, &nic->rb_page->_count);
+	page_ref_add(nic->rb_page, nic->rb_pageref);
 	nic->rb_pageref = 0;
 }
 
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 518af32..394c97ff 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -791,7 +791,7 @@ static inline int qede_realloc_rx_buffer(struct qede_dev *edev,
 		 * network stack to take the ownership of the page
 		 * which can be recycled multiple times by the driver.
 		 */
-		atomic_inc(&curr_cons->data->_count);
+		page_ref_inc(curr_cons->data);
 		qede_reuse_page(edev, rxq, curr_cons);
 	}
 
diff --git a/mm/filemap.c b/mm/filemap.c
index a8c69c8..0ebd326 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -213,7 +213,7 @@ void __delete_from_page_cache(struct page *page, void *shadow)
 			 * some other bad page check should catch it later.
 			 */
 			page_mapcount_reset(page);
-			atomic_sub(mapcount, &page->_count);
+			page_ref_sub(page, mapcount);
 		}
 	}
 
diff --git a/net/wireless/util.c b/net/wireless/util.c
index 9f440a9..e22432a 100644
--- a/net/wireless/util.c
+++ b/net/wireless/util.c
@@ -651,7 +651,7 @@ __frame_add_frag(struct sk_buff *skb, struct page *page,
 	struct skb_shared_info *sh = skb_shinfo(skb);
 	int page_offset;
 
-	atomic_inc(&page->_count);
+	page_ref_inc(page);
 	page_offset = ptr - page_address(page);
 	skb_add_rx_frag(skb, sh->nr_frags, page, page_offset, len, size);
 }
-- 
1.9.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount
  2016-03-28  5:59 [PATCH 1/2] mm/page_ref: use page_ref helper instead of direct modification of _count js1304
@ 2016-03-28  5:59 ` js1304
  2016-03-28  6:05   ` Joonsoo Kim
                     ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: js1304 @ 2016-03-28  5:59 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Hugh Dickins, Johannes Berg, David S. Miller, Sunil Goutham,
	linux-mm, linux-kernel, Joonsoo Kim

From: Joonsoo Kim <iamjoonsoo.kim@lge.com>

Many developer already know that field for reference count of
the struct page is _count and atomic type. They would try to handle it
directly and this could break the purpose of page reference count
tracepoint. To prevent direct _count modification, this patch rename it
to _refcount and add warning message on the code. After that, developer
who need to handle reference count will find that field should not be
accessed directly.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
---
 include/linux/mm_types.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 944b2b3..9e8eb5a 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -97,7 +97,11 @@ struct page {
 					};
 					int units;	/* SLOB */
 				};
-				atomic_t _count;		/* Usage count, see below. */
+				/*
+				 * Usage count, *USE WRAPPER FUNCTION*
+				 * when manual accounting. See page_ref.h
+				 */
+				atomic_t _refcount;
 			};
 			unsigned int active;	/* SLAB */
 		};
@@ -248,7 +252,7 @@ struct page_frag_cache {
 	__u32 offset;
 #endif
 	/* we maintain a pagecount bias, so that we dont dirty cache line
-	 * containing page->_count every time we allocate a fragment.
+	 * containing page->_refcount every time we allocate a fragment.
 	 */
 	unsigned int		pagecnt_bias;
 	bool pfmemalloc;
-- 
1.9.1

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount
  2016-03-28  5:59 ` [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount js1304
@ 2016-03-28  6:05   ` Joonsoo Kim
  2016-03-28  6:07   ` kbuild test robot
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 7+ messages in thread
From: Joonsoo Kim @ 2016-03-28  6:05 UTC (permalink / raw)
  To: Andrew Morton
  Cc: Hugh Dickins, Johannes Berg, David S. Miller, Sunil Goutham,
	Linux Memory Management List, LKML, Joonsoo Kim

2016-03-28 14:59 GMT+09:00  <js1304@gmail.com>:
> From: Joonsoo Kim <iamjoonsoo.kim@lge.com>
>
> Many developer already know that field for reference count of
> the struct page is _count and atomic type. They would try to handle it
> directly and this could break the purpose of page reference count
> tracepoint. To prevent direct _count modification, this patch rename it
> to _refcount and add warning message on the code. After that, developer
> who need to handle reference count will find that field should not be
> accessed directly.
>
> Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>

Oops. This patch needs more change. Please ignore this patchset.
I will resend it soon.

Thanks.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount
  2016-03-28  5:59 ` [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount js1304
  2016-03-28  6:05   ` Joonsoo Kim
@ 2016-03-28  6:07   ` kbuild test robot
  2016-03-28  6:19     ` Joonsoo Kim
  2016-03-28  6:11   ` kbuild test robot
  2016-03-28  6:14   ` kbuild test robot
  3 siblings, 1 reply; 7+ messages in thread
From: kbuild test robot @ 2016-03-28  6:07 UTC (permalink / raw)
  To: js1304
  Cc: kbuild-all, Andrew Morton, Hugh Dickins, Johannes Berg,
	David S. Miller, Sunil Goutham, linux-mm, linux-kernel,
	Joonsoo Kim

[-- Attachment #1: Type: text/plain, Size: 5924 bytes --]

Hi Joonsoo,

[auto build test ERROR on net/master]
[also build test ERROR on v4.6-rc1 next-20160327]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/js1304-gmail-com/mm-page_ref-use-page_ref-helper-instead-of-direct-modification-of-_count/20160328-140113
config: i386-tinyconfig (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   In file included from include/linux/mm.h:25:0,
                    from include/linux/suspend.h:8,
                    from arch/x86/kernel/asm-offsets.c:12:
   include/linux/page_ref.h: In function 'page_ref_count':
>> include/linux/page_ref.h:66:26: error: 'struct page' has no member named '_count'
     return atomic_read(&page->_count);
                             ^
   include/linux/page_ref.h: In function 'page_count':
   include/linux/page_ref.h:71:41: error: 'struct page' has no member named '_count'
     return atomic_read(&compound_head(page)->_count);
                                            ^
   include/linux/page_ref.h: In function 'set_page_count':
   include/linux/page_ref.h:76:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, v);
                     ^
   include/linux/page_ref.h: In function 'page_ref_add':
   include/linux/page_ref.h:92:22: error: 'struct page' has no member named '_count'
     atomic_add(nr, &page->_count);
                         ^
   include/linux/page_ref.h: In function 'page_ref_sub':
   include/linux/page_ref.h:99:22: error: 'struct page' has no member named '_count'
     atomic_sub(nr, &page->_count);
                         ^
   include/linux/page_ref.h: In function 'page_ref_inc':
   include/linux/page_ref.h:106:18: error: 'struct page' has no member named '_count'
     atomic_inc(&page->_count);
                     ^
   include/linux/page_ref.h: In function 'page_ref_dec':
   include/linux/page_ref.h:113:18: error: 'struct page' has no member named '_count'
     atomic_dec(&page->_count);
                     ^
   include/linux/page_ref.h: In function 'page_ref_sub_and_test':
   include/linux/page_ref.h:120:41: error: 'struct page' has no member named '_count'
     int ret = atomic_sub_and_test(nr, &page->_count);
                                            ^
   include/linux/page_ref.h: In function 'page_ref_dec_and_test':
   include/linux/page_ref.h:129:37: error: 'struct page' has no member named '_count'
     int ret = atomic_dec_and_test(&page->_count);
                                        ^
   In file included from include/linux/atomic.h:4:0,
                    from include/linux/crypto.h:20,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/linux/page_ref.h: In function 'page_ref_dec_return':
   include/linux/page_ref.h:138:35: error: 'struct page' has no member named '_count'
     int ret = atomic_dec_return(&page->_count);
                                      ^
   arch/x86/include/asm/atomic.h:172:53: note: in definition of macro 'atomic_dec_return'
    #define atomic_dec_return(v)  (atomic_sub_return(1, v))
                                                        ^
   In file included from include/linux/mm.h:25:0,
                    from include/linux/suspend.h:8,
                    from arch/x86/kernel/asm-offsets.c:12:
   include/linux/page_ref.h: In function 'page_ref_add_unless':
   include/linux/page_ref.h:147:35: error: 'struct page' has no member named '_count'
     int ret = atomic_add_unless(&page->_count, nr, u);
                                      ^
   In file included from arch/x86/include/asm/atomic.h:4:0,
                    from include/linux/atomic.h:4,
                    from include/linux/crypto.h:20,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/linux/page_ref.h: In function 'page_ref_freeze':
   include/linux/page_ref.h:156:39: error: 'struct page' has no member named '_count'
     int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
                                          ^
   include/linux/compiler.h:169:40: note: in definition of macro 'likely'
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
   In file included from include/linux/mm.h:25:0,
                    from include/linux/suspend.h:8,
                    from arch/x86/kernel/asm-offsets.c:12:
   include/linux/page_ref.h: In function 'page_ref_unfreeze':
   include/linux/page_ref.h:168:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, count);
                     ^
   make[2]: *** [arch/x86/kernel/asm-offsets.s] Error 1
   make[2]: Target '__build' not remade because of errors.
   make[1]: *** [prepare0] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +66 include/linux/page_ref.h

95813b8f Joonsoo Kim 2016-03-17  60  }
95813b8f Joonsoo Kim 2016-03-17  61  
95813b8f Joonsoo Kim 2016-03-17  62  #endif
fe896d18 Joonsoo Kim 2016-03-17  63  
fe896d18 Joonsoo Kim 2016-03-17  64  static inline int page_ref_count(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17  65  {
fe896d18 Joonsoo Kim 2016-03-17 @66  	return atomic_read(&page->_count);
fe896d18 Joonsoo Kim 2016-03-17  67  }
fe896d18 Joonsoo Kim 2016-03-17  68  
fe896d18 Joonsoo Kim 2016-03-17  69  static inline int page_count(struct page *page)

:::::: The code at line 66 was first introduced by commit
:::::: fe896d1878949ea92ba547587bc3075cc688fb8f mm: introduce page reference manipulation functions

:::::: TO: Joonsoo Kim <iamjoonsoo.kim@lge.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 6258 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount
  2016-03-28  5:59 ` [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount js1304
  2016-03-28  6:05   ` Joonsoo Kim
  2016-03-28  6:07   ` kbuild test robot
@ 2016-03-28  6:11   ` kbuild test robot
  2016-03-28  6:14   ` kbuild test robot
  3 siblings, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2016-03-28  6:11 UTC (permalink / raw)
  To: js1304
  Cc: kbuild-all, Andrew Morton, Hugh Dickins, Johannes Berg,
	David S. Miller, Sunil Goutham, linux-mm, linux-kernel,
	Joonsoo Kim

[-- Attachment #1: Type: text/plain, Size: 8343 bytes --]

Hi Joonsoo,

[auto build test WARNING on net/master]
[also build test WARNING on v4.6-rc1 next-20160327]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/js1304-gmail-com/mm-page_ref-use-page_ref-helper-instead-of-direct-modification-of-_count/20160328-140113
config: x86_64-randconfig-x019-201613 (attached as .config)
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All warnings (new ones prefixed by >>):

   In file included from include/linux/mm.h:25:0,
                    from include/linux/suspend.h:8,
                    from arch/x86/kernel/asm-offsets.c:12:
   include/linux/page_ref.h: In function 'page_ref_count':
   include/linux/page_ref.h:66:26: error: 'struct page' has no member named '_count'
     return atomic_read(&page->_count);
                             ^
   include/linux/page_ref.h: In function 'page_count':
   include/linux/page_ref.h:71:41: error: 'struct page' has no member named '_count'
     return atomic_read(&compound_head(page)->_count);
                                            ^
   include/linux/page_ref.h: In function 'set_page_count':
   include/linux/page_ref.h:76:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, v);
                     ^
   include/linux/page_ref.h: In function 'page_ref_add':
   include/linux/page_ref.h:92:22: error: 'struct page' has no member named '_count'
     atomic_add(nr, &page->_count);
                         ^
   include/linux/page_ref.h: In function 'page_ref_sub':
   include/linux/page_ref.h:99:22: error: 'struct page' has no member named '_count'
     atomic_sub(nr, &page->_count);
                         ^
   include/linux/page_ref.h: In function 'page_ref_inc':
   include/linux/page_ref.h:106:18: error: 'struct page' has no member named '_count'
     atomic_inc(&page->_count);
                     ^
   include/linux/page_ref.h: In function 'page_ref_dec':
   include/linux/page_ref.h:113:18: error: 'struct page' has no member named '_count'
     atomic_dec(&page->_count);
                     ^
   include/linux/page_ref.h: In function 'page_ref_sub_and_test':
   include/linux/page_ref.h:120:41: error: 'struct page' has no member named '_count'
     int ret = atomic_sub_and_test(nr, &page->_count);
                                            ^
   include/linux/page_ref.h: In function 'page_ref_dec_and_test':
   include/linux/page_ref.h:129:37: error: 'struct page' has no member named '_count'
     int ret = atomic_dec_and_test(&page->_count);
                                        ^
   In file included from include/linux/atomic.h:4:0,
                    from include/linux/crypto.h:20,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/linux/page_ref.h: In function 'page_ref_dec_return':
   include/linux/page_ref.h:138:35: error: 'struct page' has no member named '_count'
     int ret = atomic_dec_return(&page->_count);
                                      ^
   arch/x86/include/asm/atomic.h:172:53: note: in definition of macro 'atomic_dec_return'
    #define atomic_dec_return(v)  (atomic_sub_return(1, v))
                                                        ^
   In file included from include/linux/mm.h:25:0,
                    from include/linux/suspend.h:8,
                    from arch/x86/kernel/asm-offsets.c:12:
   include/linux/page_ref.h: In function 'page_ref_add_unless':
   include/linux/page_ref.h:147:35: error: 'struct page' has no member named '_count'
     int ret = atomic_add_unless(&page->_count, nr, u);
                                      ^
   In file included from arch/x86/include/asm/atomic.h:4:0,
                    from include/linux/atomic.h:4,
                    from include/linux/crypto.h:20,
                    from arch/x86/kernel/asm-offsets.c:8:
   include/linux/page_ref.h: In function 'page_ref_freeze':
   include/linux/page_ref.h:156:39: error: 'struct page' has no member named '_count'
     int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
                                          ^
   include/linux/compiler.h:138:43: note: in definition of macro 'likely'
    #  define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1))
                                              ^
   include/linux/page_ref.h:156:39: error: 'struct page' has no member named '_count'
     int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
                                          ^
   include/linux/compiler.h:138:51: note: in definition of macro 'likely'
    #  define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1))
                                                      ^
   include/linux/page_ref.h:156:39: error: 'struct page' has no member named '_count'
     int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
                                          ^
   include/linux/compiler.h:114:47: note: in definition of macro 'likely_notrace'
    #define likely_notrace(x) __builtin_expect(!!(x), 1)
                                                  ^
   include/linux/compiler.h:138:56: note: in expansion of macro '__branch_check__'
    #  define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1))
                                                           ^
>> include/linux/page_ref.h:156:12: note: in expansion of macro 'likely'
     int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
               ^
   In file included from include/linux/mm.h:25:0,
                    from include/linux/suspend.h:8,
                    from arch/x86/kernel/asm-offsets.c:12:
   include/linux/page_ref.h: In function 'page_ref_unfreeze':
   include/linux/page_ref.h:168:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, count);
                     ^
   make[2]: *** [arch/x86/kernel/asm-offsets.s] Error 1
   make[2]: Target '__build' not remade because of errors.
   make[1]: *** [prepare0] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [sub-make] Error 2

vim +/likely +156 include/linux/page_ref.h

95813b8f Joonsoo Kim 2016-03-17  140  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod_and_return))
95813b8f Joonsoo Kim 2016-03-17  141  		__page_ref_mod_and_return(page, -1, ret);
95813b8f Joonsoo Kim 2016-03-17  142  	return ret;
fe896d18 Joonsoo Kim 2016-03-17  143  }
fe896d18 Joonsoo Kim 2016-03-17  144  
fe896d18 Joonsoo Kim 2016-03-17  145  static inline int page_ref_add_unless(struct page *page, int nr, int u)
fe896d18 Joonsoo Kim 2016-03-17  146  {
95813b8f Joonsoo Kim 2016-03-17  147  	int ret = atomic_add_unless(&page->_count, nr, u);
95813b8f Joonsoo Kim 2016-03-17  148  
95813b8f Joonsoo Kim 2016-03-17  149  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod_unless))
95813b8f Joonsoo Kim 2016-03-17  150  		__page_ref_mod_unless(page, nr, ret);
95813b8f Joonsoo Kim 2016-03-17  151  	return ret;
fe896d18 Joonsoo Kim 2016-03-17  152  }
fe896d18 Joonsoo Kim 2016-03-17  153  
fe896d18 Joonsoo Kim 2016-03-17  154  static inline int page_ref_freeze(struct page *page, int count)
fe896d18 Joonsoo Kim 2016-03-17  155  {
95813b8f Joonsoo Kim 2016-03-17 @156  	int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
95813b8f Joonsoo Kim 2016-03-17  157  
95813b8f Joonsoo Kim 2016-03-17  158  	if (page_ref_tracepoint_active(__tracepoint_page_ref_freeze))
95813b8f Joonsoo Kim 2016-03-17  159  		__page_ref_freeze(page, count, ret);
95813b8f Joonsoo Kim 2016-03-17  160  	return ret;
fe896d18 Joonsoo Kim 2016-03-17  161  }
fe896d18 Joonsoo Kim 2016-03-17  162  
fe896d18 Joonsoo Kim 2016-03-17  163  static inline void page_ref_unfreeze(struct page *page, int count)
fe896d18 Joonsoo Kim 2016-03-17  164  {

:::::: The code at line 156 was first introduced by commit
:::::: 95813b8faa0cd315f61a8b9d9c523792370b693e mm/page_ref: add tracepoint to track down page reference manipulation

:::::: TO: Joonsoo Kim <iamjoonsoo.kim@lge.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 22554 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount
  2016-03-28  5:59 ` [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount js1304
                     ` (2 preceding siblings ...)
  2016-03-28  6:11   ` kbuild test robot
@ 2016-03-28  6:14   ` kbuild test robot
  3 siblings, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2016-03-28  6:14 UTC (permalink / raw)
  To: js1304
  Cc: kbuild-all, Andrew Morton, Hugh Dickins, Johannes Berg,
	David S. Miller, Sunil Goutham, linux-mm, linux-kernel,
	Joonsoo Kim

[-- Attachment #1: Type: text/plain, Size: 20592 bytes --]

Hi Joonsoo,

[auto build test WARNING on net/master]
[also build test WARNING on v4.6-rc1 next-20160327]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/js1304-gmail-com/mm-page_ref-use-page_ref-helper-instead-of-direct-modification-of-_count/20160328-140113
config: xtensa-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=xtensa 

All warnings (new ones prefixed by >>):

   In file included from arch/xtensa/include/asm/processor.h:16:0,
                    from arch/xtensa/kernel/asm-offsets.c:15:
   include/linux/page_ref.h: In function 'page_ref_count':
   include/linux/page_ref.h:66:26: error: 'struct page' has no member named '_count'
     return atomic_read(&page->_count);
                             ^
   include/linux/compiler.h:284:17: note: in definition of macro '__READ_ONCE'
     union { typeof(x) __val; char __c[1]; } __u;   \
                    ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
>> include/linux/page_ref.h:66:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&page->_count);
            ^
   include/linux/page_ref.h:66:26: error: 'struct page' has no member named '_count'
     return atomic_read(&page->_count);
                             ^
   include/linux/compiler.h:286:22: note: in definition of macro '__READ_ONCE'
      __read_once_size(&(x), __u.__c, sizeof(x));  \
                         ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
>> include/linux/page_ref.h:66:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&page->_count);
            ^
   include/linux/page_ref.h:66:26: error: 'struct page' has no member named '_count'
     return atomic_read(&page->_count);
                             ^
   include/linux/compiler.h:286:42: note: in definition of macro '__READ_ONCE'
      __read_once_size(&(x), __u.__c, sizeof(x));  \
                                             ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
>> include/linux/page_ref.h:66:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&page->_count);
            ^
   include/linux/page_ref.h:66:26: error: 'struct page' has no member named '_count'
     return atomic_read(&page->_count);
                             ^
   include/linux/compiler.h:288:30: note: in definition of macro '__READ_ONCE'
      __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \
                                 ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
>> include/linux/page_ref.h:66:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&page->_count);
            ^
   include/linux/page_ref.h:66:26: error: 'struct page' has no member named '_count'
     return atomic_read(&page->_count);
                             ^
   include/linux/compiler.h:288:50: note: in definition of macro '__READ_ONCE'
      __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \
                                                     ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
>> include/linux/page_ref.h:66:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&page->_count);
            ^
   include/linux/page_ref.h: In function 'page_count':
   include/linux/page_ref.h:71:41: error: 'struct page' has no member named '_count'
     return atomic_read(&compound_head(page)->_count);
                                            ^
   include/linux/compiler.h:284:17: note: in definition of macro '__READ_ONCE'
     union { typeof(x) __val; char __c[1]; } __u;   \
                    ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
   include/linux/page_ref.h:71:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&compound_head(page)->_count);
            ^
   include/linux/page_ref.h:71:41: error: 'struct page' has no member named '_count'
     return atomic_read(&compound_head(page)->_count);
                                            ^
   include/linux/compiler.h:286:22: note: in definition of macro '__READ_ONCE'
      __read_once_size(&(x), __u.__c, sizeof(x));  \
                         ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
   include/linux/page_ref.h:71:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&compound_head(page)->_count);
            ^
   include/linux/page_ref.h:71:41: error: 'struct page' has no member named '_count'
     return atomic_read(&compound_head(page)->_count);
                                            ^
   include/linux/compiler.h:286:42: note: in definition of macro '__READ_ONCE'
      __read_once_size(&(x), __u.__c, sizeof(x));  \
                                             ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
   include/linux/page_ref.h:71:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&compound_head(page)->_count);
            ^
   include/linux/page_ref.h:71:41: error: 'struct page' has no member named '_count'
     return atomic_read(&compound_head(page)->_count);
                                            ^
   include/linux/compiler.h:288:30: note: in definition of macro '__READ_ONCE'
      __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \
                                 ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
   include/linux/page_ref.h:71:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&compound_head(page)->_count);
            ^
   include/linux/page_ref.h:71:41: error: 'struct page' has no member named '_count'
     return atomic_read(&compound_head(page)->_count);
                                            ^
   include/linux/compiler.h:288:50: note: in definition of macro '__READ_ONCE'
      __read_once_size_nocheck(&(x), __u.__c, sizeof(x)); \
                                                     ^
>> arch/xtensa/include/asm/atomic.h:50:25: note: in expansion of macro 'READ_ONCE'
    #define atomic_read(v)  READ_ONCE((v)->counter)
                            ^
   include/linux/page_ref.h:71:9: note: in expansion of macro 'atomic_read'
     return atomic_read(&compound_head(page)->_count);
            ^
   include/linux/page_ref.h: In function 'set_page_count':
   include/linux/page_ref.h:76:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, v);
                     ^
   include/linux/compiler.h:301:17: note: in definition of macro 'WRITE_ONCE'
     union { typeof(x) __val; char __c[1]; } __u = \
                    ^
>> include/linux/page_ref.h:76:2: note: in expansion of macro 'atomic_set'
     atomic_set(&page->_count, v);
     ^
   include/linux/page_ref.h:76:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, v);
                     ^
   include/linux/compiler.h:302:30: note: in definition of macro 'WRITE_ONCE'
      { .__val = (__force typeof(x)) (val) }; \
                                 ^
>> include/linux/page_ref.h:76:2: note: in expansion of macro 'atomic_set'
     atomic_set(&page->_count, v);
     ^
   include/linux/page_ref.h:76:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, v);
                     ^
   include/linux/compiler.h:303:22: note: in definition of macro 'WRITE_ONCE'
     __write_once_size(&(x), __u.__c, sizeof(x)); \
                         ^
>> include/linux/page_ref.h:76:2: note: in expansion of macro 'atomic_set'
     atomic_set(&page->_count, v);
     ^
   include/linux/page_ref.h:76:18: error: 'struct page' has no member named '_count'
     atomic_set(&page->_count, v);
                     ^
   include/linux/compiler.h:303:42: note: in definition of macro 'WRITE_ONCE'
     __write_once_size(&(x), __u.__c, sizeof(x)); \
                                             ^
>> include/linux/page_ref.h:76:2: note: in expansion of macro 'atomic_set'
     atomic_set(&page->_count, v);
     ^
   In file included from include/linux/mm.h:25:0,
                    from include/linux/pid_namespace.h:6,
                    from include/linux/ptrace.h:8,
                    from arch/xtensa/kernel/asm-offsets.c:21:
   include/linux/page_ref.h: In function 'page_ref_add':
   include/linux/page_ref.h:92:22: error: 'struct page' has no member named '_count'
     atomic_add(nr, &page->_count);
                         ^
   include/linux/page_ref.h: In function 'page_ref_sub':
   include/linux/page_ref.h:99:22: error: 'struct page' has no member named '_count'
     atomic_sub(nr, &page->_count);
                         ^
   In file included from include/linux/atomic.h:4:0,
                    from include/linux/debug_locks.h:5,
                    from include/linux/lockdep.h:23,
                    from include/linux/spinlock_types.h:18,
                    from include/linux/spinlock.h:81,
                    from include/linux/seqlock.h:35,
                    from include/linux/time.h:5,
                    from include/uapi/linux/timex.h:56,
                    from include/linux/timex.h:56,
                    from include/linux/sched.h:19,
                    from include/linux/ptrace.h:5,
                    from arch/xtensa/kernel/asm-offsets.c:21:
   include/linux/page_ref.h: In function 'page_ref_inc':
   include/linux/page_ref.h:106:18: error: 'struct page' has no member named '_count'
     atomic_inc(&page->_count);
                     ^
   arch/xtensa/include/asm/atomic.h:173:37: note: in definition of macro 'atomic_inc'
    #define atomic_inc(v) atomic_add(1,(v))
                                        ^
   include/linux/page_ref.h: In function 'page_ref_dec':
   include/linux/page_ref.h:113:18: error: 'struct page' has no member named '_count'
     atomic_dec(&page->_count);
                     ^
   arch/xtensa/include/asm/atomic.h:189:37: note: in definition of macro 'atomic_dec'
    #define atomic_dec(v) atomic_sub(1,(v))
                                        ^
   include/linux/page_ref.h: In function 'page_ref_sub_and_test':
   include/linux/page_ref.h:120:41: error: 'struct page' has no member named '_count'
     int ret = atomic_sub_and_test(nr, &page->_count);
                                            ^
   arch/xtensa/include/asm/atomic.h:165:58: note: in definition of macro 'atomic_sub_and_test'
    #define atomic_sub_and_test(i,v) (atomic_sub_return((i),(v)) == 0)
                                                             ^
   include/linux/page_ref.h: In function 'page_ref_dec_and_test':
   include/linux/page_ref.h:129:37: error: 'struct page' has no member named '_count'
     int ret = atomic_dec_and_test(&page->_count);
                                        ^
   arch/xtensa/include/asm/atomic.h:207:54: note: in definition of macro 'atomic_dec_and_test'
    #define atomic_dec_and_test(v) (atomic_sub_return(1,(v)) == 0)
                                                         ^
   include/linux/page_ref.h: In function 'page_ref_dec_return':
   include/linux/page_ref.h:138:35: error: 'struct page' has no member named '_count'
     int ret = atomic_dec_return(&page->_count);
                                      ^
   arch/xtensa/include/asm/atomic.h:197:51: note: in definition of macro 'atomic_dec_return'
    #define atomic_dec_return(v) atomic_sub_return(1,(v))
                                                      ^
   In file included from include/linux/mm.h:25:0,
                    from include/linux/pid_namespace.h:6,
                    from include/linux/ptrace.h:8,
                    from arch/xtensa/kernel/asm-offsets.c:21:
   include/linux/page_ref.h: In function 'page_ref_add_unless':
   include/linux/page_ref.h:147:35: error: 'struct page' has no member named '_count'
     int ret = atomic_add_unless(&page->_count, nr, u);
                                      ^
   In file included from arch/xtensa/include/asm/processor.h:16:0,
                    from arch/xtensa/kernel/asm-offsets.c:15:
   include/linux/page_ref.h: In function 'page_ref_freeze':
   include/linux/page_ref.h:156:39: error: 'struct page' has no member named '_count'
     int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
                                          ^
   include/linux/compiler.h:169:40: note: in definition of macro 'likely'
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
>> arch/xtensa/include/asm/atomic.h:230:39: note: in expansion of macro 'cmpxchg'
    #define atomic_cmpxchg(v, o, n) ((int)cmpxchg(&((v)->counter), (o), (n)))
                                          ^

vim +/atomic_read +66 include/linux/page_ref.h

95813b8f Joonsoo Kim 2016-03-17   60  }
95813b8f Joonsoo Kim 2016-03-17   61  
95813b8f Joonsoo Kim 2016-03-17   62  #endif
fe896d18 Joonsoo Kim 2016-03-17   63  
fe896d18 Joonsoo Kim 2016-03-17   64  static inline int page_ref_count(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17   65  {
fe896d18 Joonsoo Kim 2016-03-17  @66  	return atomic_read(&page->_count);
fe896d18 Joonsoo Kim 2016-03-17   67  }
fe896d18 Joonsoo Kim 2016-03-17   68  
fe896d18 Joonsoo Kim 2016-03-17   69  static inline int page_count(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17   70  {
fe896d18 Joonsoo Kim 2016-03-17   71  	return atomic_read(&compound_head(page)->_count);
fe896d18 Joonsoo Kim 2016-03-17   72  }
fe896d18 Joonsoo Kim 2016-03-17   73  
fe896d18 Joonsoo Kim 2016-03-17   74  static inline void set_page_count(struct page *page, int v)
fe896d18 Joonsoo Kim 2016-03-17   75  {
fe896d18 Joonsoo Kim 2016-03-17  @76  	atomic_set(&page->_count, v);
95813b8f Joonsoo Kim 2016-03-17   77  	if (page_ref_tracepoint_active(__tracepoint_page_ref_set))
95813b8f Joonsoo Kim 2016-03-17   78  		__page_ref_set(page, v);
fe896d18 Joonsoo Kim 2016-03-17   79  }
fe896d18 Joonsoo Kim 2016-03-17   80  
fe896d18 Joonsoo Kim 2016-03-17   81  /*
fe896d18 Joonsoo Kim 2016-03-17   82   * Setup the page count before being freed into the page allocator for
fe896d18 Joonsoo Kim 2016-03-17   83   * the first time (boot or memory hotplug)
fe896d18 Joonsoo Kim 2016-03-17   84   */
fe896d18 Joonsoo Kim 2016-03-17   85  static inline void init_page_count(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17   86  {
fe896d18 Joonsoo Kim 2016-03-17   87  	set_page_count(page, 1);
fe896d18 Joonsoo Kim 2016-03-17   88  }
fe896d18 Joonsoo Kim 2016-03-17   89  
fe896d18 Joonsoo Kim 2016-03-17   90  static inline void page_ref_add(struct page *page, int nr)
fe896d18 Joonsoo Kim 2016-03-17   91  {
fe896d18 Joonsoo Kim 2016-03-17   92  	atomic_add(nr, &page->_count);
95813b8f Joonsoo Kim 2016-03-17   93  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod))
95813b8f Joonsoo Kim 2016-03-17   94  		__page_ref_mod(page, nr);
fe896d18 Joonsoo Kim 2016-03-17   95  }
fe896d18 Joonsoo Kim 2016-03-17   96  
fe896d18 Joonsoo Kim 2016-03-17   97  static inline void page_ref_sub(struct page *page, int nr)
fe896d18 Joonsoo Kim 2016-03-17   98  {
fe896d18 Joonsoo Kim 2016-03-17   99  	atomic_sub(nr, &page->_count);
95813b8f Joonsoo Kim 2016-03-17  100  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod))
95813b8f Joonsoo Kim 2016-03-17  101  		__page_ref_mod(page, -nr);
fe896d18 Joonsoo Kim 2016-03-17  102  }
fe896d18 Joonsoo Kim 2016-03-17  103  
fe896d18 Joonsoo Kim 2016-03-17  104  static inline void page_ref_inc(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17  105  {
fe896d18 Joonsoo Kim 2016-03-17  106  	atomic_inc(&page->_count);
95813b8f Joonsoo Kim 2016-03-17  107  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod))
95813b8f Joonsoo Kim 2016-03-17  108  		__page_ref_mod(page, 1);
fe896d18 Joonsoo Kim 2016-03-17  109  }
fe896d18 Joonsoo Kim 2016-03-17  110  
fe896d18 Joonsoo Kim 2016-03-17  111  static inline void page_ref_dec(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17  112  {
fe896d18 Joonsoo Kim 2016-03-17  113  	atomic_dec(&page->_count);
95813b8f Joonsoo Kim 2016-03-17  114  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod))
95813b8f Joonsoo Kim 2016-03-17  115  		__page_ref_mod(page, -1);
fe896d18 Joonsoo Kim 2016-03-17  116  }
fe896d18 Joonsoo Kim 2016-03-17  117  
fe896d18 Joonsoo Kim 2016-03-17  118  static inline int page_ref_sub_and_test(struct page *page, int nr)
fe896d18 Joonsoo Kim 2016-03-17  119  {
95813b8f Joonsoo Kim 2016-03-17  120  	int ret = atomic_sub_and_test(nr, &page->_count);
95813b8f Joonsoo Kim 2016-03-17  121  
95813b8f Joonsoo Kim 2016-03-17  122  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod_and_test))
95813b8f Joonsoo Kim 2016-03-17  123  		__page_ref_mod_and_test(page, -nr, ret);
95813b8f Joonsoo Kim 2016-03-17  124  	return ret;
fe896d18 Joonsoo Kim 2016-03-17  125  }
fe896d18 Joonsoo Kim 2016-03-17  126  
fe896d18 Joonsoo Kim 2016-03-17  127  static inline int page_ref_dec_and_test(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17  128  {
95813b8f Joonsoo Kim 2016-03-17  129  	int ret = atomic_dec_and_test(&page->_count);
95813b8f Joonsoo Kim 2016-03-17  130  
95813b8f Joonsoo Kim 2016-03-17  131  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod_and_test))
95813b8f Joonsoo Kim 2016-03-17  132  		__page_ref_mod_and_test(page, -1, ret);
95813b8f Joonsoo Kim 2016-03-17  133  	return ret;
fe896d18 Joonsoo Kim 2016-03-17  134  }
fe896d18 Joonsoo Kim 2016-03-17  135  
fe896d18 Joonsoo Kim 2016-03-17  136  static inline int page_ref_dec_return(struct page *page)
fe896d18 Joonsoo Kim 2016-03-17  137  {
95813b8f Joonsoo Kim 2016-03-17  138  	int ret = atomic_dec_return(&page->_count);
95813b8f Joonsoo Kim 2016-03-17  139  
95813b8f Joonsoo Kim 2016-03-17  140  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod_and_return))
95813b8f Joonsoo Kim 2016-03-17  141  		__page_ref_mod_and_return(page, -1, ret);
95813b8f Joonsoo Kim 2016-03-17  142  	return ret;
fe896d18 Joonsoo Kim 2016-03-17  143  }
fe896d18 Joonsoo Kim 2016-03-17  144  
fe896d18 Joonsoo Kim 2016-03-17  145  static inline int page_ref_add_unless(struct page *page, int nr, int u)
fe896d18 Joonsoo Kim 2016-03-17  146  {
95813b8f Joonsoo Kim 2016-03-17  147  	int ret = atomic_add_unless(&page->_count, nr, u);
95813b8f Joonsoo Kim 2016-03-17  148  
95813b8f Joonsoo Kim 2016-03-17  149  	if (page_ref_tracepoint_active(__tracepoint_page_ref_mod_unless))
95813b8f Joonsoo Kim 2016-03-17  150  		__page_ref_mod_unless(page, nr, ret);
95813b8f Joonsoo Kim 2016-03-17  151  	return ret;
fe896d18 Joonsoo Kim 2016-03-17  152  }
fe896d18 Joonsoo Kim 2016-03-17  153  
fe896d18 Joonsoo Kim 2016-03-17  154  static inline int page_ref_freeze(struct page *page, int count)
fe896d18 Joonsoo Kim 2016-03-17  155  {
95813b8f Joonsoo Kim 2016-03-17 @156  	int ret = likely(atomic_cmpxchg(&page->_count, count, 0) == count);
95813b8f Joonsoo Kim 2016-03-17  157  
95813b8f Joonsoo Kim 2016-03-17  158  	if (page_ref_tracepoint_active(__tracepoint_page_ref_freeze))
95813b8f Joonsoo Kim 2016-03-17  159  		__page_ref_freeze(page, count, ret);

:::::: The code at line 66 was first introduced by commit
:::::: fe896d1878949ea92ba547587bc3075cc688fb8f mm: introduce page reference manipulation functions

:::::: TO: Joonsoo Kim <iamjoonsoo.kim@lge.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 44787 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount
  2016-03-28  6:07   ` kbuild test robot
@ 2016-03-28  6:19     ` Joonsoo Kim
  0 siblings, 0 replies; 7+ messages in thread
From: Joonsoo Kim @ 2016-03-28  6:19 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, Andrew Morton, Hugh Dickins, Johannes Berg,
	David S. Miller, Sunil Goutham, Linux Memory Management List,
	LKML, Joonsoo Kim

2016-03-28 15:07 GMT+09:00 kbuild test robot <lkp@intel.com>:
> Hi Joonsoo,
>
> [auto build test ERROR on net/master]
> [also build test ERROR on v4.6-rc1 next-20160327]
> [if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

Hello, bot.

Is there any way to stop further warning if I recognize that there is a mistake?

Thanks.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-03-28  6:19 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-28  5:59 [PATCH 1/2] mm/page_ref: use page_ref helper instead of direct modification of _count js1304
2016-03-28  5:59 ` [PATCH 2/2] mm: rename _count, field of the struct page, to _refcount js1304
2016-03-28  6:05   ` Joonsoo Kim
2016-03-28  6:07   ` kbuild test robot
2016-03-28  6:19     ` Joonsoo Kim
2016-03-28  6:11   ` kbuild test robot
2016-03-28  6:14   ` kbuild test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox