diff options
author | Jérôme Pouiller <jezz@sysmic.org> | 2017-10-09 16:28:53 +0200 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2017-10-09 20:01:19 +0200 |
commit | e78339dd2882c8a95ad41d8d47629b16efb0f227 (patch) | |
tree | 20d03983b38c5ee053e4ce5dfa9d49598db429f8 | |
parent | a2ff8c0375e9cad8221a8ec246329b0b74e50b51 (diff) | |
download | memtool-e78339dd2882c8a95ad41d8d47629b16efb0f227.tar.gz memtool-e78339dd2882c8a95ad41d8d47629b16efb0f227.tar.xz |
call fallocate only if necessary
On some files below /sys mmap(2) works but posix_fallocate(3) does not.
(e.g. some but not all of /sys/bus/pci/devices/*/resource* behave like
this.)
So only call posix_fallocate() if the file to write to is too small.
Signed-off-by: Jérôme Pouiller <jezz@sysmic.org>
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-rw-r--r-- | memtool.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -233,7 +233,7 @@ static void *memmap(const char *file, off_t addr, size_t *size, int readonly) /* truncating */ *size = s.st_size - addr; - } else { + } else if (s.st_size < addr + *size) { int ret = posix_fallocate(memfd, addr, *size); if (ret) { errno = ret; |