Subject: Re: linux-next: build warning after merge of the akpm-current tree

From: Andrew Morton <[email-masked]>
Date: Thu, 16 Jul 2015 16:00:14 -0700

On Thu, 16 Jul 2015 15:26:00 +1000 Stephen Rothwell <[email-masked]> wrote:

> Hi Andrew,
> 
> After merging the akpm-current tree, today's linux-next build (arm
> multi_v7_defconfig) produced this warning:
> 
> lib/genalloc.c: In function 'gen_pool_get':
> /scratch/sfr/next/lib/genalloc.c:599:6: warning: passing argument 4 of 'devres_find' discards 'const' qualifier from pointer target type
>   p = devres_find(dev, devm_gen_pool_release, devm_gen_pool_match, name);
>       ^
> In file included from /scratch/sfr/next/include/linux/node.h:17:0,
>                  from /scratch/sfr/next/include/linux/cpu.h:16,
>                  from /scratch/sfr/next/include/linux/of_device.h:4,
>                  from /scratch/sfr/next/lib/genalloc.c:37:
> /scratch/sfr/next/include/linux/device.h:620:14: note: expected 'void *' but argument is of type 'const char *'
>  extern void *devres_find(struct device *dev, dr_release_t release,
>               ^
> 
> Caused by commit
> 
>   e89a70fd54f2 ("genalloc: add support of multiple gen_pools per device")

urgh.  devres_find()'s `void *match' argument should always have been const.

I started to fix that but the fix spreads like a virus - by the time I had a
700 line diff I gave up.

So I guess we cast away the constness at the caller, like all the other
callers do :(

--- a/lib/genalloc.c~genalloc-add-support-of-multiple-gen_pools-per-device-fix
+++ a/lib/genalloc.c
@@ -596,7 +596,8 @@ struct gen_pool *gen_pool_get(struct dev
 {
 	struct gen_pool **p;
 
-	p = devres_find(dev, devm_gen_pool_release, devm_gen_pool_match, name);
+	p = devres_find(dev, devm_gen_pool_release, devm_gen_pool_match,
+			(void *)name);
 	if (!p)
 		return NULL;
 	return *p;
_