diff options
| author | Francois Berder <[email protected]> | 2025-11-11 13:49:30 +0100 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2025-12-05 16:23:54 -0600 |
| commit | 1c1be32c31cbec61d32f7aaa498ccc25567ae3e0 (patch) | |
| tree | e7adc9a5d05fbd307ce99577cdad0cc2834bc986 | |
| parent | 00e1fed93c8c3e4c9037741ea1b70a9e693a6e65 (diff) | |
fs/erofs: Fix realloc error handling
If realloc failed, raw was not freed and thus memory
was leaked.
Signed-off-by: Francois Berder <[email protected]>
| -rw-r--r-- | fs/erofs/data.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/erofs/data.c b/fs/erofs/data.c index 95b609d8ea8..b58ec6fcc66 100644 --- a/fs/erofs/data.c +++ b/fs/erofs/data.c @@ -319,12 +319,15 @@ static int z_erofs_read_data(struct erofs_inode *inode, char *buffer, } if (map.m_plen > bufsize) { + char *tmp; + bufsize = map.m_plen; - raw = realloc(raw, bufsize); - if (!raw) { + tmp = realloc(raw, bufsize); + if (!tmp) { ret = -ENOMEM; break; } + raw = tmp; } ret = z_erofs_read_one_data(inode, &map, raw, |
