Re: mm: add NR_ZSMALLOC to vmstat

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello Dan,

On Mon, Jun 06, 2016 at 11:05:38PM +0300, Dan Carpenter wrote:
> Hello Minchan Kim,
> 
> The patch b37284200b39: "mm: add NR_ZSMALLOC to vmstat" from Jun 5,
> 2016, leads to the following static checker warning:
> 
> 	mm/zsmalloc.c:1155 alloc_zspage()
> 	error: we previously assumed 'page' could be null (see line 1152)
> 
> mm/zsmalloc.c
>   1130  /*
>   1131   * Allocate a zspage for the given size class
>   1132   */
>   1133  static struct zspage *alloc_zspage(struct zs_pool *pool,
>   1134                                          struct size_class *class,
>   1135                                          gfp_t gfp)
>   1136  {
>   1137          int i;
>   1138          struct page *pages[ZS_MAX_PAGES_PER_ZSPAGE];
>   1139          struct zspage *zspage = cache_alloc_zspage(pool, gfp);
>   1140  
>   1141          if (!zspage)
>   1142                  return NULL;
>   1143  
>   1144          memset(zspage, 0, sizeof(struct zspage));
>   1145          zspage->magic = ZSPAGE_MAGIC;
>   1146          migrate_lock_init(zspage);
>   1147  
>   1148          for (i = 0; i < class->pages_per_zspage; i++) {
>   1149                  struct page *page;
>   1150  
>   1151                  page = alloc_page(gfp);
>   1152                  if (!page) {
>                              ^^^^
>   1153                          while (--i >= 0) {
>   1154                                  __free_page(pages[i]);
>   1155                                  dec_zone_page_state(page, NR_ZSMALLOC);
>                                                             ^^^^
> Potential NULL deref inside function call.

Strictly speaking, it shouldn't be a problem because zone bit encoded
in page->flags is never changed although it is freed but I admit its'
not good pracice. I will send fix.

Thanks!

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



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]