<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/net/core/rtnetlink.c, branch linux-2.6.37.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.37.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2011-02-17T23:14:33Z</updated>
<entry>
<title>net: Fix ip link add netns oops</title>
<updated>2011-02-17T23:14:33Z</updated>
<author>
<name>Eric W. Biederman</name>
</author>
<published>2011-01-29T14:57:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6940b3914ff75f4765319c27719be2a60f24a530'/>
<id>urn:sha1:6940b3914ff75f4765319c27719be2a60f24a530</id>
<content type='text'>
commit 13ad17745c2cbd437d9e24b2d97393e0be11c439 upstream.

Ed Swierk &lt;eswierk@bigswitch.com&gt; writes:
&gt; On 2.6.35.7
&gt;  ip link add link eth0 netns 9999 type macvlan
&gt; where 9999 is a nonexistent PID triggers an oops and causes all network functions to hang:
&gt; [10663.821898] BUG: unable to handle kernel NULL pointer dereference at 000000000000006d
&gt;  [10663.821917] IP: [&lt;ffffffff8149c2fa&gt;] __dev_alloc_name+0x9a/0x170
&gt;  [10663.821933] PGD 1d3927067 PUD 22f5c5067 PMD 0
&gt;  [10663.821944] Oops: 0000 [#1] SMP
&gt;  [10663.821953] last sysfs file: /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
&gt;  [10663.821959] CPU 3
&gt;  [10663.821963] Modules linked in: macvlan ip6table_filter ip6_tables rfcomm ipt_MASQUERADE binfmt_misc iptable_nat nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack sco ipt_REJECT bnep l2cap xt_tcpudp iptable_filter ip_tables x_tables bridge stp vboxnetadp vboxnetflt vboxdrv kvm_intel kvm parport_pc ppdev snd_hda_codec_intelhdmi snd_hda_codec_conexant arc4 iwlagn iwlcore mac80211 snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi i915 snd_seq_midi_event snd_seq thinkpad_acpi drm_kms_helper btusb tpm_tis nvram uvcvideo snd_timer snd_seq_device bluetooth videodev v4l1_compat v4l2_compat_ioctl32 tpm drm tpm_bios snd cfg80211 psmouse serio_raw intel_ips soundcore snd_page_alloc intel_agp i2c_algo_bit video output netconsole configfs lp parport usbhid hid e1000e sdhci_pci ahci libahci sdhci led_class
&gt;  [10663.822155]
&gt;  [10663.822161] Pid: 6000, comm: ip Not tainted 2.6.35-23-generic #41-Ubuntu 2901CTO/2901CTO
&gt;  [10663.822167] RIP: 0010:[&lt;ffffffff8149c2fa&gt;] [&lt;ffffffff8149c2fa&gt;] __dev_alloc_name+0x9a/0x170
&gt;  [10663.822177] RSP: 0018:ffff88014aebf7b8 EFLAGS: 00010286
&gt;  [10663.822182] RAX: 00000000fffffff4 RBX: ffff8801ad900800 RCX: 0000000000000000
&gt;  [10663.822187] RDX: ffff880000000000 RSI: 0000000000000000 RDI: ffff88014ad63000
&gt;  [10663.822191] RBP: ffff88014aebf808 R08: 0000000000000041 R09: 0000000000000041
&gt;  [10663.822196] R10: 0000000000000000 R11: dead000000200200 R12: ffff88014aebf818
&gt;  [10663.822201] R13: fffffffffffffffd R14: ffff88014aebf918 R15: ffff88014ad62000
&gt;  [10663.822207] FS: 00007f00c487f700(0000) GS:ffff880001f80000(0000) knlGS:0000000000000000
&gt;  [10663.822212] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
&gt;  [10663.822216] CR2: 000000000000006d CR3: 0000000231f19000 CR4: 00000000000026e0
&gt;  [10663.822221] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
&gt;  [10663.822226] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
&gt;  [10663.822231] Process ip (pid: 6000, threadinfo ffff88014aebe000, task ffff88014afb16e0)
&gt;  [10663.822236] Stack:
&gt;  [10663.822240] ffff88014aebf808 ffffffff814a2bb5 ffff88014aebf7e8 00000000a00ee8d6
&gt;  [10663.822251] &lt;0&gt; 0000000000000000 ffffffffa00ef940 ffff8801ad900800 ffff88014aebf818
&gt;  [10663.822265] &lt;0&gt; ffff88014aebf918 ffff8801ad900800 ffff88014aebf858 ffffffff8149c413
&gt;  [10663.822281] Call Trace:
&gt;  [10663.822290] [&lt;ffffffff814a2bb5&gt;] ? dev_addr_init+0x75/0xb0
&gt;  [10663.822298] [&lt;ffffffff8149c413&gt;] dev_alloc_name+0x43/0x90
&gt;  [10663.822307] [&lt;ffffffff814a85ee&gt;] rtnl_create_link+0xbe/0x1b0
&gt;  [10663.822314] [&lt;ffffffff814ab2aa&gt;] rtnl_newlink+0x48a/0x570
&gt;  [10663.822321] [&lt;ffffffff814aafcc&gt;] ? rtnl_newlink+0x1ac/0x570
&gt;  [10663.822332] [&lt;ffffffff81030064&gt;] ? native_x2apic_icr_read+0x4/0x20
&gt;  [10663.822339] [&lt;ffffffff814a8c17&gt;] rtnetlink_rcv_msg+0x177/0x290
&gt;  [10663.822346] [&lt;ffffffff814a8aa0&gt;] ? rtnetlink_rcv_msg+0x0/0x290
&gt;  [10663.822354] [&lt;ffffffff814c25d9&gt;] netlink_rcv_skb+0xa9/0xd0
&gt;  [10663.822360] [&lt;ffffffff814a8a85&gt;] rtnetlink_rcv+0x25/0x40
&gt;  [10663.822367] [&lt;ffffffff814c223e&gt;] netlink_unicast+0x2de/0x2f0
&gt;  [10663.822374] [&lt;ffffffff814c303e&gt;] netlink_sendmsg+0x1fe/0x2e0
&gt;  [10663.822383] [&lt;ffffffff81488533&gt;] sock_sendmsg+0xf3/0x120
&gt;  [10663.822391] [&lt;ffffffff815899fe&gt;] ? _raw_spin_lock+0xe/0x20
&gt;  [10663.822400] [&lt;ffffffff81168656&gt;] ? __d_lookup+0x136/0x150
&gt;  [10663.822406] [&lt;ffffffff815899fe&gt;] ? _raw_spin_lock+0xe/0x20
&gt;  [10663.822414] [&lt;ffffffff812b7a0d&gt;] ? _atomic_dec_and_lock+0x4d/0x80
&gt;  [10663.822422] [&lt;ffffffff8116ea90&gt;] ? mntput_no_expire+0x30/0x110
&gt;  [10663.822429] [&lt;ffffffff81486ff5&gt;] ? move_addr_to_kernel+0x65/0x70
&gt;  [10663.822435] [&lt;ffffffff81493308&gt;] ? verify_iovec+0x88/0xe0
&gt;  [10663.822442] [&lt;ffffffff81489020&gt;] sys_sendmsg+0x240/0x3a0
&gt; [10663.822450] [&lt;ffffffff8111e2a9&gt;] ? __do_fault+0x479/0x560
&gt;  [10663.822457] [&lt;ffffffff815899fe&gt;] ? _raw_spin_lock+0xe/0x20
&gt;  [10663.822465] [&lt;ffffffff8116cf4a&gt;] ? alloc_fd+0x10a/0x150
&gt;  [10663.822473] [&lt;ffffffff8158d76e&gt;] ? do_page_fault+0x15e/0x350
&gt;  [10663.822482] [&lt;ffffffff8100a0f2&gt;] system_call_fastpath+0x16/0x1b
&gt;  [10663.822487] Code: 90 48 8d 78 02 be 25 00 00 00 e8 92 1d e2 ff 48 85 c0 75 cf bf 20 00 00 00 e8 c3 b1 c6 ff 49 89 c7 b8 f4 ff ff ff 4d 85 ff 74 bd &lt;4d&gt; 8b 75 70 49 8d 45 70 48 89 45 b8 49 83 ee 58 eb 28 48 8d 55
&gt;  [10663.822618] RIP [&lt;ffffffff8149c2fa&gt;] __dev_alloc_name+0x9a/0x170
&gt;  [10663.822627] RSP &lt;ffff88014aebf7b8&gt;
&gt;  [10663.822631] CR2: 000000000000006d
&gt;  [10663.822636] ---[ end trace 3dfd6c3ad5327ca7 ]---

This bug was introduced in:
commit 81adee47dfb608df3ad0b91d230fb3cef75f0060
Author: Eric W. Biederman &lt;ebiederm@aristanetworks.com&gt;
Date:   Sun Nov 8 00:53:51 2009 -0800

    net: Support specifying the network namespace upon device creation.

    There is no good reason to not support userspace specifying the
    network namespace during device creation, and it makes it easier
    to create a network device and pass it to a child network namespace
    with a well known name.

    We have to be careful to ensure that the target network namespace
    for the new device exists through the life of the call.  To keep
    that logic clear I have factored out the network namespace grabbing
    logic into rtnl_link_get_net.

    In addtion we need to continue to pass the source network namespace
    to the rtnl_link_ops.newlink method so that we can find the base
    device source network namespace.

    Signed-off-by: Eric W. Biederman &lt;ebiederm@aristanetworks.com&gt;
    Acked-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;

Where apparently I forgot to add error handling to the path where we create
a new network device in a new network namespace, and pass in an invalid pid.

Reported-by: Ed Swierk &lt;eswierk@bigswitch.com&gt;
Signed-off-by: "Eric W. Biederman" &lt;ebiederm@xmission.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>rtnetlink: Fix message size calculation for link messages</title>
<updated>2010-11-12T18:53:09Z</updated>
<author>
<name>Thomas Graf</name>
</author>
<published>2010-11-11T15:47:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=369cf77a6a3e41b1110506ddf43d45804103bfde'/>
<id>urn:sha1:369cf77a6a3e41b1110506ddf43d45804103bfde</id>
<content type='text'>
nlmsg_total_size() calculates the length of a netlink message
including header and alignment. nla_total_size() calculates the
space an individual attribute consumes which was meant to be used
in this context.

Also, ensure to account for the attribute header for the
IFLA_INFO_XSTATS attribute as implementations of get_xstats_size()
seem to assume that we do so.

The addition of two message headers minus the missing attribute
header resulted in a calculated message size that was larger than
required. Therefore we never risked running out of skb tailroom.

Signed-off-by: Thomas Graf &lt;tgraf@infradead.org&gt;
Acked-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>rtnetlink: remove rtnl_kill_links</title>
<updated>2010-10-21T10:09:45Z</updated>
<author>
<name>stephen hemminger</name>
</author>
<published>2010-10-15T05:12:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8d8a0b1cc2a8f9794a3f1f747089b6a93774408d'/>
<id>urn:sha1:8d8a0b1cc2a8f9794a3f1f747089b6a93774408d</id>
<content type='text'>
The function rtnl_kill_links is defined but never used.

Signed-off-by: Stephen Hemminger &lt;shemminger@vyatta.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: copy_rtnl_link_stats64() simplification</title>
<updated>2010-08-24T03:43:16Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-08-23T07:14:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=afdcba371f9748ac91608bb6c57f170aab7085b4'/>
<id>urn:sha1:afdcba371f9748ac91608bb6c57f170aab7085b4</id>
<content type='text'>
No need to use a temporary struct rtnl_link_stats64 variable,
just copy the source to skb buffer.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Reviewed-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net/core: EXPORT_SYMBOL cleanups</title>
<updated>2010-07-12T19:57:55Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-07-09T21:22:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9e34a5b51684bc90ac827ec4ba339f3892632eac'/>
<id>urn:sha1:9e34a5b51684bc90ac827ec4ba339f3892632eac</id>
<content type='text'>
CodingStyle cleanups

EXPORT_SYMBOL should immediately follow the symbol declaration.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: fix 64 bit counters on 32 bit arches</title>
<updated>2010-07-07T21:58:56Z</updated>
<author>
<name>Eric Dumazet</name>
</author>
<published>2010-07-07T21:58:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=28172739f0a276eb8d6ca917b3974c2edb036da3'/>
<id>urn:sha1:28172739f0a276eb8d6ca917b3974c2edb036da3</id>
<content type='text'>
There is a small possibility that a reader gets incorrect values on 32
bit arches. SNMP applications could catch incorrect counters when a
32bit high part is changed by another stats consumer/provider.

One way to solve this is to add a rtnl_link_stats64 param to all
ndo_get_stats64() methods, and also add such a parameter to
dev_get_stats().

Rule is that we are not allowed to use dev-&gt;stats64 as a temporary
storage for 64bit stats, but a caller provided area (usually on stack)

Old drivers (only providing get_stats() method) need no changes.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: Enable 64-bit net device statistics on 32-bit architectures</title>
<updated>2010-06-12T22:51:22Z</updated>
<author>
<name>Ben Hutchings</name>
</author>
<published>2010-06-08T07:19:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=be1f3c2c027cc5ad735df6a45a542ed1db7ec48b'/>
<id>urn:sha1:be1f3c2c027cc5ad735df6a45a542ed1db7ec48b</id>
<content type='text'>
Use struct rtnl_link_stats64 as the statistics structure.

On 32-bit architectures, insert 32 bits of padding after/before each
field of struct net_device_stats to make its layout compatible with
struct rtnl_link_stats64.  Add an anonymous union in net_device; move
stats into the union and add struct rtnl_link_stats64 stats64.

Add net_device_ops::ndo_get_stats64, implementations of which will
return a pointer to struct rtnl_link_stats64.  Drivers that implement
this operation must not update the structure asynchronously.

Change dev_get_stats() to call ndo_get_stats64 if available, and to
return a pointer to struct rtnl_link_stats64.  Change callers of
dev_get_stats() accordingly.

Signed-off-by: Ben Hutchings &lt;bhutchings@solarflare.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>netlink: bug fix: wrong size was calculated for vfinfo list blob</title>
<updated>2010-05-28T10:42:43Z</updated>
<author>
<name>Scott Feldman</name>
</author>
<published>2010-05-28T10:42:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=045de01a174d9f0734f657eb4b3313d89b4fd5ad'/>
<id>urn:sha1:045de01a174d9f0734f657eb4b3313d89b4fd5ad</id>
<content type='text'>
The wrong size was being calculated for vfinfo.  In one case, it was over-
calculating using nlmsg_total_size on attrs, in another case, it was
under-calculating by assuming ifla_vf_* structs are packed together, but
each struct is it's own attr w/ hdr (and padding).

Signed-off-by: Scott Feldman &lt;scofeldm@cisco.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>netlink: bug fix: don't overrun skbs on vf_port dump</title>
<updated>2010-05-28T10:42:18Z</updated>
<author>
<name>Scott Feldman</name>
</author>
<published>2010-05-28T10:42:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8ca9418350eccd5dd2659931807c1901224dd638'/>
<id>urn:sha1:8ca9418350eccd5dd2659931807c1901224dd638</id>
<content type='text'>
Noticed by Patrick McHardy: was continuing to fill skb after a
nla_put_failure, ignoring the size calculated by upper layer.  Now,
return -EMSGSIZE on any overruns, but also allow netdev to
fail ndo_get_vf_port with error other than -EMSGSIZE, thus unwinding
nest.

Signed-off-by: Scott Feldman &lt;scofeldm@cisco.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>rtnetlink: Fix error handling in do_setlink()</title>
<updated>2010-05-24T06:11:08Z</updated>
<author>
<name>David Howells</name>
</author>
<published>2010-05-21T02:25:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=253683bbfb6bc5864417c8c35cb6ef13b5e259e6'/>
<id>urn:sha1:253683bbfb6bc5864417c8c35cb6ef13b5e259e6</id>
<content type='text'>
Commit c02db8c6290bb992442fec1407643c94cc414375:

	Author:  Chris Wright &lt;chrisw@sous-sol.org&gt;
	Date:    Sun May 16 01:05:45 2010 -0700
	Subject: rtnetlink: make SR-IOV VF interface symmetric

adds broken error handling to do_setlink() in net/core/rtnetlink.c.  The
problem is the following chunk of code:

	if (tb[IFLA_VFINFO_LIST]) {
		struct nlattr *attr;
		int rem;
		nla_for_each_nested(attr, tb[IFLA_VFINFO_LIST], rem) {
			if (nla_type(attr) != IFLA_VF_INFO)
  ----&gt;				goto errout;
			err = do_setvfinfo(dev, attr);
			if (err &lt; 0)
				goto errout;
			modified = 1;
		}
	}

which can get to errout without setting err, resulting in the following error:

net/core/rtnetlink.c: In function 'do_setlink':
net/core/rtnetlink.c:904: warning: 'err' may be used uninitialized in this function

Change the code to return -EINVAL in this case.  Note that this might not be
the appropriate error though.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
cc: Chris Wright &lt;chrisw@sous-sol.org&gt;
cc: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Chris Wright &lt;chrisw@sous-sol.org&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
