Re: linux-next: manual merge of the scsi tree with the rcu tree

From: Paul E. McKenney
Date: Sat Nov 02 2019 - 09:45:58 EST


On Fri, Nov 01, 2019 at 07:28:22PM -0500, Ryan Attard wrote:
> I can't quite tell if it's just the diff, but it looks like the paired
> kfree_rcu(vpd_pg89, rcu) from the original patch got lopped off. Is there
> somewhere I can see the full resultant file?

I see all four instances of kfree() in origin/master in -next:

git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

But please do double-check.

Thanx, Paul

> Thanks,
> Ryan
>
> On Mon, Oct 28, 2019, 11:08 PM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
> wrote:
>
> > Hi all,
> >
> > Today's linux-next merge of the scsi tree got a conflict in:
> >
> > drivers/scsi/scsi_sysfs.c
> >
> > between commit:
> >
> > 81db81f82993 ("drivers/scsi: Replace rcu_swap_protected() with
> > rcu_replace()")
> >
> > from the rcu tree and commit:
> >
> > d188b0675b21 ("scsi: core: Add sysfs attributes for VPD pages 0h and
> > 89h")
> >
> > from the scsi tree.
> >
> > I fixed it up (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 drivers/scsi/scsi_sysfs.c
> > index cc51f4756077,0fa2ed343c7f..000000000000
> > --- a/drivers/scsi/scsi_sysfs.c
> > +++ b/drivers/scsi/scsi_sysfs.c
> > @@@ -466,12 -467,18 +467,18 @@@ static void scsi_device_dev_release_use
> > sdev->request_queue = NULL;
> >
> > mutex_lock(&sdev->inquiry_mutex);
> > - rcu_swap_protected(sdev->vpd_pg0, vpd_pg0,
> > - lockdep_is_held(&sdev->inquiry_mutex));
> > - rcu_swap_protected(sdev->vpd_pg80, vpd_pg80,
> > - lockdep_is_held(&sdev->inquiry_mutex));
> > - rcu_swap_protected(sdev->vpd_pg83, vpd_pg83,
> > - lockdep_is_held(&sdev->inquiry_mutex));
> > - rcu_swap_protected(sdev->vpd_pg89, vpd_pg89,
> > - lockdep_is_held(&sdev->inquiry_mutex));
> > ++ vpd_pg0 = rcu_replace_pointer(sdev->vpd_pg0, vpd_pg0,
> > ++
> > lockdep_is_held(&sdev->inquiry_mutex));
> > + vpd_pg80 = rcu_replace_pointer(sdev->vpd_pg80, vpd_pg80,
> > +
> > lockdep_is_held(&sdev->inquiry_mutex));
> > + vpd_pg83 = rcu_replace_pointer(sdev->vpd_pg83, vpd_pg83,
> > +
> > lockdep_is_held(&sdev->inquiry_mutex));
> > ++ vpd_pg89 = rcu_replace_pointer(sdev->vpd_pg89, vpd_pg89,
> > ++
> > lockdep_is_held(&sdev->inquiry_mutex));
> > mutex_unlock(&sdev->inquiry_mutex);
> >
> > + if (vpd_pg0)
> > + kfree_rcu(vpd_pg0, rcu);
> > if (vpd_pg83)
> > kfree_rcu(vpd_pg83, rcu);
> > if (vpd_pg80)
> >