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: <Z39LCmLFq873TBGn@MiWiFi-R3L-srv>
Date: Thu, 9 Jan 2025 12:05:30 +0800
From: Baoquan He <bhe@...hat.com>
To: Kairui Song <kasong@...cent.com>
Cc: linux-mm@...ck.org, Andrew Morton <akpm@...ux-foundation.org>,
	Chris Li <chrisl@...nel.org>, Barry Song <v-songbaohua@...o.com>,
	Ryan Roberts <ryan.roberts@....com>,
	Hugh Dickins <hughd@...gle.com>,
	Yosry Ahmed <yosryahmed@...gle.com>,
	"Huang, Ying" <ying.huang@...ux.alibaba.com>,
	Nhat Pham <nphamcs@...il.com>, Johannes Weiner <hannes@...xchg.org>,
	Kalesh Singh <kaleshsingh@...gle.com>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3 02/13] mm, swap: fold swap_info_get_cont in the only
 caller

On 12/31/24 at 01:46am, Kairui Song wrote:
> From: Kairui Song <kasong@...cent.com>
> 
> The name of the function is confusing, and the code is much easier to
> follow after folding, also rename the confusing naming "p" to more
> meaningful "si".
> 
> Signed-off-by: Kairui Song <kasong@...cent.com>
> ---
>  mm/swapfile.c | 39 +++++++++++++++------------------------
>  1 file changed, 15 insertions(+), 24 deletions(-)

Reviewed-by: Baoquan He <bhe@...hat.com>

> 
> diff --git a/mm/swapfile.c b/mm/swapfile.c
> index f8002f110104..574059158627 100644
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -1375,22 +1375,6 @@ static struct swap_info_struct *_swap_info_get(swp_entry_t entry)
>  	return NULL;
>  }
>  
> -static struct swap_info_struct *swap_info_get_cont(swp_entry_t entry,
> -					struct swap_info_struct *q)
> -{
> -	struct swap_info_struct *p;
> -
> -	p = _swap_info_get(entry);
> -
> -	if (p != q) {
> -		if (q != NULL)
> -			spin_unlock(&q->lock);
> -		if (p != NULL)
> -			spin_lock(&p->lock);
> -	}
> -	return p;
> -}
> -
>  static unsigned char __swap_entry_free_locked(struct swap_info_struct *si,
>  					      unsigned long offset,
>  					      unsigned char usage)
> @@ -1687,14 +1671,14 @@ static int swp_entry_cmp(const void *ent1, const void *ent2)
>  
>  void swapcache_free_entries(swp_entry_t *entries, int n)
>  {
> -	struct swap_info_struct *p, *prev;
> +	struct swap_info_struct *si, *prev;
>  	int i;
>  
>  	if (n <= 0)
>  		return;
>  
>  	prev = NULL;
> -	p = NULL;
> +	si = NULL;
>  
>  	/*
>  	 * Sort swap entries by swap device, so each lock is only taken once.
> @@ -1704,13 +1688,20 @@ void swapcache_free_entries(swp_entry_t *entries, int n)
>  	if (nr_swapfiles > 1)
>  		sort(entries, n, sizeof(entries[0]), swp_entry_cmp, NULL);
>  	for (i = 0; i < n; ++i) {
> -		p = swap_info_get_cont(entries[i], prev);
> -		if (p)
> -			swap_entry_range_free(p, entries[i], 1);
> -		prev = p;
> +		si = _swap_info_get(entries[i]);
> +
> +		if (si != prev) {
> +			if (prev != NULL)
> +				spin_unlock(&prev->lock);
> +			if (si != NULL)
> +				spin_lock(&si->lock);
> +		}
> +		if (si)
> +			swap_entry_range_free(si, entries[i], 1);
> +		prev = si;
>  	}
> -	if (p)
> -		spin_unlock(&p->lock);
> +	if (si)
> +		spin_unlock(&si->lock);
>  }
>  
>  int __swap_count(swp_entry_t entry)
> -- 
> 2.47.1
> 
> 


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ