All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: "Ilia, Kolominsky" <iliak@ti.com>
Cc: Gustavo Padovan <padovan@profusion.mobi>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>
Subject: RE: BUG: Reordering of L2CAP connection pending/accesspted replies
Date: Mon, 26 Dec 2011 11:43:12 -0800	[thread overview]
Message-ID: <1324928592.1965.267.camel@aeonflux> (raw)
In-Reply-To: <A7CD2DBA66569F478A0C1ECFC39E1C520A654D61@DLEE74.ent.ti.com>

Hi Ilia,

> > > I have encountered an incorrect behavior of l2cap connection
> > > establishment mechanism when handling an incoming connection
> > > request:
> > >
> > > > ACL data: handle 1 flags 0x02 dlen 12
> > >     L2CAP(s): Connect req: psm 23 scid 0x0083
> > > < ACL data: handle 1 flags 0x00 dlen 16
> > >     L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0083 result 0 status 0
> > >       Connection successful
> > > < HCI Command: Exit Sniff Mode (0x02|0x0004) plen 2
> > >     handle 1
> > > < ACL data: handle 1 flags 0x00 dlen 12
> > >     L2CAP(s): Config req: dcid 0x0083 flags 0x00 clen 0
> > > > HCI Event: Mode Change (0x14) plen 6
> > >     status 0x00 handle 1 mode 0x00 interval 0
> > >     Mode: Active
> > > < ACL data: handle 1 flags 0x00 dlen 16
> > >     L2CAP(s): Connect rsp: dcid 0x0040 scid 0x0083 result 1 status 2
> > >       Connection pending - Authorization pending
> > >
> > > After analyzing the code, it seems to me that there is indeed a
> > > clear possibility that replies will egress out of order on
> > > multicore systems:
> > >
> > > CPU0 (Tasklet: hci_rx_task)          CPU1 (user process)
> > 
> > Can you check if this also happens after the move to workqueue
> > processing?
> > The workqueue handling is quite different, then this problem might not
> > be
> > there anymore.
> 
> Firstly, I think workqueue should only make the matters worse - 
> since it can be preempted ( unlike tasklets ) this can 
> happen even on single CPU. ) e.g. resched just before send_resp label).
> Secondly, as with any race situations, this bug is difficult to reproduce,
> I saw it only a couple of times, thus I call for theoretical analysis.

we are actually using a CPU unbound workqueue where the kernel ensures
that only one will be active across the set of CPUs. Both RX and TX are
executed from that same workqueue. So the only way this can happen is if
one work is scheduled from the other. However since the event processing
is now also run from that same workqueue, I fail to see how that could
happen.

Regards

Marcel



  reply	other threads:[~2011-12-26 19:43 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-25 20:34 BUG: Reordering of L2CAP connection pending/accesspted replies Ilia, Kolominsky
2011-12-26 12:50 ` Gustavo Padovan
2011-12-26 13:33   ` Ilia, Kolominsky
2011-12-26 19:43     ` Marcel Holtmann [this message]
2011-12-27 11:58       ` Ilia, Kolominsky
2011-12-27 20:32         ` Gustavo Padovan
2011-12-27 11:52 ` Luiz Augusto von Dentz
2011-12-27 12:27   ` Ilia, Kolominsky

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=1324928592.1965.267.camel@aeonflux \
    --to=marcel@holtmann.org \
    --cc=iliak@ti.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=padovan@profusion.mobi \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.