@@ -30,6 +30,7 @@
#include <linux/sched.h>
#include <linux/errno.h>
#include <linux/string.h>
+#include <linux/highmem.h>
#include <linux/stat.h>
#include <linux/socket.h>
#include <linux/un.h>
@@ -2127,10 +2128,11 @@ static int __init netlink_proto_init(voi
if (!nl_table)
goto panic;
- if (totalram_pages >= (128 * 1024))
- limit = totalram_pages >> (21 - PAGE_SHIFT);
+ limit = totalram_pages - totalhigh_pages;
+ if (limit >= (128 * 1024))
+ limit >>= 21 - PAGE_SHIFT;
else
- limit = totalram_pages >> (23 - PAGE_SHIFT);
+ limit >>= 23 - PAGE_SHIFT;
order = get_bitmask_order(limit) - 1 + PAGE_SHIFT;
limit = (1UL << order) / sizeof(struct hlist_head);
For those (large) table allocations that come only from lowmem, the total amount of memory shouldn't really matter. Signed-off-by: Jan Beulich <jbeulich@novell.com> --- net/netlink/af_netlink.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html