From: Andrew Morton <akpm@linux-foundation.org>
To: "chenjianhong (A)" <chenjianhong2@huawei.com>
Cc: Michel Lespinasse <walken@google.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"mhocko@suse.com" <mhocko@suse.com>,
"Vlastimil Babka" <vbabka@suse.cz>,
"Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>,
Yang Shi <yang.shi@linux.alibaba.com>,
"jannh@google.com" <jannh@google.com>,
"steve.capper@arm.com" <steve.capper@arm.com>,
"tiny.windzz@gmail.com" <tiny.windzz@gmail.com>,
LKML <linux-kernel@vger.kernel.org>,
linux-mm <linux-mm@kvack.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>,
"willy@infradead.org" <willy@infradead.org>
Subject: Re: [PATCH] mm/mmap: fix the adjusted length error
Date: Thu, 11 Jul 2019 18:20:02 -0700 [thread overview]
Message-ID: <20190711182002.9bb943006da6b61ab66b95fd@linux-foundation.org> (raw)
In-Reply-To: <df001b6fbe2a4bdc86999c78933dab7f@huawei.com>
On Sat, 18 May 2019 07:05:07 +0000 "chenjianhong (A)" <chenjianhong2@huawei.com> wrote:
> I explain my test code and the problem in detail. This problem is found in
> 32-bit user process, because its virtual is limited, 3G or 4G.
>
> First, I explain the bug I found. Function unmapped_area and
> unmapped_area_topdowns adjust search length to account for worst
> case alignment overhead, the code is ' length = info->length + info->align_mask; '.
> The variable info->length is the length we allocate and the variable
> info->align_mask accounts for the alignment, because the gap_start or gap_end
> value also should be an alignment address, but we can't know the alignment offset.
> So in the current algorithm, it uses the max alignment offset, this value maybe zero
> or other(0x1ff000 for shmat function).
> Is it reasonable way? The required value is longer than what I allocate.
> What's more, why for the first time I can allocate the memory successfully
> Via shmat, but after releasing the memory via shmdt and I want to attach
> again, it fails. This is not acceptable for many people.
>
> Second, I explain my test code. The code I have sent an email. The following is
> the step. I don't think it's something unusual or unreasonable, because the virtual
> memory space is enough, but the process can allocate from it. And we can't pass
> explicit addresses to function mmap or shmat, the address is getting from the left
> vma gap.
> 1, we allocat large virtual memory;
> 2, we allocate hugepage memory via shmat, and release one
> of the hugepage memory block;
> 3, we allocate hugepage memory by shmat again, this will fail.
How significant is this problem in real-world use cases? How much
trouble is it causing?
> Third, I want to introduce my change in the current algorithm. I don't change the
> current algorithm. Also, I think there maybe a better way to fix this error. Nowadays,
> I can just adjust the gap_start value.
Have you looked further into this? Michel is concerned about the
performance cost of the current solution.
next prev parent reply other threads:[~2019-07-12 1:20 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-17 6:06 [PATCH] mm/mmap: fix the adjusted length error jianhong chen
2019-05-18 0:12 ` Michel Lespinasse
2019-05-18 7:05 ` chenjianhong (A)
2019-07-12 1:20 ` Andrew Morton [this message]
2019-07-12 10:53 ` chenjianhong (A)
2019-07-12 17:00 ` Michel Lespinasse
2019-05-18 8:50 jianhong chen
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=20190711182002.9bb943006da6b61ab66b95fd@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=chenjianhong2@huawei.com \
--cc=gregkh@linuxfoundation.org \
--cc=jannh@google.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=stable@vger.kernel.org \
--cc=steve.capper@arm.com \
--cc=tiny.windzz@gmail.com \
--cc=vbabka@suse.cz \
--cc=walken@google.com \
--cc=willy@infradead.org \
--cc=yang.shi@linux.alibaba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).