All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: cijoml@volny.cz
Cc: BlueZ Mailing List <bluez-users@lists.sourceforge.net>
Subject: Re: [Bluez-users] bthid and 2.4.25-mh2
Date: Thu, 18 Mar 2004 21:34:35 +0100	[thread overview]
Message-ID: <1079642075.3301.62.camel@pegasus> (raw)
In-Reply-To: <200403182116.24096.cijoml@volny.cz>

[-- Attachment #1: Type: text/plain, Size: 295 bytes --]

Hi Michal,

> Works without problem :) Maybe "Patch day" was not so patch :D
> Marcel send me in privat your mh2 patch differenced into parts and I'll find 
> which "patch" in it si bad.

I think it can be only this one. Please apply -mh2 and apply the
attached patch with -R.

Regards

Marcel


[-- Attachment #2: patch-non-blocking-race --]
[-- Type: text/plain, Size: 2077 bytes --]

# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/03/15 19:42:55+01:00 marcel@holtmann.org 
#   [Bluetooth] Fix non-blocking socket race conditions
#   
#   A poll on a non-blocking listen socket signals readable too early. The
#   first time the socket should be readable is if a child is in connected
#   state. And don't signal writeable if the socket is in config state.
#   
#   Noticed by Jean Tourrilhes <jt@hpl.hp.com>
# 
# net/bluetooth/af_bluetooth.c
#   2004/03/15 19:42:15+01:00 marcel@holtmann.org +22 -5
#   Fix non-blocking socket race conditions
# 
diff -Nru a/net/bluetooth/af_bluetooth.c b/net/bluetooth/af_bluetooth.c
--- a/net/bluetooth/af_bluetooth.c	Mon Mar 15 19:43:09 2004
+++ b/net/bluetooth/af_bluetooth.c	Mon Mar 15 19:43:09 2004
@@ -218,15 +218,31 @@
 	return err ? : copied;
 }
 
+static inline unsigned int bluez_accept_poll(struct sock *parent)
+{
+	struct list_head *p, *n;
+	struct sock *sk;
+
+	list_for_each_safe(p, n, &bluez_pi(parent)->accept_q) {
+		sk = (struct sock *) list_entry(p, struct bluez_pinfo, accept_q);
+		if (sk->state == BT_CONNECTED)
+			return POLLIN | POLLRDNORM;
+	}
+
+	return 0;
+}
+
 unsigned int bluez_sock_poll(struct file * file, struct socket *sock, poll_table *wait)
 {
 	struct sock *sk = sock->sk;
-	unsigned int mask;
+	unsigned int mask = 0;
 
 	BT_DBG("sock %p, sk %p", sock, sk);
 
 	poll_wait(file, sk->sleep, wait);
-	mask = 0;
+
+	if (sk->state == BT_LISTEN)
+		return bluez_accept_poll(sk);
 
 	if (sk->err || !skb_queue_empty(&sk->error_queue))
 		mask |= POLLERR;
@@ -235,16 +251,17 @@
 		mask |= POLLHUP;
 
 	if (!skb_queue_empty(&sk->receive_queue) || 
-			!list_empty(&bluez_pi(sk)->accept_q) ||
 			(sk->shutdown & RCV_SHUTDOWN))
 		mask |= POLLIN | POLLRDNORM;
 
 	if (sk->state == BT_CLOSED)
 		mask |= POLLHUP;
 
-	if (sk->state == BT_CONNECT || sk->state == BT_CONNECT2)
+	if (sk->state == BT_CONNECT ||
+			sk->state == BT_CONNECT2 ||
+			sk->state == BT_CONFIG)
 		return mask;
-	
+
 	if (sock_writeable(sk))
 		mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
 	else

  reply	other threads:[~2004-03-18 20:34 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-17 12:04 [Bluez-users] bthid and 2.4.25-mh2 Michal Semler (volny.cz)
2004-03-17 12:15 ` Marcel Holtmann
2004-03-18 20:16   ` Michal Semler (volny.cz)
2004-03-18 20:34     ` Marcel Holtmann [this message]
2004-03-18 21:17       ` Michal Semler (volny.cz)
2004-03-18 21:39         ` Marcel Holtmann
2004-03-18 21:50           ` Michal Semler (volny.cz)
2004-03-18 22:29             ` Marcel Holtmann
2004-03-18 22:42               ` Michal Semler (volny.cz)
2004-03-19  0:01                 ` Marcel Holtmann

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=1079642075.3301.62.camel@pegasus \
    --to=marcel@holtmann.org \
    --cc=bluez-users@lists.sourceforge.net \
    --cc=cijoml@volny.cz \
    /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.