getifaddrs() and CONFIG_PAGE_SIZE_16KB=y

nenhard nenhard at gmail.com
Sun Mar 29 18:08:57 UTC 2015


Thanks, here is a workaround.
Can someone do a proper patch?

diff -rup a/libc/inet/ifaddrs.c b/libc/inet/ifaddrs.c
--- a/libc/inet/ifaddrs.c 2012-05-15 09:20:09.000000000 +0200
+++ b/libc/inet/ifaddrs.c 2015-03-29 15:07:11.528316570 +0200
@@ -119,7 +119,7 @@ __netlink_request (struct netlink_handle
 {
   struct netlink_res *nlm_next;
   struct netlink_res **new_nlm_list;
-  static volatile size_t buf_size = 4096;
+  static volatile size_t buf_size = 16384;
   char *buf;
   struct sockaddr_nl nladdr;
   struct nlmsghdr *nlmh;

2015-03-29 19:40 GMT+02:00 Rich Felker <dalias at libc.org>:

> On Sun, Mar 29, 2015 at 02:03:47PM +0200, Nenad Kljajić wrote:
> > When I compiled MIPS32 kernel with option CONFIG_PAGE_SIZE_16KB=y
> >  getifaddrs() fails with 'Device or resource busy'.
>
> Netlink sockets require a page-sized buffer for the response. uClibc
> probably has a hard-coded 4k or 8k result buffer rather than using the
> current page size...
>
> Rich
>


More information about the uClibc mailing list