Bug 1040367

Summary: Unable to configure network after updating iproute to 2.6.32-31
Product: Red Hat Enterprise Linux 6 Reporter: Andrew Vagin <avagin>
Component: iprouteAssignee: Pavel Šimerda (pavlix) <psimerda>
Status: CLOSED ERRATA QA Contact: Jaroslav Aster <jaster>
Severity: high Docs Contact:
Priority: urgent    
Version: 6.5CC: bkb, fkrska, jaster, jherrman, jkurik, khorenko, kolyshkin, krai, mmalik, mpathan, nchavan, ppisar, strobert, thozza, vvs
Target Milestone: rcKeywords: EasyFix, Patch, ZStream
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
URL: http://thread.gmane.org/gmane.linux.network/294319
Whiteboard:
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.
Story Points: ---
Clone Of:
: 1156448 (view as bug list) Environment:
Last Closed: 2015-07-22 06:40:38 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Bug Depends On:    
Bug Blocks: 1156448    
Attachments:
Description Flags
Correct patch proposed to upstream none

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):
iproute-2.6.32-31.el6.x86_64


How reproducible:
100%


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
https://bugzilla.redhat.com/show_bug.cgi?id=985526

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.

https://rhn.redhat.com/errata/RHBA-2015-1331.html