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: zsmalloc: zs_compact refactoring
Date: Mon, 4 Apr 2016 23:39:52 +0300	[thread overview]
Message-ID: <20160404203952.GA8379@mwanda> (raw)

Hello Minchan Kim,

The patch 9a0346061ab8: "zsmalloc: zs_compact refactoring" from Apr
2, 2016, leads to the following static checker warning:

	mm/zsmalloc.c:1851 handle_from_obj()
	warn: bit shifter 'OBJ_ALLOCATED_TAG' used for logical '&'

mm/zsmalloc.c
  1622  static unsigned long obj_malloc(struct size_class *class,
  1623                                  struct page *first_page, unsigned long handle)
  1624  {
  1625          unsigned long obj;
  1626          struct link_free *link;
  1627  
  1628          struct page *m_page;
  1629          unsigned long m_offset;
  1630          void *vaddr;
  1631  
  1632          obj = get_freeobj(first_page);
  1633          objidx_to_page_and_offset(class, first_page, obj,
  1634                                  &m_page, &m_offset);
  1635  
  1636          vaddr = kmap_atomic(m_page);
  1637          link = (struct link_free *)vaddr + m_offset / sizeof(*link);
  1638          set_freeobj(first_page, link->next >> OBJ_ALLOCATED_TAG);
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
OBJ_ALLOCATED_TAG is 1.  Here it's used as a shifter.

  1639          if (!class->huge)
  1640                  /* record handle in the header of allocated chunk */
  1641                  link->handle = handle | OBJ_ALLOCATED_TAG;

Here it's a bit mask.  It's sort of confusing to re-use it like this.
It's done through out the file.

  1642          else
  1643                  /* record handle in first_page->private */
  1644                  set_page_private(first_page, handle | OBJ_ALLOCATED_TAG);
  1645          kunmap_atomic(vaddr);
  1646          mod_zspage_inuse(first_page, 1);
  1647  
  1648          obj = location_to_obj(m_page, obj);
  1649  
  1650          return obj;
  1651  }

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-04-04 20:40 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-04 20:39 Dan Carpenter [this message]
2016-04-07  2:39 ` zsmalloc: zs_compact refactoring 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=20160404203952.GA8379@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.