From: Denys Vlasenko Date: Fri, 19 Mar 2010 13:34:30 +0000 (+0100) Subject: libbb/copyfd.c: don't mmap a largish buffer if we only want to copy a few kb X-Git-Tag: 1_17_0~398 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=bcda0042e2313d65a835b874c78bf215d743a844;p=oweals%2Fbusybox.git libbb/copyfd.c: don't mmap a largish buffer if we only want to copy a few kb function old new delta bb_full_fd_action 283 295 +12 Signed-off-by: Denys Vlasenko --- diff --git a/libbb/copyfd.c b/libbb/copyfd.c index c5f8b5b87..f42eb7623 100644 --- a/libbb/copyfd.c +++ b/libbb/copyfd.c @@ -22,6 +22,8 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size) char *buffer; int buffer_size; + if (size > 0 && size <= 4 * 1024) + goto use_small_buf; /* We want page-aligned buffer, just in case kernel is clever * and can do page-aligned io more efficiently */ buffer = mmap(NULL, CONFIG_FEATURE_COPYBUF_KB * 1024, @@ -30,6 +32,7 @@ static off_t bb_full_fd_action(int src_fd, int dst_fd, off_t size) /* ignored: */ -1, 0); buffer_size = CONFIG_FEATURE_COPYBUF_KB * 1024; if (buffer == MAP_FAILED) { + use_small_buf: buffer = alloca(4 * 1024); buffer_size = 4 * 1024; }