All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: minchan@kernel.org
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>,
	linux-mm@kvack.org
Subject: re: mm: add NR_ZSMALLOC to vmstat
Date: Mon, 6 Jun 2016 23:05:38 +0300	[thread overview]
Message-ID: <20160606200538.GA31983@mwanda> (raw)

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.

  1156                          }
  1157                          cache_free_zspage(pool, zspage);
  1158                          return NULL;
  1159                  }
  1160  
  1161                  inc_zone_page_state(page, NR_ZSMALLOC);
  1162                  pages[i] = page;
  1163          }
  1164  
  1165          create_page_chain(class, zspage, pages);
  1166          init_zspage(class, zspage);
  1167  
  1168          return zspage;
  1169  }


regards,
dan carpenter

--
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>

             reply	other threads:[~2016-06-06 20:05 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-06 20:05 Dan Carpenter [this message]
2016-06-07  2:21 ` mm: add NR_ZSMALLOC to vmstat Minchan Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160606200538.GA31983@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=sergey.senozhatsky.work@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.