All of lore.kernel.org
 help / color / mirror / Atom feed
From: LinMa <linma@zju.edu.cn>
To: "Greg Kroah-Hartman" <gregkh@linuxfoundation.org>
Cc: linux-kernel <linux-kernel@vger.kernel.org>,
	stable <stable@vger.kernel.org>
Subject: Re:Re: [PATCH 5.4 39/78] Bluetooth: use correct lock to prevent UAF of hdev object
Date: Thu, 17 Jun 2021 20:36:46 +0800 (GMT+08:00)	[thread overview]
Message-ID: <70042d9f.111abd.17a19f94b84.Coremail.linma@zju.edu.cn> (raw)


Oops, sorry for the delay here. I just forgot to check the mails.

This comment is right, when I submit this patch I mentioned that the replacement of this lock can hang the detaching routine because it needs to wait the release of the lock_sock().

But this does no harm in my testing. In fact, the relevant code can only be executed when removing the controller. I think it can wait for the lock. Moreover, this patch can fix the potential UAF indeed.

> may need further discussion. (wrote in previous mail list

Welcome the additional advise on this. Does this really broken the lock principle?

Regards Lin Ma

在 2021-06-16 23:01:08,"Greg Kroah-Hartman" <gregkh@linuxfoundation.org> 写道:

>On Mon, Jun 14, 2021 at 04:15:02PM +0200, Eric Dumazet wrote:
>> 
>> 
>> On 6/8/21 8:27 PM, Greg Kroah-Hartman wrote:
>> > From: Lin Ma <linma@zju.edu.cn>
>> > 
>> > commit e305509e678b3a4af2b3cfd410f409f7cdaabb52 upstream.
>> > 
>> > The hci_sock_dev_event() function will cleanup the hdev object for
>> > sockets even if this object may still be in used within the
>> > hci_sock_bound_ioctl() function, result in UAF vulnerability.
>> > 
>> > This patch replace the BH context lock to serialize these affairs
>> > and prevent the race condition.
>> > 
>> > Signed-off-by: Lin Ma <linma@zju.edu.cn>
>> > Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
>> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>> > ---
>> >  net/bluetooth/hci_sock.c |    4 ++--
>> >  1 file changed, 2 insertions(+), 2 deletions(-)
>> > 
>> > --- a/net/bluetooth/hci_sock.c
>> > +++ b/net/bluetooth/hci_sock.c
>> > @@ -755,7 +755,7 @@ void hci_sock_dev_event(struct hci_dev *
>> >  		/* Detach sockets from device */
>> >  		read_lock(&hci_sk_list.lock);
>> >  		sk_for_each(sk, &hci_sk_list.head) {
>> > -			bh_lock_sock_nested(sk);
>> > +			lock_sock(sk);
>> >  			if (hci_pi(sk)->hdev == hdev) {
>> >  				hci_pi(sk)->hdev = NULL;
>> >  				sk->sk_err = EPIPE;
>> > @@ -764,7 +764,7 @@ void hci_sock_dev_event(struct hci_dev *
>> >  
>> >  				hci_dev_put(hdev);
>> >  			}
>> > -			bh_unlock_sock(sk);
>> > +			release_sock(sk);
>> >  		}
>> >  		read_unlock(&hci_sk_list.lock);
>> >  	}
>> > 
>> > 
>> 
>> 
>> This patch is buggy.
>> 
>> lock_sock() can sleep.
>> 
>> But the read_lock(&hci_sk_list.lock) two lines before is not going to allow the sleep.
>> 
>> Hmmm ?
>> 
>> 
>
>Odd, Lin, did you see any problems with your testing of this?
>

             reply	other threads:[~2021-06-17 12:36 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-17 12:36 LinMa [this message]
2021-06-17 13:11 ` Re ...: [PATCH 5.4 39/78] Bluetooth: use correct lock to prevent UAF of hdev object LinMa
2021-06-21  3:45 ` Anand K. Mistry
2021-06-21  5:20   ` LinMa
2021-06-23  0:13     ` Anand K. Mistry

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=70042d9f.111abd.17a19f94b84.Coremail.linma@zju.edu.cn \
    --to=linma@zju.edu.cn \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /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.