]> git.proxmox.com Git - zfsonlinux.git/blob - zfs-patches/0026-Fix-zdb-E-segfault.patch
update ZFS submodule to debian/0.7.9-2
[zfsonlinux.git] / zfs-patches / 0026-Fix-zdb-E-segfault.patch
1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2 From: Chunwei Chen <david.chen@nutanix.com>
3 Date: Thu, 1 Feb 2018 16:28:11 -0800
4 Subject: [PATCH] Fix zdb -E segfault
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 SPA_MAXBLOCKSIZE is too large for stack.
10
11 Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
12 Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
13 Signed-off-by: Chunwei Chen <david.chen@nutanix.com>
14 Closes #7099
15 (cherry picked from commit 31ff122aa2e20c7ed48617868085ddba7b4ad174)
16 Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
17 ---
18 cmd/zdb/zdb.c | 6 ++++--
19 1 file changed, 4 insertions(+), 2 deletions(-)
20
21 diff --git a/cmd/zdb/zdb.c b/cmd/zdb/zdb.c
22 index 2d80589ca..90847d8d9 100644
23 --- a/cmd/zdb/zdb.c
24 +++ b/cmd/zdb/zdb.c
25 @@ -4139,11 +4139,12 @@ zdb_embedded_block(char *thing)
26 {
27 blkptr_t bp;
28 unsigned long long *words = (void *)&bp;
29 - char buf[SPA_MAXBLOCKSIZE];
30 + char *buf;
31 int err;
32
33 - memset(&bp, 0, sizeof (blkptr_t));
34 + buf = umem_alloc(SPA_MAXBLOCKSIZE, UMEM_NOFAIL);
35
36 + bzero(&bp, sizeof (bp));
37 err = sscanf(thing, "%llx:%llx:%llx:%llx:%llx:%llx:%llx:%llx:"
38 "%llx:%llx:%llx:%llx:%llx:%llx:%llx:%llx",
39 words + 0, words + 1, words + 2, words + 3,
40 @@ -4161,6 +4162,7 @@ zdb_embedded_block(char *thing)
41 exit(1);
42 }
43 zdb_dump_block_raw(buf, BPE_GET_LSIZE(&bp), 0);
44 + umem_free(buf, SPA_MAXBLOCKSIZE);
45 }
46
47 int
48 --
49 2.14.2
50