netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: johnpol@2ka.mipt.ru
Cc: netdev@oss.sgi.com, Greg KH <greg@kroah.com>,
	Jamal Hadi Salim <hadi@cyberus.ca>,
	Kay Sievers <kay.sievers@vrfy.org>,
	Herbert Xu <herbert@gondor.apana.org.au>,
	James Morris <jmorris@redhat.com>,
	Guillaume Thouvenin <guillaume.thouvenin@bull.net>,
	linux-kernel@vger.kernel.org, Andrew Morton <akpm@osdl.org>,
	Thomas Graf <tgraf@suug.ch>, Jay Lan <jlan@engr.sgi.com>
Subject: Re: [1/1] connector/CBUS: new messaging subsystem. Revision number next.
Date: Tue, 26 Apr 2005 12:31:58 -0500	[thread overview]
Message-ID: <d120d50005042610317961a564@mail.gmail.com> (raw)
In-Reply-To: <20050426202437.234e7d45@zanzibar.2ka.mipt.ru>

On 4/26/05, Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
> On Tue, 26 Apr 2005 10:57:55 -0500
> Dmitry Torokhov <dmitry.torokhov@gmail.com> wrote:
> 
> > Hi Evgeniy,
> >
> > On 4/11/05, Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
> > > /*****************************************/
> > > Kernel Connector.
> > > /*****************************************/
> > ...
> > > +static int cn_call_callback(struct cn_msg *msg, void (*destruct_data) (void *), void *data)
> > > +{
> > > +       struct cn_callback_entry *__cbq;
> > > +       struct cn_dev *dev = &cdev;
> > > +       int found = 0;
> > > +
> > > +       spin_lock_bh(&dev->cbdev->queue_lock);
> > > +       list_for_each_entry(__cbq, &dev->cbdev->queue_list, callback_entry) {
> > > +               if (cn_cb_equal(&__cbq->cb->id, &msg->id)) {
> > > +                       __cbq->cb->priv = msg;
> > > +
> > > +                       __cbq->ddata = data;
> > > +                       __cbq->destruct_data = destruct_data;
> > > +
> > > +                       queue_work(dev->cbdev->cn_queue, &__cbq->work);
> >
> > It looks like there is a problem with the code. As far as I can see
> > there is only one cn_callback_entry associated with each callback. So,
> > if someone sends netlink messages with the same id at a high enough
> > rate (so cbdev's work queue does not get a chance to get scheduled and
> > process pending requests) ddata and the destructor will be overwritten
> > which can lead to memory leaks and non-delivery of some messages.
> >
> > Am I missing something?
> 
> Connector needs to check return value here - zero means
> that work was already queued and we must free shared skb.
> 
> There may not be the same work with different data.
> 

Ugh, that really blows. Now every user of a particular message type
has to coordinate efforts with other users of the same message type...

Imability to "fire and forget" undermines usefulness of whole
connector. How will you for example implement hotplug notification
over connector? Have kobject_hotplug wait and block other instances?
But wait on what?

-- 
Dmitry

  parent reply	other threads:[~2005-04-26 17:31 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-11 12:59 [1/1] connector/CBUS: new messaging subsystem. Revision number next Evgeniy Polyakov
2005-04-11 13:32 ` Thomas Graf
2005-04-11 14:49   ` [2/1] " Evgeniy Polyakov
2005-04-26 15:57 ` [1/1] " Dmitry Torokhov
2005-04-26 16:24   ` Evgeniy Polyakov
2005-04-26 16:30     ` Evgeniy Polyakov
2005-04-26 17:34       ` Dmitry Torokhov
2005-04-26 18:07         ` Evgeniy Polyakov
2005-04-26 18:20           ` Dmitry Torokhov
2005-04-26 18:31             ` Evgeniy Polyakov
2005-04-26 18:42               ` Dmitry Torokhov
2005-04-26 18:48                 ` Evgeniy Polyakov
2005-04-26 19:06                   ` Dmitry Torokhov
2005-04-26 19:28                     ` Evgeniy Polyakov
2005-04-26 20:02                       ` Dmitry Torokhov
2005-04-27  4:06                         ` Evgeniy Polyakov
2005-04-27  5:16                           ` Dmitry Torokhov
2005-04-27  5:32                             ` Evgeniy Polyakov
2005-04-27  5:46                               ` Dmitry Torokhov
2005-04-27  6:08                                 ` Evgeniy Polyakov
2005-04-26 17:31     ` Dmitry Torokhov [this message]
2005-04-26 18:03       ` Evgeniy Polyakov
2005-04-26 18:10         ` Evgeniy Polyakov
2005-04-26 18:13           ` Evgeniy Polyakov
2005-04-26 18:25             ` Dmitry Torokhov
2005-04-26 18:35               ` Evgeniy Polyakov
2005-05-10  6:18 ` Dmitry Torokhov
2005-05-10 10:04   ` Evgeniy Polyakov
2005-05-10 14:56     ` Dmitry Torokhov
2005-05-10 15:41       ` Evgeniy Polyakov
2005-05-10 17:50         ` Dmitry Torokhov
2005-05-10 18:24           ` Evgeniy Polyakov
2005-05-11  5:46             ` Dmitry Torokhov
2005-05-11  6:48               ` Evgeniy Polyakov
2005-05-11 14:09   ` Alan Cox

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=d120d50005042610317961a564@mail.gmail.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=akpm@osdl.org \
    --cc=dtor_core@ameritech.net \
    --cc=greg@kroah.com \
    --cc=guillaume.thouvenin@bull.net \
    --cc=hadi@cyberus.ca \
    --cc=herbert@gondor.apana.org.au \
    --cc=jlan@engr.sgi.com \
    --cc=jmorris@redhat.com \
    --cc=johnpol@2ka.mipt.ru \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@oss.sgi.com \
    --cc=tgraf@suug.ch \
    /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).