diff mbox

[v1,kernel,3.2.1] RTNETLINK adjusting values of min_ifinfo_dump_size

Message ID 26709175.701327480995351.JavaMail.root@5-MeO-DMT.ynet.sk
State Changes Requested, archived
Delegated to: David Miller
Headers show

Commit Message

Štefan Gula Jan. 25, 2012, 8:43 a.m. UTC
From: Stefan Gula <steweg@gmail.com>

This patch extends the rtnetlink.c. The problem is that calcit, which
returns the value min_ifinfo_dump_size, is called without ability to
get device info as well (struct net_device *dev is not accessible from
it). This create a problem if required size of struct sk_buff *skb is
not enough big to comply with all data returned by fill_info function
for the interface that required size can vary over time, e.g. some
dynamic structures will be putted to skb like hlists or lists. To do
this patch extends the do_setlink function with recalculating of
min_ifinfo_dump_size accordingly to device type and get_size
functions.

Signed-off-by: Stefan Gula <steweg@gmail.com>

---

code needed to be ok before I can resubmit my macvlan source mode patch

the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Miller Jan. 26, 2012, 2:36 a.m. UTC | #1
From: Stefan Gula <steweg@ynet.sk>
Date: Wed, 25 Jan 2012 09:43:15 +0100 (CET)

> From: Stefan Gula <steweg@gmail.com>
> 
> This patch extends the rtnetlink.c. The problem is that calcit, which
> returns the value min_ifinfo_dump_size, is called without ability to
> get device info as well (struct net_device *dev is not accessible from
> it). This create a problem if required size of struct sk_buff *skb is
> not enough big to comply with all data returned by fill_info function
> for the interface that required size can vary over time, e.g. some
> dynamic structures will be putted to skb like hlists or lists. To do
> this patch extends the do_setlink function with recalculating of
> min_ifinfo_dump_size accordingly to device type and get_size
> functions.
> 
> Signed-off-by: Stefan Gula <steweg@gmail.com>

This commit message is terrible, and the reason I know it's terrible
is because even after reading it I still had to go read the code
in order to understand what your change even does or why it's even
necessary.

How about this:

	Setting link parameters on a netdevice changes the value
	of if_nlmsg_size(), therefore it is necessary to recalculate
	min_ifinfo_dump_size.

--
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
Štefan Gula Jan. 26, 2012, 11:01 a.m. UTC | #2
2012/1/26 David Miller <davem@davemloft.net>:
> From: Stefan Gula <steweg@ynet.sk>
> Date: Wed, 25 Jan 2012 09:43:15 +0100 (CET)
>
>> From: Stefan Gula <steweg@gmail.com>
>>
>> This patch extends the rtnetlink.c. The problem is that calcit, which
>> returns the value min_ifinfo_dump_size, is called without ability to
>> get device info as well (struct net_device *dev is not accessible from
>> it). This create a problem if required size of struct sk_buff *skb is
>> not enough big to comply with all data returned by fill_info function
0>> for the interface that required size can vary over time, e.g. some
>> dynamic structures will be putted to skb like hlists or lists. To do
>> this patch extends the do_setlink function with recalculating of
>> min_ifinfo_dump_size accordingly to device type and get_size
>> functions.
>>
>> Signed-off-by: Stefan Gula <steweg@gmail.com>
>
> This commit message is terrible, and the reason I know it's terrible
> is because even after reading it I still had to go read the code
> in order to understand what your change even does or why it's even
> necessary.
>
> How about this:
>
>        Setting link parameters on a netdevice changes the value
>        of if_nlmsg_size(), therefore it is necessary to recalculate
>        min_ifinfo_dump_size.
>
Sound good... do I have to resubmit the patch with the correct description?
--
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
David Miller Jan. 26, 2012, 6:30 p.m. UTC | #3
From: Štefan Gula <steweg@ynet.sk>
Date: Thu, 26 Jan 2012 12:01:44 +0100

> 2012/1/26 David Miller <davem@davemloft.net>:
>> From: Stefan Gula <steweg@ynet.sk>
>> Date: Wed, 25 Jan 2012 09:43:15 +0100 (CET)
>>
>>> From: Stefan Gula <steweg@gmail.com>
>>>
>>> This patch extends the rtnetlink.c. The problem is that calcit, which
>>> returns the value min_ifinfo_dump_size, is called without ability to
>>> get device info as well (struct net_device *dev is not accessible from
>>> it). This create a problem if required size of struct sk_buff *skb is
>>> not enough big to comply with all data returned by fill_info function
> 0>> for the interface that required size can vary over time, e.g. some
>>> dynamic structures will be putted to skb like hlists or lists. To do
>>> this patch extends the do_setlink function with recalculating of
>>> min_ifinfo_dump_size accordingly to device type and get_size
>>> functions.
>>>
>>> Signed-off-by: Stefan Gula <steweg@gmail.com>
>>
>> This commit message is terrible, and the reason I know it's terrible
>> is because even after reading it I still had to go read the code
>> in order to understand what your change even does or why it's even
>> necessary.
>>
>> How about this:
>>
>>        Setting link parameters on a netdevice changes the value
>>        of if_nlmsg_size(), therefore it is necessary to recalculate
>>        min_ifinfo_dump_size.
>>
> Sound good... do I have to resubmit the patch with the correct description?

Yes.
--
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-3.2.1-orig/net/core/rtnetlink.c	2012-01-12 20:42:45.000000000 +0100
+++ linux/net/core/rtnetlink.c	2012-01-24 14:26:58.083219352 +0100
@@ -1506,6 +1506,9 @@  errout:
 
 	if (send_addr_notify)
 		call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
+	min_ifinfo_dump_size = max_t(u16, if_nlmsg_size(dev),
+					min_ifinfo_dump_size);
+
 	return err;
 }
--
To unsubscribe from this list: send the line "unsubscribe netdev" in