From: "Chad N. Tindel" <chad@tindel.net>
To: Herbert Xu <herbert@gondor.apana.org.au>
Cc: netdev@oss.sgi.com, linux-net@vger.kernel.org
Subject: Re: Wrong UIDs reported in /proc/net/tcp
Date: Thu, 18 Nov 2004 14:02:57 -0500 [thread overview]
Message-ID: <20041118190257.GA7084@calma.pair.com> (raw)
In-Reply-To: <E1CRdBr-0001P2-00@gondolin.me.apana.org.au>
> /proc/net/tcp is an obsolete interface. It is inherently unreliable
> in that a record may be read using two read(2) calls. Those two calls
> may end up looking at two different records.
>
> So please use the netlink interface or ss(8) from the iproute package.
OK, so just out of sheer morbid curiousity, I added an ioctl which will
accept 4 parameters (the address/port pairs), and will return the user id
associated with that socket. I also changed pidentd to call this ioctl
instead of looking at /proc/net/tcp. This should theoretically get rid
of all race conditions.
However, the problem still happens. We see many instances of the kernel
reporting the wrong user id. What is even more interesting is that we added
a retry loop, and many times the problem goes away after re-trying. Sometimes
the first retry gets the correct username, and sometimes it takes 4 or 5
retries. So there is definitely some sort of race condition going on here.
We have verified that when this problem occurs the process holding the
socket endpoint in question is still running, so it isn't some problem caused
by doing an identd lookup after the other end has gone away.
Does anybody have any idea why the userid associated with the socket's inode
might be changing mid-stream? What are the chances of a defect where two
sockets are using the same inode memory or something like that?
Chad
next prev parent reply other threads:[~2004-11-18 19:02 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-11-09 20:53 Wrong UIDs reported in /proc/net/tcp Chad N. Tindel
2004-11-09 21:06 ` Herbert Xu
2004-11-09 22:43 ` Chad N. Tindel
2004-11-09 22:58 ` Herbert Xu
2004-11-09 23:04 ` Chad N. Tindel
2004-11-09 23:18 ` Herbert Xu
2004-11-18 19:02 ` Chad N. Tindel [this message]
2004-11-18 21:03 ` Herbert Xu
2004-11-18 21:27 ` Stephen Hemminger
2004-11-18 22:07 ` Herbert Xu
2004-11-18 22:16 ` David Stevens
2004-11-18 23:40 ` Herbert Xu
2004-11-18 23:49 ` Chad N. Tindel
2004-11-18 23:56 ` David Stevens
2004-11-19 1:26 ` Herbert Xu
2004-11-19 21:01 ` Chad N. Tindel
2004-11-19 14:27 ` Henrik Nordstrom
2004-11-09 21:11 ` akepner
2004-11-09 22:41 ` Chad N. Tindel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20041118190257.GA7084@calma.pair.com \
--to=chad@tindel.net \
--cc=herbert@gondor.apana.org.au \
--cc=linux-net@vger.kernel.org \
--cc=netdev@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).