Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: Use NLMSG_DEFAULT_SIZE in combination with nlmsg_new()

Using NLMSG_GOODSIZE results in multiple pages being used as
nlmsg_new() will automatically add the size of the netlink
header to the payload thus exceeding the page limit.

NLMSG_DEFAULT_SIZE takes this into account.

Signed-off-by: Thomas Graf <tgraf@suug.ch>
Cc: Jiri Pirko <jpirko@redhat.com>
Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Cc: Sergey Lapin <slapin@ossfans.org>
Cc: Johannes Berg <johannes@sipsolutions.net>
Cc: Lauro Ramos Venancio <lauro.venancio@openbossa.org>
Cc: Aloisio Almeida Jr <aloisio.almeida@openbossa.org>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Reviewed-by: Jiri Pirko <jpirko@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Thomas Graf and committed by
David S. Miller
58050fce 9f10d3f6

+36 -34
+4 -4
drivers/net/team/team.c
··· 1476 1476 void *hdr; 1477 1477 int err; 1478 1478 1479 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 1479 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 1480 1480 if (!msg) 1481 1481 return -ENOMEM; 1482 1482 ··· 1538 1538 struct sk_buff *skb; 1539 1539 int err; 1540 1540 1541 - skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 1541 + skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 1542 1542 if (!skb) 1543 1543 return -ENOMEM; 1544 1544 ··· 1648 1648 if (err) 1649 1649 return err; 1650 1650 } 1651 - *pskb = genlmsg_new(NLMSG_DEFAULT_SIZE - GENL_HDRLEN, GFP_KERNEL); 1651 + *pskb = genlmsg_new(GENLMSG_DEFAULT_SIZE, GFP_KERNEL); 1652 1652 if (!*pskb) 1653 1653 return -ENOMEM; 1654 1654 return 0; ··· 2016 2016 int err; 2017 2017 struct net *net = dev_net(team->dev); 2018 2018 2019 - skb = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 2019 + skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 2020 2020 if (!skb) 2021 2021 return -ENOMEM; 2022 2022
+1 -1
drivers/net/wireless/mac80211_hwsim.c
··· 571 571 skb_dequeue(&data->pending); 572 572 } 573 573 574 - skb = genlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); 574 + skb = genlmsg_new(GENLMSG_DEFAULT_SIZE, GFP_ATOMIC); 575 575 if (skb == NULL) 576 576 goto nla_put_failure; 577 577
+2
include/net/genetlink.h
··· 5 5 #include <net/netlink.h> 6 6 #include <net/net_namespace.h> 7 7 8 + #define GENLMSG_DEFAULT_SIZE (NLMSG_DEFAULT_SIZE - GENL_HDRLEN) 9 + 8 10 /** 9 11 * struct genl_multicast_group - generic netlink multicast group 10 12 * @name: name of the multicast group, names are per-family
+2 -2
net/ieee802154/netlink.c
··· 44 44 struct sk_buff *ieee802154_nl_create(int flags, u8 req) 45 45 { 46 46 void *hdr; 47 - struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); 47 + struct sk_buff *msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); 48 48 unsigned long f; 49 49 50 50 if (!msg) ··· 80 80 int flags, u8 req) 81 81 { 82 82 void *hdr; 83 - struct sk_buff *msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); 83 + struct sk_buff *msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); 84 84 85 85 if (!msg) 86 86 return NULL;
+1 -1
net/ieee802154/nl-mac.c
··· 530 530 if (!dev) 531 531 return -ENODEV; 532 532 533 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 533 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 534 534 if (!msg) 535 535 goto out_dev; 536 536
+1 -1
net/ieee802154/nl-phy.c
··· 101 101 if (!phy) 102 102 return -ENODEV; 103 103 104 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 104 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 105 105 if (!msg) 106 106 goto out_dev; 107 107
+3 -3
net/l2tp/l2tp_netlink.c
··· 72 72 void *hdr; 73 73 int ret = -ENOBUFS; 74 74 75 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 75 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 76 76 if (!msg) { 77 77 ret = -ENOMEM; 78 78 goto out; ··· 353 353 goto out; 354 354 } 355 355 356 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 356 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 357 357 if (!msg) { 358 358 ret = -ENOMEM; 359 359 goto out; ··· 699 699 goto out; 700 700 } 701 701 702 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 702 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 703 703 if (!msg) { 704 704 ret = -ENOMEM; 705 705 goto out;
+9 -9
net/nfc/netlink.c
··· 167 167 168 168 dev->genl_data.poll_req_pid = 0; 169 169 170 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); 170 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); 171 171 if (!msg) 172 172 return -ENOMEM; 173 173 ··· 195 195 struct sk_buff *msg; 196 196 void *hdr; 197 197 198 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 198 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 199 199 if (!msg) 200 200 return -ENOMEM; 201 201 ··· 226 226 struct sk_buff *msg; 227 227 void *hdr; 228 228 229 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 229 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 230 230 if (!msg) 231 231 return -ENOMEM; 232 232 ··· 258 258 struct sk_buff *msg; 259 259 void *hdr; 260 260 261 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 261 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 262 262 if (!msg) 263 263 return -ENOMEM; 264 264 ··· 288 288 struct sk_buff *msg; 289 289 void *hdr; 290 290 291 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 291 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 292 292 if (!msg) 293 293 return -ENOMEM; 294 294 ··· 321 321 struct sk_buff *msg; 322 322 void *hdr; 323 323 324 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 324 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 325 325 if (!msg) 326 326 return -ENOMEM; 327 327 ··· 434 434 435 435 pr_debug("DEP link is up\n"); 436 436 437 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); 437 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); 438 438 if (!msg) 439 439 return -ENOMEM; 440 440 ··· 473 473 474 474 pr_debug("DEP link is down\n"); 475 475 476 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_ATOMIC); 476 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC); 477 477 if (!msg) 478 478 return -ENOMEM; 479 479 ··· 514 514 if (!dev) 515 515 return -ENODEV; 516 516 517 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 517 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 518 518 if (!msg) { 519 519 rc = -ENOMEM; 520 520 goto out_putdev;
+13 -13
net/wireless/nl80211.c
··· 7210 7210 { 7211 7211 struct sk_buff *msg; 7212 7212 7213 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 7213 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 7214 7214 if (!msg) 7215 7215 return; 7216 7216 ··· 7286 7286 { 7287 7287 struct sk_buff *msg; 7288 7288 7289 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 7289 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 7290 7290 if (!msg) 7291 7291 return; 7292 7292 ··· 7502 7502 struct sk_buff *msg; 7503 7503 void *hdr; 7504 7504 7505 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 7505 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 7506 7506 if (!msg) 7507 7507 return; 7508 7508 ··· 7542 7542 struct sk_buff *msg; 7543 7543 void *hdr; 7544 7544 7545 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 7545 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 7546 7546 if (!msg) 7547 7547 return; 7548 7548 ··· 7580 7580 struct sk_buff *msg; 7581 7581 void *hdr; 7582 7582 7583 - msg = nlmsg_new(NLMSG_GOODSIZE, GFP_KERNEL); 7583 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL); 7584 7584 if (!msg) 7585 7585 return; 7586 7586 ··· 7842 7842 { 7843 7843 struct sk_buff *msg; 7844 7844 7845 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 7845 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 7846 7846 if (!msg) 7847 7847 return; 7848 7848 ··· 7863 7863 struct sk_buff *msg; 7864 7864 void *hdr; 7865 7865 7866 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 7866 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 7867 7867 if (!msg) 7868 7868 return; 7869 7869 ··· 8026 8026 struct nlattr *pinfoattr; 8027 8027 void *hdr; 8028 8028 8029 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 8029 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 8030 8030 if (!msg) 8031 8031 return; 8032 8032 ··· 8069 8069 struct nlattr *rekey_attr; 8070 8070 void *hdr; 8071 8071 8072 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 8072 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 8073 8073 if (!msg) 8074 8074 return; 8075 8075 ··· 8113 8113 struct nlattr *attr; 8114 8114 void *hdr; 8115 8115 8116 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 8116 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 8117 8117 if (!msg) 8118 8118 return; 8119 8119 ··· 8157 8157 struct sk_buff *msg; 8158 8158 void *hdr; 8159 8159 8160 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 8160 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 8161 8161 if (!msg) 8162 8162 return; 8163 8163 ··· 8192 8192 struct nlattr *pinfoattr; 8193 8193 void *hdr; 8194 8194 8195 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 8195 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 8196 8196 if (!msg) 8197 8197 return; 8198 8198 ··· 8236 8236 void *hdr; 8237 8237 int err; 8238 8238 8239 - msg = nlmsg_new(NLMSG_GOODSIZE, gfp); 8239 + msg = nlmsg_new(NLMSG_DEFAULT_SIZE, gfp); 8240 8240 if (!msg) 8241 8241 return; 8242 8242