linux/net/core
Greg Rose 115c9b8192 rtnetlink: Fix problem with buffer allocation
Implement a new netlink attribute type IFLA_EXT_MASK.  The mask
is a 32 bit value that can be used to indicate to the kernel that
certain extended ifinfo values are requested by the user application.
At this time the only mask value defined is RTEXT_FILTER_VF to
indicate that the user wants the ifinfo dump to send information
about the VFs belonging to the interface.

This patch fixes a bug in which certain applications do not have
large enough buffers to accommodate the extra information returned
by the kernel with large numbers of SR-IOV virtual functions.
Those applications will not send the new netlink attribute with
the interface info dump request netlink messages so they will
not get unexpectedly large request buffers returned by the kernel.

Modifies the rtnl_calcit function to traverse the list of net
devices and compute the minimum buffer size that can hold the
info dumps of all matching devices based upon the filter passed
in via the new netlink attribute filter mask.  If no filter
mask is sent then the buffer allocation defaults to NLMSG_GOODSIZE.

With this change it is possible to add yet to be defined netlink
attributes to the dump request which should make it fairly extensible
in the future.

Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-02-21 16:56:45 -05:00
..
datagram.c net: add skb frag size accessors 2011-10-19 03:10:46 -04:00
dev_addr_lists.c net: introduce netif_addr_lock_nested() and call if when appropriate 2012-01-09 12:46:58 -08:00
dev.c gro: more generic L2 header check 2012-02-08 18:26:54 -05:00
drop_monitor.c net,rcu: convert call_rcu(free_dm_hw_stat) to kfree_rcu() 2011-05-07 22:50:59 -07:00
dst.c net: Rename dst_get_neighbour{, _raw} to dst_get_neighbour_noref{, _raw}. 2011-12-05 15:20:19 -05:00
ethtool.c ethtool: Null-terminate filename passed to ethtool_ops::flash_device 2012-02-01 14:47:17 -05:00
fib_rules.c net: Fix files explicitly needing to include module.h 2011-10-31 19:30:28 -04:00
filter.c filter: use unsigned int to silence static checker warning 2011-10-19 19:35:51 -04:00
flow_dissector.c net: flow_dissector.c missing include linux/export.h 2012-01-24 16:03:33 -05:00
flow.c net: Add a flow_cache_flush_deferred function 2011-12-21 16:48:08 -05:00
gen_estimator.c net,rcu: convert call_rcu(__gen_kill_estimator) to kfree_rcu() 2011-05-07 22:50:57 -07:00
gen_stats.c net/core: EXPORT_SYMBOL cleanups 2010-07-12 12:57:55 -07:00
iovec.c net: Limit socket I/O iovec total length to INT_MAX. 2010-10-28 11:47:52 -07:00
kmap_skb.h net: convert core to skb paged frag APIs 2011-08-24 17:52:11 -07:00
link_watch.c net: linkwatch: allow vlans to get carrier changes faster 2011-09-15 15:36:34 -04:00
Makefile sock_diag: Move the sock_ code to net/core/ 2011-12-06 13:58:02 -05:00
neighbour.c neighbour: Fixed race condition at tbl->nht 2012-02-21 16:28:10 -05:00
net_namespace.c netns: fix net_alloc_generic() 2012-01-26 13:36:19 -05:00
net-sysfs.c bql: Fix inconsistency between file mode and attr method. 2012-01-17 10:05:55 -05:00
net-sysfs.h xps: Add CONFIG_XPS 2010-11-28 18:24:14 -08:00
net-traces.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
netevent.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
netpoll.c netpoll: netpoll_poll_dev() should access dev->flags 2012-02-14 15:24:26 -05:00
netprio_cgroup.c netprio_cgroup: don't allocate prio table when a device is registered 2012-02-10 15:08:57 -05:00
pktgen.c pktgen: Fix unsigned function that is returning negative vals 2012-01-22 15:08:44 -05:00
request_sock.c ipv4:correct description for tcp_max_syn_backlog 2011-12-06 13:02:28 -05:00
rtnetlink.c rtnetlink: Fix problem with buffer allocation 2012-02-21 16:56:45 -05:00
scm.c af_unix: dont send SCM_CREDENTIALS by default 2011-09-28 13:29:50 -04:00
secure_seq.c net: fix some sparse errors 2012-01-17 10:31:12 -05:00
skbuff.c net:core: use IS_ENABLED 2011-12-16 15:49:51 -05:00
sock_diag.c sock_diag: Introduce the meminfo nla core (v2) 2011-12-30 16:42:19 -05:00
sock.c netprio_cgroup: fix wrong memory access when NETPRIO_CGROUP=m 2012-02-10 15:08:57 -05:00
stream.c net: Fix the condition passed to sk_wait_event() 2010-10-03 20:41:32 -07:00
sysctl_net_core.c net: use jump_label to shortcut RPS if not setup 2011-11-17 17:06:08 -05:00
timestamping.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
user_dma.c net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules 2011-10-31 19:30:30 -04:00
utils.c net: Kill ratelimit.h dependency in linux/net.h 2011-05-27 13:41:33 -04:00