Bug 1040367 - Unable to configure network after updating iproute to 2.6.32-31
Summary: Unable to configure network after updating iproute to 2.6.32-31
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: iproute
Version: 6.5
Hardware: Unspecified
OS: Unspecified
Target Milestone: rc
: ---
Assignee: Pavel Šimerda (pavlix)
QA Contact: Jaroslav Aster
URL: http://thread.gmane.org/gmane.linux.n...
Depends On:
Blocks: 1156448
TreeView+ depends on / blocked
Reported: 2013-12-11 10:12 UTC by Andrew Vagin
Modified: 2019-02-15 13:36 UTC (History)
15 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Prior to this update, the iproute utility handled the return values of the send() system call incorrectly when reading kernel responses. Consequently, iproute could interpret successful kernel responses as failures, which caused iproute to terminate with an error. With this update, iproute uses the return values correctly and processes kernel responses as intended.
Clone Of:
: 1156448 (view as bug list)
Last Closed: 2015-07-22 06:40:38 UTC
Target Upstream Version:

Attachments (Terms of Use)
Correct patch proposed to upstream (1.21 KB, patch)
2013-12-11 13:04 UTC, Petr Pisar
no flags Details | Diff

System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2015:1331 0 normal SHIPPED_LIVE iproute bug fix and enhancement update 2015-07-20 17:53:02 UTC

Description Andrew Vagin 2013-12-11 10:12:35 UTC
Description of problem:

iproute2 was fixed incorrectly by iproute2-2.6.32-rtnl_send-hang.patch

--- a/ip/iplink.c
+++ b/ip/iplink.c
@@ -158,8 +158,8 @@ static int iplink_have_newlink(void)
 		req.n.nlmsg_type = RTM_NEWLINK;
 		req.i.ifi_family = AF_UNSPEC;
-		rtnl_send(&rth, (char *)&req.n, req.n.nlmsg_len);
-		rtnl_listen(&rth, accept_msg, NULL);
+		if (rtnl_send(&rth, &req.n, req.n.nlmsg_len) == 0)
+			rtnl_listen(&rth, accept_msg, NULL);
 	return have_rtnl_newlink;

Look at the rtnl_send() function
int rtnl_send(struct rtnl_handle *rth, const char *buf, int len)
        return send(rth->fd, buf, len, 0);

send() returns the number of bytes sent, so with these patch we leave a response in a socket. Each next command will get a response for a previous command.

I think we must check that rtnl_send() returns a positive value.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:
1. Install old kernel (2.6.18)
2. # ip link set up dev eth0
RTNETLINK answers: Operation not supported

Actual results:
Can't bring a network interface up

Expected results:
It works fine w/o this patch

Additional info:

Comment 1 Andrew Vagin 2013-12-11 10:37:06 UTC

Comment 2 Petr Pisar 2013-12-11 12:03:31 UTC
You are right, the patch is wrong.

Comment 3 Petr Pisar 2013-12-11 13:04:58 UTC
Created attachment 835274 [details]
Correct patch proposed to upstream

Comment 7 Kirill Kolyshkin 2013-12-18 01:47:39 UTC
Just for the reference:

Corresponding Parallels issue id: PCLIN-32219

Corresponding OpenVZ bug: https://bugzilla.openvz.org/2843
Web Hosting Talk thread:  http://www.webhostingtalk.com/showthread.php?t=1327600
Fixed iproute2 packages:  http://download.openvz.org/.kir/bug2843/

Comment 9 Petr Pisar 2014-01-08 10:26:19 UTC
Upstream is still working on fix. Current upstream sources does not provide complete fix.

I recommend to apply my patch or the latter version posted in referenced mailing list which adds a warning to error output.

Comment 32 errata-xmlrpc 2015-07-22 06:40:38 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.


Note You need to log in before you can comment on or make changes to this bug.