Re: FAILED: patch "[PATCH] btrfs: send: emit file capabilities after chown" failed to apply to 4.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 18, 2020 at 09:19:51PM -0400, Sasha Levin wrote:
> On Thu, Jun 18, 2020 at 04:45:23PM +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:
> > 
> > The patch below does not apply to the 4.4-stable tree.
> > If someone wants it applied there, or to any other stable or longterm
> > tree, then please email the backport, including the original git commit
> > id to <stable@xxxxxxxxxxxxxxx>.
> > 
> > thanks,
> > 
> > greg k-h
> > 
> > ------------------ original commit in Linus's tree ------------------
> > 
> > > From 89efda52e6b6930f80f5adda9c3c9edfb1397191 Mon Sep 17 00:00:00 2001
> > From: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
> > Date: Sun, 10 May 2020 23:15:07 -0300
> > Subject: [PATCH] btrfs: send: emit file capabilities after chown
> > 
> > Whenever a chown is executed, all capabilities of the file being touched
> > are lost.  When doing incremental send with a file with capabilities,
> > there is a situation where the capability can be lost on the receiving
> > side. The sequence of actions bellow shows the problem:
> > 
> >  $ mount /dev/sda fs1
> >  $ mount /dev/sdb fs2
> > 
> >  $ touch fs1/foo.bar
> >  $ setcap cap_sys_nice+ep fs1/foo.bar
> >  $ btrfs subvolume snapshot -r fs1 fs1/snap_init
> >  $ btrfs send fs1/snap_init | btrfs receive fs2
> > 
> >  $ chgrp adm fs1/foo.bar
> >  $ setcap cap_sys_nice+ep fs1/foo.bar
> > 
> >  $ btrfs subvolume snapshot -r fs1 fs1/snap_complete
> >  $ btrfs subvolume snapshot -r fs1 fs1/snap_incremental
> > 
> >  $ btrfs send fs1/snap_complete | btrfs receive fs2
> >  $ btrfs send -p fs1/snap_init fs1/snap_incremental | btrfs receive fs2
> > 
> > At this point, only a chown was emitted by "btrfs send" since only the
> > group was changed. This makes the cap_sys_nice capability to be dropped
> > from fs2/snap_incremental/foo.bar
> > 
> > To fix that, only emit capabilities after chown is emitted. The current
> > code first checks for xattrs that are new/changed, emits them, and later
> > emit the chown. Now, __process_new_xattr skips capabilities, letting
> > only finish_inode_if_needed to emit them, if they exist, for the inode
> > being processed.
> > 
> > This behavior was being worked around in "btrfs receive" side by caching
> > the capability and only applying it after chown. Now, xattrs are only
> > emmited _after_ chown, making that workaround not needed anymore.
> > 
> > Link: https://github.com/kdave/btrfs-progs/issues/202
> > CC: stable@xxxxxxxxxxxxxxx # 4.4+
> > Suggested-by: Filipe Manana <fdmanana@xxxxxxxx>
> > Reviewed-by: Filipe Manana <fdmanana@xxxxxxxx>
> > Signed-off-by: Marcos Paulo de Souza <mpdesouza@xxxxxxxx>
> > Signed-off-by: David Sterba <dsterba@xxxxxxxx>
> 
> I took 1ec9a1ae1e30 ("Btrfs: fix unreplayable log after snapshot delete
> + parent dir fsync") to work around the conflict.

Great, thanks for this fixup and the others you merged.

greg k-h



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux