Subject: Re: linux-next: build failure after merge of the driver-core tree

From: Greg KH <[email-masked]>
Date: Mon, 28 Nov 2022 18:35:56 +0100

On Mon, Nov 28, 2022 at 11:44:08PM +1100, Stephen Rothwell wrote:
> Hi Greg,
> 
> On Mon, 28 Nov 2022 12:50:03 +0100 Greg KH <[email-masked]> wrote:
> >
> > On Mon, Nov 28, 2022 at 01:36:00PM +1100, Stephen Rothwell wrote:
> > > 
> > > After merging the driver-core tree, today's linux-next build (powerpc
> > > ppc64_defconfig) failed like this:
> > > 
> > > arch/powerpc/platforms/book3s/vas-api.c: In function 'vas_register_coproc_api':
> > > arch/powerpc/platforms/book3s/vas-api.c:590:38: error: assignment to 'char * (*)(const struct device *, umode_t *)' {aka 'char * (*)(const struct device *, short unsigned int *)'} from incompatible pointer type 'char * (*)(struct device *, umode_t *)' {aka 'char * (*)(struct device *, short unsigned int *)'} [-Werror=incompatible-pointer-types]
> > >   590 |         coproc_device.class->devnode = coproc_devnode;
> > >       |                                      ^
> > > drivers/misc/cxl/file.c: In function 'cxl_file_init':
> > > drivers/misc/cxl/file.c:687:28: error: assignment to 'char * (*)(const struct device *, umode_t *)' {aka 'char * (*)(const struct device *, short unsigned int *)'} from incompatible pointer type 'char * (*)(struct device *, umode_t *)' {aka 'char * (*)(struct device *, short unsigned int *)'} [-Werror=incompatible-pointer-types]
> > >   687 |         cxl_class->devnode = cxl_devnode;
> > >       |                            ^
> > > 
> > > Caused by commit
> > > 
> > >   ff62b8e6588f ("driver core: make struct class.devnode() take a const *")
> > > 
> > > I have used the driver-core tree from next-20221125 for today.  
> > 
> > Hm, how do we resolve problems like this where an api changes in my
> > branch but needs to be updated in another branch that is not in Linus's
> > tree yet?
> 
> That is not the case here:
> 
> $ git show ff62b8e6588f:arch/powerpc/platforms/book3s/vas-api.c | grep coproc_devnode
> static char *coproc_devnode(struct device *dev, umode_t *mode)
> 	coproc_device.class->devnode = coproc_devnode;
> $ git show ff62b8e6588f:drivers/misc/cxl/file.c | grep cxl_devnode
> static char *cxl_devnode(struct device *dev, umode_t *mode)
> 	cxl_class->devnode = cxl_devnode;
> 
> You just need to add a commit to your tree that updates the missed cases.

Ok, patch sent out, let's see if 0-day objects...

thanks,

greg k-h