diff mbox

use total_highpages when calculating lowmem-only allocation sizes (netlink)

Message ID 4CFD20C70200007800026284@vpn.id2.novell.com
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Jan Beulich Dec. 6, 2010, 4:43 p.m. UTC
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
diff mbox

Patch

--- linux-2.6.37-rc4/net/netlink/af_netlink.c
+++ 2.6.37-rc4-use-totalhigh_pages/net/netlink/af_netlink.c
@@ -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);