* [PATCH 0/4] mm/madvise: cleanup requests validations and classifications
@ 2025-03-12 16:47 SeongJae Park
2025-03-12 16:47 ` [PATCH 1/4] mm/madvise: use is_memory_failure() from madvise_do_behavior() SeongJae Park
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: SeongJae Park @ 2025-03-12 16:47 UTC (permalink / raw)
To: Andrew Morton
Cc: SeongJae Park, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Shakeel Butt, Vlastimil Babka, kernel-team,
linux-kernel, linux-mm
Cleanup madvise entry level code for cleaner request validations and
classifications.
Note that this series was a part of another one[1], and separated to
this one following a reviewer's nice comment[2].
Changes from the original series
(https://lore.kernel.org/20250310172318.653630-1-sj@kernel.org)
- Separate from the tlb flushes batching part
- Collect Reviewed-by: tags from Lorenzo
- Fix typos and wordsmith commit messages and comments
- Rebase on latest mm-unstable
[1] https://lore.kernel.org/20250310172318.653630-1-sj@kernel.org
[2] https://lore.kernel.org/0f90d56e-5960-4478-803e-1054696c0cde@lucifer.local
SeongJae Park (4):
mm/madvise: use is_memory_failure() from madvise_do_behavior()
mm/madvise: split out populate behavior check logic
mm/madvise: deduplicate madvise_do_behavior() skip case handlings
mm/madvise: remove len parameter of madvise_do_behavior()
mm/madvise.c | 128 +++++++++++++++++++++++++++++----------------------
1 file changed, 74 insertions(+), 54 deletions(-)
base-commit: 733c75c2264b9de72a463f731507e674a32ff094
--
2.39.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/4] mm/madvise: use is_memory_failure() from madvise_do_behavior()
2025-03-12 16:47 [PATCH 0/4] mm/madvise: cleanup requests validations and classifications SeongJae Park
@ 2025-03-12 16:47 ` SeongJae Park
2025-03-12 20:52 ` Shakeel Butt
2025-03-12 16:47 ` [PATCH 2/4] mm/madvise: split out populate behavior check logic SeongJae Park
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: SeongJae Park @ 2025-03-12 16:47 UTC (permalink / raw)
To: Andrew Morton
Cc: SeongJae Park, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Shakeel Butt, Vlastimil Babka, kernel-team,
linux-kernel, linux-mm
To reduce redundant open-coded checks of CONFIG_MEMORY_FAILURE and
MADV_{HWPOISON,SOFT_OFFLINE} in madvise_[un]lock(), is_memory_failure()
is introduced. madvise_do_behavior() is still doing the same open-coded
check, though. Use is_memory_failure() instead.
To avoid build failure on !CONFIG_MEMORY_FAILURE case, implement an
empty madvise_inject_error() under the config. Also move the definition
of is_memory_failure() inside #ifdef CONFIG_MEMORY_FAILURE clause for
madvise_inject_error() definition, to reduce duplicated ifdef clauses.
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
---
mm/madvise.c | 49 +++++++++++++++++++++++++++----------------------
1 file changed, 27 insertions(+), 22 deletions(-)
diff --git a/mm/madvise.c b/mm/madvise.c
index 388dc289b5d1..c3ab1f283b18 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -1392,7 +1392,32 @@ static int madvise_inject_error(int behavior,
return 0;
}
-#endif
+
+static bool is_memory_failure(int behavior)
+{
+ switch (behavior) {
+ case MADV_HWPOISON:
+ case MADV_SOFT_OFFLINE:
+ return true;
+ default:
+ return false;
+ }
+}
+
+#else
+
+static int madvise_inject_error(int behavior,
+ unsigned long start, unsigned long end)
+{
+ return 0;
+}
+
+static bool is_memory_failure(int behavior)
+{
+ return false;
+}
+
+#endif /* CONFIG_MEMORY_FAILURE */
static bool
madvise_behavior_valid(int behavior)
@@ -1569,24 +1594,6 @@ int madvise_set_anon_name(struct mm_struct *mm, unsigned long start,
}
#endif /* CONFIG_ANON_VMA_NAME */
-#ifdef CONFIG_MEMORY_FAILURE
-static bool is_memory_failure(int behavior)
-{
- switch (behavior) {
- case MADV_HWPOISON:
- case MADV_SOFT_OFFLINE:
- return true;
- default:
- return false;
- }
-}
-#else
-static bool is_memory_failure(int behavior)
-{
- return false;
-}
-#endif
-
static int madvise_lock(struct mm_struct *mm, int behavior)
{
if (is_memory_failure(behavior))
@@ -1640,10 +1647,8 @@ static int madvise_do_behavior(struct mm_struct *mm,
unsigned long end;
int error;
-#ifdef CONFIG_MEMORY_FAILURE
- if (behavior == MADV_HWPOISON || behavior == MADV_SOFT_OFFLINE)
+ if (is_memory_failure(behavior))
return madvise_inject_error(behavior, start, start + len_in);
-#endif
start = untagged_addr_remote(mm, start);
end = start + len;
--
2.39.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/4] mm/madvise: split out populate behavior check logic
2025-03-12 16:47 [PATCH 0/4] mm/madvise: cleanup requests validations and classifications SeongJae Park
2025-03-12 16:47 ` [PATCH 1/4] mm/madvise: use is_memory_failure() from madvise_do_behavior() SeongJae Park
@ 2025-03-12 16:47 ` SeongJae Park
2025-03-12 20:53 ` Shakeel Butt
2025-03-12 16:47 ` [PATCH 3/4] mm/madvise: deduplicate madvise_do_behavior() skip case handlings SeongJae Park
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: SeongJae Park @ 2025-03-12 16:47 UTC (permalink / raw)
To: Andrew Morton
Cc: SeongJae Park, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Shakeel Butt, Vlastimil Babka, kernel-team,
linux-kernel, linux-mm
madvise_do_behavior() has a long open-coded 'behavior' check for
MADV_POPULATE_{READ,WRITE}. It adds multiple layers[1] and make the
code arguably take longer time to read. Like is_memory_failure(), split
out the check to a separate function. This is not technically removing
the additional layer but discourage further extending the switch-case.
Also it makes madvise_do_behavior() code shorter and therefore easier to
read.
[1] https://lore.kernel.org/bd6d0bf1-c79e-46bd-a810-9791efb9ad73@lucifer.local
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
---
mm/madvise.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/mm/madvise.c b/mm/madvise.c
index c3ab1f283b18..611db868ae38 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -1640,6 +1640,17 @@ static bool is_valid_madvise(unsigned long start, size_t len_in, int behavior)
return true;
}
+static bool is_madvise_populate(int behavior)
+{
+ switch (behavior) {
+ case MADV_POPULATE_READ:
+ case MADV_POPULATE_WRITE:
+ return true;
+ default:
+ return false;
+ }
+}
+
static int madvise_do_behavior(struct mm_struct *mm,
unsigned long start, size_t len_in, size_t len, int behavior)
{
@@ -1653,16 +1664,11 @@ static int madvise_do_behavior(struct mm_struct *mm,
end = start + len;
blk_start_plug(&plug);
- switch (behavior) {
- case MADV_POPULATE_READ:
- case MADV_POPULATE_WRITE:
+ if (is_madvise_populate(behavior))
error = madvise_populate(mm, start, end, behavior);
- break;
- default:
+ else
error = madvise_walk_vmas(mm, start, end, behavior,
madvise_vma_behavior);
- break;
- }
blk_finish_plug(&plug);
return error;
}
--
2.39.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/4] mm/madvise: deduplicate madvise_do_behavior() skip case handlings
2025-03-12 16:47 [PATCH 0/4] mm/madvise: cleanup requests validations and classifications SeongJae Park
2025-03-12 16:47 ` [PATCH 1/4] mm/madvise: use is_memory_failure() from madvise_do_behavior() SeongJae Park
2025-03-12 16:47 ` [PATCH 2/4] mm/madvise: split out populate behavior check logic SeongJae Park
@ 2025-03-12 16:47 ` SeongJae Park
2025-03-12 20:53 ` Shakeel Butt
2025-03-12 16:47 ` [PATCH 4/4] mm/madvise: remove len parameter of madvise_do_behavior() SeongJae Park
2025-03-13 5:30 ` [PATCH 0/4] mm/madvise: cleanup requests validations and classifications Lorenzo Stoakes
4 siblings, 1 reply; 10+ messages in thread
From: SeongJae Park @ 2025-03-12 16:47 UTC (permalink / raw)
To: Andrew Morton
Cc: SeongJae Park, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Shakeel Butt, Vlastimil Babka, kernel-team,
linux-kernel, linux-mm
The logic for checking if a given madvise() request for a single memory
range can skip real work, namely madvise_do_behavior(), is duplicated in
do_madvise() and vector_madvise(). Split out the logic to a function
and reuse it.
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
---
mm/madvise.c | 57 +++++++++++++++++++++++++++++++---------------------
1 file changed, 34 insertions(+), 23 deletions(-)
diff --git a/mm/madvise.c b/mm/madvise.c
index 611db868ae38..ba006d05c7ea 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -1640,6 +1640,31 @@ static bool is_valid_madvise(unsigned long start, size_t len_in, int behavior)
return true;
}
+/*
+ * madvise_should_skip() - Return if the request is invalid or nothing.
+ * @start: Start address of madvise-requested address range.
+ * @len_in: Length of madvise-requested address range.
+ * @behavior: Requested madvise behavor.
+ * @err: Pointer to store an error code from the check.
+ *
+ * If the specified behaviour is invalid or nothing would occur, we skip the
+ * operation. This function returns true in the cases, otherwise false. In
+ * the former case we store an error on @err.
+ */
+static bool madvise_should_skip(unsigned long start, size_t len_in,
+ int behavior, int *err)
+{
+ if (!is_valid_madvise(start, len_in, behavior)) {
+ *err = -EINVAL;
+ return true;
+ }
+ if (start + PAGE_ALIGN(len_in) == start) {
+ *err = 0;
+ return true;
+ }
+ return false;
+}
+
static bool is_madvise_populate(int behavior)
{
switch (behavior) {
@@ -1747,23 +1772,15 @@ static int madvise_do_behavior(struct mm_struct *mm,
*/
int do_madvise(struct mm_struct *mm, unsigned long start, size_t len_in, int behavior)
{
- unsigned long end;
int error;
- size_t len;
-
- if (!is_valid_madvise(start, len_in, behavior))
- return -EINVAL;
-
- len = PAGE_ALIGN(len_in);
- end = start + len;
-
- if (end == start)
- return 0;
+ if (madvise_should_skip(start, len_in, behavior, &error))
+ return error;
error = madvise_lock(mm, behavior);
if (error)
return error;
- error = madvise_do_behavior(mm, start, len_in, len, behavior);
+ error = madvise_do_behavior(mm, start, len_in, PAGE_ALIGN(len_in),
+ behavior);
madvise_unlock(mm, behavior);
return error;
@@ -1790,19 +1807,13 @@ static ssize_t vector_madvise(struct mm_struct *mm, struct iov_iter *iter,
while (iov_iter_count(iter)) {
unsigned long start = (unsigned long)iter_iov_addr(iter);
size_t len_in = iter_iov_len(iter);
- size_t len;
-
- if (!is_valid_madvise(start, len_in, behavior)) {
- ret = -EINVAL;
- break;
- }
+ int error;
- len = PAGE_ALIGN(len_in);
- if (start + len == start)
- ret = 0;
+ if (madvise_should_skip(start, len_in, behavior, &error))
+ ret = error;
else
- ret = madvise_do_behavior(mm, start, len_in, len,
- behavior);
+ ret = madvise_do_behavior(mm, start, len_in,
+ PAGE_ALIGN(len_in), behavior);
/*
* An madvise operation is attempting to restart the syscall,
* but we cannot proceed as it would not be correct to repeat
--
2.39.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/4] mm/madvise: remove len parameter of madvise_do_behavior()
2025-03-12 16:47 [PATCH 0/4] mm/madvise: cleanup requests validations and classifications SeongJae Park
` (2 preceding siblings ...)
2025-03-12 16:47 ` [PATCH 3/4] mm/madvise: deduplicate madvise_do_behavior() skip case handlings SeongJae Park
@ 2025-03-12 16:47 ` SeongJae Park
2025-03-12 20:54 ` Shakeel Butt
2025-03-13 5:30 ` [PATCH 0/4] mm/madvise: cleanup requests validations and classifications Lorenzo Stoakes
4 siblings, 1 reply; 10+ messages in thread
From: SeongJae Park @ 2025-03-12 16:47 UTC (permalink / raw)
To: Andrew Morton
Cc: SeongJae Park, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Shakeel Butt, Vlastimil Babka, kernel-team,
linux-kernel, linux-mm
Because madise_should_skip() logic is factored out, making
madvise_do_behavior() calculates 'len' on its own rather then receiving
it as a parameter makes code simpler. Remove the parameter.
Signed-off-by: SeongJae Park <sj@kernel.org>
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
---
mm/madvise.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/mm/madvise.c b/mm/madvise.c
index ba006d05c7ea..b17f684322ad 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -1677,7 +1677,7 @@ static bool is_madvise_populate(int behavior)
}
static int madvise_do_behavior(struct mm_struct *mm,
- unsigned long start, size_t len_in, size_t len, int behavior)
+ unsigned long start, size_t len_in, int behavior)
{
struct blk_plug plug;
unsigned long end;
@@ -1686,7 +1686,7 @@ static int madvise_do_behavior(struct mm_struct *mm,
if (is_memory_failure(behavior))
return madvise_inject_error(behavior, start, start + len_in);
start = untagged_addr_remote(mm, start);
- end = start + len;
+ end = start + PAGE_ALIGN(len_in);
blk_start_plug(&plug);
if (is_madvise_populate(behavior))
@@ -1779,8 +1779,7 @@ int do_madvise(struct mm_struct *mm, unsigned long start, size_t len_in, int beh
error = madvise_lock(mm, behavior);
if (error)
return error;
- error = madvise_do_behavior(mm, start, len_in, PAGE_ALIGN(len_in),
- behavior);
+ error = madvise_do_behavior(mm, start, len_in, behavior);
madvise_unlock(mm, behavior);
return error;
@@ -1812,8 +1811,7 @@ static ssize_t vector_madvise(struct mm_struct *mm, struct iov_iter *iter,
if (madvise_should_skip(start, len_in, behavior, &error))
ret = error;
else
- ret = madvise_do_behavior(mm, start, len_in,
- PAGE_ALIGN(len_in), behavior);
+ ret = madvise_do_behavior(mm, start, len_in, behavior);
/*
* An madvise operation is attempting to restart the syscall,
* but we cannot proceed as it would not be correct to repeat
--
2.39.5
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/4] mm/madvise: use is_memory_failure() from madvise_do_behavior()
2025-03-12 16:47 ` [PATCH 1/4] mm/madvise: use is_memory_failure() from madvise_do_behavior() SeongJae Park
@ 2025-03-12 20:52 ` Shakeel Butt
0 siblings, 0 replies; 10+ messages in thread
From: Shakeel Butt @ 2025-03-12 20:52 UTC (permalink / raw)
To: SeongJae Park
Cc: Andrew Morton, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Vlastimil Babka, kernel-team, linux-kernel,
linux-mm
On Wed, Mar 12, 2025 at 09:47:47AM -0700, SeongJae Park wrote:
> To reduce redundant open-coded checks of CONFIG_MEMORY_FAILURE and
> MADV_{HWPOISON,SOFT_OFFLINE} in madvise_[un]lock(), is_memory_failure()
> is introduced. madvise_do_behavior() is still doing the same open-coded
> check, though. Use is_memory_failure() instead.
>
> To avoid build failure on !CONFIG_MEMORY_FAILURE case, implement an
> empty madvise_inject_error() under the config. Also move the definition
> of is_memory_failure() inside #ifdef CONFIG_MEMORY_FAILURE clause for
> madvise_inject_error() definition, to reduce duplicated ifdef clauses.
>
> Signed-off-by: SeongJae Park <sj@kernel.org>
> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] mm/madvise: split out populate behavior check logic
2025-03-12 16:47 ` [PATCH 2/4] mm/madvise: split out populate behavior check logic SeongJae Park
@ 2025-03-12 20:53 ` Shakeel Butt
0 siblings, 0 replies; 10+ messages in thread
From: Shakeel Butt @ 2025-03-12 20:53 UTC (permalink / raw)
To: SeongJae Park
Cc: Andrew Morton, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Vlastimil Babka, kernel-team, linux-kernel,
linux-mm
On Wed, Mar 12, 2025 at 09:47:48AM -0700, SeongJae Park wrote:
> madvise_do_behavior() has a long open-coded 'behavior' check for
> MADV_POPULATE_{READ,WRITE}. It adds multiple layers[1] and make the
> code arguably take longer time to read. Like is_memory_failure(), split
> out the check to a separate function. This is not technically removing
> the additional layer but discourage further extending the switch-case.
> Also it makes madvise_do_behavior() code shorter and therefore easier to
> read.
>
> [1] https://lore.kernel.org/bd6d0bf1-c79e-46bd-a810-9791efb9ad73@lucifer.local
>
> Signed-off-by: SeongJae Park <sj@kernel.org>
> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] mm/madvise: deduplicate madvise_do_behavior() skip case handlings
2025-03-12 16:47 ` [PATCH 3/4] mm/madvise: deduplicate madvise_do_behavior() skip case handlings SeongJae Park
@ 2025-03-12 20:53 ` Shakeel Butt
0 siblings, 0 replies; 10+ messages in thread
From: Shakeel Butt @ 2025-03-12 20:53 UTC (permalink / raw)
To: SeongJae Park
Cc: Andrew Morton, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Vlastimil Babka, kernel-team, linux-kernel,
linux-mm
On Wed, Mar 12, 2025 at 09:47:49AM -0700, SeongJae Park wrote:
> The logic for checking if a given madvise() request for a single memory
> range can skip real work, namely madvise_do_behavior(), is duplicated in
> do_madvise() and vector_madvise(). Split out the logic to a function
> and reuse it.
>
> Signed-off-by: SeongJae Park <sj@kernel.org>
> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] mm/madvise: remove len parameter of madvise_do_behavior()
2025-03-12 16:47 ` [PATCH 4/4] mm/madvise: remove len parameter of madvise_do_behavior() SeongJae Park
@ 2025-03-12 20:54 ` Shakeel Butt
0 siblings, 0 replies; 10+ messages in thread
From: Shakeel Butt @ 2025-03-12 20:54 UTC (permalink / raw)
To: SeongJae Park
Cc: Andrew Morton, Liam R. Howlett, David Hildenbrand,
Lorenzo Stoakes, Vlastimil Babka, kernel-team, linux-kernel,
linux-mm
On Wed, Mar 12, 2025 at 09:47:50AM -0700, SeongJae Park wrote:
> Because madise_should_skip() logic is factored out, making
> madvise_do_behavior() calculates 'len' on its own rather then receiving
> it as a parameter makes code simpler. Remove the parameter.
>
> Signed-off-by: SeongJae Park <sj@kernel.org>
> Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Reviewed-by: Shakeel Butt <shakeel.butt@linux.dev>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/4] mm/madvise: cleanup requests validations and classifications
2025-03-12 16:47 [PATCH 0/4] mm/madvise: cleanup requests validations and classifications SeongJae Park
` (3 preceding siblings ...)
2025-03-12 16:47 ` [PATCH 4/4] mm/madvise: remove len parameter of madvise_do_behavior() SeongJae Park
@ 2025-03-13 5:30 ` Lorenzo Stoakes
4 siblings, 0 replies; 10+ messages in thread
From: Lorenzo Stoakes @ 2025-03-13 5:30 UTC (permalink / raw)
To: SeongJae Park
Cc: Andrew Morton, Liam R. Howlett, David Hildenbrand, Shakeel Butt,
Vlastimil Babka, kernel-team, linux-kernel, linux-mm
On Wed, Mar 12, 2025 at 09:47:46AM -0700, SeongJae Park wrote:
> Cleanup madvise entry level code for cleaner request validations and
> classifications.
>
> Note that this series was a part of another one[1], and separated to
> this one following a reviewer's nice comment[2].
Thanks :>)
>
> Changes from the original series
> (https://lore.kernel.org/20250310172318.653630-1-sj@kernel.org)
> - Separate from the tlb flushes batching part
> - Collect Reviewed-by: tags from Lorenzo
> - Fix typos and wordsmith commit messages and comments
> - Rebase on latest mm-unstable
>
> [1] https://lore.kernel.org/20250310172318.653630-1-sj@kernel.org
> [2] https://lore.kernel.org/0f90d56e-5960-4478-803e-1054696c0cde@lucifer.local
>
> SeongJae Park (4):
> mm/madvise: use is_memory_failure() from madvise_do_behavior()
> mm/madvise: split out populate behavior check logic
> mm/madvise: deduplicate madvise_do_behavior() skip case handlings
> mm/madvise: remove len parameter of madvise_do_behavior()
>
> mm/madvise.c | 128 +++++++++++++++++++++++++++++----------------------
> 1 file changed, 74 insertions(+), 54 deletions(-)
>
>
> base-commit: 733c75c2264b9de72a463f731507e674a32ff094
> --
> 2.39.5
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-03-13 5:30 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 16:47 [PATCH 0/4] mm/madvise: cleanup requests validations and classifications SeongJae Park
2025-03-12 16:47 ` [PATCH 1/4] mm/madvise: use is_memory_failure() from madvise_do_behavior() SeongJae Park
2025-03-12 20:52 ` Shakeel Butt
2025-03-12 16:47 ` [PATCH 2/4] mm/madvise: split out populate behavior check logic SeongJae Park
2025-03-12 20:53 ` Shakeel Butt
2025-03-12 16:47 ` [PATCH 3/4] mm/madvise: deduplicate madvise_do_behavior() skip case handlings SeongJae Park
2025-03-12 20:53 ` Shakeel Butt
2025-03-12 16:47 ` [PATCH 4/4] mm/madvise: remove len parameter of madvise_do_behavior() SeongJae Park
2025-03-12 20:54 ` Shakeel Butt
2025-03-13 5:30 ` [PATCH 0/4] mm/madvise: cleanup requests validations and classifications Lorenzo Stoakes
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.