diff mbox series

mm/ksm: remove redundant code in ksm_fork

Message ID 20240402024934.1093361-1-tujinjiang@huawei.com (mailing list archive)
State New
Headers show
Series mm/ksm: remove redundant code in ksm_fork | expand

Commit Message

Jinjiang Tu April 2, 2024, 2:49 a.m. UTC
Since commit 3c6f33b7273a ("mm/ksm: support fork/exec for prctl"), when a
child process is forked, the MMF_VM_MERGE_ANY flag will be inherited in
mm_init(). So, it's unnecessary to set the flag in ksm_fork().

Signed-off-by: Jinjiang Tu <tujinjiang@huawei.com>
---
 include/linux/ksm.h | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)

Comments

Andrew Morton April 4, 2024, 1:45 a.m. UTC | #1
On Tue, 2 Apr 2024 10:49:34 +0800 Jinjiang Tu <tujinjiang@huawei.com> wrote:

> Since commit 3c6f33b7273a ("mm/ksm: support fork/exec for prctl"), when a
> child process is forked, the MMF_VM_MERGE_ANY flag will be inherited in
> mm_init(). So, it's unnecessary to set the flag in ksm_fork().
> 
> ...
>
> --- a/include/linux/ksm.h
> +++ b/include/linux/ksm.h
> @@ -45,16 +45,8 @@ static inline void ksm_might_unmap_zero_page(struct mm_struct *mm, pte_t pte)
>  
>  static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm)
>  {
> -	int ret;
> -
> -	if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags)) {
> -		ret = __ksm_enter(mm);
> -		if (ret)
> -			return ret;
> -	}
> -
> -	if (test_bit(MMF_VM_MERGE_ANY, &oldmm->flags))
> -		set_bit(MMF_VM_MERGE_ANY, &mm->flags);
> +	if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags))
> +		return __ksm_enter(mm);
>  
>  	return 0;

Thanks, I shall queue this up for testing and shall await review input
from Stefan and hopefully others.
Jinjiang Tu April 6, 2024, 11:37 p.m. UTC | #2
在 2024/4/4 23:34, David Hildenbrand 写道:
> On 02.04.24 04:49, Jinjiang Tu wrote:
>> Since commit 3c6f33b7273a ("mm/ksm: support fork/exec for prctl"), 
>> when a
>> child process is forked, the MMF_VM_MERGE_ANY flag will be inherited in
>> mm_init(). So, it's unnecessary to set the flag in ksm_fork().
>>
>> Signed-off-by: Jinjiang Tu <tujinjiang@huawei.com>
>> ---
>>   include/linux/ksm.h | 12 ++----------
>>   1 file changed, 2 insertions(+), 10 deletions(-)
>>
>> diff --git a/include/linux/ksm.h b/include/linux/ksm.h
>> index 401348e9f92b..2e61df795803 100644
>> --- a/include/linux/ksm.h
>> +++ b/include/linux/ksm.h
>> @@ -45,16 +45,8 @@ static inline void 
>> ksm_might_unmap_zero_page(struct mm_struct *mm, pte_t pte)
>>     static inline int ksm_fork(struct mm_struct *mm, struct mm_struct 
>> *oldmm)
>>   {
>> -    int ret;
>> -
>> -    if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags)) {
>> -        ret = __ksm_enter(mm);
>> -        if (ret)
>> -            return ret;
>> -    }
>> -
>> -    if (test_bit(MMF_VM_MERGE_ANY, &oldmm->flags))
>> -        set_bit(MMF_VM_MERGE_ANY, &mm->flags);
>> +    if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags))
>> +        return __ksm_enter(mm);
>>         return 0;
>>   }
>
> I *think* this is correct. :)
>
> Did you run the new ksm_functional_tests in mm/mm-unstable to make 
> sure they still pass? If so
>
> Reviewed-by: David Hildenbrand <david@redhat.com>

Sorry for late reply, I was on holiday.

I have run the new ksm_functional_tests and the testcases still pass.
diff mbox series

Patch

diff --git a/include/linux/ksm.h b/include/linux/ksm.h
index 401348e9f92b..2e61df795803 100644
--- a/include/linux/ksm.h
+++ b/include/linux/ksm.h
@@ -45,16 +45,8 @@  static inline void ksm_might_unmap_zero_page(struct mm_struct *mm, pte_t pte)
 
 static inline int ksm_fork(struct mm_struct *mm, struct mm_struct *oldmm)
 {
-	int ret;
-
-	if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags)) {
-		ret = __ksm_enter(mm);
-		if (ret)
-			return ret;
-	}
-
-	if (test_bit(MMF_VM_MERGE_ANY, &oldmm->flags))
-		set_bit(MMF_VM_MERGE_ANY, &mm->flags);
+	if (test_bit(MMF_VM_MERGEABLE, &oldmm->flags))
+		return __ksm_enter(mm);
 
 	return 0;
 }