2023-06-01 01:07:54

by Stephen Rothwell

[permalink] [raw]
Subject: linux-next: build failure after merge of the block tree

Hi all,

After merging the block tree, today's linux-next build (x86_64
allmodconfig) failed like this:

In file included from include/linux/slab.h:15,
from drivers/md/raid1.c:26:
drivers/md/raid1.c: In function 'alloc_behind_master_bio':
include/linux/gfp.h:320:36: error: passing argument 1 of 'free_pages' makes integer from pointer without a cast [-Werror=int-conversion]
320 | #define free_page(addr) free_pages((addr), 0)
| ^~~~~~
| |
| struct page *
drivers/md/raid1.c:1151:25: note: in expansion of macro 'free_page'
1151 | free_page(page);
| ^~~~~~~~~
include/linux/gfp.h:303:38: note: expected 'long unsigned int' but argument is of type 'struct page *'
303 | extern void free_pages(unsigned long addr, unsigned int order);
| ~~~~~~~~~~~~~~^~~~

Caused by commit

6473bc325644 ("md: check for failure when adding pages in alloc_behind_master_bio")

I have used the block tree from next-20230531 for today.

--
Cheers,
Stephen Rothwell


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

2023-06-01 08:35:31

by Johannes Thumshirn

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the block tree

On 01.06.23 02:50, Stephen Rothwell wrote:
> Hi all,
>
> After merging the block tree, today's linux-next build (x86_64
> allmodconfig) failed like this:
>
> In file included from include/linux/slab.h:15,
> from drivers/md/raid1.c:26:
> drivers/md/raid1.c: In function 'alloc_behind_master_bio':
> include/linux/gfp.h:320:36: error: passing argument 1 of 'free_pages' makes integer from pointer without a cast [-Werror=int-conversion]
> 320 | #define free_page(addr) free_pages((addr), 0)
> | ^~~~~~
> | |
> | struct page *
> drivers/md/raid1.c:1151:25: note: in expansion of macro 'free_page'
> 1151 | free_page(page);
> | ^~~~~~~~~
> include/linux/gfp.h:303:38: note: expected 'long unsigned int' but argument is of type 'struct page *'
> 303 | extern void free_pages(unsigned long addr, unsigned int order);
> | ~~~~~~~~~~~~~~^~~~
>
> Caused by commit
>
> 6473bc325644 ("md: check for failure when adding pages in alloc_behind_master_bio")
>
> I have used the block tree from next-20230531 for today.
>

This obviously has to be:
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index ff89839455ec..3570da63969b 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -1148,7 +1148,7 @@ static void alloc_behind_master_bio(struct r1bio *r1_bio,
goto free_pages;

if (!bio_add_page(behind_bio, page, len, 0)) {
- free_page(page);
+ put_page(page);
goto free_pages;
}


But I wonder why I dint see it in my allmodconfig build.

Jens can you fold that in or do you want me to update the patch?

2023-06-01 15:46:35

by Jens Axboe

[permalink] [raw]
Subject: Re: linux-next: build failure after merge of the block tree

On 6/1/23 2:27 AM, Johannes Thumshirn wrote:
> On 01.06.23 02:50, Stephen Rothwell wrote:
>> Hi all,
>>
>> After merging the block tree, today's linux-next build (x86_64
>> allmodconfig) failed like this:
>>
>> In file included from include/linux/slab.h:15,
>> from drivers/md/raid1.c:26:
>> drivers/md/raid1.c: In function 'alloc_behind_master_bio':
>> include/linux/gfp.h:320:36: error: passing argument 1 of 'free_pages' makes integer from pointer without a cast [-Werror=int-conversion]
>> 320 | #define free_page(addr) free_pages((addr), 0)
>> | ^~~~~~
>> | |
>> | struct page *
>> drivers/md/raid1.c:1151:25: note: in expansion of macro 'free_page'
>> 1151 | free_page(page);
>> | ^~~~~~~~~
>> include/linux/gfp.h:303:38: note: expected 'long unsigned int' but argument is of type 'struct page *'
>> 303 | extern void free_pages(unsigned long addr, unsigned int order);
>> | ~~~~~~~~~~~~~~^~~~
>>
>> Caused by commit
>>
>> 6473bc325644 ("md: check for failure when adding pages in alloc_behind_master_bio")
>>
>> I have used the block tree from next-20230531 for today.
>>
>
> This obviously has to be:
> diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
> index ff89839455ec..3570da63969b 100644
> --- a/drivers/md/raid1.c
> +++ b/drivers/md/raid1.c
> @@ -1148,7 +1148,7 @@ static void alloc_behind_master_bio(struct r1bio *r1_bio,
> goto free_pages;
>
> if (!bio_add_page(behind_bio, page, len, 0)) {
> - free_page(page);
> + put_page(page);
> goto free_pages;
> }
>
>
> But I wonder why I dint see it in my allmodconfig build.
>
> Jens can you fold that in or do you want me to update the patch?

Done

--
Jens Axboe