diff options
author | Greg Rose <gregory.v.rose@intel.com> | 2013-01-04 00:32:54 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-01-17 08:43:58 -0800 |
commit | 2e3cbdeae8e4d13087657d95ed7a5be57dc9695e (patch) | |
tree | c72f2246ae87fffe750e24b4ac827cab2cde9d3b /net/ipv6/addrlabel.c | |
parent | 4a6cf0c4f4f8465d61adbf3aaaec2bd100e30d97 (diff) | |
download | kernel_samsung_smdk4412-2e3cbdeae8e4d13087657d95ed7a5be57dc9695e.zip kernel_samsung_smdk4412-2e3cbdeae8e4d13087657d95ed7a5be57dc9695e.tar.gz kernel_samsung_smdk4412-2e3cbdeae8e4d13087657d95ed7a5be57dc9695e.tar.bz2 |
rtnetlink: Compute and store minimum ifinfo dump size
commit c7ac8679bec9397afe8918f788cbcef88c38da54 upstream.
The message size allocated for rtnl ifinfo dumps was limited to
a single page. This is not enough for additional interface info
available with devices that support SR-IOV and caused a bug in
which VF info would not be displayed if more than approximately
40 VFs were created per interface.
Implement a new function pointer for the rtnl_register service that will
calculate the amount of data required for the ifinfo dump and allocate
enough data to satisfy the request.
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/ipv6/addrlabel.c')
-rw-r--r-- | net/ipv6/addrlabel.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv6/addrlabel.c b/net/ipv6/addrlabel.c index c8993e5..2d8ddba 100644 --- a/net/ipv6/addrlabel.c +++ b/net/ipv6/addrlabel.c @@ -592,8 +592,11 @@ out: void __init ipv6_addr_label_rtnl_register(void) { - __rtnl_register(PF_INET6, RTM_NEWADDRLABEL, ip6addrlbl_newdel, NULL); - __rtnl_register(PF_INET6, RTM_DELADDRLABEL, ip6addrlbl_newdel, NULL); - __rtnl_register(PF_INET6, RTM_GETADDRLABEL, ip6addrlbl_get, ip6addrlbl_dump); + __rtnl_register(PF_INET6, RTM_NEWADDRLABEL, ip6addrlbl_newdel, + NULL, NULL); + __rtnl_register(PF_INET6, RTM_DELADDRLABEL, ip6addrlbl_newdel, + NULL, NULL); + __rtnl_register(PF_INET6, RTM_GETADDRLABEL, ip6addrlbl_get, + ip6addrlbl_dump, NULL); } |