summaryrefslogtreecommitdiff
path: root/kernels/linux-libre-grsec-knock/btrfs-overflow.patch
diff options
context:
space:
mode:
authorAndré Fabian Silva Delgado <emulatorman@parabola.nu>2015-12-06 04:56:08 -0300
committerAndré Fabian Silva Delgado <emulatorman@parabola.nu>2015-12-06 04:56:35 -0300
commit3b48dd8b97936abd0d17de2360f43094b50fbe53 (patch)
treeddb4824396bbefe966085e784c60a7ab0ca53db9 /kernels/linux-libre-grsec-knock/btrfs-overflow.patch
parent1b42a9d608013d9a3285dabb93f60c89f0debb7c (diff)
downloadabslibre-3b48dd8b97936abd0d17de2360f43094b50fbe53.tar.gz
abslibre-3b48dd8b97936abd0d17de2360f43094b50fbe53.tar.bz2
abslibre-3b48dd8b97936abd0d17de2360f43094b50fbe53.zip
linux-libre-grsec-knock-4.2.6_gnu.201511282239-1: updating version
Diffstat (limited to 'kernels/linux-libre-grsec-knock/btrfs-overflow.patch')
-rw-r--r--kernels/linux-libre-grsec-knock/btrfs-overflow.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/kernels/linux-libre-grsec-knock/btrfs-overflow.patch b/kernels/linux-libre-grsec-knock/btrfs-overflow.patch
new file mode 100644
index 000000000..f879b184b
--- /dev/null
+++ b/kernels/linux-libre-grsec-knock/btrfs-overflow.patch
@@ -0,0 +1,26 @@
+diff --git a/fs/btrfs/extent_map.c b/fs/btrfs/extent_map.c
+index 6a98bdd..fed3da6 100644
+--- a/fs/btrfs/extent_map.c
++++ b/fs/btrfs/extent_map.c
+@@ -235,7 +235,9 @@ static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em)
+ em->start = merge->start;
+ em->orig_start = merge->orig_start;
+ em->len += merge->len;
+- em->block_len += merge->block_len;
++ if (em->block_start != EXTENT_MAP_HOLE &&
++ em->block_start != EXTENT_MAP_INLINE)
++ em->block_len += merge->block_len;
+ em->block_start = merge->block_start;
+ em->mod_len = (em->mod_len + em->mod_start) - merge->mod_start;
+ em->mod_start = merge->mod_start;
+@@ -252,7 +254,9 @@ static void try_merge_map(struct extent_map_tree *tree, struct extent_map *em)
+ merge = rb_entry(rb, struct extent_map, rb_node);
+ if (rb && mergable_maps(em, merge)) {
+ em->len += merge->len;
+- em->block_len += merge->block_len;
++ if (em->block_start != EXTENT_MAP_HOLE &&
++ em->block_start != EXTENT_MAP_INLINE)
++ em->block_len += merge->block_len;
+ rb_erase(&merge->rb_node, &tree->map);
+ RB_CLEAR_NODE(&merge->rb_node);
+ em->mod_len = (merge->mod_start + merge->mod_len) - em->mod_start;