Subject: Re: linux-next: manual merge of the driver-core tree with the net-next tree

From: Stephen Rothwell <[email-masked]>
Date: Thu, 16 Aug 2018 09:42:54 +1000

Hi all,

On Mon, 23 Jul 2018 08:20:46 +0200 Greg KH <[email-masked]> wrote:
>
> On Mon, Jul 23, 2018 at 03:12:24PM +1000, Stephen Rothwell wrote:
> > 
> > Today's linux-next merge of the driver-core tree got a conflict in:
> > 
> >   fs/sysfs/group.c
> > 
> > between commit:
> > 
> >   5f81880d5204 ("sysfs, kobject: allow creating kobject belonging to arbitrary users")
> > 
> > from the net-next tree and commit:
> > 
> >   c855cf2759d2 ("sysfs: Fix internal_create_group() for named group updates")
> > 
> > from the driver-core tree.
> > 
> > I fixed it up (I think - see below) and can carry the fix as
> > necessary. This is now fixed as far as linux-next is concerned, but any
> > non trivial conflicts should be mentioned to your upstream maintainer
> > when your tree is submitted for merging.  You may also want to consider
> > cooperating with the maintainer of the conflicting tree to minimise any
> > particularly complex conflicts.
> > 
> > -- 
> > Cheers,
> > Stephen Rothwell
> > 
> > diff --cc fs/sysfs/group.c
> > index c7a716c4acc9,38240410f831..000000000000
> > --- a/fs/sysfs/group.c
> > +++ b/fs/sysfs/group.c
> > @@@ -122,15 -118,23 +122,24 @@@ static int internal_create_group(struc
> >   			kobj->name, grp->name ?: "");
> >   		return -EINVAL;
> >   	}
> >  +	kobject_get_ownership(kobj, &uid, &gid);
> >   	if (grp->name) {
> > - 		kn = kernfs_create_dir_ns(kobj->sd, grp->name,
> > - 					  S_IRWXU | S_IRUGO | S_IXUGO,
> > - 					  uid, gid, kobj, NULL);
> > - 		if (IS_ERR(kn)) {
> > - 			if (PTR_ERR(kn) == -EEXIST)
> > - 				sysfs_warn_dup(kobj->sd, grp->name);
> > - 			return PTR_ERR(kn);
> > + 		if (update) {
> > + 			kn = kernfs_find_and_get(kobj->sd, grp->name);
> > + 			if (!kn) {
> > + 				pr_warn("Can't update unknown attr grp name: %s/%s\n",
> > + 					kobj->name, grp->name);
> > + 				return -EINVAL;
> > + 			}
> > + 		} else {
> >  -			kn = kernfs_create_dir(kobj->sd, grp->name,
> >  -					       S_IRWXU | S_IRUGO | S_IXUGO,
> >  -					       kobj);
> > ++			kn = kernfs_create_dir_ns(kobj->sd, grp->name,
> > ++						  S_IRWXU | S_IRUGO | S_IXUGO,
> > ++						  uid, gid, kobj, NULL);
> > + 			if (IS_ERR(kn)) {
> > + 				if (PTR_ERR(kn) == -EEXIST)
> > + 					sysfs_warn_dup(kobj->sd, grp->name);
> > + 				return PTR_ERR(kn);
> > + 			}
> >   		}
> >   	} else
> >   		kn = kobj->sd;  
> 
> 
> I think this is correct.  Rajat, can you verify it please?

This is now a conflict between Linus' tree and the driver-core tree.
-- 
Cheers,
Stephen Rothwell