]>
Commit | Line | Data |
---|---|---|
75b07eca FG |
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 |