All of lore.kernel.org
 help / color / mirror / Atom feed
From: Miaohe Lin <linmiaohe@huawei.com>
To: <akpm@linux-foundation.org>
Cc: <vitalywool@gmail.com>, <linux-kernel@vger.kernel.org>,
	<linux-mm@kvack.org>, <linmiaohe@huawei.com>
Subject: [PATCH 2/6] mm/z3fold: avoid possible underflow in z3fold_alloc()
Date: Sat, 19 Jun 2021 17:31:47 +0800	[thread overview]
Message-ID: <20210619093151.1492174-3-linmiaohe@huawei.com> (raw)
In-Reply-To: <20210619093151.1492174-1-linmiaohe@huawei.com>

It is not enough to just make sure the z3fold header is not larger than the
page size. When z3fold header is equal to PAGE_SIZE, we would underflow
when check alloc size against PAGE_SIZE - ZHDR_SIZE_ALIGNED - CHUNK_SIZE
in z3fold_alloc(). Make sure there has remaining spaces for its buddy to
fix this theoretical issue.

Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
---
This causes the below checkpatch warning:
WARNING: Comparisons should place the constant on the right side of the
test
#31: FILE: mm/z3fold.c:1812:
+       BUILD_BUG_ON(ZHDR_SIZE_ALIGNED > PAGE_SIZE - CHUNK_SIZE);

But I think the error is false positives as all members are constant.
---
 mm/z3fold.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/mm/z3fold.c b/mm/z3fold.c
index 04d0e493bd2e..e261e14b7753 100644
--- a/mm/z3fold.c
+++ b/mm/z3fold.c
@@ -1805,8 +1805,11 @@ static int __init init_z3fold(void)
 {
 	int ret;
 
-	/* Make sure the z3fold header is not larger than the page size */
-	BUILD_BUG_ON(ZHDR_SIZE_ALIGNED > PAGE_SIZE);
+	/*
+	 * Make sure the z3fold header is not larger than the page size and
+	 * there has remaining spaces for its buddy.
+	 */
+	BUILD_BUG_ON(ZHDR_SIZE_ALIGNED > PAGE_SIZE - CHUNK_SIZE);
 	ret = z3fold_mount();
 	if (ret)
 		return ret;
-- 
2.23.0


  parent reply	other threads:[~2021-06-19  9:32 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-19  9:31 [PATCH 0/6] Cleanup and fixup for z3fold Miaohe Lin
2021-06-19  9:31 ` [PATCH 1/6] mm/z3fold: define macro NCHUNKS as TOTAL_CHUNKS - ZHDR_CHUNKS Miaohe Lin
2021-06-19  9:31 ` Miaohe Lin [this message]
2021-06-19  9:31 ` [PATCH 3/6] mm/z3fold: remove magic number in z3fold_create_pool() Miaohe Lin
2021-06-19  9:31 ` [PATCH 4/6] mm/z3fold: remove unused function handle_to_z3fold_header() Miaohe Lin
2021-06-19  9:31 ` [PATCH 5/6] mm/z3fold: fix potential memory leak in z3fold_destroy_pool() Miaohe Lin
2021-06-19  9:31 ` [PATCH 6/6] mm/z3fold: use release_z3fold_page_locked() to release locked z3fold page Miaohe Lin
2021-06-20  0:26   ` Hillf Danton
2021-06-22 13:49     ` Miaohe Lin
2021-06-21  8:00 ` [PATCH 0/6] Cleanup and fixup for z3fold Vitaly Wool

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=20210619093151.1492174-3-linmiaohe@huawei.com \
    --to=linmiaohe@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=vitalywool@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.