From: Karsten Keil <kkeil@suse.de>
To: Rusty Russell <rusty@rustcorp.com.au>
Cc: Michal Hocko <mhocko@suse.cz>,
"David S. Miller" <davem@davemloft.net>,
linux-kernel@vger.kernel.org,
richard kennedy <richard@rsk.demon.co.uk>,
Dan Williams <dan.j.williams@intel.com>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Russell King <rmk+kernel@arm.linux.org.uk>,
dwmw2@infradead.org, Scott Wood <scottwood@freescale.com>,
netdev@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>
Subject: Re: [RFC] Suspicious bug in module refcounting
Date: Tue, 10 Feb 2009 04:42:50 +0100 [thread overview]
Message-ID: <20090210034250.GA9938@pingi.kke.suse.de> (raw)
In-Reply-To: <200902101345.08580.rusty@rustcorp.com.au>
On Tue, Feb 10, 2009 at 01:45:07PM +1030, Rusty Russell wrote:
> On Tuesday 10 February 2009 01:48:31 Michal Hocko wrote:
> > Based on this change, would it make sense to update sys_accept to change
> > __module_get to try_module_get like in the following patch?
>
> I don't think so:
>
> > /*
> > - * We don't need try_module_get here, as the listening socket (sock)
> > - * has the protocol module (sock->ops->owner) held.
> > + * Socket's owner cannot be in unloading path because there
> > + * must be at least one listening reference
> > */
> > - __module_get(newsock->ops->owner);
> > + if (unlikely(!try_module_get(newsock->ops->owner)))
> > + BUG();
>
> rmmod --wait can make try_module_get fail even if the reference count isn't
> zero. But in this case, we should return an error from the accept call;
> presumably the admin really doesn't want us to keep using the module...
>
I was thinking about this for a while too, but I did not find a valid
error value for this case, the current accept syscall API only allow few
error codes and I think we should not break this.
Maybe -ECONNABORTED could be used but it doesn't fit 100% and applications
may interpret this in a wrong way.
If the admin decide to remove the module, he should also stop the services
needing this resource. In this case the effect of __module_get(newsock->ops->owner);
is ok, if the service is still in use, the module will not be removed and
still does the expected work, if all sockets are closed the module refcount
will reach zero and the module will go away.
--
Karsten Keil
SuSE Labs
next prev parent reply other threads:[~2009-02-10 3:43 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-03 13:47 Karsten Keil
2009-02-03 15:02 ` richard kennedy
2009-02-04 3:48 ` Rusty Russell
2009-02-04 10:11 ` Russell King
2009-02-04 10:55 ` Rusty Russell
2009-02-04 10:59 ` Russell King
2009-02-04 16:33 ` Dan Williams
2009-02-06 22:41 ` Karsten Keil
2009-02-09 15:18 ` Michal Hocko
2009-02-10 3:15 ` Rusty Russell
2009-02-10 3:42 ` Karsten Keil [this message]
2009-02-10 10:31 ` Michal Hocko
2009-02-10 13:36 ` Rusty Russell
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=20090210034250.GA9938@pingi.kke.suse.de \
--to=kkeil@suse.de \
--cc=dan.j.williams@intel.com \
--cc=davem@davemloft.net \
--cc=dmitry.torokhov@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhocko@suse.cz \
--cc=netdev@vger.kernel.org \
--cc=richard@rsk.demon.co.uk \
--cc=rmk+kernel@arm.linux.org.uk \
--cc=rusty@rustcorp.com.au \
--cc=scottwood@freescale.com \
--cc=viro@zeniv.linux.org.uk \
/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
all inboxes | Powered by JetHome®