linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mm/nommu: convert kobjsize() to folios
@ 2025-07-31 20:26 Sidhartha Kumar
  2025-08-01 19:35 ` SeongJae Park
  0 siblings, 1 reply; 3+ messages in thread
From: Sidhartha Kumar @ 2025-07-31 20:26 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-mm, akpm, willy, vbabka, jannh, pfalcato, lorenzo.stoakes,
	Liam.Howlett, Sidhartha Kumar

Simple folio conversion to remove a user of PageSlab() and
PageCompound().

Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
---
 mm/nommu.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/mm/nommu.c b/mm/nommu.c
index 07504d666d6a..a00f8fc316c1 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -64,7 +64,7 @@ const struct vm_operations_struct generic_file_vm_ops = {
  */
 unsigned int kobjsize(const void *objp)
 {
-	struct page *page;
+	struct folio *folio;
 
 	/*
 	 * If the object we have should not have ksize performed on it,
@@ -73,22 +73,22 @@ unsigned int kobjsize(const void *objp)
 	if (!objp || !virt_addr_valid(objp))
 		return 0;
 
-	page = virt_to_head_page(objp);
+	folio = virt_to_folio(objp);
 
 	/*
 	 * If the allocator sets PageSlab, we know the pointer came from
 	 * kmalloc().
 	 */
-	if (PageSlab(page))
+	if (folio_test_slab(folio))
 		return ksize(objp);
 
 	/*
-	 * If it's not a compound page, see if we have a matching VMA
+	 * If it's not a compound folio, see if we have a matching VMA
 	 * region. This test is intentionally done in reverse order,
 	 * so if there's no VMA, we still fall through and hand back
-	 * PAGE_SIZE for 0-order pages.
+	 * PAGE_SIZE for 0-order folios.
 	 */
-	if (!PageCompound(page)) {
+	if (!folio_test_large(folio)) {
 		struct vm_area_struct *vma;
 
 		vma = find_vma(current->mm, (unsigned long)objp);
@@ -100,7 +100,7 @@ unsigned int kobjsize(const void *objp)
 	 * The ksize() function is only guaranteed to work for pointers
 	 * returned by kmalloc(). So handle arbitrary pointers here.
 	 */
-	return page_size(page);
+	return folio_size(folio);
 }
 
 void vfree(const void *addr)
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] mm/nommu: convert kobjsize() to folios
  2025-07-31 20:26 [PATCH] mm/nommu: convert kobjsize() to folios Sidhartha Kumar
@ 2025-08-01 19:35 ` SeongJae Park
  2025-08-01 20:17   ` Sidhartha Kumar
  0 siblings, 1 reply; 3+ messages in thread
From: SeongJae Park @ 2025-08-01 19:35 UTC (permalink / raw)
  To: Sidhartha Kumar
  Cc: SeongJae Park, linux-kernel, linux-mm, akpm, willy, vbabka, jannh,
	pfalcato, lorenzo.stoakes, Liam.Howlett

On Thu, 31 Jul 2025 20:26:29 +0000 Sidhartha Kumar <sidhartha.kumar@oracle.com> wrote:

> Simple folio conversion to remove a user of PageSlab() and
> PageCompound().
> 
> Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>

I have a trivial comment below, but since it is just a trivial one that I don't
really care,

Reviewed-by: SeongJae Park <sj@kernel.org>

> ---
>  mm/nommu.c | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/mm/nommu.c b/mm/nommu.c
> index 07504d666d6a..a00f8fc316c1 100644
> --- a/mm/nommu.c
> +++ b/mm/nommu.c
> @@ -64,7 +64,7 @@ const struct vm_operations_struct generic_file_vm_ops = {
>   */
>  unsigned int kobjsize(const void *objp)
>  {
> -	struct page *page;
> +	struct folio *folio;
>  
>  	/*
>  	 * If the object we have should not have ksize performed on it,
> @@ -73,22 +73,22 @@ unsigned int kobjsize(const void *objp)
>  	if (!objp || !virt_addr_valid(objp))
>  		return 0;
>  
> -	page = virt_to_head_page(objp);
> +	folio = virt_to_folio(objp);
>  
>  	/*
>  	 * If the allocator sets PageSlab, we know the pointer came from
>  	 * kmalloc().
>  	 */
> -	if (PageSlab(page))
> +	if (folio_test_slab(folio))
>  		return ksize(objp);
>  
>  	/*
> -	 * If it's not a compound page, see if we have a matching VMA
> +	 * If it's not a compound folio, see if we have a matching VMA

Nit.  I think "a large folio" rather than "a compound folio" is more consistent
and easier to read/understand.  No strong opinion, though.

>  	 * region. This test is intentionally done in reverse order,
>  	 * so if there's no VMA, we still fall through and hand back
> -	 * PAGE_SIZE for 0-order pages.
> +	 * PAGE_SIZE for 0-order folios.
>  	 */
> -	if (!PageCompound(page)) {
> +	if (!folio_test_large(folio)) {
>  		struct vm_area_struct *vma;
>  
>  		vma = find_vma(current->mm, (unsigned long)objp);
> @@ -100,7 +100,7 @@ unsigned int kobjsize(const void *objp)
>  	 * The ksize() function is only guaranteed to work for pointers
>  	 * returned by kmalloc(). So handle arbitrary pointers here.
>  	 */
> -	return page_size(page);
> +	return folio_size(folio);
>  }
>  
>  void vfree(const void *addr)
> -- 
> 2.43.0


Thanks,
SJ


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] mm/nommu: convert kobjsize() to folios
  2025-08-01 19:35 ` SeongJae Park
@ 2025-08-01 20:17   ` Sidhartha Kumar
  0 siblings, 0 replies; 3+ messages in thread
From: Sidhartha Kumar @ 2025-08-01 20:17 UTC (permalink / raw)
  To: SeongJae Park
  Cc: linux-kernel, linux-mm, akpm, willy, vbabka, jannh, pfalcato,
	lorenzo.stoakes, Liam.Howlett

On 8/1/25 3:35 PM, SeongJae Park wrote:
> On Thu, 31 Jul 2025 20:26:29 +0000 Sidhartha Kumar <sidhartha.kumar@oracle.com> wrote:
> 
>> Simple folio conversion to remove a user of PageSlab() and
>> PageCompound().
>>
>> Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
> 
> I have a trivial comment below, but since it is just a trivial one that I don't
> really care,
> 
> Reviewed-by: SeongJae Park <sj@kernel.org>
> 

>>   	/*
>> -	 * If it's not a compound page, see if we have a matching VMA
>> +	 * If it's not a compound folio, see if we have a matching VMA
> 
> Nit.  I think "a large folio" rather than "a compound folio" is more consistent
> and easier to read/understand.  No strong opinion, though.

I agree, "large folio" is used throughout the kernel rather than 
compound folio. I'll send a v2 with this change.

Thanks,
Sid

> 
>>   	 * region. This test is intentionally done in reverse order,
>>   	 * so if there's no VMA, we still fall through and hand back
>> -	 * PAGE_SIZE for 0-order pages.
>> +	 * PAGE_SIZE for 0-order folios.
>>   	 */
>> -	if (!PageCompound(page)) {
>> +	if (!folio_test_large(folio)) {
>>   		struct vm_area_struct *vma;
>>   
>>   		vma = find_vma(current->mm, (unsigned long)objp);
>> @@ -100,7 +100,7 @@ unsigned int kobjsize(const void *objp)
>>   	 * The ksize() function is only guaranteed to work for pointers
>>   	 * returned by kmalloc(). So handle arbitrary pointers here.
>>   	 */
>> -	return page_size(page);
>> +	return folio_size(folio);
>>   }
>>   
>>   void vfree(const void *addr)
>> -- 
>> 2.43.0
> 
> 
> Thanks,
> SJ



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-08-01 20:18 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-31 20:26 [PATCH] mm/nommu: convert kobjsize() to folios Sidhartha Kumar
2025-08-01 19:35 ` SeongJae Park
2025-08-01 20:17   ` Sidhartha Kumar

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).