Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp2509252pxb; Sun, 16 Jan 2022 23:09:31 -0800 (PST) X-Google-Smtp-Source: ABdhPJwuOmGVaNNVWIts0hf7EwCMReSpPEmwrdIg/KXQHAILGx9RLpIRgJOE+uY1l3qmpBkXq8Ix X-Received: by 2002:a17:902:8c96:b0:149:88bb:ac54 with SMTP id t22-20020a1709028c9600b0014988bbac54mr21351406plo.18.1642403371297; Sun, 16 Jan 2022 23:09:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642403371; cv=none; d=google.com; s=arc-20160816; b=C6nHKpiciyOOcvfNtUb0IE50QMw6IRmGbmkUleDYqKR6lCLcQJSjbAGbV/TyxwjghY Nctyr2NtLoYURJzYemu2nRk+XYbd0xhhMQB2qyZ1xyotqxz+hT5KP++pAGzRuJIzgwaj w1dP6Wuj7qgE2Mifwqs6zxn4OuYAX1LXS6JepvU7of+SlZZ9CRM5zfMgc9KTt+AL3aMM og3IGgSEfVLII2xgxRvuimg7b0ks8EJ507SBMHaqVIPbjuyvobbRyJQtVrRn6KKD+xu5 uhjEdhESp/W33HpkakeIj7BTeTDE7jrfnsGltkuRznnmr5peW/thfL1opvzB6lpe80rI ANvQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:references :cc:to:from:content-language:subject:user-agent:mime-version:date :message-id; bh=rBEkvO9kQvrNptpr0FIwCc8MWjV+9sUsy6lmhiryp94=; b=DpYHO8xrIQ2R65V6o6ZWnzeBdFs6HKRjl+slo5fZbqLgSUqsaJyCqYB1eLuxjAD45S EyXdL/vAcVosClbkb2Uy1j+YIIqujRrrjmf1qYRp0jELaw3UTlnZ2+ZwOSYs4nOnGWr3 0yAEj5V6rWR3IMLzaLxqB7+PBZwxuqnBRaN7dcueJgYXBoAo2EGUiCksYoVCBHU2b1w4 0p2FCpa9lUuVofd5b4RupdFN3D6P/ObgUJHglPT2Sugqpb32buzv6Ze1/FcgrZAAbw3h cHQ11Wc5YCPqBHr81LLjj8FWfzJyENHuSmaObj+EOGjKu3vXDdYr1J2gaBS2Ox++52oh EUBg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p5si11341841plq.164.2022.01.16.23.09.20; Sun, 16 Jan 2022 23:09:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235320AbiAPN1c (ORCPT + 99 others); Sun, 16 Jan 2022 08:27:32 -0500 Received: from mx3.molgen.mpg.de ([141.14.17.11]:50395 "EHLO mx1.molgen.mpg.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S232360AbiAPN1b (ORCPT ); Sun, 16 Jan 2022 08:27:31 -0500 Received: from [192.168.0.4] (ip5f5aeaa0.dynamic.kabel-deutschland.de [95.90.234.160]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: pmenzel) by mx.molgen.mpg.de (Postfix) with ESMTPSA id 0B12661EA1BE4; Sun, 16 Jan 2022 14:27:29 +0100 (CET) Message-ID: Date: Sun, 16 Jan 2022 14:27:28 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: Unable to transfer big files to Nokia N9 Content-Language: en-US From: Paul Menzel To: Luiz Augusto von Dentz Cc: Marcel Holtmann , Johan Hedberg , linux-bluetooth@vger.kernel.org, LKML , regressions@lists.linux.dev, Takashi Iwai References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org #regzbot introduced: 81be03e026dc0c16dc1c64e088b2a53b73caa895 Dear Luiz, It turns out there was a regression in Linux 5.16-rc1. Am 20.12.21 um 22:31 schrieb Paul Menzel: > Am 01.12.21 um 23:07 schrieb Paul Menzel: > >> Am 01.12.21 um 19:29 schrieb Luiz Augusto von Dentz: >> >>> On Wed, Dec 1, 2021 at 9:39 AM Paul Menzel >>> wrote: >> >>>> For the first time, I wanted to transfer a 2 MB PDF file from a Dell >>>> Latitude E7250 with Debian sid/unstable with Linux 5.16-rc1 to a Nokia >>>> N9 (MeeGo/Harmattan). Using the package *bluez-obexd* 5.61-1 and GNOME >>>> 41, the device was found, and paired fine. Then I selected to transfer >>>> the 2 MB file, and after starting for a second, it timed out after the >>>> progress bar moves forward ones and failed. >>>> >>>> The systemd journal contains: >>>> >>>>       obexd[21139]: Transfer(0x56243fe4f790) Error: Timed out waiting for response >>>> >>>> Testing with a a 5 byte test text file, worked fine. Also testing with a >>>> Galaly M32, both files were transferred without problems (though slowly >>>> with 32 KB/s.) >>>> >>>> Trying to connect to the device with bluetoothctl failed for me, and the >>>> journal contained, it failed. >>>> >>>>       $ bluetoothctl >>>>       Agent registered >>>>       [bluetooth]# connect 40:98:4E:5B:CE:XX >>>>       Attempting to connect to 40:98:4E:5B:CE:XX >>>>       Failed to connect: org.bluez.Error.Failed >>>> >>>>       bluetoothd[21104]: src/service.c:btd_service_connect() a2dp-source profile connect failed for 40:98:4E:5B:CE:B3: Protocol not available >>>> >>>> As the Nokia N9 was once pretty popular in the Linux community, I am >>>> pretty sure, it used to work fine in the past, and there is some >>>> regression. It’d be great, if you could give me some hints how to >>>> further debug the issue. >>> >>> We will need some logs, obexd and btmon, if possible. >> >> I only managed to get the btmon trace [1]. I did `sudo modprobe -r >> btusb` and `sudo btmon -w /dev/shm/trace.log`. >> >> Linux messages: >> >>      [29880.100381] calling  btusb_driver_init+0x0/0x1000 [btusb] @ 28716 >>      [29880.239603] usbcore: registered new interface driver btusb >>      [29880.239608] initcall btusb_driver_init+0x0/0x1000 [btusb] returned 0 after 135952 usecs >>      [29880.240706] Bluetooth: hci0: unexpected event for opcode 0x0500 >>      [29880.241598] Bluetooth: hci0: Legacy ROM 2.5 revision 1.0 build 3 week 17 2014 >>      [29880.241605] Bluetooth: hci0: Intel device is already patched. patch num: 32 >> >>  From the system journal: >> >>      Dez 01 22:52:19 ersatz obexd[21139]: Transfer(0x56243fe53dd0) Error: Timed out waiting for response > > Were you able to see anything in the attached logs? If the obexd logs > are missing, can you please tell how I should capture them? > > I also tested with Ubuntu 20.04 (*linux-image-5.11.0-27-generic*) and > 21.10 (*linux-image-5.13.0-19-generic*) live systems booted from a USB > storage device, and transferring `/usr/bin/systemctl` > (`/lib/systemd/systemd`) with size of 1.8 MB worked fine. > > Could there be a regression in that area? Unfortunately, it’s not easy > for me to do a bisection on the device at hand. > > (Would it be possible to do with QEMU and USB controller and Bluetooth > device passthrough? How can I transfer the file on the command line so I > wouldn’t need to install a desktop environment?) Turns out, that is indeed possible [2], but turned out to be cumbersome, as I hit the regression [3], which seems to have been fixed by commit 95655456e7ce (Bluetooth: btintel: Fix broken LED quirk for legacy ROM devices) merged in the current Linux 5.17 cycle this week. As a work around, I applied a hunk from Takashi’s patch. - { USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED }, + { USB_DEVICE(0x8087, 0x0a2a), .driver_info = BTUSB_INTEL_COMBINED | + BTUSB_INTEL_BROKEN_INITIAL_NCMD }, My problem with the Nokia N9 is still present in Linus’ master branch. Then I built a minimal Linux kernel for QEMU, and ran: qemu-system-x86_64 -cpu host -m 2G -enable-kvm \ -usb -device usb-host,vendorid=0x8087,productid=0x0a2a \ -drive file=/dev/shm/debian-64.img,format=raw,if=virtio \ -net nic -net user,hostfwd=tcp::22223-:22 \ -kernel /dev/shm/bzImage -append "root=/dev/vda1 rw quiet" In the Debian sid/unstable VM, I used ssh root@localhost -p 22223 I once had to pair the VM with the Nokia N9 in bluetoothctl, and then started `/usr/libexec/bluetooth/obexd`, and ran `obexctl`, and connected first with `connect`, and then ran `send /lib/systemd/systemd` to transfer the file. In the problematic cases it stopped/hung after the first progress message. # obexctl [NEW] Client /org/bluez/obex [obex]# connect 40:98:4E:5B:CE:XX Attempting to connect to 40:98:4E:5B:CE:XX [NEW] Session /org/bluez/obex/client/session0 [default] [NEW] ObjectPush /org/bluez/obex/client/session0 Connection successful [40:98:4E:5B:CE:XX]# send /lib/systemd/systemd Attempting to send /lib/systemd/systemd to /org/bluez/obex/client/session0 [NEW] Transfer /org/bluez/obex/client/session0/transfer0 Transfer /org/bluez/obex/client/session0/transfer0 Status: queued Name: systemd Size: 1841712 Filename: /lib/systemd/systemd Session: /org/bluez/obex/client/session0 [CHG] Transfer /org/bluez/obex/client/session0/transfer0 Status: active [CHG] Transfer /org/bluez/obex/client/session0/transfer0 Transferred: 32737 (@32KB/s 00:55) [CHG] Transfer /org/bluez/obex/client/session0/transfer0 Status: error [DEL] Transfer /org/bluez/obex/client/session0/transfer0 Some manual bisection of Linux releases, verified, that the regression was introduced in Linux 5.16-rc1. (Lucky me, I started using Bluetooth with the Nokia with Linux 5.16-rc1.) Then I verified it was introduced by the Bluetooth pull request for Linux 5.16. Then I picked commit 81be03e026dc0c16dc1c64e088b2a53b73caa895 due to the commit message, and bisected from there, and it turns out, that this commit is actually introducing the regression. $ git bisect good 81be03e026dc0c16dc1c64e088b2a53b73caa895 is the first bad commit commit 81be03e026dc0c16dc1c64e088b2a53b73caa895 Author: Luiz Augusto von Dentz Date: Fri Sep 3 15:27:32 2021 -0700 Bluetooth: RFCOMM: Replace use of memcpy_from_msg with bt_skb_sendmmsg This makes use of bt_skb_sendmmsg instead using memcpy_from_msg which is not considered safe to be used when lock_sock is held. Also make rfcomm_dlc_send handle skb with fragments and queue them all atomically. Signed-off-by: Luiz Augusto von Dentz Signed-off-by: Marcel Holtmann net/bluetooth/rfcomm/core.c | 50 ++++++++++++++++++++++++++++++++++++++------- net/bluetooth/rfcomm/sock.c | 46 +++++++++-------------------------------- 2 files changed, 53 insertions(+), 43 deletions(-) Unfortunately, the patch does not cleanly revert, so users have to wait until an expert can take a look, and come up with a fix. Kind regards, Paul PS: For the records: $ git bisect log # bad: [81be03e026dc0c16dc1c64e088b2a53b73caa895] Bluetooth: RFCOMM: Replace use of memcpy_from_msg with bt_skb_sendmmsg # good: [49d8a5606428ca0962d09050a5af81461ff90fbb] Bluetooth: fix init and cleanup of sco_conn.timeout_work git bisect start '81be03e026dc0' 'HEAD^' # good: [904c139a2517191e48f9cb1bb2d611ae59434009] Bluetooth: Add support for msbc coding format git bisect good 904c139a2517191e48f9cb1bb2d611ae59434009 # good: [8bba13b1d08d42e2e8308924fa5c1551a7b2b011] Bluetooth: btintel: Fix incorrect out of memory check git bisect good 8bba13b1d08d42e2e8308924fa5c1551a7b2b011 # good: [38f64f650dc0e44c146ff88d15a7339efa325918] Bluetooth: Add bt_skb_sendmsg helper git bisect good 38f64f650dc0e44c146ff88d15a7339efa325918 # good: [0771cbb3b97d3c1d68eecd7f00055f599954c34e] Bluetooth: SCO: Replace use of memcpy_from_msg with bt_skb_sendmsg git bisect good 0771cbb3b97d3c1d68eecd7f00055f599954c34e # first bad commit: [81be03e026dc0c16dc1c64e088b2a53b73caa895] Bluetooth: RFCOMM: Replace use of memcpy_from_msg with bt_skb_sendmmsg Kind regards, Paul >> [1]: https://owww.molgen.mpg.de/~pmenzel/trace.log.7z [2]: https://lore.kernel.org/linux-bluetooth/5891f0d5-8d51-9da5-7663-718f301490b1@molgen.mpg.de/T/#u [3]: https://lore.kernel.org/linux-bluetooth/20211202162256.31837-1-tiwai@suse.de/