Bug 1487152
| Summary: | ss should only read /proc/slabinfo when required | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Jaroslav Aster <jaster> |
| Component: | iproute | Assignee: | Phil Sutter <psutter> |
| Status: | CLOSED ERRATA | QA Contact: | Jaroslav Aster <jaster> |
| Severity: | medium | Docs Contact: | |
| Priority: | medium | ||
| Version: | 7.4-Alt | CC: | atragler |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | iproute-4.11.0-3.el7a | Doc Type: | If docs needed, set a value |
| Doc Text: | Story Points: | --- | |
| Clone Of: | 1289312 | Environment: | |
| Last Closed: | 2017-11-09 11:25:03 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: | |
| Embargoed: | |||
The original issue is actually not present in rhel-alt-7.4, but a different one with similar symptoms so the test-case luckily caught it. The much more severe effect of this issue is that a call to 'ss' with not further arguments in rhel-alt-7.4 prints the list of connected TCP sockets twice. Therefore I second the request for exception+.
Upstream accepted my fix already:
commit 6c6bbc30f4e7fedc74381627f7ec86d26050b404
Author: Phil Sutter <phil>
Date: Mon Aug 28 19:31:22 2017 +0200
ss: Fix for added diag support check
Commit 9f66764e308e9 ("libnetlink: Add test for error code returned from
netlink reply") changed rtnl_dump_filter_l() to return an error in case
NLMSG_DONE would contain one, even if it was ENOENT.
This in turn breaks ss when it tries to dump DCCP sockets on a system
without support for it: The function tcp_show(), which is shared between
TCP and DCCP, will start parsing /proc since inet_show_netlink() returns
an error - yet it parses /proc/net/tcp which doesn't make sense for DCCP
sockets at all.
On my system, a call to 'ss' without further arguments prints the list
of connected TCP sockets twice.
Fix this by introducing a dedicated function dccp_show() which does not
have a fallback to /proc, just like sctp_show(). And since tcp_show()
is no longer "multi-purpose", drop it's socktype parameter.
Fixes: 9f66764e308e9 ("libnetlink: Add test for error code returned from netlink reply")
Signed-off-by: Phil Sutter <phil>
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://access.redhat.com/errata/RHEA-2017:3172 |
Similar issue on rhel-alt-7.4. # rpm -q iproute iproute-4.11.0-2.el7a.ppc64le # strace -eopen ss 2>&1 | grep slabinfo open("/proc/slabinfo", O_RDONLY) = 3 +++ This bug was initially created as a clone of Bug #1289312 +++ Description of problem: The `ss` utility is reading /proc/slabinfo every time it is executed rather than when it actually needs the information. For the customer system, which is running a low latency application on the stock rhel6 kernel, this causes delay up around 100ms while irq processing is blocked while gathering the information on slab usage. As it appears the the information gathered from /proc/slabinfo is only used when running ss with the summary option (-s), based on a suggestion from the customer i've done a patch to move gathering of slabinfo so that it is only done when the information is required. Version-Release number of selected component (if applicable): iproute-2.6.32-31.el6.x86_64 How reproducible: 100% Steps to Reproduce: 1. Run ss with no options under strace 2. strace data shows /proc/slabinfo is read 3. Actual results: /proc/slabinfo is read every time Expected results: /proc/slabinfo is only read when the information is required Additional info: --- Additional comment from Phil Sutter on 2015-12-08 10:27:02 EST --- This upstream commit fixes the behaviour: commit a221d621bb4af414b974ccc40bba26481337d7cf Author: Bryton Lee <brytonlee01> Date: Thu Feb 12 14:16:04 2015 +0800 prevent the read ahead of /proc/slabinfo in ss Signed-off-by: Bryton Lee <brytonlee01> --- Additional comment from Phil Sutter on 2015-12-08 13:20:09 EST --- Fix verification is pretty simple using strace as suggested by Stuart: Here's a test of the faulty version: # strace -eopen ss 2>&1 | grep slabinfo open("/proc/slabinfo", O_RDONLY) = 3 With the patch from comment #3 applied, the above command does not produce any output.