On Wed, Jun 21, 2023 at 07:05:12AM -0400, Jeff Layton wrote:Come on.
On Wed, 2023-06-21 at 15:42 +0500, stsp wrote:I agree.
21.06.2023 15:35, Jeff Layton пишет:Yes. Ambiguous answers are worse than none at all.
I don't think we can change this at this point.What's the problem with 2 owners?
The bottom line (again) is that OFD locks are owned by the file
descriptor (much like with flock()), and since file descriptors can be
shared across multiple process it's impossible to say that some single
process owns it.
Can't you get one of them, rather than
meaningless -1?
Compare this situation with read locks.
They can overlap, so when you get an
info about a read lock (except for the
new F_UNLCK case), you get the info
about *some* of the locks in that range.
In the case of multiple owners, you
likewise get the info about about some
owner. If you iteratively send them a
"please release this lock" message
(eg in a form of SIGKILL), then you
traverse all, and end up with the
lock-free area.
Is there really any problem here?
A few minor observations:
SCM_RIGHTS have already been mentioned multiple times. But I'm not sure
it's been mentioned explicitly but that trivially means it's possible to
send an fd to a completely separate thread-group, then kill off the
sending thread-group by killing their thread-group leader. Bad enough as
the identifier is now useless. But it also means that at some later
point that pid can be recycled.