lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200420213726.juehv5yr5kyhlbxv@master>
Date:   Mon, 20 Apr 2020 21:37:26 +0000
From:   Wei Yang <richard.weiyang@...il.com>
To:     "Huang, Ying" <ying.huang@...el.com>
Cc:     Wei Yang <richard.weiyang@...il.com>, akpm@...ux-foundation.org,
        linux-mm@...ck.org, linux-kernel@...r.kernel.org,
        tim.c.chen@...ux.intel.com
Subject: Re: [PATCH 3/4] mm/swapfile.c: compare tmp and max after trying to
 iterate on swap_map

On Mon, Apr 20, 2020 at 09:03:43AM +0800, Huang, Ying wrote:
>Wei Yang <richard.weiyang@...il.com> writes:
>
>> There are two duplicate code to handle the case when there is no
>> available swap entry. Just let the code go through and do the check at
>> second place.
>>
>> No functional change is expected.
>>
>> Signed-off-by: Wei Yang <richard.weiyang@...il.com>
>> ---
>>  mm/swapfile.c | 4 ----
>>  1 file changed, 4 deletions(-)
>>
>> diff --git a/mm/swapfile.c b/mm/swapfile.c
>> index 3aae700f9931..07b0bc095411 100644
>> --- a/mm/swapfile.c
>> +++ b/mm/swapfile.c
>> @@ -629,10 +629,6 @@ static bool scan_swap_map_try_ssd_cluster(struct swap_info_struct *si,
>>  	tmp = cluster->next;
>>  	max = min_t(unsigned long, si->max,
>>  		    (cluster_next(&cluster->index) + 1) * SWAPFILE_CLUSTER);
>> -	if (tmp >= max) {
>> -		cluster_set_null(&cluster->index);
>> -		goto new_cluster;
>> -	}
>
>The code is to avoid to acquire the cluster lock unnecessarily.  So I think
>we should keep this.
>

If you really want to avoid the lock, my suggestion is to add:

  if (tmp < max) {
      ci = lock_cluster(si, tmp);
          while (tmp < max) {
	  ...
	  }
      unlock_cluster(ci);
  }

Instead of do the similar thing twice.

>Best Regards,
>Huang, Ying
>
>>  	ci = lock_cluster(si, tmp);
>>  	while (tmp < max) {
>>  		if (!si->swap_map[tmp])

-- 
Wei Yang
Help you, Help me

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ