summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libc/inet/ifaddrs.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/libc/inet/ifaddrs.c b/libc/inet/ifaddrs.c
index 6d9ee8903..0c9310651 100644
--- a/libc/inet/ifaddrs.c
+++ b/libc/inet/ifaddrs.c
@@ -115,7 +115,8 @@ __netlink_request (struct netlink_handle *h, int type)
{
struct netlink_res *nlm_next;
struct netlink_res **new_nlm_list;
- static volatile size_t buf_size = 4096;
+ static volatile size_t buf_size = 0;
+ size_t this_buf_size;
char *buf;
struct sockaddr_nl nladdr;
struct nlmsghdr *nlmh;
@@ -126,7 +127,15 @@ __netlink_request (struct netlink_handle *h, int type)
if (__netlink_sendreq (h, type) < 0)
return -1;
- size_t this_buf_size = buf_size;
+ if (buf_size)
+ this_buf_size = buf_size;
+ else {
+#ifdef PAGE_SIZE
+ this_buf_size = PAGE_SIZE;
+#else
+ this_buf_size = __pagesize;
+#endif
+ }
if (__libc_use_alloca (this_buf_size))
buf = alloca (this_buf_size);
else