No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Josef Bacik d5e34783c8 btrfs: fix invalid removal of root ref
commit d49d3287e74ffe55ae7430d1e795e5f9bf7359ea upstream.

If we have the following sequence of events

  btrfs sub create A
  btrfs sub create A/B
  btrfs sub snap A C
  mkdir C/foo
  mv A/B C/foo
  rm -rf *

We will end up with a transaction abort.

The reason for this is because we create a root ref for B pointing to A.
When we create a snapshot of C we still have B in our tree, but because
the root ref points to A and not C we will make it appear to be empty.

The problem happens when we move B into C.  This removes the root ref
for B pointing to A and adds a ref of B pointing to C.  When we rmdir C
we'll see that we have a ref to our root and remove the root ref,
despite not actually matching our reference name.

Now btrfs_del_root_ref() allowing this to work is a bug as well, however
we know that this inode does not actually point to a root ref in the
first place, so we shouldn't be calling btrfs_del_root_ref() in the
first place and instead simply look up our dir index for this item and
do the rest of the removal.

CC: stable@vger.kernel.org # 4.4+
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-01-23 08:22:40 +01:00
arch s390/setup: Fix secure ipl message 2020-01-23 08:22:38 +01:00
block block: fix an integer overflow in logical block size 2020-01-23 08:22:32 +01:00
certs
crypto crypto: algif_skcipher - Use chunksize instead of blocksize 2020-01-17 19:48:46 +01:00
Documentation mei: fix modalias documentation 2020-01-17 19:48:48 +01:00
drivers clk: samsung: exynos5420: Keep top G3D clocks enabled 2020-01-23 08:22:39 +01:00
fs btrfs: fix invalid removal of root ref 2020-01-23 08:22:40 +01:00
include mm, debug_pagealloc: don't rely on static keys too early 2020-01-23 08:22:40 +01:00
init mm, debug_pagealloc: don't rely on static keys too early 2020-01-23 08:22:40 +01:00
ipc
kernel locking/lockdep: Fix buffer overrun problem in stack_trace[] 2020-01-23 08:22:39 +01:00
lib sbitmap: only queue kyber's wait callback if not already active 2020-01-12 12:21:44 +01:00
LICENSES
mm mm, debug_pagealloc: don't rely on static keys too early 2020-01-23 08:22:40 +01:00
net rxrpc: Fix missing security check on incoming calls 2020-01-17 19:49:05 +01:00
samples samples: bpf: fix syscall_tp due to unused syscall 2020-01-12 12:21:26 +01:00
scripts kbuild/deb-pkg: annotate libelf-dev dependency as :native 2020-01-17 19:49:07 +01:00
security tomoyo: Suppress RCU warning at list_for_each_entry_rcu(). 2020-01-17 19:49:05 +01:00
sound ALSA: usb-audio: fix sync-ep altsetting sanity check 2020-01-23 08:22:31 +01:00
tools perf report: Fix incorrectly added dimensions as switch perf data file 2020-01-23 08:22:39 +01:00
usr gen_initramfs_list.sh: fix 'bad variable name' error 2020-01-09 10:20:00 +01:00
virt
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS MAINTAINERS: Append missed file to the database 2020-01-17 19:48:28 +01:00
Makefile Linux 5.4.13 2020-01-17 19:49:08 +01:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.